Saintheiser

Saintheiser

На Пикабу
Дата рождения: 30 июня
3546 рейтинг 57 подписчиков 3 подписки 58 постов 5 в горячем
5

Проектный вторник #3

Сегодня вторник - снова время рассказать, над чем я работал целую неделю. В фокусе был всё тот же проект Zzzz-Zzzz-Zzzz. Моя легендарная игра про сны - поиск выхода из непостижимого, сюрреалистичного мира. Кратко о главном.

Проектный вторник #3 Gamedev, Инди, Инди игра, Разработка, Pixel Art, Головоломка, Видео, Длиннопост

Как я и говорил в прошлом посте, собирался работать над уровнями. Работал над ними и успел сделать шесть штук. До карты снов не дошёл. Я делаю уровни по порядку. Первые примерно 10 уровней игрок открывает линейно, и только потом попадает на Карту Снов, откуда может продолжать свои приключения, возвращаясь в прошлые уровни в поисках сновидческих тропинок в новые сны. Причём эти первые уровни на самом деле не линейные, игрок увидит только часть из них, может увидеть 5 штук, а может и 8. Всё зависит от маршрута, который будет выбран.

Постойте-ка, что значит "сделал уровни"? Ведь уровни уже готовы, это те же самые, что и в оригинальной версии. Про проблемы я подробно рассказал в прошлом посте. Поэтому просто резюмирую, что мне нужно сделать с каждым уровнем в игре:

  • Разобрать слои с объектами, тайлами, ассетами, фонами - привести их к рабочему виду.

  • Все тайловые слои сделать полноценными тайловыми, что непросто, т.к. мне приходится заводить от 2 до 6 таких слоёв.

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

  • За расширением следует перенос всего содержимого слоёв в центр сцены (сцена всегда расширяется вправо и вниз).

  • Выставить камеру, зафиксировав её по осям, если нужно

  • Пройти по всем объектам этого уровня и проверить/поправить логику, т.к. частично она была завязана на координаты. Попутно заменить устаревшие функции на новые.

***

Пройдусь по конкретным уровням, которые я сделал за неделю.

Первый уровень уже является развилкой и называется Пробуждение.

Игрок выбирает сторону, в которую пойдёт. Попробовать пойти в другую сторону можно будет уже с Карты Снов как раз. Здесь я довольно долго боролся с камерой. А ещё добавил анимации пробуждения и входа в выход - взял из демки второй части этой игры.

Огромные буквы повторяющейся фразы в этом уровне являются мемом среди фанатов этой игры. На самом деле это нужно было только для того, чтобы научить игрока пользоваться кнопкой действия Z, что символично коррелирует с названием игры. Но я хочу завезти геймпад и UI подсказки, поэтому придётся как-то это переделать, не убирая этот смешной огромный текст.

Дальше не будет особого порядка, я пойду по тому, как уровни заведены у меня в проекте:

Проектный вторник #3 Gamedev, Инди, Инди игра, Разработка, Pixel Art, Головоломка, Видео, Длиннопост

***

Второй уровень - это Восхождение.

Здесь начинается троллинг игрока фейковыми выходами. Что должно натолкнуть на мысль, о возможности пропрыгать по платформам на заднем плане.

Проектный вторник #3 Gamedev, Инди, Инди игра, Разработка, Pixel Art, Головоломка, Видео, Длиннопост

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

Проектный вторник #3 Gamedev, Инди, Инди игра, Разработка, Pixel Art, Головоломка, Видео, Длиннопост

***

Третий уровень - Полёт.

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

Здесь тоже есть немного троллинга для получения улучшения - возможности летать и в других снах. Это будет новая фича этой версии игры. Улучшение позволяло летать только на карте снов.

***

Четвёртый уровень - Суперсила.

Игроку сообщается что он теперь обладает суперсилой.

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

***

Пятый уровень - Обрыв.

Игрок ставится перед фактом, что сны бывают похожи на реальность, что ещё выстрелит в будущем. Просыпается в доме ночью, выходит на улицу и останавливается на обрыве.

Хоть игра и подталкивает игрока к прыжку - это не единственный способ завершить сон. Есть ещё секретный проход. В этом уровне я использовал новый тайлсет дома из демки второй части игры. Оригинальный выглядит слишком убого, вот можете антизаценить:

Проектный вторник #3 Gamedev, Инди, Инди игра, Разработка, Pixel Art, Головоломка, Видео, Длиннопост

***

Шестой уровень - Лестница.

