FEARLESS WITH FEATHERS

I was granted the power to create, and i will not hesitate to use it


main ~ blog ~ faves

<<< blogpost 10 >>>

Мне была дарована возможность творить, и я не побоюсь ею воспользоваться


главная ~ блог ~ крутое

<<< пост 10 >>>

06.03.2025. Devlog №8: Procedural generation is IN

The winter is gone! The onslaught of white plain coldness is passing now. Please give me my green trees back thank youuu

This month feels nice, production-wise. I achieved some good things. Maybe great things. Much pleasant eveningtime was spent coming up with great ideas for the game's characters and themes and giggling kicking my feet in the air scribbling funny sketches for future reference. But you can't see that! Most of that's for lateur...

You MAY see this, though. BEHOLD!

06.03.2025. Девлог №8: Процедурная генерация идёт в ход

Зима ушла! Гнёт холодного монотона скоро пройдет. Пожалуйста верните мне мою ярко-зеленую листву спасибо

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

Зато я МОГУ показать вот ЭТО. Узрите!

An office i didn't build, primed and ready! Yes! The furniture script works~

Basically, the game records a bunch of stuff every time it generates a room -- that room's relative rotation, center, width, height, purpose etc. Then the furnishing script goes room-by-room and does a bunch of stuff, like "try to cast a ray from the middle of the room onto a wall and place a poster there!" or "pick a random spot a out of the room's total width and length, and mark it down for the database script to put something in later!"

Then there was the ~hard part~, of course. How do i make it not overlap things when placing two-tile tables? How do i assign loot tables for things on, or inside, furniture? What did i do to deserve this? These questions always mark the point where, once simple and elegant, the code starts to change, developing growths and unsettling additions, and relying on variables named "thingie", "idiot" and "a". Still, the script works now, and sure, sometimes it generates offices you can't get through without some destructive measures, but let's just call that... hm... "improvised fortifications".

This means that, at a barebones level, level generation works now from start to finish. Now it's about fine-tuning, and adding lots of variety and room types, and items, and traps. I will take some sweet time doing that, and hopefully fully implement some new item types on the way.

Afterwards i will probably go ahead and lose my sanity trying to implement enemy AI. Toodle-doo!

Это офис, построенный программно, прямиком из метафорической печи. Расстановка мебели работает ^_^

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

Конечно, дальше еще шла ~сложная часть~. Как учесть, что некоторые столы занимают две клетки? Как ставить предметы на столы и класть их в сундуки при генерации? Что я такого сделал, чтобы заслужить это? Таки вопросы часто рисуют черту, за которой находится область нестандартного мышления, в которой код обрастает странными функциями, эмоциональными комментариями, а также переменными, которые называются "штука", "идиотизм" и "а". Но теперь код работает, и да, он, конечно, иногда генерирует мебель так, что через офис хрен пройдешь, но давайте назовем это... хм... "оперативным баррикадированием".

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

Ну а после этого я с новыми силами ворвусь в написание ИИ врагов, и, наверное, потеряю рассудок. До новых встреч!


<<< blogpost 10 >>>

<<< пост 10 >>>