Здравствуйте! Я программист C#, пошёл в профессию, потому что с первого класса, как только у моего одноклассника появилась Sega, мечтал делать игры. Если пропустить суету, то на четвёртом курсе за полтора месяца написал на Node.Js мультиплеерную игру, в которой в процедурно генерируемом лабиринте необходимо собирать кристаллы и на скорость доставлять их на свою базу. У неё даже была своя аудитория - аж 5 человек, по совместительству моих одногруппников, которых я попросил немного потестить игру. Были некоторые взгляды на дальнейшее развитие данной игры, но, сами понимаете, долги, экзамены, и как-то незаметно забилось.
После этого с периодичностью где-то в год было 4 попытки создать свою карточную игру с уникальной механикой.
Пример наброска одной из старых игровых разработок, сделанного за 3 дня:
А это уже проба жанра ZPG: идея скрестить всё самое лучшее в "Годвилле" и "Сказке" плюс добавить интересных механик от себя:
И несмотря на то, что каждый раз мой энтузиазм утихал где-то через пару недель, я неплохо освоился с функционалом Unity, а также создал несколько полурабочих прототипов и понял некоторые ошибки в своём подходе в разработке игр. Самая главная из них - это перфекционизм.
Отучившись на бакалавриате 4 года, я выпустился с чёткой установкой соблюдать принципы SOLID и последовательный подход к написанию программ. Что я могу сказать?
И мой профессиональный, и мой игродельный опыт орут, что в условиях нехватки времени (а в бизнесе это распространённое явление, да и дома, после работы, когда остаётся несколько жалких часов на себя, которые ты хочешь посвятить своим проектам), необходимо:
не ставить перед собой грандиозных целей типа создания убийцы HeartStone с клиент-серверной архитектурой, способной выдержать миллионы игроков одновременно, а действовать, отталкиваясь от простых, даже примитивных задач
не стремиться писать "чистый" код, соблюдающий SOLID, а писать код быстро, даже понимая, что нынешняя архитектура неповоротлива и непроизводительна; всё равно потом придётся многое менять, подстраиваясь под задачи, да и время вдохновения может пройти
И вот со всем этим багажом я решил приступить к разработке данной игры.
XO-Battler
Идея
Вместо крестиков и ноликов – боевые персонажи, сражающиеся с двух сторон на поле 3х3.
У них могут быть разные атаки и способности, которые они используют против стороны противника.
Персонажи, выстроившиеся в ряд из трёх, получают бонусы к характеристикам.
Потерявшие очки здоровья персонажи покидают поле боя, и на освободившееся место игрок в свою очередь может поставить своего бойца.
Побеждает игрок, уничтоживший всех бойцов противника или занявший все 9 ячеек.
Игра, конечно же, мобильная, так как это более доступный и удобный для пользователя, а также самый потенциально выгодный для данного проекта вариант.
Начало разработки
С учётом предыдущего опыта, шаг 1: создание основы, которая будет постепенно обрастать всем остальным. Это выглядело примерно так:
Создание процедурно генерируемого поля из квадратных ячеек.
Реализация примерной фигурки для отображения существ.
Реализация примерной структуры классов для сражающихся существ.
Создание небольшого массива существ с разными картинками и характеристиками для стартовых тестов.
Реализация размещения случайно выбранного существа при клике на ячейку поля боя.
Подсветка ячейки поля боя при размещении на ней существа с соответствии с тем, какому игроку оно принадлежит.
Подстройка положения и угла обзора камеры под размеры экрана устройства для сохранения пропорций видимого на экране поля боя.
Добавление наброска меню.
Компиляция проекта на Android с целью проверить работоспособность сборки (а то мало ли).
На всё это ушло 4 дня по 2-4 часа каждый. Это ещё не очень похоже на игру, но уже есть, от чего отталкиваться.
Короткое видео с результатом:
Далее думаю двигаться в сторону реализации базовых игровых механик и улучшения отображения состояний бойцов типа шкал атаки/здоровья и, может быть, эффектов.
Пишите свои идеи, замечания, советы и предложения, так как пока что у меня отсутствует чёткое видение данной игры, да и интересно узнать, что вы о ней думаете.