НовостиНовости >> Soul Worker RU >> Как разрабатывается сервер Soul Worker на примере комнаты

Как разрабатывается сервер Soul Worker на примере комнаты

Администрация MMO Network | Опубликовано: 28/11/2019

Привет Соулворкеры!

 

Как вы знаете, недавно мы объявили о переносе закрытого бета-тестирования на 2020 год. Это связано с тем, что не хватает разработчиков на языке программирования C#. 

В июле планировалось начать сбор пожертвований, чтобы нанять одного или двух разработчиков. Но из-за возникших трудностей было решено отложить пожертвования. 

 

Когда близилась примерная дата запуска, начинать сбор пожертвований было еще опаснее, так как иначе бы мы просто обманули людей и тогда обвинения были бы реальными. Мы начнем сбор пожертвований уже не с расчетом того, что кто-то нам поможет, а когда сервер будет полноценно работать без недоработок.

 

Над созданием сервера работает 3 человека на протяжении последнего года, один из которых присоединился лишь несколько месяцев назад из другого проекта. Ни у кого нет возможности уделять все свое свободное время на проект, но при появлении свободного кусочка времени, мы пишем проект. Нам интересно узнавать новое и набираться опыта. Полученный опыт мы используем в своей работе, а узнавая что-то новое на работе или учебе, экспериментируем на нашем проекте.

 

Команда проекта небольшая, так как до запуска проекта не будет никакого финансирования, а желающих работать просто так практически нет. Мы пишем сервер с нуля, работаем над комьюнити каждый день, думаем над идеями для нашего сервера и обсуждаем кучу других вещей. Все это забесплатно. Но мы и не жалуемся, как можно заметить в последнем абзаце. 

 

В команде всего 12 человек: руководитель, 3 разработчика, 4 переводчика, 2 комьюнити-менеджера, 2 модератора. 

Руководитель отвечает почти за все, а также дополнительно занимается дизайном и комьюнити. 

Разработчики пишут код сервера и одновременно выполняют роль тестировщиков. 

Переводчики локализуют игру, а руководитель и разработчики правят ошибки, так как первые получат в будущем только тестовую сборку перед закрытой бетой. 

Комьюнити-менеджеры пишут посты для сообществ и общаются с игроками. 

Модераторы следят за тем, чтобы при общении не нарушилась правила группы или сервера.

 

С таким количеством людей нам удалось достичь многого. Большое, дружное и доброе комьюнити. Хотя когда мы начинали вести комьюнити, то нас предупреждали, что Соулворкеры довольно токсичные. Полноценно рабочий сервер, которому осталось лишь доработать ключевые механики игры. После разработки основных элементов игры, сперва был полностью написан код для комнаты. О ее разработке пойдет речь подробнее ниже.

 

Благодаря переводу, человек не знающий хотя бы элементарные английские слова, сможет спокойно играть. Но это лишь до того момента, пока он не решится начать выполнять квесты, так как работа начата только сейчас (названия, описания, лор). Как мы и обещали, работа над этой частью идет в последнюю очередь и будет готова только к открытой бете.

 
 
 
 

В этой статье мы расскажем о разработке. Это будет нудно и скучно. Как-то по-другому рассказать не получится, потому что оно на самом деле таким и является. Запомните, мы не копируем у кого-то код сервера, а пишем его с нуля. Нам просто неоткуда брать уже готовые наработки. 


Soul Worker очень сложная изнутри. В ней очень много данных, которую не видят игроки. Чего стоят характеристики персонажа, ведь они влияют на много параметров персонажа и взаимодействуют друг с другом. Поначалу разработчики даже не понимали то, что они нашли в коде игры, а после уже сформировали целую базу данных, которая хранит значения для профиля персонажа. На это ушло много времени и нам совершенно не жалко потраченного времени, ведь это важная часть игры. 


Но почему какие-то характеристики оказались задачей для наших разработчиков? В игре отображается количество здоровья персонажа, но на самом деле в базе данных хранится информация, например, V20. Изначально, без какой-либо информации и подсказок, которые пытались найти и выяснить разработчики. Непонятно что V20 вообще может означать. После того, как разработчики выяснили о предназначении всех переменных, они создали базу данных и теперь нам известно за что отвечают значения. 


И тут вам должно стать понятно, что мы работаем над серверной частью игры. Программисты думают над тем, как провести ниточки от игры к серверу, чтобы это после работало запуска сервера. Чтобы то самое значение V20 уменьшалось при получении урона. Но если честно, чем дальше мы углубляемся, тем становится сложнее. Ведь когда персонаж получает урон, то тут начинается математика, которая прописана на стороне сервера, а значит формулу пишут также разработчикам. 


Кроме связи игры, сервера, базы данных, начинаются вестись логи, но не только у вас на компьютере, но и на стороне сервера. Представьте сколько информации. Её очень много, лишь для того, чтоб посчитать, что вас ударил монстр и при этом все должно работать правильно. В теории, маленькая ошибка может не только закрыть клиент у игрока, но также может возникнуть непредвиденная критическая ошибка, которая остановит работу всего сервера. 

 