Доконавший множество летсплейщиков.

Проектный вторник #3 Gamedev, Инди, Инди игра, Разработка, Pixel Art, Головоломка, Видео, Длиннопост

Смысл уровня в том, чтобы игрок пропрыгал всю лестницу снизу до верху. На это может уйти довольно много времени.

***

Седьмой уровень - Тюрьма.

Игрок помещается в замкнутое пространство. Именно здесь, по задумке оригинальной игры, игроку нужно было вспомнить про "ЖМИ <<Z>> В ЛЮБОЙ СИТУАЦИИ".

Проектный вторник #3 Gamedev, Инди, Инди игра, Разработка, Pixel Art, Головоломка, Видео, Длиннопост

Смысл в том, чтобы довольно очевидным образом лечь обратно в постель. Или не очень очевидным, а протыкиванием кнопки Z на каждом пикселе. В этой версии будут UI подсказки на интерактивные объекты. Поэтому мне придётся немного переделать концепт. Например, сделать так, что первые два раза засыпания в постели ничего не меняют, или только первый.

***

Восьмой уровень - Пустота.

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

Хотя на самом деле здесь просто нужно действовать согласно тексту. Любой инпут прерывает "заканчивание сна". Поэтому когда игроки крутятся возде пиктограмы с клавишами и пробуют что-то сделать - сон не заканчивается.

А ещё я сюда сделал зацикленное движение по горизонтали. В оригинальной игре ограничителем был край экрана. В этой версии игры ширина экрана может плавать, а невидимые стены я не люблю.

***

Заключение

Пока что 8 уровней из 36 готовы. Причём не самые сложные и не самые большие по контенту. Буду делать дальше. На грядущей неделе я скорее всего буду мучить карту снов. Хочу сделать красивую зацикленность, но есть нюансы с камерой. Кроме карты хочу ещё хотя бы 5-6 небольших уровней сделать.

Буду рад вашей поддержке:

  • Вступайте в мою группу ВК чтобы следить за девлогом и новостями.

  • Залетайте на мой дискорд Сервер - мы с пацанами там обсуждаем всякое - и мой прогресс по проектам, их концепты и просто трындим про игры, делимся опытом.

Спасибо за внимание!

Показать полностью 6 5
3

Вдохновельник #3

Сегодня понедельник, а значит снова нужно вдохновиться на рабочую неделю. Для этого я приготовил вам рисунок, который нарисовал на прошлой неделе. Всем вдохновения и трудоспособности!

Вдохновельник #3 Цифровой рисунок, Инди, Vectorart

Это персонаж для одной из моих игр. Для Danger! Energy, как можно догадаться по стилю. Место этого персонажа тоже где-то на заднике одной картинки в библиотеке лора игры про капитанов команд добычи различных городов.

Показать полностью 1
7

Игромятница #2

Сегодня пятница - время расслабиться и помять что-нибдь околоигровое! Я снова приготовил вам пост про одну из своих многочисленных игр. Небольшой пост - как раз чтобы прочесть за чашкой чая/кофе/пива. К посту прилагается ссылка на игровой билд, на случай если вам захочется провести выходные с пользой =)

Игромятница #2 Инди, Инди игра, Gamedev, Видео, Длиннопост

Можно сыграть в браузере на русском языке.
Или сходить
на страницу игры на моём сайте и выбрать нужный билд

Как и большинство моих проектов, этот начался с конкурса. Как и большинство моих проектов, начавшихся с конкурса - этот начался с Ludum Dare. За номером 28 на тему “Ты получишь только одно“ (You only get one). Я интерпретировал тему так: “ты получишь только одного бога, которому можешь поклоняться” . Это комната, в которой вы начнёте игру. На ней висит большой монитор которым она общается с персонажем посредством текстовых сообщений.

Об игре

Комната сообщает, что она бог и что вы должны выполнять её волю, после чего выпускает вас наружу для выполнения нескольких заданий. Задания пустяковые, но там снаружи опасно. Противники и всё такое.

В процессе выполнения заданий вы найдёте несколько улучшений, в том числе пушку и бомбы. В игре даже босс есть! К концу приключений вы узнаете "страшную правду" о себе и о комнате.

Игромятница #2 Инди, Инди игра, Gamedev, Видео, Длиннопост

В игре есть чекпоинты, но сохраняемого на диск прогресса нету, так что проходить придётся одним заходом. Что займёт не более получаса.

Из недостатков - очень темно в игре. Прям капец. Лучше всего играть на тёмном фоне. Поэтому проще всего глянуть именно веб-версию.

