Что нужно знать и уметь, чтобы сделать онлайн игру. Глава 1

Заметка написана для тех, кто еще не успел сделать ни одной онлайн игры, но очень хочет это исправить. Хотите знать, как сделать игру онлайн?

Итак, вы подумали: “А не сделать ли мне тоже какую-нибудь игру для контакта?.. Опыт программирования вроде есть (C++, Delphi, PHP, ….), вдруг получится…”. В голове крутится пара идей игры, может не самых хитовых, но вполне подходящих для “первого блина”. Осталось разузнать, как именно все это реализовать. Выбор, хоть и невелик, но присутствует.

Клиент
Клиент может быть только на Flash, тут без вариантов. Однозначно, нужно использовать самый свежий Action Script 3.0. Для упрощения и систематизации, для флэша придумали пару неплохих фреймворков: Flex, Adobe Air и т.п, но начинать знакомство с флэшем через фреймворки – не лучшая идея. Первую игру однозначно стОит написать на чистом Flash без наворотов.
Есть вариант подключения Unity-клиента – это на тот случай, если вы хотите делать 3D-игру для контакта. В подробности я пока не вникал, просто знаю, что это возможно.

Вывод – надо учить флэш. Язык простой, синтаксис а-ля Java, PHP. Лично я, делал пару подходов, но так и не продвинулся особо. Все-таки я больше серверный программист. Не всем же надо быть флэшерами, в конце концов. Отсюда второй вывод – если не хотите/не можете освоить флэш – найдите того, кто его уже освоил – найдите себе партнера-клиентщика. Я сделал именно так.

Сервер
Если вы хотите сделать игру онлайн для одного игрока – однопользовательскую, вам может показаться, что сервер вам вообще не нужен. По крайней мере, не в этой версии. Хрен там.
Для того, чтобы можно было принимать “голоса” контакта в качестве оплаты за игру, нужен сервер, и точка. Списание голосов со счета пользователя на счет приложения делается только сервером, клиенту это делать запрещено.

Простейший сервер, который может хранить рекорды пользователя и его друзей, ну и списывать голоса, можно написать на PHP+MySql. Или даже без MySql, но это уже тонкости и извращение. В этом случае, общение с клиентом будет идти через http-запросы. Кстати, через такие же запросы происходит списание голосов.

Если нацелились на многопользовательскую игру, а то и на MMO-, тут уже надо думать. Однажды один из докладчиков конференции “Highload++” (о высоконагруженных интернет-системах) сказал: “Сервера для приложений могут писаться на чем угодно, но если это игра, сервер должен быть на Java”. Так вот безапелляционно. Сказал, как отрезал, но я с ним согласен, и пишу сервера только на Java.
В сущности, что нам нужно от такого сервера? Сокет-соединение, удобная работа с данными и БД, хорошее быстродействие. Так что, тут могут подойти и C++, и Python, и много чего еще… Java имеет один серьезный плюс – она кроссплатформенная… Я программирую под виндой, а онлайн-сервера у меня под CentOS. Ни о каком портировании вообще вопроса не стоит: компильнул, залил на сервер и готово.

Вывод: если есть опыт разработки обычных веб-сайтов, можно первый сервер сделать и на PHP. Это гораздо проще, чем изучать многопоточность и структуры данных Java и т.п. Если же нет опыта ни PHP, ни Java, то можете кинуть монетку и изучить любой из этих языков. В жизни пригодится.

О плюсах и минусах PHP- и Java-серверов поговорим в другой раз. Там не так все просто. В двух словах не скажешь.

Вместо заключения
Надеюсь, эта статейка поможет вам сделать первый шаг к реализации своей мечты и к вашему светлому будущему. Если я в чем-то ошибся или допустил неточность – поправьте меня, буду рад критике. Но и слову благодарности тоже буду рад. :)

Эта запись была опубликована в рубрике Мысли о разработке и отмечена метками , , , , , , , , , , , , , , . Добавить в закладки ссылку.

6 в ответ на Что нужно знать и уметь, чтобы сделать онлайн игру. Глава 1:

  1. AlexsWulf пишет:

    Ну почему же. Для однопользовательских игр сервера тоже необходимы. Ведь как правило не только храним рекорды и списываем голоса ;)
    А как же игровая логика, данные пользователя, данные о контенте игры?

    • antares пишет:

      Если ты флэшер, и не умеешь делать сервера – надо стараться обойтись без сервера. :) Хранить рекорды и данные пользователя на стороне ВК, игровую логику – внутри флэшки…
      То есть, если есть возможность обойтись без сервера – надо без него обходиться. Однопользовательскую игру можно сделать как с сервером, так и без него. Зависит от игры и от разработчика.
      Меньше деталей – надежнее механизм. :)

  2. Игорь пишет:

    Начало интересное. Было бы интересно узнать о написании мнокопользовательского сокет-сервера дня простой пошаговой игры.

    • antares пишет:

      Ок! Раз есть интерес, постараемся в ближайшее время начать освещение этого вопроса. Надо сказать, сокетные-сервера – тема объемная. Но ничего, хватим как-нибудь по частям. Ждите анонсов. :)

  3. Snowman пишет:

    Подскажите, где можно поподробнее узнать о серверном программировании на Java для социальных сетей. Интересует вариант “однопользовательская игра”.

    • antares пишет:

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