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

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

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

И так, на стороне клиента используется JavaScript усиленный библиотекой MooTools. Интерфейс построен на JxLib, а для отрисовки мира используется SVG и библиотека Raphael.

Отдельно хотелось бы упомянуть эффекты, технология каждого из которых подбирается индивидуально. Это может быть canvas, может быть css-спрайт, а может быть и SVG. Каждый вариант имеет свои плюсы и минусы. Постоянно приходится балансировать между трудоемкостью, размером графики и производительностью.

На другой стороне игру обслуживает сложная платформа написанная на perl. Это и само приложение на Catalyst и демон жизни на событийной машине AnyEvent, и comet-сервер Meteor. В качестве базы данных используется MySQL, а для быстрого кэша — memcached.

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

За кадром останутся десятки околоигровых генераторов, апдейтеров и анализаторов, которые делают многое для нас. Чего стоит хотябы скрипт, создающий звездные системы используя современные астрофизические законы.

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

Кроме этого, в перспективе я планирую частично или полностью перейти на MongoDB. По тестам которые я раньше публиковал, именно эта БД лучше всего подходит для онлайн-игры: хорошо держит большое количество апдейтов и имеет достаточную стабильность.

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

Если вдруг кто-то вам скажет, что игры — это просто, то вы можете смело плюнуть ему в лицо ;)
836 просмотров
9 комментариев

Мнения ↓

Slavoz
11.04.2011 14:38
Slavoz
Не сказал бы, что очень заумно. Кое-что понятно :)
>Если вдруг кто-то вам скажет, что игры — это просто, то вы можете смело плюнуть ему в лицо ;)
Сомневаюсь, что кто-то так скажет.
Егор
12.04.2011 02:42
Егор aka Sontan
Ну это распостраненный взгляд на вещи. Ведь делать CRM системы на похапэ для офшорных заказчиков это круто, а игрушечки это фигня для малолеток. Такие дела.
sautchenkov
17.04.2011 14:06
sautchenkov
Любая хорошая работа это круто
Егор
17.04.2011 22:43
Егор aka Sontan
Не спорю! Всем известно, что на вкус и цвет фламастеры разные.
Александр
19.04.2011 16:17
Александр aka amun
Просто восхищен человеческим упорством. Склоняю голову перед Вами Егор. Моих довольно скромных познаний достаточно для того что бы понять сложность и пожалуй даже некоторое геройство тех кто сейчас занимается подобным. Но а что бы на личной инициативе и с ТАКИМ вот масштабом, это просто вне всяких похвал. Очень внимательно буду следить за этим проектом, мне очень хочется верить в то что у вас всё получится…
Егор
19.04.2011 17:15
Егор aka Sontan
Спасибо! Я, правда, очень стараюсь :) Совсем не много до дедлайна осталось, скоро сможем оценить то, что получилось.
Flatron1997
24.04.2011 20:50
Flatron1997
а можно ли узнать — скоро ли выход в свет сие чудо или хотя-бы тестирование, то есть когда настанет этот «великий день»? не терпится все таки)
Егор
25.04.2011 14:00
Егор aka Sontan
Открытое тестирование начнется в начале лета, а выход планируем на осень. Следите за новостями в социальных сетях и в моем блоге ;)
Александр
26.04.2011 14:20
Александр aka amun
Хм, а закрытое тестирование идет сейчас? если нужен тестер, всегда готов помочь ;)
Только зарегистрированные пользователи могут оставлять комментарии.
Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
© www.sontan.name, 2008–2012