Планы на проект

Это всего лишь поделка за два дня. Изначально концепт был совсем другим. Но после того как я сделал игру - проникся своим творением и хотел доделать. Всё это пришлось на новый год. Я работал в то время в сувенирной компании. Это значит, что заказов на новый год много, и нужно было работать по 12-14 часов. За бонусныебалы, что самое смешное. Но я тогда в этих делах был гораздо неопытнее чем в играх.

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

Помню, что я хотел сделать невероятное приключение в жанре триллера про поиск смысла жизни. Ещё хотел босса паука сделать, как мелкие пауки, только большой. С ним сражение на кладбище должно было быть (это под конец прототипа уже). Хотел сделать путешествия через телевизоры. Мне очень зашла эта тема после того как я поиграл в игру Sutef.

Способностей побольше хотел сделать, выйдя за рамки стандартных ган+бомба. И мир внешний сделать более опасным. По классике триллеров и хорроров во внешнем мире должен был обитать неведомый неуязвимый враг, от которого нужно было прятаться.

Пока что есть только общие идеи, без диздока. А прототип вы можете заценить уже сейчас по ссылкам в начале поста.

  • Если у вас найдётся полчаса, чтобы опробовать игру и чиркануть мне фидбек - будет круто.

  • А ещё в группу мою ВК вступайте - там новости по моим свежим разработкам.

  • Или на мой дискорд-сервер залетайте - там можно обсудить этот и другие мои проекты, или просто пообщаться на различные околоигровые темы. В последнее время там появились пара активных ребят.

Спасибо за внимание, хороших выходных!

Показать полностью 1 1
14

Рекомендательный четверг #2

Сегодня четверг, можно начинать готовиться к выходным. Сейчас я расскажу, что можно посмотреть/почитать, или во что можно поиграть. Сегодня я расскажу вам о книжке Майкла Муркока "Се - человек" (Behold the Man).

Рекомендательный четверг #2 Что почитать?, Обзор книг

По обложке можно подумать, что это книжка на религиозную тему. Так и есть. Но только отчасти. Всё-таки, это научная фантастика, причём про путешествия во времени, как я люблю. Я очень много книжек на эту тему перечитал и много фильмов пересмотрел. Больше всего в таких историях я люблю складность повествования, чтобы картинка в итоге сложилась в цельную историю. Как в фильме Патруль времени с Итаном Хоуком. Вот в этой книжке история примерно так же и складывается.

Майкл Муркок странный писатель. Его произведения часто пронизывает дух фатализма и трагедии. Когда я покупал первую книгу этого автора ("Элрик из Мелнибоне") - моя мама прокомментировала, что он неинтересный и пишет мрачнуху. Мне понравилось как он пишет и я прочитал весь цикл о вечном воителе за исключением пары рассказов. А потом стал штудировать другие его преизведения. И оказалось, что мрачнуха не везеде, а сами произведения заслуживают внимания.

"Се - человек" - это книжка о помешанном на Иисусе человеке, которому выпал шанс отправиться в прошлое в качестве подопытного, на экспериментальной машине времени. Даже с риском не вернуться никогда назад он отправляется в своё путешествие с одной единственной целью - встретить Иисуса лично. Чем всё это заканчивается вы узнаете уже в самой книжке. Могу сказать только то, что в середине уже становится понятно к чему всё идёт, но финал всё равно вызывает восторг.

Мне очень понравилось, как по-научному обыграны все чудеса, которыми удивлял Иисус в библии. Прочитал книжку всего один раз лет 8-10 назад, а помню содержание довольно хорошо, и часто вспоминаю её когда слышу "неопровержимые подтверждения" какой либо теории. Никто не знает как всё было на самом деле, а ведь могла быть и какая-то фантастическая история.

Книжка, кстати, бородатая, 1969-ый год. Мировая классическая фантастика бородатых годов тем и хороша, что читается очень круто даже сейчас. Даже в наше время истории мэтров прошлого века потрясают воображение. Особенно если копнуть чуть глубже, чем общеизвестные тайтлы типа отвратительно Космического Десанта (Космические Рейнджеры у Хайнлайна). Казалось бы, чего интересного можно придумать на темы, которые были обсосаны множество раз. Но, скажу я вам, то что написано в книжках - кардинально отличается от того, что вы видите в играх и кино. Там вы видите штампы и самокопирование трендов, а в книжке вы видите авторскую работу. Точно такую же авторскую работу я пытаюсь вести в геймдеве, но это уже совсем другая история.

