Игра про робота: Как это было или могло быть.
Классический пост во_время\после конкурса. Очевидно, содержит спойлеры сюжетные и игровые.
Начну свой рассказ с того, что не мог понять тему и пытался выяснить смысл её, что на Гамине, что в чате Гамина. Важные даты. Даты стали мне более-менее понятны — это события, единичные или ежегодные, но могут быть и ежесезонные? Но что такое Важные? Кому они важны? Почему?
Долго не мог решиться участвовать или нет. Склонялся даже пропустить этот Гаминатор, но затем пара идей и захотелось их воплотить. На вопрос важности дат так и не смог ответить, ведь я и в реальности не всегда понимаю их ценность-важность. И практически аналогичным путём пошёл в игровом лоре — те даты, что встречаются на самом деле не «важные события», а в каком-то смысле факты.
Начало
Как всегда началось всё с рисунков-концептов игры. Вернее не так. Изначально я хотел сделать игру вообще никак не связанную с темой конкурса. Но додумывая некоторые вещи опять получился специальный концепт.
Идеи было на самом деле 2.5 и их можно разглядеть на концептах — платформер и строительная игра. Достаточно быстро склонился к одному гибридному варианту — это платформер с возможностью строительства, сбору ресурсов и исследованием мира.
На концепте опять же видно, что уровни планировались если не метроидвания-стайл, то не просто «экраны». Но про сами уровни напишу чуть позже.
В чём была мысль геймплея? В чём даты? Хейзер в комментариях к теме конкурса выражал мысль, что привязать геймплей будет сложно к такой линейной теме. У меня в принципе геймплей не очень, так что тут терять мне нечего и я решил явно связать время и конец игры. Именно время, а не дату. Изначально указал конкретную дату, когда персонаж игрока умирает, однако, подумал, что интереснее будет сдвигать это время и чуть-чуть мотивировать игрока к исследованию. В итоге связь важной даты была потеряна, ведь это стал плавающий таймер.
Геймплей, которого не было
На концепте указана пара построек, которые не вошли в игру. Но я бы сказал, что это целый пласт игрового процесса, а не просто постройки. В планах была хоть какая-то механика боя, а если не боя, то сдерживания атаки
Мне кажется без этого слоя игры всё вышло максимально безжизненно (во всех смыслах). Даже не приступил к этой механике врагов, но зато подумал, что мог бы как-нибудь прикольно полу-программно рисовать врагов, это же важнее, чем игровой процесс! (ну да, ну да).
Ещё один важный игровой момент, который даже не дошёл до этапа обдумывания, но есть в концептах — смерть и препятствия. Например, думал о добавлении «бассейна», который роботу явно противопоказан, но если бы мы повернули какой-то рычаг, то вода бы ушла и открылась новая зона исследования. Так же нет классических шипов, хотя казалось бы. В итоге смерть в игре одна — по таймеру. Или от бага.
Опять он со своим 3D
ГМС ЭТО ТРИ ДЖЭ ДВИЖОКЭ!!1 Не умею делать даже 2д игры, но тянет меня пытаться вывернуть гмс так, чтобы он стал трёхмерным. Наверно это моя специфичная тяга чуть ли не к движкописательству и прочему тех.артовскому.
Возможно, кто-то знает про мой проект The Стенки. Думаю он никогда не будет доделан. Для этой же игры я просто взял и с нуля написал какие-то 3д штуки. Но да, у меня есть опыт работы с 3д в ГМ, как минимум в одной игре полноценной. А ещё Вампир Виталий.
Но пришло время немного побухтеть. Как выяснилось, в GameMaker нельзя взять UV координаты тайла. Нельзя и всё. Можно получить координаты тайлсета, а высчитывай давай сам. Разве сложно? Вообще нет, если настроить тайлсет. А если не настраивать, то будут совсем не те координаты.
Платформер 2.5Д на самом деле предназначался как раз для того самого проекта-который-не-попадает-в-тему. И я решил, что можно было бы и набить руку на таком платформере. В итоге всё равно вышла каша, что по 2.5Д, что по физике, что вообще устройству.
Про уровни
Очень большая часть про уровни. Мир планировался большой. Вернее это должны были быть наборы уровней, которые связаны. Ну и я и пошёл обрисовывать ситуацию. Очень тяжко это далось честно говоря — не мог сформировать мир в голове и на цифровой бумаге, да даже не просто бумаге.
Сложность была не столько в том, чтобы выдумать, а ещё в том, чтобы была связанность и обусловлена механика строительства и полу-бэктрекинг. В итоге кажется мир получился достаточно линейным.
Много времени потратил на создание уровней в ГМ из тех набросков что были. Оказалось, что мне багованный ГМ попался и приходилось на каждый новый уровень-экран выставлять размеры. Ещё больше времени я провёл за написанием-улучшением своего старого кода с порталами-переходами между уровнями. Как в итоге выяснилось — очень зря, так как они не используются практически никак (кроме дверей, но там совсем другая логика).
Tiled
Затем я подумал, что может пришло время использовать внешний редактор независимых (от ГМ) тайлов? Смог вспомнить только то, что Dreik использовал эту программу как раз в аналогичном ключе — один большой мир, который разделён на «экраны». В моём случае понадобилось добавить особую логику со слоем Rooms, что оказалось достаточно просто.
Всё это делалось в +\- последнюю (4-ую) неделю конкурса. Написание кода загрузки заняло около 2−3 дней, а дальше это всё допиливалось каждый день до конца сроков. (кроме сегодняшнего дня)
Так как уровень теперь внешний, то я подумал, что круто было бы иметь возможность потенциальным игрокам попробовать создать свой уровень или даже набор. Tiled свободная программа, ресурсы предоставить могу. Поэтому с версией v101 будет доступна возможность создать свой уровень. Конечно накладываются ограничения особенностей геймплея, например, минимального лимита в 12 минут.
О теме
Основной стали даты внутриигровых событий-фактов. Мне это напомнило битси джем № 1, где я сделал краткую пробежку по всей своей игровой вселенной. Кто-то что-то понял? Думаю нет. Поэтому и этот проект не исключение. Должен признать, что я просто выдумал даты и некоторые события. А к каким-то событиям примазал даты. Например получилось так, что события Вампира Виталия происходят в будущем, хотя при разработке я думал про настоящее или +\- недалёкое прошлое.
Большой проблемой было придумать даты месяц-число. Казалось бы — бери любые. Но нет. Изначальную свою задумку я запорол, когда перешёл на Tiled и у меня появилась свобода делать комнаты любого размера и при этом иметь 100% стыковку мира.
Изначальна идея месяц-число была такая, что в зависимости от того, где находится «дневник» в координатах ячеек такая дата и ставилась. То есть игровой мир это буквально календарь. Честно говоря у меня не хватило сил и терпения, чтобы смотреть даты. Меня хватило лишь на ЧАТЫРЕ таких даты. То есть я реально брал календарь 2117 года например и смотрел по ячейкам-месяцам-дням куда попадает. Затем я автоматизировал этот процесс в игре, получил даты и записал в файл. Потом конечно оказалось, что оно не очень точное, но я так и оставил.
Пробуждение робота и смерть его это тоже в тему конкурса — там пишутся даты. Притянуто за уши? Возможно. Основной каноничной концовкой я хотел выразить мысль относительно важных дат, которая пересекается с темой причин и следствия — важная дата это та, что уже наступила и скажем отмечается или же важная та, которая стала отправной точкой для первой?
Конкретно в игре такой отправной точкой служит «ошибка в коде». День и событие неважное, но по итогу несёт за собой последствия некоторых столь же неважных событий. Конкретно в этой игре исправление ошибки не спасает мир\человечество, потому что событие с кодом исправляет лишь роботов. В игре я кстати не указал, что условный конец света так же наступает, но у людей есть шанс от того, что роботы-хранители теперь на стороне людей. Что я вообще сейчас написал?!
Всем спасибо за внимание!
- 28 ноября 2021, 19:21
- 09
Поставил меч не глядя, читать буду после прохождения игры =)
Довольно оригинальный способ с тайлами. Интересный пост, и кстати рисунки-концепты красивые)
Спасибо! Мне самому наверно больше нравится вырисовывать концепты игры на бумаге. Добавление относительно редких цветов в таких зарисовках ещё больше концепности несёт.
Расскажи про впечатления от Тайледа. Приходилось ли вообще пользоваться стандартным редактором для допила? Позволяет ли Тайлед увидеть уровень в завершенном виде? Что еще интересного?
Что-то я написал очень много, поэтому в спойлер:
Вообще мне понравилось. Тайлед умеет экспортировать в гамаковский формат тоже, но я сохранял в json и потом в игре обрабатывал этот файл. Т.е. никаким "редактором для допила не пользовался", если ты про встроенный редактор комнат.
Тайлед полностью отображает тайлы "как есть" в моём случае я написал авто-тайлер во время загрузки уровня и поэтому на скриншоте из поста там лишь синие тайлы-блоки коллизии - мой код сам добавляет потом нужный тайл. А так да, можно сделать ровно такой уровень по виду, как будет в игре.
Мне понравилось, что там можно задать разные типы файлов и им параметры. Да ещё и тип параметра "объект", который ссылается собственно на объект, прям показывает стрелкой в Тайлед на кого он указывает.
Вот например кнопка явно указывает на дверь, которую открывает. Тайлед понятия не имеет что такое дверь, кнопка и т.д. У типа "кнопка", которую я определил есть параметр "target" типа "object". По идее я могу хоть лестницу указать кнопке этой.
После встроенных прям в ГМ 9slice глазу больно видеть растянутые тайлы\объекты, как на этом скриншоте.
Вообще мне кажется потенциал Тайлед очень высок, это мой первый опыт с ним и возможно я дальше им пользоваться буду, мне понравилось.
Единственное что не понравилось это сам формат json. Некоторые моменты мне кажутся странными, например, параметры объектов не в виде ключ-значение, а это список, где под каждым индексом мапа, внутри которой надо найти name и value (а ещё там есть type, что гибче). В итоге по какой-то причине 400кб файл с Json очень долго загружается, что видно в игре, когда мы начинаем - игра подвисает.
Если кратко - рекомендую как минимум попробовать. Если в игре планируется какой-никакой открытый мир или вот такие "экраны" с переходами как у меня, то думаю 88% надо делать такой мир в Tiled.
А что найнслайс? Пока не успел им попользоваться. У нас в румах тоже объекты выглядят растянутыми, а в игре отображаются по алгоритму. Найнслайс умеет правильно тайлить объект прямо в редакторе?
Найнслайс - это очень крутая фича. Когда тебе нужно рисовать всякие хелсбары или подложки под диалоги/нотификации. То есть то что должно по-умному растягиваться, оставляя кончики/углы без скейла. Впрочем, то что будет происходить со средней частью так же настраивается. Будет ли там скейл, тайлинг, зеркалка или ещё чего.
Эта часть мне понятна как раз. ДаркДес в тексте дал намек, что мол с найнслайсом, растянутые объекты нормально отображаются прямо в редакторе комнат, еще до запуска. Это еще интереснее получается.
Да, я эти слайсы использовал и для простых объектов для уровня. Собственно, сами игровые объекты так и рисуются (кроме лестниц, там код аж из Кристы и чередуются кадры).
Так далеко я не заходил, но в доках видел, что Тайлед имеет и скрипты и плагины. Думаю можно там при желании навертеть что-то достаточно уникальное для игры.
Хорошо то как! Что ни день то что-то новенькое
Вспомнил тут ещё одну вещь о разработке.
Изначально, на ключевые события-концовки я хотел не просто текст добавить, но и нарисовать какой-то арт, а то и анимацию (простую, уровня один объект перемещается в сторону). Но конечно я ничего этого не успевал.
Зато даже нарисовал один концепт роботов-хранителей тех самых. Возможно будет заметно, что они имеют не совсем стандартный дизайн квадратных роботов, а весь такой обтекаемый и даже инопланетный что ли. Не сказать, что это удачное решение в дизайне, всё же больше механистичности бы им, а то совсем на роботов не похожи.