Привет, Хаброжители! Мне хотелось бы поделиться с вами своим опытом создания онлайн-игры и участия в Imagine Cup. Ещё в старших классах школы я загорелся мечтой сделать онлайн-игру по популярной в России детской серии книг «Коты Воители». Год за годом, шаг за шагом, я шёл к своей мечте. Сначала это был 2D файтинг: вся логика была в клиенте, написанном на AS2, а сервер (в виде PHP-скрипта) лишь сохранял данные. Файтинг заменила подделка на конструкторе Eclipse Origins, я русифицировал его и некоторые моды, исправил пару ошибок и добавил с десяток новых, но вскоре понял, что нужно писать самому… И вот я, студент первого курса: на VPS крутится JAVA сервер, он дружит с клиентами, написанными на ADOBE AIR, и в день капает ~3$ с контекстной рекламы, а Microsoft начинает публиковать агитационные комиксы. Путь Диких Котов Онлайн под катом…
Когда я услышал об Imagine Cup, у меня был прототип игры со следующим функционалом:
Роль котов успешно выполняли ягуары из AoE2, а тайлы природы были взяты из набора RGM XP.
Даже при таком небольшом контенте у меня было 2000 подписчиков в VK, средний онлайн на уровне 30 игроков (всего примерно 10 000 аккаунтов). Заходили в игру в основном с компьютеров и Android-планшетов, особенно продвинутые использовали джейлбрекнутые устройства от Apple.
Но чем я больше всего гордился — так это тем, что сервер не падал и не занимал больше 70mb RAM. Хотя, скорее, это была не игра, а ролевой чат с возможностью убить собеседника.
Узнав о Cup всего за неделю, я очень нервничал: безуспешные попытки добавить побольше функционала обернулись тем, что мы с напарником не успели сделать презентацию и выучить текст. Всё, что я успел сделать, — это небольшое интро-видео, чтобы устроить красивое введение и договориться с представителем ВУЗа, что нам выделят фирменные футболки + куратора.
Конечно, мы провалились, не феерически, но провалились.
Я участвовал в Питерском региональном финале. Устроенное мероприятие было великолепно: множество спонсоров сделали своё дело — большое помещение, представители прессы и множество закусок. Nokia даже установила стенды и давал всем потрогать свои Lumia. Единственное — упал интернет, и пришлось в авральном режиме поднимать локальный сервер. До самого Cupа у нас была встреча в офисе Microsoft, где нам дали советы уже бывалые участники, а также тестирование оборудования на котором:
Особенно круто, что Cup — это стартовая площадка не только для победителей. Каждый участник получил инвайты на бизнес-школу от Microsoft, Microsoft BizSpark, VIP-аккаунт на LinguaLeo и быстрый допуск к Microsoft DreamSpark; полезные знакомства и буклеты ещё нескольких акселераторов.
Конечно, Cup подтолкнул меня к новому витку разработки:
Именно эта версия игры сейчас и доступна игрокам. После того, как я закончил с 2D, я начал выбирать движок для 3D-версии. После нескольких демок, я отказался от AWAY3D в пользу Unity3D и начал реализовывать основные команды. Время шло, 3D-клиент потихоньку добирал функционал 2D-версии, и тут я понял две вещи: скоро ImagineCup 2014, а в 3D-версии презентовать-то особо и нечего! Поэтому я ударно взялся за разработку 3D-версии, до первой сессии конечно…
Как известно, история циклична. Вновь узнав о Cupe за неделю, я начал спешно допиливать 3D-клиент, но, конечно, ничего нового сделать я не успел, и пришлось выступать с демо-роликом:
И слегка переделанной презентацией того года, но…
Судьба любит неожиданные повороты. В этом году Microsoft рекламировал Cup не так сильно, а Питерский финал проходил в рамках конференции Microsoft в Политехе. Отсутствие рекламы сыграло своё роль: заявлено 8 команд, явились 5 команд, в итоге — Дикие Коты Онлайн занимают второе место.
Я понимал, что текущая версия игры не достойна второго места, и нам просто повезло. Поэтому с новым энтузиазмом взялся за разработку:
Чего же я пытался достичь все эти годы? Зачем пытался писать ДизДок? Я стремлюсь сделать онлайн-игру для детей младше 16 лет, используя котиков и вселенную, основанную на популярной серии книг.
Конечно, возраст игроков накладывает ограничение на поведение в игре и монетизацию. Если с первым помогает антимат и автобан, то для лучшей монетизации мне хочется сделать следующее:
Если с рекламой всё ясно, то откуда у детей деньги, спросите вы? Я имею доступ к нескольким детским чатам на популярной платформе со встроенными покупками. Оказывается, большинство детей (особенно девочки) тратят немаленькие суммы, лишь бы выделиться из толпы (цветной ник, цветной текст, возможность вставлять видео).
Конечно, нужно реализовать детский потенциал к творчеству, поэтому в моих планах создать небольшую экосистему с единой системой аккаунтов.
Создание такой экосистемы должно увеличить количество социальных связей, а, значит, и лояльность к игре.
Конечно, в детской игре не обойтись без мощного редактора персонажей и социальных (не боевых) анимаций. Я уже запланировал возможность отключать интерфейс для более удобных съёмок роликов, ведь ролики, созданные в игре и гуляющие по сети, — это неплохое сарафанное радио!
Неужели я один такой умный? Конечно, есть игры, которые можно считать моими конкурентами. Но онлайн-игр про животных в рунете нет (если не считать Pet'sShops в ВК). Так что пробежимся по иностранным конкурентам:
Feral Heart — широко известная в узких кругах онлайн-игра про хищников. Хотя сервер игры и активен, крупных изменений давно не было. Предлагает игроку побегать львом/ягуаром по прериям и поубивать кроликов. Наследник Impressive Title.
Impressive Titile — самый известный представитель жанра. Создавался группой энтузиастов, но сейчас игра закрыта, а исходники ушли в свободное плавание. В прошлом году закрылся самый крупный сервер.
Wolf Quest — единственная профессиональная игра в списке (и единственная сделаная на Unity3D). Это симулятор жизни волка в Зоопарке Миннесоты, разработанная его командой и компанией Eduweb. Красивая графика, небольшой геймплей и даже официальный сервер.
Arokai — игра в разработке. По обещаниям разработчиков должна занять место Impressive Titile. В игре должна быть красивая графика, много кастомизации и безуровневая система.
Вроде игры есть. Так почему же я считаю рынок свободным? Ответов может быть миллион, но я отвечу кратко: у детей плохо с английским.
А пока крупные игровые студии занимаются делёжкой своих океанов, я попробую занять небольшое озеро детских игр…
Конечно, многое из этого списка можно встретить в некоторых играх, но, я надеюсь, придать шарм и неповторимость для каждой особенности
Дети — это особенные геймеры, и я уже не первый год пытаюсь понять, что им нужно. Надеюсь, что понимаю правильно.
Работа с детьми никогда не будет простой, ребёнок — это будто другой вид человека: особенные проблемы, особенные желания… Детские фэндомы это места скопления сомнительных личностей и кипения священных войн. Чтобы в итоге игра понравилась игрокам, я стараюсь быть максимальное открытым: веду группу в ВК, публикую скриншоты из разработки, устраиваю открытые тесты, провожу опросы о нововведениях и, конечно, открыт идеям и предложениям. Как я уже писал, сейчас игрокам доступна 2D-версия игры. За порядком в ней следят GM'ы, набранные из сообщества, и автоматический антимат.
Наверное, многие заметили, что в статье везде присутствует «я». Неужели я работаю один? Конечно, нет. С идеями и Eventами мне помогают девушка, друзья и само сообщество. Модели для окружения я приобрёл в Asset Strorе, а модель кота скачал в интернете и нанял аниматора для её улучшения. Самоцель создания — не только игра, но и опыт разработки на Java, поэтому весь код я стараюсь писать сам, а не использовать готовые компоненты. Иногда это выходит боком, но куратор от кафедры, опытные товарищи и одногрупники всегда приходят на помощь. С одним из одногрупников на Cupe я и выступаю: он знаком с внутренней кухней игры и часто подкидывает дельные советы.
Сервер игры многопоточный. По несколько потоков на чанк (часть игровой карты), чтобы не терять производительность на синхронизации и несколько потоков с синхронизациями на общие ресурсы.
Конечно, в ходе разработки было множество ошибок. Когда я начал писать свой сервер, Java я знал плохо и смутно представлял, как устроен сервер. Одно дело сделать казуальную flash-игру, а другое — спланировать сетевое приложение. Чтобы увеличить свои знания, я решил начать с «прочтения» сервера Lineage. Но, конечно, я не преуспел. Тогда я решил написать простой чат и плясать от него, просто увеличивая функционал. Главной ошибкой стало именно то, что я начал создание сервера, имея малый багаж знаний, хотя кто знает, начал бы я, если просто стал учить Java? Недостаток знаний обернулся выбором неправильной архитектуры: блокируемые сокеты и по Thread на клиента. В последствии я переписал сервер на неблокируемые сокеты и уменьшил количество Thread до количества локаций.
Небольшой опыт в GameDev также обернулся ошибками, иногда забавными. Например, возможность бить трупов и неправильная проверка смерти привела к наводнению сервера ботами и позволила игрокам быстро набирать опыт («убивая» уже убитых).
Конечно, я понимаю, что за геймеров идёт борьба. Используя свои обширные связи, я ищу потенциальных игроков за рубежом и в других вселенных.
Серьёзно, данный фэндом очень популярен в Америке и Европе.
Пока игроки веселятся в 2D-версии, я собираю предложения и разрабатываю 3D-версию. После добавления приемлемой системы сражений планирую очередной открытый бета-тест. Конечно, хотелось бы делать игру Open Source, но это повлечёт за собой значительный рефакторинг, а, значит, и временные затраты. В ближайших планах добавление редактора персонажей, системы диалогов и новых типов животных (волки, медведи, олени, боровы). Ну и конечно, тестирование ночных сборок на смартфонах и планшетах знакомых: многие играют в текущую версию именно с мобильных устройств. (на не топовых устройствах тесты пока не очень удачные) Хотелось бы переделать интерфейс, но подожду новое GUI от самой Unity: сейчас полно и другой работы.
Хочу выразить благодарность организаторам Cupа: они дают шанс научиться презентовать себя и свои проекты, шанс изменить мир и познакомиться с интересными людьми. Ну и конечно, я желаю успехов тем, кто решится участвовать в Imagine Cup 2015 — оно того стоит.
С радостью отвечу на вопросы и разъясню неясные моменты.
Cup 2013
Когда я услышал об Imagine Cup, у меня был прототип игры со следующим функционалом:
- Регистрация/Авторизация
- Передвижение персонажей
- Несколько разных локаций и перемещение между ними
- Чат с анимированными смайлами
- Основа для системы кланов
- Несколько фракций NPC, которые враждуют между собой
- Довольно неплохая система антимата и автобана
- Общение NPC в общем чате
- PVP и PVE
- Набор опыта и прокачка персонажей
- Система пар (браков)
Роль котов успешно выполняли ягуары из AoE2, а тайлы природы были взяты из набора RGM XP.
Даже при таком небольшом контенте у меня было 2000 подписчиков в VK, средний онлайн на уровне 30 игроков (всего примерно 10 000 аккаунтов). Заходили в игру в основном с компьютеров и Android-планшетов, особенно продвинутые использовали джейлбрекнутые устройства от Apple.
Но чем я больше всего гордился — так это тем, что сервер не падал и не занимал больше 70mb RAM. Хотя, скорее, это была не игра, а ролевой чат с возможностью убить собеседника.
Узнав о Cup всего за неделю, я очень нервничал: безуспешные попытки добавить побольше функционала обернулись тем, что мы с напарником не успели сделать презентацию и выучить текст. Всё, что я успел сделать, — это небольшое интро-видео, чтобы устроить красивое введение и договориться с представителем ВУЗа, что нам выделят фирменные футболки + куратора.
Конечно, мы провалились, не феерически, но провалились.
Немного о самом Cup
Я участвовал в Питерском региональном финале. Устроенное мероприятие было великолепно: множество спонсоров сделали своё дело — большое помещение, представители прессы и множество закусок. Nokia даже установила стенды и давал всем потрогать свои Lumia. Единственное — упал интернет, и пришлось в авральном режиме поднимать локальный сервер. До самого Cupа у нас была встреча в офисе Microsoft, где нам дали советы уже бывалые участники, а также тестирование оборудования на котором:
- Я увидел отважного дизайнера, что показывал сотруднику Microsoft план помещения на Macbook
- К нам (участникам) подошёл один из рабочих и стал просить диск с «программой, чтобы тексты набирать на ноутбуке»
Впечатления после первого Cup'a
Особенно круто, что Cup — это стартовая площадка не только для победителей. Каждый участник получил инвайты на бизнес-школу от Microsoft, Microsoft BizSpark, VIP-аккаунт на LinguaLeo и быстрый допуск к Microsoft DreamSpark; полезные знакомства и буклеты ещё нескольких акселераторов.
После Cup'a 1
Конечно, Cup подтолкнул меня к новому витку разработки:
- В чат игры был добавлен чёрный список
- Улучшен антимат и автобан
- Добавлены пара новых локаций
- Добавлен Event Нападение Пришельцев
- Добавил оповещение о Event'е в форме предсказания
Именно эта версия игры сейчас и доступна игрокам. После того, как я закончил с 2D, я начал выбирать движок для 3D-версии. После нескольких демок, я отказался от AWAY3D в пользу Unity3D и начал реализовывать основные команды. Время шло, 3D-клиент потихоньку добирал функционал 2D-версии, и тут я понял две вещи: скоро ImagineCup 2014, а в 3D-версии презентовать-то особо и нечего! Поэтому я ударно взялся за разработку 3D-версии, до первой сессии конечно…
Cup 2014
Как известно, история циклична. Вновь узнав о Cupe за неделю, я начал спешно допиливать 3D-клиент, но, конечно, ничего нового сделать я не успел, и пришлось выступать с демо-роликом:
И слегка переделанной презентацией того года, но…
Немного о самом Cupе
Судьба любит неожиданные повороты. В этом году Microsoft рекламировал Cup не так сильно, а Питерский финал проходил в рамках конференции Microsoft в Политехе. Отсутствие рекламы сыграло своё роль: заявлено 8 команд, явились 5 команд, в итоге — Дикие Коты Онлайн занимают второе место.
После Cup'а 2
Я понимал, что текущая версия игры не достойна второго места, и нам просто повезло. Поэтому с новым энтузиазмом взялся за разработку:
- Немного сменил видение игры
- Научил NPC ходить по 3D миру
- Добавил заготовку для Non Target боёв
- Добавил первую версию системы кланов
- Добавил несколько разных чатов (мир, локация, клан, система)
Концепция игры
Чего же я пытался достичь все эти годы? Зачем пытался писать ДизДок? Я стремлюсь сделать онлайн-игру для детей младше 16 лет, используя котиков и вселенную, основанную на популярной серии книг.
Конечно, возраст игроков накладывает ограничение на поведение в игре и монетизацию. Если с первым помогает антимат и автобан, то для лучшей монетизации мне хочется сделать следующее:
- Реклама на сайте
- Реклама в игре
- Кастомизация персонажа
- Цветной чат и новые смайлы
Если с рекламой всё ясно, то откуда у детей деньги, спросите вы? Я имею доступ к нескольким детским чатам на популярной платформе со встроенными покупками. Оказывается, большинство детей (особенно девочки) тратят немаленькие суммы, лишь бы выделиться из толпы (цветной ник, цветной текст, возможность вставлять видео).
Конечно, нужно реализовать детский потенциал к творчеству, поэтому в моих планах создать небольшую экосистему с единой системой аккаунтов.
- Игра
- Сайты игры
- Форум
- Топы игроков
- Рейтинг творчества (рисунки, рассказы, поделки)
- Хостинг изображений и скриншотов
Создание такой экосистемы должно увеличить количество социальных связей, а, значит, и лояльность к игре.
Конечно, в детской игре не обойтись без мощного редактора персонажей и социальных (не боевых) анимаций. Я уже запланировал возможность отключать интерфейс для более удобных съёмок роликов, ведь ролики, созданные в игре и гуляющие по сети, — это неплохое сарафанное радио!
Конкуренты
Неужели я один такой умный? Конечно, есть игры, которые можно считать моими конкурентами. Но онлайн-игр про животных в рунете нет (если не считать Pet'sShops в ВК). Так что пробежимся по иностранным конкурентам:
Feral Heart — широко известная в узких кругах онлайн-игра про хищников. Хотя сервер игры и активен, крупных изменений давно не было. Предлагает игроку побегать львом/ягуаром по прериям и поубивать кроликов. Наследник Impressive Title.
Скриншот
Impressive Titile — самый известный представитель жанра. Создавался группой энтузиастов, но сейчас игра закрыта, а исходники ушли в свободное плавание. В прошлом году закрылся самый крупный сервер.
Скриншот
Wolf Quest — единственная профессиональная игра в списке (и единственная сделаная на Unity3D). Это симулятор жизни волка в Зоопарке Миннесоты, разработанная его командой и компанией Eduweb. Красивая графика, небольшой геймплей и даже официальный сервер.
Скриншот
Arokai — игра в разработке. По обещаниям разработчиков должна занять место Impressive Titile. В игре должна быть красивая графика, много кастомизации и безуровневая система.
Скриншот
Вроде игры есть. Так почему же я считаю рынок свободным? Ответов может быть миллион, но я отвечу кратко: у детей плохо с английским.
А пока крупные игровые студии занимаются делёжкой своих океанов, я попробую занять небольшое озеро детских игр…
Пара ночных скриншотов
Особенности игры
Конечно, многое из этого списка можно встретить в некоторых играх, но, я надеюсь, придать шарм и неповторимость для каждой особенности
- Смена дня и ночи
- Ориентированность на детей
- Лесные коты вместо гуманоидов
- Система развития персонажей без уровней
- Ограниченный инвентарь
- Система жажды и голода
- Охота на мелких животных
- Боты как часть реального мира
- Отсутствие квестов на тупое убийство монстров
- Большое количество внутреигровых рейтингов
Дети — это особенные геймеры, и я уже не первый год пытаюсь понять, что им нужно. Надеюсь, что понимаю правильно.
Работа с игроками
Работа с детьми никогда не будет простой, ребёнок — это будто другой вид человека: особенные проблемы, особенные желания… Детские фэндомы это места скопления сомнительных личностей и кипения священных войн. Чтобы в итоге игра понравилась игрокам, я стараюсь быть максимальное открытым: веду группу в ВК, публикую скриншоты из разработки, устраиваю открытые тесты, провожу опросы о нововведениях и, конечно, открыт идеям и предложениям. Как я уже писал, сейчас игрокам доступна 2D-версия игры. За порядком в ней следят GM'ы, набранные из сообщества, и автоматический антимат.
К слову о команде...
Наверное, многие заметили, что в статье везде присутствует «я». Неужели я работаю один? Конечно, нет. С идеями и Eventами мне помогают девушка, друзья и само сообщество. Модели для окружения я приобрёл в Asset Strorе, а модель кота скачал в интернете и нанял аниматора для её улучшения. Самоцель создания — не только игра, но и опыт разработки на Java, поэтому весь код я стараюсь писать сам, а не использовать готовые компоненты. Иногда это выходит боком, но куратор от кафедры, опытные товарищи и одногрупники всегда приходят на помощь. С одним из одногрупников на Cupe я и выступаю: он знаком с внутренней кухней игры и часто подкидывает дельные советы.
Немного технических деталей
Сервер игры многопоточный. По несколько потоков на чанк (часть игровой карты), чтобы не терять производительность на синхронизации и несколько потоков с синхронизациями на общие ресурсы.
Ошибки в ходе разработки
Конечно, в ходе разработки было множество ошибок. Когда я начал писать свой сервер, Java я знал плохо и смутно представлял, как устроен сервер. Одно дело сделать казуальную flash-игру, а другое — спланировать сетевое приложение. Чтобы увеличить свои знания, я решил начать с «прочтения» сервера Lineage. Но, конечно, я не преуспел. Тогда я решил написать простой чат и плясать от него, просто увеличивая функционал. Главной ошибкой стало именно то, что я начал создание сервера, имея малый багаж знаний, хотя кто знает, начал бы я, если просто стал учить Java? Недостаток знаний обернулся выбором неправильной архитектуры: блокируемые сокеты и по Thread на клиента. В последствии я переписал сервер на неблокируемые сокеты и уменьшил количество Thread до количества локаций.
Небольшой опыт в GameDev также обернулся ошибками, иногда забавными. Например, возможность бить трупов и неправильная проверка смерти привела к наводнению сервера ботами и позволила игрокам быстро набирать опыт («убивая» уже убитых).
Шутки минутка
Конечно, я понимаю, что за геймеров идёт борьба. Используя свои обширные связи, я ищу потенциальных игроков за рубежом и в других вселенных.
Серьёзно, данный фэндом очень популярен в Америке и Европе.
А что дальше?
Пока игроки веселятся в 2D-версии, я собираю предложения и разрабатываю 3D-версию. После добавления приемлемой системы сражений планирую очередной открытый бета-тест. Конечно, хотелось бы делать игру Open Source, но это повлечёт за собой значительный рефакторинг, а, значит, и временные затраты. В ближайших планах добавление редактора персонажей, системы диалогов и новых типов животных (волки, медведи, олени, боровы). Ну и конечно, тестирование ночных сборок на смартфонах и планшетах знакомых: многие играют в текущую версию именно с мобильных устройств. (на не топовых устройствах тесты пока не очень удачные) Хотелось бы переделать интерфейс, но подожду новое GUI от самой Unity: сейчас полно и другой работы.
Послесловие
Хочу выразить благодарность организаторам Cupа: они дают шанс научиться презентовать себя и свои проекты, шанс изменить мир и познакомиться с интересными людьми. Ну и конечно, я желаю успехов тем, кто решится участвовать в Imagine Cup 2015 — оно того стоит.
С радостью отвечу на вопросы и разъясню неясные моменты.
Сноски
- Серия книг «Коты Воители»
- Конструктор онлайн игр Eclipse Origins
- Тест массовой драки в 2D игры
- Интро видео к первому Cup
- Первая версия дизайнерского документа
- Пример агитационного комикса от Microsoft
- Age of Emipres 2 — игра-легенда, из которой я взял спрайты для 2D-версии
- RPG Maker — конструктор игр, из которого я взял тайлы для 2D-версии
- Боты, NPC — игровые существа, управляемые сервером
- Сообщество в VK