Следующая рекомендация будет через неделю, спасибо за внимание!

Показать полностью
10

Проектный вторник #2

Сегодня вторник - это время рассказать, над чем я работал целую неделю. В фокусе был проект Zzzz-Zzzz-Zzzz. Я уже писал здесь про разработку второй части этой игры и даже есть демка.

Увы, пришлось вернуться к первой части "франшизы". Сейчас расскажу почему и какие у меня успехи на этом поприще за прошедшую неделю.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Это игра про сны. Персонаж застрял в мире снов и пытается проснуться, слоняясь из одного сна в другой. В игре невозможно проиграть, каждый сон - это ситуация, которая имеет множество решений, приводящих к переходу в новые сны. Поначалу вы будете просто бесцельно бродить, пытаясь попасть в новые сны и разблокировать все кровати. Но в какой-то момент вы поймёте что нужно сделать, чтобы игру завершить.

Я сделал эту игру в 2013-ом году, ровно 10 лет назад. Сперва, в мае 2013-го года была создана конкурсная версия игры. А потом в течение июня-июля того же 2013-го была сделана полная версия. Сейчас, спустя десять лет, по случайному стечению обстоятельств, в июне я берусь снова делаю игру под современные технические стандарты.

Зачем?

Если вы запустите игру сейчас - она откроется в небольшом окне. В ней нет поддержки геймпада. А в Стим-версии нету ачивок, хотя в самой игре ачивки внутри есть. Это я и собираюсь всё исправить. Для чего, казалось бы? Готовлю игру для издателей.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Почему я не делал этого до сих пор и почему откладывал? О да, сейчас я подробно расскажу, что значит переносить проект с Game Maker 8.1 на Game Maker Studio 2.

Исходные данные

На самом деле я уже занимался этим проектом. Лет 6 назад я хотел сделать расширенную версию игры с удвоенным контентом. И довольно много сделал по ней. Но пришлось отложить проект, да и весь свой геймдев на пару лет из-за IRL обстоятельств. Важно отметить, что проект я портировал тогда на GMS2, и там есть несколько вещей, которые я планирую перетянуть в текущий порт.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

А ещё я делал вторую часть этой игры буквально два месяца назад. Там тоже есть любопытные наработки, которые я внедрю в текущий порт.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Сразу условлюсь с терминологией в рамках данного поста и для сокращённости буду называть:

  • Game Maker 8.x как GM8

  • Game Maker Studio 1.x как GMS1 или просто GMS

  • Game Maker Studio 2.x как GMS2 или "вторая студия". Это касается и самой последней версии движка, хоть его и называют теперь снова просто Game Maker, Но по сути и функционалу это GMS2.

  • Расширенная версия - это так и не выпущенная версия игры Zzzz-Zzzz-Zzzz с удвоенным контентом. Она портирована на GMS2.

  • Вторая часть - это демо-версия продолжения игры, которую я сделал в апреле этого года.

Основные проблемы

Технически, исходник с GM8 на GMS2 протащить нет никаких проблем. Сперва проект импортируется в GMS1, а затем уже во вторую студию. Это я сделал. Но игра при этом сходу будет вряд ли работать. По крайней мере эта. Довольно много отличий между версиями движка. Часть функций устарела, часть инструментов была переделана.

Вот перечень основных критических изменений:

  • Полностью изменена работа с audio

  • Изменена работа с камерами

  • Слияние фонов и спрайтов в один вид ресурсов (спрайты)

  • Полностью переделана тайловая система

  • Полностью переделан редактор комнат, система слоёв

После импорта проекта я имею базу, с которой нужно провести довольно много манипуляций, чтобы игра заработала.

Прогресс: Аудио

Первое, что я сделал после импорта проекта - это занялся звуками и музыкой. Старая версия игры использовала библиотеку SuperSoundSystem.dll, которая была очень популярна в те бородатые годы среди геймекерводов. Был ещё FMOD, но его подключать было сложнее. Я почти всегда использовал именно SuperSoundSystem.dll, что обязывало хранить звуки и музыку во внешних файлах. Сейчас встроенная система GMS2 работает не хуже этой библиотеки, а для более простой работы с ней нужно эти звуки и музыку внести в проект в качестве ассетов.

И тут мне как раз помогли мои прошлые наработки, т.к. всю эту работу я уже проделал для расширенной версии. Я быстро импортировал ассеты и заменил начинку API функций, чтобы они работали не с dll, а со встроенными аудио функциями.

