Goal abandoned
The author does not write in the goal 7 years 2 months 7 days
Создать ремейк игры Hopmon на движке Unity3d
Доброе время суток. Хочу поделиться с Вами своей целью, благодаря которой я надеюсь поближе познакомится с миром разработки компьютерных игр. С давних пор (я имею ввиду еще те времена, когда первым моим компьютером был ZX Spectrum) меня посещает эта мысль, но я не решался никак браться за эту идею всерьез, так как моей жизни было много отвлекающих факторов.
В наше время, вокруг достаточно необходимой информаций, средств и инструментов, и, наверное, было бы грех не попытаться попробовать реализовать себя в качестве разработчика игр. Это может быть действительно интересным и увлекательным занятием. Для реализации своих идей в этом направлении необходимо много времени, и в большей степени опыт. Недостаточно уметь придумывать геймплей, чтобы делать игры. Если работать в одиночку, то необходимы знания языков програмирования, опыт работы с 2D и 3D графикой, анимацией, звуком. Десять лет своей жизни я занимался никак не связанной с ИТ деятельностью. Но встав на верный путь, связанный с разработкой ПО, я решил, что создание игр будет моим хобби, пока не перерастет в нечто более серьезное.
Это коротко о том что сподвигло меня поставить перед собой эту цель. А теперь перейдем к сути.
У меня уже есть в какой-то степени смог получить рабочий прототип, который я делал год назад. Он полностью повторяет геймплей оригинальной игры, за исключением адекватной логики передвижения врагов. В прототипе нет полноценного меню, но зато есть редактор уровней, который оттянул на себя большую часть времени потраченного на разработку прототипа. На самом деле я слишком увлекся этим редактором уровней, уж очень хотелось, чтобы игрокам представилась возможность самим генерировать интересный контент. Теперь я поставил создание редактора чуть ли не на последний план. Не скажу что делал все зря, получил довольно неплохой начальный опыт в работе с Unity3d.
Теперь хочу посвятить в некоторые детали того, что из себя представляет моя цель. Когда-то очень давно в 2001 году я впервые познакомился с одной занимательно трехмерной игрой на ПК. Называлась она HOPMON. Она меня на то время поразила своей простотой, интересной механикой, небольшой хардкорностью, что пройдя 45 уровней мне хотелось еще. Для ознакомления я бы хотел предоставить Вам немного информации об игре
http://www.saitogames.com/hopmon/
и официальное описание
HOPMON is a 3D arcade action game. There are 45 levels in total and to complete each level, Hopmon will have to collect all the crystals and place them on the warpzone where the star symbol is printed.
This game is Shareware. Unregistered version is limited to the first 10 levels of play.
И немного о игре от меня:
Нашел я эту игру в сборнике «Игры для прекрасных дам», в котором содержалось довольно приличное количество игр и многие из них были очень увлекательными и интересными: это пиратская аркада Shipwreckers, необычная змейка NeedForEat, очень интересные игры на логику Lemmings Revolution, Sleep Walker, стратегия с уникальным управлением Majesty.
Суть игры Hopmon заключается в том, что Вы управляете персонажем, возможно животно-покемонного происхождения, и Вашей задачей является бегая по лабирину, собрать все кристаллы и отнести на стартовую точку. Жизнь у вас одна, и соответственно одно право на ошибку, иначе уровень придется начинать заного. Немаловажной частью геймплея является то, что чем больше набрал Ваш персонаж кристалов, тем тяжелее ему передвигаться и в этом случае некоторые препятствия невозможно будет пройти, либо необходимо будет приложить большие усилия.
Я вышел на связь с разработчиком и просто попросил разрешение о возможности сделать ремастеринг игры на Unity с последующим добавление различных фич. Это будет чисто фановый некоммерческий проект. Именно эти условия были отражены в его ответе мне.
Goal Accomplishment Criteria
Полноценный фанатский ремастеринг игры Hopmon
Personal resources
Используемый стек:
Unity3D + C#
Blender3D
Photoshop / Illustrator
Git (BitBucket)
Unity Cloud Build
Java 8 SE
Nginx/Apache/NodeJS
MySQL
Spring
-
Подготовка медиа-контента
Этап включает в себя подготовку прототипа медиа-контента, чтобы при разработке игры не отвлекаться на такие детали, как где взять модель необходимого игрового объекта.
На выходе этапа должно получиться 34 префаба игровых объектов, которые будут использоваться при создании уровней и разработке игрового процесса.
Модели делаются в бесплатном редакторе Blender. Исходники храняться в формате *.blend. В Unity импортируются в формате *.fbx.
Анимацию будут иметь:
- Hopmon (игрок) - покой, прыжок (ходьба), ускорение
- EnemyD - прыжок (ходьба)
- EnemyE - подготовка к ускорению
Скорее всего анимация и звуки перенесутся на более позднюю стадию
-
18 мешей
-
материалы + текстуры
-
пребаф игрока
-
18 префабов для строительства уровней
-
8 префабов объектов
-
9 префабов врагов
-
Создать загрузчик уровней
Первое что необходимо сделать в этом пункте, это написать небольшую утилиту которая переведет текстовые файлы с картами уровней в файлы с объектами уровней в формате JSON, т.к. планируется хранить уровне именно в этом формате.
-
Парсер существующих уровней игры (45 уровней)
-
Загрузчик уровней из формата JSON
-
Создание ScriptableObject со всеми игровыми объектами
-
Написать скрипт менеджера уровней
-
-
Скрипты для объектов
Собираемый объект Cristal
- реализует интерфейс ICollectible
- методы collect(), release() изменяют состояние объекта
Движение NeedleBox
- циклическое движение вверх-вниз с использованием IEnumerator (Coroutine)
Движение NeedleBoxDrop
- объект аналогичен предыдущему, только блокирует проход после первого прохождения игрока под ним. Бросает луч вниз, после детекта игрока падает через некоторое время.
Движение Needleball
- в будущем будет двигаться по четко заданным в редакторе уровней координатам (Waypoints), сейчас поведение как у обычного врага по координатам
Орудие Cannon
- стреляет через определенный промежуток времени снарядами, движущимися с заданной скоростью
Орудие CannonUp
- пушка, стоящая вертикально постоянно выстреливает снаряды вверх, которые случайным образом попадают в соседние от орудия клетки (8 позиций)
- реализация будет объявлена позже
Орудие Volcano
- периодически выстреливает снаряды вверх, аналогично CannonUp, область поражения 15 позиций вокруг объекта
- реализация будет объявлена позже
Снаряд Missle
- логика полета и скорость зависят от типа орудия, снаряд умирает спустя 5 секунд или при столкновении с препятствиями.
Настройка Input`ов проекта для геймпада
Управление персонажем
Реализация плиточного движения
Реализация столкновения с препятствиями
Реализация движения только по земле (пол, мост, бустеры и т.д.)
Реализация выстрела
Реализация снарядаУправление камерой
Сферическое вращение камеры вокруг персонажа на 90 градусов
- управления игроком при новых позициях камеры
Вражеские персонажи
Ghost - запрограммировать движение с учетом препятствий. 1HP
Cube - вращается в ту сторону, в какую движется. 2HP
JellyFish - прыгает, в связи с чем не всегда можно убить. 1HP
Frog через какое-то время останавливается и на несколько секунд ускоряется. 2HP
UFO - неубиваемое, всегда в поисках игрока на одной линии, стреляет снарядами по земле. Неуничтожимое-
Собираемый объект Cristal
-
Движение NeedleBox
-
Движение NeedleBoxDrop
-
Движение Needleball
-
Гейзер
-
Орудие Cannon
-
Орудие CannonUp
-
Орудие Volcano
-
Снаряд Missle
-
Настройка Input
-
Реализация плиточного движения игрока
-
Реализация столкновения с препятствиями
-
Реализация движения только по земле
-
Ускорение персонажа
-
Реализация выстрела
-
Реализация снаряда
-
Сферическое вращение камеры вокруг персонажа на 90 градусов
-
Вражеские персонажи Ghost
-
Вражеские персонажи Cube
-
Вражеские персонажи JellyFish
-
Вражеские персонажи Frog
-
Вражеские персонажи UFO
-
Геймплей
В начале этого этапа я постараюсь сделать первый коммит в одну из систем контроля версий. Этот проект публичный, т.к. является скорее учебным, чем коммерческим, тем боле я не обладаю правами на оригинальную игру.
Буду использовать GitLab. Заодно и познакомлюсь как с ним работать, так как есть опыт работы с GitHub и BitBucket.
Игровой менеджер
Игровой менеджер должен будет следить за ходом игры, и налаживать связь между ключевыми объектами в игре. К таким я объектам отношу Level, Player, GameCamera, UIManager.
В GameManager должны быть счетчики кристаллов, очков. Он должен следить за состоянием игрока, т.к. смерть игрока должна означать конец игры. Должен перезапускать уровень по требованию, переключать игру между уровнями, т.е. отвечать за условия победы и поражения.
Игровой уровеньОбъект в котором полями будут являться основные параметры уровня. Данные будут получены из загруженного из JSON файла уровня. Придется немного переработать систему загрузки.
Взаимодействия игрока в врагами
Важно проработать все взаимодействия между игроком, врагами, окружением.
Рефакторинг и чистка кода.
На этапе так же необходимо будет проработать все найденные баги, сделать код чище и понятней, постепенно документировать код и коммитить в ветку на GitLab.
Я хочу так же иметь обратную связь, буду ждать консруктивной критики или, возможно, часть моего кода станет для кого-то решение его проблемы.
-
Коммит проекта в GitLab
-
Игровой менеджер
-
Уровень, менеджер уровней
-
Понятие игрового процесса
-
Условия победы и поражения
-
Счетчики
-
Рефакторинг, документирование
-
-
Звук и музыка
В этом этапе необходимо реализовать AudioManager. Который бы позволил управлять всеми звуками и музыкой в игре. Добавить везде где надо необходимые аудиофайлы.
-
Добавить 4 фоновых композиций в формате mp3
-
Звук ходьбы игрока
-
Звук подбора кристала
-
Звук отпускания кристала
-
Звук готовности стрельбы
-
Звук выстрела
-
Звук попадания
-
Звуки орудий
-
Звуки UFO
-
Звук гейзера
-
Звук кубов
-
AudioManager
-
Переключение фоновой музыки
-
-
Интерфейс
Этап реализации UIManager и OptionService. В первом будут методы для переходов между меню. Обновление и изменение пользовательского интерфейса во время игры.
Схема главного меню:
- Start Game - загрузка последнего пройденного уровня
- Select Level - меню выбора уровня
- Options - Настройка
- Level Editor - в будущем
- Profile - в будущем
- Exit - выход
Схема интерфейса выбора уровня
- Play - начать играть на выбранном уровне
- Select - активация/деактивания режима выбора
- Back - вернуться в предыдущее меню
Схема интерфейса настроек
- Audio | Music/SFX volume/mute - настроки аудио
- Video | Resolution/Fullscreen/FX - настройки видео
- Controll | Gamepad/Keyboard - настройки управления
- Back - вернуться в предыдущее меню
Интерфейс в игровом режиме
- Level number/Cristal count/Fire Ready - элементы интерфейса
- Popup text | Win/Loose/Level intro/Points - всплывающие текстовые надписи
-
Схема интерфейса главного меню
-
Схема интерфейса выбора уровня
-
Схема интерфейса настрок
-
Интерфейс в игровом режиме
-
Анимация кнопок
-
Анимация переходов
-
Расширение менеджеров для работы с интерфейсом
-
Профили
Создание локально в документах данных о сохранении игры. И статистики прохождения уровня.
Реализовать механику начисления очков.
Статистика включает сбор данных по пользователям (профилям) которые играли в игру на одном ПК и вывод в виде таблицы:
Игрок | Время прохождения | Набранные очки
-
Сохранение достижений на пк (локально)
-
Начисление очков
-
Сбор статискики
-
Меню выбора профиля
-
Таблица рекордов
-
-
Релиз первой версии игры
Релиз игры возможен без выполнения п. 9, 10, 11. Т.к. это будет полноценный ремастеринг. Игра должна иметь 100% работоспособность на ПК. Это главное условие для цели. В зависимости от успехи буду решать продолжать ли проект или нет.
-
Релиз на PC
-
Релиз на Android (при 80% успехе проекта)
-
Релиз на iOS (при 80% успехе проекта на Android)
-
-
Сеть
-
При выполнении пункта 8, реализовать загрузку паков уровней на сервер
-
Возможность создания профилей с сохранением достижений и результатов (на сервере) в базе
-
Улучшение безопасности
-
-
Редактор уровней
-
Реализовать сцену с редактором уровней
-
Реализовать интерфейс (палитра и рисование)
-
Реализовать загрузку и сохранение уровней
-
Реализовать возможность создания паков уровней (запаковка уровней в levelpack)
-
Реализовать различное уникальное поведение для рисования и редактирования различных объектов
-
-
Новый конент
При успешном выполнении 8 пункта появиться возможность реализовать новый контент:
- новые уровни
- новые враги
- новые игровые режимы
-
Подготовка материалов для краудфандинга для создание авторской игры со схожим геймплеем
Step cost — 0.01 $
- 1897
- 16 January 2017, 11:28
Don't miss new posts!
Subscribe for the Goal and follow through to its completion