Как делают игры среднего масштаба разработчики одиночки)
Моя личная история про разработку игры на android, пара кейсов, и граблей, на которые наступать крайне не рекомендуется) Разработка велась и ведётся на языке java с помощью фреймворка libgdx.
Итак, всё началось с идеи и диздока. Так как разрабатывать игру я собрался один, то диздок я решил сделать "мега информативным" :D
Идея игры проста: в углу сидит червяк, к нему идут рыбы на плавниках, и ты этих рыб мочишь, не подпуская к червяку.
После трех бессоных ночей и 5 чашек кофе я сделал тестовый билд, выглядил он так:
Так изначально выглядела "резалка" для рыб. В определённые моменты времени смотрелись последние точки, на которых находился палец, и по ним строились линии.
А вот будущие рыбы:
Первая рыба))
Нарисовал ботинок, а рыбы ещё нет :D
А вот она уже готова) Ждёт своего часа :D
К этому времени прошло два месяца, я разобрался с примерным будущим видом игры, и стал активно добавлять в игру новых врагов.
А так же, внимание, взялся за второй проект с напарником (никогда, повторюсь, !никогда! не беритесь за два проекта сразу, из-за этого я потратил на разработку в два раза больше времени, + очень сложно переключаться с проекта на проект. Если вы работаете в команде, будет проще переключение, а когда делаете всё сами, то сильно будет падать скорость)
Дальше пришло времени рыбу анимировать. Сначала я нарисовал четыре кадра руками, с нуля (рисовал всё в векторе), потом понял, что получилось убого, и стал искать варианты в интернете. Нашёл интересную программу, называется Anime Studio. В ней можно из одной картинки сделать анимацию с помощью инверсной кинематики. В итоге всё выглядело следующим образом:
Потом я написал свою систему частиц, для крови (в будущем ещё для ряда "спецэффектов"). Я знал про стандартную libgdx`овскую систему, однако хотелось написать её самому.
Пришло время для новых героев и оружия, представляю один из макетов (в данном случае медузы):
А теперь как всё выглядело после:
Система частиц для огнемёта использована та же, что и для крови)
Важный момент (этот текст для программистов): я сделал два класса, один персонажа двигает, другой отрисовывает и имеет внутри себя определённый набор данных. Делайте разделение так же, так вы сможете один раз описать например движение прыжками, и использовать его для всех прыгающих персонажей. Тоже самое для ходящих :D И т.п.
Ещё один рабочий момент с червяком)
Потом я нарисовал ещё 10 врагов, оружие к ним, вот некоторые скриншоты процесса (на втором скрине босс, о котором немножечко позже):
Внимание - мой самый лучший скетчик морской звезды:
Затем я закончил основную часть, и решил, что надо улучшить графику. Набил немного навыка рисования, и перерисовал некоторых персонажей. Рост навыка можете видеть на скрине ниже
После того, как я закончил делать врагов, оружия к ним, надо было сделать интерфейс. Ниже можете видеть мой прогресс)
Первый вариант интерфейса (на примере GUI):
Финальный вариант:
Теперь о боссе: т.к. в игре постоянно статичная камера, я решил сделать уровень с боссом немного особенным, и добавил туда динамичную камеру
В общем, уровни с боссами (их 6) достаточно интересными вышли, обязательно зацените)
Настало время делать уровни, и тут я встал в небольшой тупик) Сделал формат общий для каждого уровня, всё в формате JSON. Однако вручную пилить очень тяжело, постоянно путаешься, и решено было сделать редактор. Делал его около 13 часов в сумме, использовал для разработки язык C# с WPF. Этого того стоило) В редакторе помимо основных параметров врагов (тип, здоровье, время появления) можно задавать кастомные параметры для каждого врага.
Что получилось в итоге можете посмотреть по ссылке в google play:
https://play.google.com/store/apps/details?id=com.fogok.tlfi...
Резюмируя хочу дать некоторые наставления совсем совсем зелёным в геймдеве:
1) никогда не пренебрегайте идее делегирования, одному все сделать идеально невозможно, а вот влиться в команду или сделать свою, и стать крутым в одной более узкой специализации возможно. На моем примере: много задач я решал очень долго, много много раз всё переделывал, и в итоге разработка этой игры заняла год (правда с учётом того, что большую часть времени я участвовал в команде в разработке инди игры с одним человеком, однако для года работы результат слишком скромен).
2) Как бы банально это не звучало - никогда не сдавайтесь! В разработке игр, как и в любом творчестве, нужно пробыть очень долго, чтобы добиться чего-то действительно стоящего (вам может и повезти, но это, увы, большая редкость). На этом длинном пути будет ооочень много фейлов, и очень важно уметь сохранять позитив. Это сложно, однако, если вы по настоящему любите своё дело, то у вас обязательно всё получится!!!
Всем спасибо за внимание, с уважением, Олег Карловский.