Прогресс: Камера

Это второе, что нужно было починить. В GM8 вся работа с камерой сводилась к использованию функций вида (view - это вид внутри сцены по терминологии Game Maker). В GMS2 всю эту систему зачем-то разбили на камеры и виды. Теперь камера - это видимая область внутри сцены, а вид - это размер окна игры. Вот вам фиговые объяснения из справки GMS2

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

В случае с 2Д играми, камера и вид - это одно и тоже. А вот view port - это как раз размер отображаемой области на экране игрока. Движок сам скейлит камеру под размер этоой области. Если view port будет в 2 раза больше вида камеры, то будет масштаб x3.

Это всё относительная ерунда и при импорте проекта IDE сама создаёт нужные скрипты и производит автозамену на костыли от разработчиков движка. Оно всё работает, конечно, но жутко неудобно.

Проблема камеры в первой Zzzz-Zzzz-Zzzz носит концептуальный характер. Все сцены затачивались под размер экрана. Про адаптив в 2013 году мало кто из инди знал и заморачивался этим. В те года стандартом были 720p и 1024p. Поэтому окно игры 800x600 не выглядело так убого, как сейчас на FullHD или QHD мониторах. Итого, чтобы сделать разрешение хотя бы на FullHD - нужно поменять соотношение сторон, а значит - дать в уровнях пространство по бокам. Вариант "оставить там пустые дырки" меня решительно не устраивает. Когда я смог запустить игру, увидел справа пустое место , которое показывает излишек при переходе от 4:3 к 16:9

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

На самом деле эту проблему я решал ещё во второй части игры, т.к. в неё планировалось сделать часть уровней из первой Zzzz. Старые уровни либо чётко вертикальные, либо чётко горизонтальные, либо прямоугольные. Так что мне нужно просто делать комнату больше по размеру и лочить камеру по осям X-Y для вертикальных и горизонтальных уровней. В прямоугольных уровнях камера и так следовала за игроком. Одноэкранные уровни я просто чуток дорисую и прибью камеру гвоздями к нужным пикселям.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Но это только половина задачи. Вторая половина - это расчёт размеров самой камеры. Дело в том, что в пиксельарте я перфекционист. Никаких повёрнутых или смасштабированных в дробях пикселей я не приёмлю. Только чёткий апскейл по иксам. Для чего ещё в Холодной Тишине я выработал вот такое решение:

  • Задаётся условный делитель высоты, что-то близкое к желаемой высоте камеры, но на самом деле это просто число, которое выбирается подгоном.

  • Высота окна/экрана делится на эту желаемую высоту и получается коэффициент масштаба. Дробный. Округляем его до верхней границы, т.к. функцией ceil.

  • Реальная высота камеры - это высота окна/экрана делённая на этот коэффициент . Исходя из соотношения сторон окна/экрана рассчитывается и ширина.

Тут есть небольшой подвох. Реальная высота камеры может плавать. Я немного опростоволосился с этим во второй части игры. Обычно я делитель из первого пункта выбирал на глаз, думая что это будет примерно высота вида, но хрен там плавал. На реальных типовых разрешениях там может быть неплохая такая погрешность. Это я понял, когда составил вот такую таблицу расчётов:

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Немного поиграв с делителем я пришёл к вот этому:

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Видно, что актуальная высота принимает всего три возможных значения: 180, 192 и 190 пикселей. Это идеальный вариант в моём случае, т.к. разрешение в исходнике первой версии стоит 288x192. То есть мне нужно только предусмотреть сверху и снизу зону в 8 неприкосновенных пикселей. Только в тех уровнях, где залочено вертикальное движение камеры.

Все эти расчёты были проведены два месяца назад и сразу же перекочевали в порт.

Прогресс: Шрифты

Давно я использовал в проекте шрифт Hooge, который настолько геометрический, что успешно косит под пиксельартовый. Со временем я стал использовать свои кастомные шрифты, собранные из условного атласа. Это позволяет их быстро и просто добивать спецсимволами при переводах на всякие языки типа испанского, немецкого или китайского.

Замену шрифтов я уже проделывал для расширенной версии игры, поэтому тут всё просто - перенёс спрайты-атласы и заменил использование шрифтов через макросы. Но все не так просто как хотелось бы.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Часть букв в шрифте стали скомкаными. Приглядевшись, я понял что это касается только широких букв - они масштабируются так, чтобы по ширине быть как обычная буква. Сперва я подумал что нужно сделать что-то с настройками шрифта. А потом вспомнил, что у меня была подобная проблема при работе над расширенной версией. Связана она с багом в специфической функции отрисовки шрифта. Я её использовал для рисования повёрнутого текста в двух местах за всю игру. Поменял на обычную функцию, которая работает хорошо, но придётся выкручиваться как-то теперь в этих двух местах.

