Я, кстати тож чего-то на LD45 накалякал, извините, забыл рассказать:
https://ldjam.com/events/ludum-dare/45/mn-master-of-nothing
Там типа такой зелёный чудик ползает по процедурно генерируемой базе роботов, спасает своих собратьев, создаёт чёрные дыры чтоб ломать генераторы и попутно заталкивать в них неугодных роботов.
Комнат мало, враги скучные, винскрина нет — такое себе получилось ИМХО.
- 10 октября 2019, 20:33
- 05
Ничё так, не понятно, почему некоторые предметы (золотые гранаты) собираются, а некоторые (глаза) - нет.
Интересная фишка с чёрной дырой, а ля Магика, и почти всегда, как я её призывал, сам же туда и попадал.
Да, там надо бы задержку сделать перед формированием чёрной дыры.
Глаза - это типа ХП, собираются по мере надобности, собсна вставляются в пустые глазницы (когда противники из выбивают XD)
А, да, забыл сказать. Игру делал скорее как тест экспортера GMS2 в WEB. Так что все проблемы можно отписывать, если там звук или музыка пропали, крэшнулось чего, или управлениене фурычит.
У меня вопрос, а как делаешь карту? Я понимаю в данной игре это массив из комнат 5*5, с переходами в определенных местах. Расскажи. В интернете я нашел метод, но он построен на графах и это так замудренно, что всякий интерес пропадает разбираться в этом...
Сетка - частный случай графа, где соединены только соседние по сетке ячейки.
Человеку нужна реализация, а не математические рассуждения. Что сетка, что граф, представляются двухмерными массивами, это он и хотел узнать.
Я сетку использую. В GMS2 называется ds_grid. Можно просто двумерный массив. Комнаты все состыкованы по центру. Это самый примитив. Тогда можно вообще все комнаты перемешать. Можно делать комнаты без проходов, а потом их просто вырубать и при старте комнаты ненужные стены вместе с тайлами удалять.
Затем можно генерировать переходы до тех пор, пока "граф" не станет связным, ну то есть ты сможешь из любой точки попасть в любую. Но это может дать слишком "дырявые" карты, поэтому я делаю наоборот - генерирую список стен, т.е. много раз пытаюсь поставить стенку так чтобы "граф" оставлся связным. Это даёт карты больше похожие на лабиринты. Более того, в этом случае можно регулировать "дырявость".
Ещё есть метод вместо "стен" делать отсутсвтующие комнаты, но тогда комната по дефолту соединена с каждой соседней.
Ключи и двери тоже можно генерировать, но тут уже нужно в теорию графов погружаться и искать точки сочленения, или использовать другие алгоритмы, которые будут генерить карту "по ходу дела".
Если код интересует, то в моём случае это выглядит примерно так:
MAP_init
Map_generate
Банальный обход сетки mapWalk
Нижнее подчёркивание в начале имени переменной что-то значит в Гамаке или это просто такой стиль?
Такой стиль.
Капсом я пишу глобальные переменные, обычным регистром - локальные для объекта, а с подчерком - временные для блока кода. Так у меня никогда не бывает коллизии имён.
хорошая привычка, я иногда временные переменные путаю)