Thermonuclear, Девблог №0

Прошло довольно много времени с последнего поста, участвовал в индикапе, разбирался с новым компом, "осваивал unity"

Thermonuclear, Девблог №0

Что с прошлой игрой? (Darkest Hour)

Всё что планировалось сделать изначально - сделано. Так как этот проект я начинал совершенно без опыта разработки было допущено куча ошибок. Механики реализованы через костыли, надписи сделаны вручную через спрайты, то есть перевести на другой язык в случае чего будет очень трудно. А самое главное - отсутствие оригинальности. Вообщем фундамент игры не торт.
С полученным опытом и свежими идеями приступлю к намного более оригинальному (надеюсь) проекту.

Участие в Indie Cup

Конкурс конечно ещё не закончился, но всё же. Игру приняли, глянул стримы с просмотром конкурсантов, на моё удивление чату твича игра понравилась, даже попал в шорт-лист стримера, но потом был отсеян.
Я рад, что моя простенькая и сырая игра смогла хоть чуть-чуть посоревноваться с играми от больших команд разработчиков, делавших игру несколько лет.

Thermonuclear, Девблог №0

Комп

Не хочу слишком распинаться, вообщем, спасибо Кефир за комп. Жаль конечно я не использую потенциал компьютера по максиму - слишком уж простые игры делаю.

там еще гарнитура + моник есть
там еще гарнитура + моник есть

Попытки в Unity

спойлер: остался на GameMaker Studio 2

Как получил комп скачал unity. Думал что начальная стадия осваивания программы дастся намного легче чем было когда-то давно, но нет, всё также. В течении недели смотрел гайды по unity, изучал c#, ну и пытался использовать знания на практике. В тоску это всё вгоняло в огромную, просыпаюсь - думаю о том что по приходу домой нужно будет продолжать изучение. Приходил домой, сидел до ночи, особо ничего не выходило, расстроенный ложился спать. И так по кругу.

Долго думал: оставаться на удобном для разработки gms2 или потратить кучу времени на востребованный на рынке unity. Решил что в большей мере хочу заниматься творчеством, а не чисто кодингом. Плюс меня вдохновил оставаться на моём движке успех Loop Hero (узнал у разработчика, она тоже на гамаке).
Поэтому пока есть время буду делать свои инди игры, а если нужна будет стабильная работа - устроюсь геймдизайнером (в идеале, если вообще смогу попасть в геймдев). Но бросать unity было очень обидно, не привык бросать начатые дела.

Новый проект - Thermonuclear

Пока игра на очень-очень-очень ранней стадии разработки, распишу подробнее о самой игре в след. девблоге, когда будет что показать.

У меня всегда были проблемы с неймингом, Darkest Hour как я позднее узнал очень заезженное название (2 игры, американская группа, фильм). А вот "Thermonuclear" же почти нигде не использовался и передаёт одну из основных механик игры.

буквально первые часы старта разработки (с использованием старых спрайтов)
буквально первые часы старта разработки (с использованием старых спрайтов)

В кратце о геймплее: тактическая игра, где всё разделено на клеточки (а-ля into the breach), с упором на окружение (скидывание в воду, подрывающие соседние клетки мины и прочее) в реальном времени, ограниченное кол-во действий (благодаря сломанному термоядерному реактору героя). Ну и по классике прокачка, сбор лута + закупка расходниками перед миссией.

Надеюсь смогу внедрить полноценную сюжетную линию, так как опыта в этом нет (хотя истории для игр я всегда придумывать любил, те же партии в настолки, в которых я всё с нуля продумывал). Да, пока что звучит как каша, сам еще не до конца уверен в своих идеях.

как игра выглядит сейчас
как игра выглядит сейчас
2424
11 комментариев

Комментарий недоступен

6
Ответить

Раз уж решил остаться на GMS, то вот парочка непрошенных советов :
1) в качестве IDE используй GMEdit от YellowAfterLife. В нем есть фичи, которых нет в IDE самого GMS. Самое очевидное и полезное - указание типов переменных и последующие подсказки автодополнения.
2) Если ещё не перешел, то переходи на последнюю версию GMS 2.3 и используй все новые фичи типа структур и классов, методов. Это поможет гораздо лучше структурировать код.
3) Наколхозь паттерн издатель & подписчики. Она сильно снизит паразитную связность в проекте и позволит легко и непренужденно менять его и расширять в дальнейшем.

2
Ответить

Почему pub&sub важен? Ну, например, решил ты сделать, чтобы при ударе по противнику, у второго отнималось хп. Что обычно делается в таких случаях? В лучшем случае какой-нибудь скрипт hit_obj, в котором происходит уменьшение хп у цели. В худшем случае прям там на месте удара берем и отнимаем хп (и так для каждого объекта, наносящего урон. Поэтому этот способ худший)
В случае использования pub&sub, вместо создания скрипта урона, мы создаем событие урона. И вызываем его каждый раз при атаке. События должны поддерживать хранение переменных, в которые можно будет записать кто нанес урон, кто цель и сколько урона нанесено (и еще куча других параметров, если это так важно).
И самая прелесть, что это событие могут получить все, кто на него подпишется. Например, все противники (и игрок). Получив событие и если мы тот, по кому наносится урон, объект отнимает у себя хитпоинты. Почему это лучше?
Потому, что, в данном примере, если вдруг мы захотим расширить механику - допустим, добавив вампиризм (тот, кто нанес урон, восстанавливает себе хп 50% от нанесенного урона), то нужно будет только подписаться на это событие (если речь идет о противниках и игроке, то они уже подписаны) и если, вдруг, мы тот, кто нанес урон, то смотрим количество нанесенного урона и восстанавливаем себе хп. Причем система вампиризма может находиться в отдельном компоненте, который прикрепляется к персонажам (unity, привет).
В классическом варианте, пришлось бы наверное пойти в скрипт hit_obj и там прописать что-то типа "если у нас есть вампиризм, то восстанавливаем себе хп". А это совершенно излишняя связность.

Одновременно с этим, звуковая система может быть также подписана на это событие и при его получении, будет проигрывать звук попадания.
Еще может быть система эффектов, которая должна разбрызгивать кровь, как только получит это событие. И чтобы отключить эту самую кровь, нужно будет не бегать по всему коду и искать вызовы функции "пустить кровь", а просто зайти в контроллер эффектов и отписаться от события нанесения урона.
А еще система статистики уровня, которая подсчитывает количество нанесенных ударов игроком. 

Куча всего, но никто ничего не знает друг о друге, а значит можно модифицировать и менять системы независимо друг о друга. Круто.

5
Ответить
1
Ответить

Все таки попробуй в юнити, а что тебе не понятно с#? Если что напиши мне, может помогу вкатится в начале

Ответить

Юнити сам по себе слишком перегружен функциями для создания двумерной инди игры. Если я бы создавал ведьмака с кораванами, то да, юнити мне нужен. А так, gms 2 для моей задумки намного удобнее 

Ответить