Прогресс: Хранение данных

При первом же запуске мне вывалилась куча ошибок об использовании устаревших функций. В основном, это было в скрипте загрузки игры.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Формат сохранения - дичь, с использованием аналога eval из javascript. Слава богам, всю рефлексию выпилили ещё из GMS1, так что вопрос настолько банальных уязвимостей отвалился.

Но пришлось переделывать. Это в любом случае пришлось бы переделывать, но я планировал заняться этим чуть позже. Проблемы нет, у меня есть готовые наработки по универсальной системе сохранения так, чтобы она была совместима со всеми современными консолями. Эти наработки я и использовал для этого, переделав всё за один вечер.

Прогресс: Уровни

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

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

В старых версиях Game Maker сцена делилась только на: фоны, объекты, тайлы. Для них настраивался параметр depth, который по сути отвечает за сортировку отрисовки. В Game Maker Studio 2 этот параметр был упразднён, а не смену пришли слои, которые могут быть разных типов. Отдельно слои для объектов, отдельно слои для фона и отдельно для тайлов. Есть ещё слои для спрайтов. Параметр depth на каждый слой устанавливается отдельно. Или вручную, или автоматически. Для объектов его можно установить теперь только в коде, а раньше это было отдельное поле.

Более того, теперь нельзя просто взять и кодом создать экземпляр объекта функцией instance_create(x,y,obj). Теперь нужно создать экземпляр на конкретном слое или с конкретным значением depth, для чего есть две отдельные функции.

При импорте IDE агрегирует всю информацию о слоях и depth и делает следующие вещи:

  • Огромный костыль в виде набора скриптов для того, чтобы объекты создавались на нужном слое.

  • В комнате создаёт кучу слов, на которые кидает расставленные по сцене объекты согласно их параметру depth.

  • Огромный костыль в виде набора скриптов на работу с фонами

  • Огромный костыль в виде набора скриптов на работу с тайлами

Примерно так это выглядит для сложных уровней:

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

А должно выглядеть примерно вот так:

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

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

Итог один - нужно перебрать все сцены и все вызовы функции создания экземпляров объектов. Что займёт время. Это одна из причин, по которой я долго откладывал порт этой игры.

За неделю я сделал это для выбора языка, меню и двух интро-экранов.

Ещё один неприятный момент - это тайловая система.

В GM8 тайлы - это просто вырезанный кусочек фона. Кусочком фона он и импортируется в GMS2. И каждый такой тайл можно было положить в произвольную позицию. Тайлы могли перекрывать друг-друга. И управлять этим всем можно из кода. Что делалось максимально просто. Причём ты всегда мог легко получить координаты обрезки тайла внутри текстуры.

В GMS2 тайлы - это специальная структура, которая должна укладываться в сетку. Каждой ячейке сетки отдельный тайл и никак иначе. Тайл нельзя ставить в произвольные места, только чётко в свою клетку. И в одну клетку два тайла запихать тоже нельзя. Зато внутри этой клетки его можно зеркалить и поворачивать. А так же можно собирать пресеты из тайлов (кисти они в IDE зовутся), делать автотайлинг и анимированные тайлы. Понять место тайла в структуре просто не получится, только рассчитывать, и нужно обязательно тайловую структуру выгружать в проект как спрайт для этого, потому что по-умолчанию она идёт как тайловая текстура и работать с ней как со спрайтом не получится, а из текстуры вытащить данные проблематично.

Это всё я тут рассказал только для того, чтобы дальше сообщить, что в Zzzz-Zzzz-Zzzz есть механики, завязанные на тайлы. Например есть нечёткий сон, в котором спец-объекты брали тайл и шатали его.

А ещё есть сон телевизор, где ГГ под грибами пытается догнать солнце. Там вообще два слоя тайлов, один из которых по сюжету сгорает к чертям.

Скорее всего, по ходу дела всплывут ещё проблемы с тайлами, например окажется, что где-то тайл стоит не по сетке. Такое уже встретилось мне при выборе начать новую игру.