Основа — игра Soul Worker на движке Vision, которая есть у всех. Сервер — во-первых, их несколько (логин, игровой мир, мейзы и другие), а во-вторых, машина для обработки действия игроков, которую мы пишем сами и прописываем логику, смотря на то, как это работает на официальном сервере. 

База данных — очень много таблиц с большим количеством данных. 

Логи — документ с каждым действием игрока на сервере и что делает сам сервер для поддержания игры. Например, игрок запускает процесс создания мейза, а все остальное уже делает сервер. 

Безопасность — важнейший пункт при создании сервера, так как мы работаем с конфиденциальной информацией и ее важно защищать от злоумышленников.

 

 

Все что было написано лишь обобщенно описывает то, что мы делаем при создании проекта. Давайте приведем пример из жизни разработчика. Ниже рассказано как создавалась «Комната». Как разработчик думал о том, как написать код и как он будет работать на сервере.Что использовал программист при создании. Какие аспекты сервера, игры и базы данных приходилось использовать разработчику. Сколько времени ушло на такую простую механику.

 

Комната


Для того, чтобы узнать о том, как проходят общение сервера с клиентом, разработчики ловят пакеты по сетевому трафику. Пакет — запрашиваемое действие игрока. С помощью пакета клиент общается с серверов и наоборот. В нем описан сценарий действий, которые нужно выполнить меньше, чем за секунду, при этом получить ответ в ту же секунду.


Дальше разработчики пробуют повторить действие на нашем сервере. Они отправляют полученный пакет с нашего сервера в русскоязычный клиент. Сценарий пакета выполнит тоже самое действие, которое было сделано на официальном сервере при получении пакета. 


Разработчикам остается изучить логику действий, которые должны происходить на сервере, при этом не описанная в клиенте игры. Для этого они разбирают пакеты и смотрят сценарий, пытаясь написать код, который будет выполнять те же самые действия. 


При написании кода могут возникнуть ошибки, потому что он не выполняет тоже самое, что и полученный сценарий. Если отправляемый пакет с нашего сервера в наш клиент будет отличаться от сценарий, значит разработчика при тесте функции будет ожидать следующее окно. 

 

 

То есть разработчики пытаются скопировать действие на основе полученного сценария, который взят с официального сервера во время выполнения действия. Разработчики не копируют пакет, который содержит тот самый сценарий. Они лишь пытаются написать такой код, который бы повторял пакет с таким сценарием. 

 

 

Для работы комнаты подключается лишь база данных, например, чтобы узнать о предметах в инвентаре, которые надо перенести в хранилище мебели. Это лишь малая часть того, с чем связана база данных. Если вам интересно узнать об этом, то напишем об этом отдельный материал, так как он выйдет очень большим.

 

В общем и вкратце можно описать следующие механики, которые пришлось воссоздать разработчикам:

— Создание комнаты. Под комнату надо выделить место на сервере.

— Вход в комнату. Комната не активна всегда и не поддерживается все время, чтобы экономить ресурсы сервера.

— Использование предметов (взаимодействие). Обычное открытие дверей требует синхронизацию с другими игроками, чтобы у них тоже открывалась дверь, запуская анимацию и очищая пространство в двери.

— Расстановка. Когда игрок помещает обои в слот, то он посылает данные в пакетный сервер, который обрабатывает пакет, чтобы понять о каком предмете идет речь, куда его пытались поместить и что требуется от сервера. А серверу нужно дать разрешение на покраску обоев, чтобы окрасить стены. То есть информацию о покрасе придет только после ответа сервера. Предмет добавляется в хранилище комнаты и комната окрашивается. Так работает окрашивание и другие действия в комнате, именно поэтому требуется выгонять игроков из комнаты при переходе в режим интерьера. К сожалению, разработчики игры из Lion Games не решились сделать синхронизацию во время расстановки мебели между всеми игроками.

— Убрать мебель. Тоже отдельное действие, так как нужно вернуть предмет из списка мебели комнаты в хранилище мебели. То есть переместить предмет из одного хранилища (комнаты) в другое.

— Сад. Посадка, выращивание, помощь в выращивании, таймеры и другое. 

— Рейтинг. Слежение за тем, кто какие лайки поставил. Какая мебель стоит и какую отображать в топе. И так далее.

— Выход из комнаты. Комната закрывается, чтобы экономить ресурсы сервера.

 

 

Пока что есть проблема с тем, что все игроки садятся на одно место, хотя мебель рассчитана на нескольких, но вообще нам это очень сильно нравится :)

 
 

Почта и лавка являются НПС, которые не привязаны конкретно к комнате. Это общие объекты, который были проработаны до создания комнаты.

 

События
Ничего нового..

Служба поддержкиПользовательское соглашениеПолитика конфиденциальностиВакансииСтатус системы

© 2014-2023 MMO Network