Здравствуйте, рано или поздно встает необходимость установить панду на сервер. Причины бывают разные, основная причина для ознакомления с сетевыми возможностями панды. Если вы планируете разрабатывать игры с поддержкой сети, это будет разумным выбором, так как вы сразу окунетесь в сетевые проблемы.
И так сервер, может быть VDS, или выделенный. В качестве операционной системы я выбирал из семейства unix, для которых есть пакеты панды, остановился на Ubuntu. Спросите, почему под unix? Ответ очень прост, она не страдает прожорливостью, мало весит, по крайней мере как WINDOWS XP, имеется на борту питон с предустановленными пакетами. Куча бесплатных программ и многое другое. Да стоимость под управлением OS unix, серверов намного ниже. В то время под Windows они значительно дороже, из-за лицензии.
После того как вы выполнили формальности аренды сервера, хостер вам даст данные доступа к серверу. Так же сообщит клиент, например PuTTY, для доступа по протоколу SSH, его нужно скачать и установить. Что является наилучшим выбором, так например, использовать UltraVNC Viewer, не очень удобно. Банально не нашел как скопировать пароль в терминал. А набирать вслепую, меня как то жизнь не готовила, дело в том, что в unix системах, при наборе пароля даже звездочки не отображаются, можно конечно аккуратно, но доблестная система через некоторое время выводит поле для ввода логина. И после громких матов, я протер от слюней монитор, и перешел на PuTTY. Стоить заметить, что у разных хостеров, разные клиенты для доступа. Но у всех принцип одинаковый, всегда нужны следующие данные.
(Пример) IP адрес: 41.216.191.109 Login: root Password: H74Jwe83UIe3 Port: 22
Это дело все сохраните в текстовый документ, для того чтоб при необходимости скопировать. И так сервер вам выдали, операционная система стоит Ubuntu, у меня, например версия 16.04.1 LTS Запускаем PuTTY, прописываем в окошке IP адрес, так же обратите внимание на номер порта, там должен стоять в нашем случае 22.
После чего жмем соединиться, и если сервер ответил, то появится предложение ввести логин.
ЦитатаКонсоль
login as:
Скопируем логин из файла, знаю, вы удивитесь этому предложению, ведь ввести четыре символа с клавиатуры быстрей. Но есть одна загвоздка, может только у меня, что было введено вручную не принимается, даже если сохранить в настройках программы, то рано или поздно консоль не примет эти данные. Стоит сказать про особенность работы с консолью, для того чтоб вставить, что ни будь. Просто щёлкните правой кнопкой мыши, то произойдет вставка. Если хотите скопировать из консоли что либо, то выделите мышью нужный текст, и нажмите левую кнопку, и произойдет копирование в буфер. Очень удобная система для работы с текстом вызывает привыкание, и порой удивляешься, чего это под Windows она не работает. Далее нажмите Enter и введите таким же образом пароль, но будьте готовы, что ни чего не произойдёт, просто опять Enter.
ЦитатаКонсоль
login as: root root@41.216.191.109's password:
После запуститься терминал Ubuntu.
ЦитатаКонсоль
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 3.13.0-24-generic x86_64)
Теперь нужно узнать кодовое имя ядра, нашей системы, для тех, кто не знает. Выполните эту команду:
ЦитатаКонсоль
root@localhost:~# lsb_release –a
Результат.
ЦитатаКонсоль
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial
После чего установим панду для нашего ядра - xenial , для этого нам нужно её скачать. Будем закачивать через консоль, программой wget. Просто скопировав нужную ссылку со страницы загрузки на сайте.
Набираете эту команду, добавив ссылку и нажмите ввод(Enter).
(Reading database ... 123109 files and directories currently installed.) Preparing to unpack .../panda3d1.9_1.9.2~xenial_amd64.deb ... Unpacking panda3d1.9 (1.9.2~xenial) over (1.9.2~xenial) ... running ldconfig dpkg: dependency problems prevent configuration of panda3d1.9: panda3d1.9 depends on libavcodec-ffmpeg56 (>= 7:2.4) | libavcodec-ffmpeg-extra: Package libavcodec-ffmpeg56 is not installed. Package libavcodec-ffmpeg-extra56 is not installed. panda3d1.9 depends on libavformat-ffmpeg56 (>= 7:2.4); however: Package libavformat-ffmpeg56 is not installed. panda3d1.9 depends on libavutil-ffmpeg54 (>= 7:2.4); however: Package libavutil-ffmpeg54 is not installed. panda3d1.9 depends on libbulletcollision2.83.6; however: Package libbulletcollision2.83.6 is not installed. panda3d1.9 depends on libbulletdynamics2.83.6; however: Package libbulletdynamics2.83.6 is not installed. panda3d1.9 depends on libbulletsoftbody2.83.6; however: Package libbulletsoftbody2.83.6 is not installed. panda3d1.9 depends on libcg (>= 3.0.0007); however: Package libcg is not installed. panda3d1.9 depends on libcggl (>= 3.1.0010); however: Package libcggl is not installed. panda3d1.9 depends on libgl1- dpkg: error processing package panda3d1.9 (--install): dependency problems - leaving unconfigured Processing triggers for man-db (2.7.5-1) ... Processing triggers for mime-support (3.59ubuntu1) ... Processing triggers for shared-mime-info (1.5-2ubuntu0.1) ... Processing triggers for libc-bin (2.23-0ubuntu3) ... Errors were encountered while processing: panda3d1.9
Это значит установка запнулась об зависимости. Настало время следующей команды.
ЦитатаКонсоль
root@localhost:~# apt-get -f install
Результат.
ЦитатаКонсоль
Reading package lists... Done Building dependency tree Reading state information... Done Correcting dependencies... Done The following packages were automatically installed and are no longer required: apt-xapian-index aptitude-common libboost-iostreams1.54.0 libboost-iostreams1.58.0 libclass-accessor-perl libcwidget3 libept1.4.12 libio-string-perl libparse-debianchangelog-perl libsigc++-2.0-0c2a libsub-name-perl libtimedate-perl libxapian-1.3-5 libxapian22v5 python-debian python-xapian python3-debian python3-xapian1.3 Use 'apt autoremove' to remove them. The following additional packages will be installed: fontconfig-config fonts-dejavu-core freeglut3 i965-va-driver libaacs0 libasound2 libasound2-data libasyncns0 libavcodec-ffmpeg56 libavformat-ffmpeg56 libavutil-ffmpeg54 libbdplus0 libbluray1 libbulletcollision2.83.6 libbulletdynamics2.83.6 libbulletsoftbody2.83.6 libcg libcggl libcrystalhd3 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libflac8 libfontconfig1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgme0 libgomp1 libgsm1 libjbig0 libjpeg-turbo8 libjpeg8 liblinearmath2.83.6 libllvm3.8 libmodplug1 libmp3lame0 libode4 libogg0 libopenal-data libopenal1 libopenjpeg5 libopus0 liborc-0.4-0 libpciaccess0 libpulse0 libschroedinger-1.0-0 libshine3 libsnappy1v5 libsndfile1 libsoxr0 libspeex1 libssh-gcrypt-4 libswresample-ffmpeg1 libswscale-ffmpeg3 libtheora0 libtiff5 libtwolame0 libtxc-dxtn-s2tc0 libva1 libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx3 libwavpack1 libwebp5 libx11-xcb1 libx264-148 libx265-79 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-sync1 libxcursor1 libxdamage1 libxfixes3 libxi6 libxrandr2 libxrender1 libxshmfence1 libxvidcore4 libxxf86dga1 libxxf86vm1 libzvbi-common libzvbi0 mesa-vdpau-drivers nvidia-cg-dev nvidia-cg-toolkit va-driver-all vdpau-driver-all vdpau-va-driver Suggested packages: libasound2-plugins alsa-utils libbluray-bdj firmware-crystalhd libportaudio2 opus-tools pulseaudio speex nvidia-cg-doc libfglrx-amdxvba1 libvdpau-va-gl1 nvidia-vdpau-driver nvidia-legacy-340xx-vdpau-driver The following NEW packages will be installed: fontconfig-config fonts-dejavu-core freeglut3 i965-va-driver libaacs0 libasound2 libasound2-data libasyncns0 libavcodec-ffmpeg56 libavformat-ffmpeg56 libavutil-ffmpeg54 libbdplus0 libbluray1 libbulletcollision2.83.6 libbulletdynamics2.83.6 libbulletsoftbody2.83.6 libcg libcggl libcrystalhd3 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libflac8 libfontconfig1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgme0 libgomp1 libgsm1 libjbig0 libjpeg-turbo8 libjpeg8 liblinearmath2.83.6 libllvm3.8 libmodplug1 libmp3lame0 libode4 libogg0 libopenal-data libopenal1 libopenjpeg5 libopus0 liborc-0.4-0 libpciaccess0 libpulse0 libschroedinger-1.0-0 libshine3 libsnappy1v5 libsndfile1 libsoxr0 libspeex1 libssh-gcrypt-4 libswresample-ffmpeg1 libswscale-ffmpeg3 libtheora0 libtiff5 libtwolame0 libtxc-dxtn-s2tc0 libva1 libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx3 libwavpack1 libwebp5 libx11-xcb1 libx264-148 libx265-79 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-sync1 libxcursor1 libxdamage1 libxfixes3 libxi6 libxrandr2 libxrender1 libxshmfence1 libxvidcore4 libxxf86dga1 libxxf86vm1 libzvbi-common libzvbi0 mesa-vdpau-drivers nvidia-cg-dev nvidia-cg-toolkit va-driver-all vdpau-driver-all vdpau-va-driver 0 upgraded, 94 newly installed, 0 to remove and 1 not upgraded. 1 not fully installed or removed. Need to get 35.8 MB of archives. After this operation, 263 MB of additional disk space will be used. Do you want to continue? [Y/n] Y
Отвечаем Y, и жмем Enter. Дальше будет много текста о скачивании и распаковке. Не забывайте сначала переключить клавиатуру на английский, перед ответом.
Setting up libxxf86dga1:amd64 (2:1.1.4-1) ... Setting up nvidia-cg-dev:amd64 (3.1.0013-2) ... Setting up libxi6:amd64 (2:1.7.6-1) ... Setting up freeglut3:amd64 (2.8.1-2) ... Setting up nvidia-cg-toolkit (3.1.0013-2) ... Setting up panda3d1.9 (1.9.2~xenial) ... running ldconfig Setting up libasyncns0:amd64 (0.8-5build1) ... Setting up libtxc-dxtn-s2tc0:amd64 (0~git20131104-1.1) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0 to pe Setting up libaacs0:amd64 (0.8.1-1) ... Setting up libasound2-data (1.1.0-0ubuntu1) ... Setting up libasound2:amd64 (1.1.0-0ubuntu1) ... Setting up libbdplus0:amd64 (0.1.2-1) ... Setting up libflac8:amd64 (1.3.1-4) ... Setting up libsndfile1:amd64 (1.0.25-10) ... Setting up libpulse0:amd64 (1:8.0-0ubuntu3) ... Setting up libvdpau1:amd64 (1.1.1-3ubuntu1) ... Setting up mesa-vdpau-drivers:amd64 (11.2.0-1ubuntu2.2) ... Setting up i965-va-driver:amd64 (1.7.0-1) ... Setting up vdpau-va-driver:amd64 (0.7.4-5) ... Setting up va-driver-all:amd64 (1.7.0-1) ... Setting up vdpau-driver-all:amd64 (1.1.1-3ubuntu1) ... Processing triggers for libc-bin (2.23-0ubuntu3) ...
Теперь нужно установить dev пакеты для python. Выполним команду:
ЦитатаКонсоль
root@localhost:~# apt-get install python-dev
Результат.
ЦитатаКонсоль
Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apt-xapian-index aptitude-common libboost-iostreams1.54.0 libboost-iostreams1.58.0 libclass-accessor-perl libcwidget3 libept1.4.12 libio-string-perl libparse-debianchangelog-perl libsigc++-2.0-0c2a libsub-name-perl libtimedate-perl libxapian-1.3-5 libxapian22v5 python-debian python-xapian python3-debian python3-xapian1.3 Use 'apt autoremove' to remove them. The following additional packages will be installed: libc-dev-bin libc6-dev libexpat1-dev libpython-dev libpython2.7 libpython2.7-dev linux-libc-dev manpages-dev python2.7-dev Suggested packages: glibc-doc The following NEW packages will be installed: libc-dev-bin libc6-dev libexpat1-dev libpython-dev libpython2.7 libpython2.7-dev linux-libc-dev manpages-dev python-dev python2.7-dev 0 upgraded, 10 newly installed, 0 to remove and 5 not upgraded. Need to get 839 kB/34.3 MB of archives. After this operation, 67.7 MB of additional disk space will be used. Do you want to continue? [Y/n] Y
Опять вопрос продолжить? Естественно Y.
ЦитатаКонсоль
Get:1 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-libc-] Fetched 839 kB in 1s (781 kB/s) Selecting previously unselected package libc-dev-bin. (Reading database ... 123960 files and directories currently installed.) Preparing to unpack .../libc-dev-bin_2.23-0ubuntu3_amd64.deb ... Unpacking libc-dev-bin (2.23-0ubuntu3) ... Selecting previously unselected package linux-libc-dev:amd64. Preparing to unpack .../linux-libc-dev_4.4.0-45.66_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.4.0-45.66) ... Selecting previously unselected package libc6-dev:amd64. Preparing to unpack .../libc6-dev_2.23-0ubuntu3_amd64.deb ... Unpacking libc6-dev:amd64 (2.23-0ubuntu3) ... Selecting previously unselected package libexpat1-dev:amd64. Preparing to unpack .../libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb ... Unpacking libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.2) ... Selecting previously unselected package libpython2.7:amd64. Preparing to unpack .../libpython2.7_2.7.12-1~16.04_amd64.deb ... Unpacking libpython2.7:amd64 (2.7.12-1~16.04) ... Selecting previously unselected package libpython2.7-dev:amd64. Preparing to unpack .../libpython2.7-dev_2.7.12-1~16.04_amd64.deb ... Unpacking libpython2.7-dev:amd64 (2.7.12-1~16.04) ... Selecting previously unselected package libpython-dev:amd64. Preparing to unpack .../libpython-dev_2.7.11-1_amd64.deb ... Unpacking libpython-dev:amd64 (2.7.11-1) ... Selecting previously unselected package manpages-dev. Preparing to unpack .../manpages-dev_4.04-2_all.deb ... Unpacking manpages-dev (4.04-2) ... Selecting previously unselected package python2.7-dev. Preparing to unpack .../python2.7-dev_2.7.12-1~16.04_amd64.deb ... Unpacking python2.7-dev (2.7.12-1~16.04) ... Selecting previously unselected package python-dev. Preparing to unpack .../python-dev_2.7.11-1_amd64.deb ... Unpacking python-dev (2.7.11-1) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for libc-bin (2.23-0ubuntu3) ... Setting up libc-dev-bin (2.23-0ubuntu3) ... Setting up linux-libc-dev:amd64 (4.4.0-45.66) ... Setting up libc6-dev:amd64 (2.23-0ubuntu3) ... Setting up libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.2) ... Setting up libpython2.7:amd64 (2.7.12-1~16.04) ... Setting up libpython2.7-dev:amd64 (2.7.12-1~16.04) ... Setting up libpython-dev:amd64 (2.7.11-1) ... Setting up manpages-dev (4.04-2) ... Setting up python2.7-dev (2.7.12-1~16.04) ... Setting up python-dev (2.7.11-1) ... Processing triggers for libc-bin (2.23-0ubuntu3) ...
Осталось выполнить контрольную проверку.
ЦитатаКонсоль
root@localhost:~# locate libpython2.7.so.1.0
Результат.
ЦитатаКонсоль
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
И вот все готово, можно закрыть программу PuTTY.
Настал второй этап, теперь нужно обзавестись собственно сервером игры, идем по ссылке и скачиваем архив под статьей. Распаковываем, скажем, на диск D. Далее скачиваем и устанавливаем FTP клиент FileZilla, по ссылке. После как установили, в левом окошке ищем нашу папку с сервером игры. Должно быть так как на скриншоте.
Теперь, где хост вводим наш IP сервера и дальше все данные из текстового файла по порядку. И жмем быстрое соединение. При успешном подключении появится структура нашего сервера из папок справа.
Здесь видим скаченный пакет Панды. Но нам нужно пройти по этому пути, хотя не обязательно, можно вбить адресной строке правого окна: /usr/share/panda3d/samples и мы попадем в папку с примерами.
Теперь, нажимаем правую кнопку мыши и создаем каталог с именем server, после заходим в папку. И легким движением мыши перетаскиваем файл rawServer.py из левого окна в правое, должно получится так.
Вот и все второй этап закончен. Осталось запустить сервер, снова запустим прогу PuTTY. И выполним вход в Ubuntu. Далее введем команду:
ЦитатаКонсоль
root@localhost:~# cd /usr/share/panda3d/samples/server
И увы не увидим как наш сервер стартовал, из за команды exit. Она нужна для того чтоб наш сервер не остановился при выходе из PuTTY. Теперь настало время проверить это дело клиентом, который был в архиве вместе сервером. Для этого отредактируем эту строчку:
clnt = MyClient("127.0.0.1", 9099)
изменим её, прописав адрес своего сервера:
clnt = MyClient("41.216.191.109", 9099)
И можно запускать файл, rawClient.py
Финишем должно стать, сообщение в консоли Hello, Server!