Касательно самих тайлов как контента есть нюансы. GM8 позволял на тайловый слой накидывать тайлы из разных ассетов. В GMS2 на тайловый слой должен быть использован специальный ассет tileset, в котором используется один спрайт. В итоге, я потратил довольно много времени при разработке второй части игры, чтобы все тайловые ассеты рассортировать на три текстуры (стены, фон, объекты.):

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

При импорте тайлов GMS2 создаёт не тайловый слой, а спрайтовый. Вообще он нужен, чтобы размещать на нём анимированные спрайты без создания для них объектов, как приходилось делать в GM8. Для анимированного декора, в общем. А при импорте именно в такой слой набрасывается нарезка, т.е. просто спрайт тайлсета кадрированный под конкретный тайл. Для примера, в этом кусочке сцены используется минимум 6 разных обрезанных спрайтов.

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Производительности жрёт мама не горюй. И это функционал почти read-only. Можно эти огрызки подвигать, покопипастить, но новых таких создать нельзя.

Это приводит к тому, что все такие слои нужно заменить на более оптимизированные тайловые слои. Тоже займёт прилично времени.

FAQ

Отвечаю, на вероятно возникшие вопросы после прочтения.

Вопрос: Не проще было бы просто сделать проект с нуля на тех же ассетах?

Ответ: Я всерьёз об этом думал. Пришёл к выводу что игровую логику воспроизводить дольше и скучнее.

Вопрос: В расширенной версии так много сделано, неужели комнаты не адаптированы?

Ответ: Они слишком сильно адаптированы, т.е. в них появился новый контент, которого не было в оригинальной версии.

Вопрос: Почему не доделать расширенную версию?

Ответ: Это дольше гораздо. Там ещё больше сложнорешаемых проблем с камерой. У меня пока нет ресурса чтобы в это погрузиться на 3-4 месяца.

Что по итогу за неделю, и что дальше?

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

Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост
Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост
Проектный вторник #2 Gamedev, Разработка, Инди, Инди игра, Видео, Длиннопост

Дальше я буду работать над самими уровнями. За следующую неделю я сделаю Карту Снов, и наиболее простые для адаптации уровни.

Буду рад вашей поддержке:

  • Вступайте в мою группу ВК чтобы следить за девлогом и новостями.

  • Залетайте на мой дискорд Сервер - мы с пацанами там обсуждаем всякое - и мой прогресс по проектам, их концепты и просто трындим про игры, делимся опытом.

Спасибо за внимание, тем кто осилил!

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

Показать полностью 18 2
2

Вдохновельник #2

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

Вдохновельник #2 Цифровой рисунок, Инди, Vectorart

Это персонаж для одной из моих игр. Для Danger! Energy конкретно. Мне не очень нравится, как получились руки. Хотел сделать для них положение "кулак-на-кулак". Но получилось, что он как будто открывает невидимую банку тушёнки.

Место этого персонажа где-то на заднике одной картинки в библиотеке лора игры про капитанов команд добычи различных городов... Так что я не расстраиваюсь что этот господин не очень получился.

Показать полностью 1
3

Игромятница #1 (еженедельная рубрика)

Сегодня пятница - время расслабиться и помять что-нибдь околоигровое! Я приготовил вам пост про одну из своих многочисленных игр. Небольшой пост - как раз чтобы прочесть за чашкой чая/кофе/пива. К посту прилагается ссылка на игровой билд, на случай если вам захочется провести выходные с пользой =)

Игромятница #1 (еженедельная рубрика) Инди игра, Инди, Gamedev, Видео, Длиннопост

Можно сыграть в браузере.
Или сходить на страницу игры на моём сайте и выбрать нужный билд.

Как и большинство моих проектов, этот начался с конкурса. Как и большинство моих проектов, начавшихся с конкурса - этот начался с Ludum Dare 32 на тему “Не конвенциональное оружие“ (An Unconventional Weapon).

По правилам конкурса игру нужно сделать за два дня (Compo) или за три (Jam). В первом случае вся игра, в т.ч. ассеты должны быть созданы с нуля. За исключением общедоступных ассет-паков. Смысл в том, чтобы все участники были в равных условиях. В тот раз я участвовал именно в Compo.

Придумать идею на тему и сделать на неё игру за два дня - тот ещё стресс-дев. Особенно сложно привести игру в законечнный вид, чтобы она не выглядела обрубком или недоделкой. Medium - один из немногих моих законченных прототипов, имеющих начало, конец, и даже сюжет!

Об игре

Игромятница #1 (еженедельная рубрика) Инди игра, Инди, Gamedev, Видео, Длиннопост

