Регистрация

Как выпустить обновление и не сломать игру?

19.09.2017 20:02:20

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

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

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

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

Кажется, звучит все просто? На самом деле это не так! При разработке может измениться структура базы данных, способ взаимодействия между различными API игры, измениться структура ответа на запросы игрока. И для решения данной проблемы используется избыточность. Избыточность баз-данных, избыточность master-серверов, игровых серверов, серверов распространения контента, т.е происходит дублирование и изоляция сервисов друг от друга. Может быть два или даже три тестовых сервера для разных групп разработчиков. Для миграции данных с одной ветки в другую используются различные скрипты и технологии, например, для работы с базами данных используется Entity Framework. А для проверки работоспособности критических участков кода используется юнит-тестирование, это модульное тестирование с заранее заготовленными входными и выходными данными. 

Вот такие будни у разработчиков,приятного дня.

Коментариев: 0

Рейтинг 1000

Войдите или зарегистрируйтесь что бы оставить комментарий.

Коментариев нет, но вы можете оставить первый =)