Всем привет! В текущей тестовой версии абсолютно все также, как в ишке на 45 стран, за исключением того, что стран 80 и внедрен новый алгоритм генерации карт (создаются быстрее и ровнее). Остальной геймплей никак не затронут. Основной упор, согласно обсуждавшимся планам, был сделан на переделку сетевого движка, о чем столько лет говорилось и говорилось. И наконец, сделалось!!! Движок заменен. И изменения колоссальные, перекроен почти весь код. Директ_Х выдран с корнями и заменен на сокетный движок. Это аналогично тому, как если бы человеку заменили позвоночник)) Немного о сути изменений и о том, чего я хотел добиться. Директ_Х дает разработчику удобные классы, специально созданные для сетевых игр. Там есть понятия игроков с набором параметров, игровые события типа соединения, отсоединения и т.п., даже есть типы игровых сообщений и понятие игрового пакета. Схема соединения - каждый с каждым, сервер лишь номинально руководит игрой. Рассылка сообщений в чат, вход-выход и прочие события генерируются каждым игроком и рассылаются каждый каждому. Поэтому было так много глюков, если какие то 2 игрока были несовместимы друг с другом. И каждый игрок должен был обладать публичным (белым) адресом. Либо все должны были находиться в одном виртуальном адресном пространстве. Сколько времени и нервов было затрачено на подобные глюки! Теперь это все в прошлом! При задумке нового движка я планировал отдельный выделенный сервер, который будет выполнять функции соединения игроков и рассылки данных. Схема соединений все к одному. Разумеется, сервер должен обладать белым адресом (в IPv4 без этого не обойтись). Зато какой адрес и какое устройство у клиентов абсолютно не важно. Все соединяются с главным сервером, получают от него данные и отсылают ему свои, а он уже рассылает их дальше. Но пришлось реализовать 2 протокола обмена - нижний и верхний, т.е. фактически создать новый сетевой движок! Учитывая, что стандартная winsock библиотека не дает даже понятия пакета данных, это было далеко не просто. Грубо говоря, то что вы отсылаете неизвестно как, когда и каким образом придет адресату, главное, что придет. При этом по дороге может побиться, склеиться, перемешаться и в таком виде дойти. Теперь это реализовано и работает!!! Сегодняшние тесты с Диром (а у него нестабильный инет) показали - все работает. Ошибки передачи данных между игроками устранены и все готово для настоящих испытаний. Теперь данные доходят и принимаются игроком в любом случае. С сетью вопросы решены. Теперь для клиентов не нужен белый адрес и подпорки типа хамачи. В настоящий момент я займусь доработкой остального интерфейса - реализую некоторые перезревшие новшества для ускорения процесса игры. Сам геймплей и его переделку пока оставим на следующий этап. Далее по всей логике нам нужно завести игровой сервер. Т.е. компьютер с белым айпишником (под виндой), работающий 24/7. Под другие ОС я пока не могу реализовать. На сервере будет работать серверная прога, чтобы в любое время суток игроки могли соединяться. В будущем я вижу это как отдельный виртуальный сервер на выделенном канале данных. Посмотрел навскидку цены - в районе 5 тыс. руб. в год. На текущем этапе пока такие мощности излишни, но если у кого то есть возможность запустить сервак 24/7, то будет очень хорошо. В ближайшие дни я планирую выпустить стабильную бета-версию для всеобщего тестирования.
|