Вы отправляетесь на зов Медиума. Этот зов приведёт вас к хорошо охраняемому секретному военному объекту. Где-то внутри находится Медиум, который вас позвал. Чтобы попасть внутрь - придётся обзавестись парочкой паранормальных способностей. Первая - это создание отпугивающей иллюзии.

Кроме того что она берёт на себя внимание охранников, она ещё и губка для пуль, что позволит двигаться дальше и найти способность “контроль разума”. Это и есть то самое не конвенциональное оружие, т.е. раскрытие мной темы конкурса.

Решив пару нехитрых задачек, вы проберётесь в центр объекта и встретитесь с Медиумом. На чём игра заканчивается.

В игре есть чекпоинты, но прям сохраняемого на диск прогресса нету, так что придётся проходить нахрапом. Всё это займёт не более часа, скорее всего 30 минут - так что не страшно. Локация состоит из примерно 25 комнат в один экран каждая. Вот нашёл концепт карты и её реализацию, собрал в одном флаконе:

Игромятница #1 (еженедельная рубрика) Инди игра, Инди, Gamedev, Видео, Длиннопост

Планы

Это всего лишь прототип, хоть и выглядит мини-игрой. В качестве развития проекта я планирую когда-нибудь сделать стелс-роглайт. Причём нормальный стелс, чтобы охранники били тревогу согласно логике, а не вели себя как болванчики классических стелсов. Чтобы нормально стелсить, вам нужно будет собирать информацию при помощи своих способностей - смотреть планы, записи, журналы обходов и даже залезать охранникам в мозги. Вся эта информация должна будет процедурно генерироваться, а может быть даже с применением ИИ если доберусь до реализации только через несколько лет.

Планируется сделать трёх персонажей: Культист (майнд-контроллер), Иллюзионист и Телекинетик. Они по-разному будут собирать информацию и по-разному разделываться с охраной. И у каждого из них будут свои причины добраться до Медиума.

Сюжет остаётся примерно таким же, только военных баз будет несколько. На каждой - запчасть Медиума. А последняя база будет многоуровневой, и Медиума будут держать на самом её дне.

Пока что по перспективам есть только общие идеи, без диздока. А прототип вы можете заценить уже сейчас.

  • Если у вас найдётся час, чтобы опробовать игру и чиркануть мне фидбек - будет круто.

  • А ещё в группу мою ВК вступайте - там новости по моим свежим разработкам.

  • Или на мой дискорд-сервер залетайте - там можно обсудить этот и другие мои проекты, или просто пообщаться на различные околоигровые темы. В последнее время там появились пара активных ребят.

Спасибо за внимание, хороших выходных!

Показать полностью 2 2
6

Рекомендательный четверг #1 (еженедельная рубрика)

Сегодня четверг, можно начинать готовиться к выходным. И сегодня я расскажу что можно посмотреть/почитать, или во что можно поиграть. Небольшой миниобзор. Первый выпуск я начну на свой вкус и он будет посвящён книжке Эрика Френка Рассела “Зловещий Барьер” (Sinister Barrier)

Рекомендательный четверг #1 (еженедельная рубрика) Обзор книг, Что почитать?

Раньше я довольно много читал. В основном, это была классика мировой фантастики. К таким классикам принадлежит и не очень известный писатель Эрик Френк Рассел. Особенность большинства его произведений - комическая составляющая. В этой книге она тоже присутствует, хотя само по себе произведение я бы отнёс к жанру хоррора/триллера. И после прочтения был в лёгком шоке, даже начала понемногу развиваться паранойя.

Оставляет книжица послевкусие, да. Наверное, потому что в книгу легко погрузиться, сопереживать из-за достоверности происходящего. В остальных произведениях Рассела, которые я читал, была откровенная межпланетная фантастика, кроме "Считайте его мёртвым". В зловещем барьере действие происходит на Земле. Фантастичность ситуации заключается в том, что у этого мира есть невидимые хозяева, контролирующие каждый шаг каждого человека.

Первая половина книги читается как триллер-детектив. А вторая - как фильм-катастрофа/выживач/боевик. Я читал её лет 10 назад и мне тогда понравилось, сама книга настолько врезалась в память, что я помню её содержание до сих пор.

Несмотря на свой глубокий пенсионный возраст она до сих пор будет читаться весьма свежо. Ведь написана была в 1939 году! Насколько я знаю, за это время она даже успела получить несколько наград.

Следующая рекомендация будет через неделю, спасибо за внимание!

Показать полностью
Отличная работа, все прочитано!