Another month, another devlog! My other creative pursuits have somewhat distracted me from ramping things up in pace, so let's keep this one nice and short. What's on the menu?
1. Dyarkness. It twiumphs today. I have implemented a lighting system, and, once again, again, again got into a wrestling match with the obfuscation system, because lighting and obfuscation go hand-in-hand. Honestly, i GIVE UP. A perfect solution probably exists somewhere, and i will keep trying to find it, but i have been wasting too much time on this stupid system that other games don't sweat with at all because they don't try to do what i am doing here. Ugh! This kind of vision system is normally implemented in turn-based grid-based games, but mine is not turn-based, so the calculations need to be running every frame instead of every turn, and destructibility means no premade lightmaps or whatever they're called. It's not hard to get the system to work correctly, but it's hard to make it work every frame and not lag the whole game. So i'm DONE. The visibility and the lighting in this game will both be imperfect. But they will WORK and they will FULFILL THEIR PURPOSE and that's good enough for the first project! Even if it doesn't look that good! We ball!!!!!!
Ещё один месяц, ещё один девлог. Не относящиеся к проекту творческие инициативы несколько отвлекли меня, поэтому сегодняшний список достижений будет немного коротким.
1. Ттьма. Она подступает. Я накодил систему освещения и снова, снова, снова поцапался с системой поля зрения, потому что освещение и видимость идут рука об руку. И, честно говоря, я СДАЮСЬ. Наверняка где-то существует идеальное техническое решение, и я продолжу его искать, но я и так уже столько времени потратил на это треклятое поле зрения, что мне становится как-то фиолетово. Другие игры не особо с этим морочатся, но если вы посмотрите на похожие игры, то увидите, что там либо движение пошаговое, а значит поле зрения нужно пересчитывать раз в ход а не раз в тик, либо там не такие строгие требования к видимости -- например, в террарии или старбаунде или кор кипере или streets of rogue вы можете видеть через стены, главное, чтобы был свет. У меня такая реализация не подходит. В общем-то моя система более-менее работает, но идеально работать не будет, возможно, никогда. Для первой игры уже хорошо. С освещением будет то же самое -- оно выполняет все геймплейные требования, а это самое главное. Тут есть идеи, как сделать его более приятным для глаз, но пока сойдёт и так.
2. Delicious potions. These were fairly easy to implement! The foundation i have laid down is already showing its nice reliability. Potions shattering have varied effects based on their contents, staining everyone around, or producing a noxious cloud, or literally not doing anything because you're supposed to drink the liquid, not get splashed with it, silly. Also, status effects have cute icons now. Also also i fixed a bug that was haunting me and crashing the game when more than one status effect was applied, which made me doubt if the system i wrote can handle more than one effect at all. Well, now it can ^_^
2. Зелья на любой вкус. Их накодить было несложно -- сказывается грамотно написанный код предметов и эффектов. У зелий, ясен пень, будут разные эффекты, но не только при питье, а еще и при разбивании бутылки. Некоторые зелья пятняют всех вокруг, некоторые создают облако газа, а некоторые не делают вообще ничего, потому что зелья лечения надо ПРИНИМАТЬ ВО ВНУТРЬ, глупыха ты эдакая. Ещё у всех эффектов теперь есть миленькие иконки рядом с полоской здоровья. Ещё ещё был пофикшен баг, который крашил игру, когда у персонажа было больше одного эффекта за раз. Из-за этой дряни я боялся, что рано обрадовался, и что систему эффектов придется писать-переписывать заново. Но нет, всё пофиксилось просто :3
3. Ever more furniture! Soon i will have enough to actually fill a small dungeon with it. I've already started writing up the script for that too, but there's certainly lots of obstacles to face before it works. Currently i'm looking into adding several typical ways to place an object in a room, like randomly, or in the center, or by a random wall. Then most room furnishing scripts will just look like a bunch of randomized choices that should all result in a more or less believable room. Fingers crossed! I'm trying my best to not resort to premade patterns because i think no matter how many premade room patterns you add into a roguelike, eventually you will get kind of bored of them as you begin to notice similarities. Will randomization fix this? No idea :3
Bonus round of features i've been working on on the side in various states of completion: books, equippable items, item collision behaviors and a more profound throwing mechanic. OOH and hehe i have also been slowly adding more sounds into the game. My approach for this is either recording my own sounds with whatever cool-sounding items i have at home, or using this wonderful and auspicious collection of completely free sounds. In either case, i tamper the sounds in Audacity afterwards to get the pacing and the feel i want. Never underestimate the power of good sound design!
I'm slowly working on music for the game, too. I am NOT good at music, but i am not good at many many other things and that doesn't stop me from having fun with them. My program of choice is Bosca Ceoil, which is more like a toy than an actual tool. But it should be enough for my needs, and i have been playing around in it for years now, so i have a bit of experience banging out funky tunes. (they all still suck)
3. Ещё больше всякой мебели! Скоро её накопится достаточно, чтобы наполнить небольшое подземелье уютом, теплом и выдвижными механическими копьями. Я уже начал работать над скриптом для расстановки мебели в подземелье, но его придется долго расчёсывать, потому что система тут непростая. Пока что планируется расставлять мебель на основе нескольких типовых алгоритмов -- например, в случайной точке комнаты, или по центру, или рядом со случайной стеной. Большинство алгоритмов будет выглядеть как кучка таких команд, приправленных щедрой долей рандомизации. Я изо всех сил пытаюсь не смотреть в сторону типового решения моей задачи -- использования заготовленных паттернов для каждого типа комнат. Такие паттерны, к сожалению, рано или поздно приедаются. Поможет ли рандомизация? Я ннезнаю :3
Бонусная вереница элементов игры, которые постепенно обретают форму: книги, экипируемые предметы, поведение предметов при столкновении с объектами и более вылизанная механика швыряния вещей. А ещё игра потихоньку обрастает звуковыми эффектами! Звуки либо записываются кустарно при помощи разных смешных предметов и поверхностей, либо берутся из вот этого превосходного источника бесплатных эффектов. В обоих случаях я подкручиваю звуки под свои нужды в Audacity. Хороший дизайн звука играет важную роль в игровом процессе!
Музыка тоже маячит где-то на горизонте. Это -- ну вот СОВСЕМ не моя стезя, но моя стезя вообще довольно узкая, поэтому вылезать из неё приходится часто, да и ковыряться в музыкальных редакторах весело. Я использую Bosca Ceoil, которая является скорее игрушкой, чем профессиональным инструментом. Но для моих нужд её должно хватить, да и опыт немного накопился за годы попыток.