Пользователь
0,0
рейтинг
16 мая 2014 в 13:57

Разработка → Путь развития игры через два Imagine Cup из песочницы

Привет, Хаброжители! Мне хотелось бы поделиться с вами своим опытом создания онлайн-игры и участия в Imagine Cup. Ещё в старших классах школы я загорелся мечтой сделать онлайн-игру по популярной в России детской серии книг «Коты Воители». Год за годом, шаг за шагом, я шёл к своей мечте. Сначала это был 2D файтинг: вся логика была в клиенте, написанном на AS2, а сервер (в виде PHP-скрипта) лишь сохранял данные. Файтинг заменила подделка на конструкторе Eclipse Origins, я русифицировал его и некоторые моды, исправил пару ошибок и добавил с десяток новых, но вскоре понял, что нужно писать самому… И вот я, студент первого курса: на VPS крутится JAVA сервер, он дружит с клиентами, написанными на ADOBE AIR, и в день капает ~3$ с контекстной рекламы, а Microsoft начинает публиковать агитационные комиксы. Путь Диких Котов Онлайн под катом…



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 подтолкнул меня к новому витку разработки:
  1. В чат игры был добавлен чёрный список
  2. Улучшен антимат и автобан
  3. Добавлены пара новых локаций
  4. Добавлен Event Нападение Пришельцев
  5. Добавил оповещение о Event'е в форме предсказания

Именно эта версия игры сейчас и доступна игрокам. После того, как я закончил с 2D, я начал выбирать движок для 3D-версии. После нескольких демок, я отказался от AWAY3D в пользу Unity3D и начал реализовывать основные команды. Время шло, 3D-клиент потихоньку добирал функционал 2D-версии, и тут я понял две вещи: скоро ImagineCup 2014, а в 3D-версии презентовать-то особо и нечего! Поэтому я ударно взялся за разработку 3D-версии, до первой сессии конечно…

Cup 2014


Как известно, история циклична. Вновь узнав о Cupe за неделю, я начал спешно допиливать 3D-клиент, но, конечно, ничего нового сделать я не успел, и пришлось выступать с демо-роликом:



И слегка переделанной презентацией того года, но…

Немного о самом Cupе


Судьба любит неожиданные повороты. В этом году Microsoft рекламировал Cup не так сильно, а Питерский финал проходил в рамках конференции Microsoft в Политехе. Отсутствие рекламы сыграло своё роль: заявлено 8 команд, явились 5 команд, в итоге — Дикие Коты Онлайн занимают второе место.

После Cup'а 2


Я понимал, что текущая версия игры не достойна второго места, и нам просто повезло. Поэтому с новым энтузиазмом взялся за разработку:


Концепция игры


Чего же я пытался достичь все эти годы? Зачем пытался писать ДизДок? Я стремлюсь сделать онлайн-игру для детей младше 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 — оно того стоит.
С радостью отвечу на вопросы и разъясню неясные моменты.



Сноски



Ссылки на приобретённые для игры Assetы

Эдуард @BIanF
карма
42,7
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (16)

  • 0
    Lineage 2 до жути напомнило
    • 0
      Из азиатского рынка знаком только с PW.
  • +3
    Не дотянули вы до первого места лишь потому что не пообещали все унести в Azure и сделать для Windows Phone. Количество данных выражений в нынешнем ImCup зашкаливало в каждом выступлении.
    • 0
      В Питерском финале первое место заняла действительно достойная команда. Эти обещания звучат в каждом Cupe и я их говорил в 2013, но посчитал, что нужно приложить силы к развитию самой игры. Тем более, сейчас два сервера игры работают на бюджетном VPS.
  • 0
    «Кошки — это хорошо!» (Эльфы уже приелись)
    • 0
      Выглядит как:
      Цитата:«Кошки — это хорошо!» из книги: «Эльфы уже приелись»
      (попытка пошутить на форе RO)
      • 0
        Ну да, как-то глупо вышло...) Но главное мне идея понравилась. Свежо, оригинально.
        • 0
          Спасибо
      • +2
        Терри Пратчетт
        Посох и шляпа
        — Я всегда хотел знать, — горько проговорил Ипслор, — что в этом мире есть такого, ради чего стоит жить?
        Смерть обдумал его вопрос и наконец ответил:
        — Кошки. Кошки — это хорошо.
        • 0
          Так получилось, но я не знаком с Плоским Миром. Мне подсказывают, что эта фраза не раз проскакивает в историях о нём.
  • 0
    Ждём ММО с лисичками!
    • 0
      Коль глаголите на английском, просмотрите пункт с конкурентами ;)
  • 0
    Как организовал сетевой обмен? Netty или что-то еще?
    • 0
      Так, как я ставил себе цель разобраться с Java Netty решил не использовать, а просто разобраться с сокетами.
      Сначала были обыкновенные сокеты (по Thread на клиента) потом заменил на голый NIO.
      Когда сделаю в 3D версии минимальную играбельность, попробую перейти на Netty.
  • 0
    А итоги тестирования какие? В статье ни слова
    • 0
      Самое главное это огромной фидбэк и упорядочивание планов к следующему тесту.
      Отловил пару багов: например, кривое синхронизирование времени на клиентах и сервере.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.