Search

Untrustedlife

Your window into the mind of a questionably sane queer non-binary indie horror game dev

Tag

asciiart

I finally finished the big encounter/action/reaction refactor I’ve been stuck in for a while.

All of the encounter reactions are now decoupled from King’s Sea III, which means they can also be run independently by the life/world simulation without needing any cruft. That was the main reason I started this whole thing in the first place.

I also cleaned up a bunch of duplicated/old reaction code along the way, especially creature encounters and held-plant interactions. There are some new interactions, and some old reactions were removed because they were confusing. One big one is that chasing away can no longer result in the thing you are chasing dying, only in beating it up a bit and letting it run away. Explicit attacking will be under a new reaction called “Attack” which only will attack, which is important for things like explicitly trying to kill titans etc.

Now I can work on fun shit again.

And by fun shit I mean UI popups.

I Tried to Play Ultima III and Accidentally Printed an Entire RPG Library (Also, Pilgrimage Dev Updates!)

So, I’ve been working on a lot of stuff in Pilgrimage! :3 Yesterday was mostly a mix of adding more creature sounds, cleaning up old code, and continuing my efforts to make the various game systems less dependent on the “King’s Sea III” Mode. Then I decided to play “Ultima III”, which somehow resulted in me spending several hours printing books…(More on that later. :p)

I’ve been adding and changing a bunch of creature sound effects.Giant centipedes now have a different hissing sound, and I’ve added giant scorpions, which have their own hissing and pincer-clicking sounds. They can even make a little *SNIP* noise! I’ve also been giving various other creatures more appropriate sounds. Rats and otters can make little squeaky noises, some creatures make squishing or plopping sounds, and wolves can howl. Also, Fishlords are now properly called Fishlords rather than just gods, since I intend to add other kinds of godlike creatures eventually. Ive been addoing more aggresive land creatures as i plan to start work on a new mode soon and need monsters you can fight :3

This is the main thing I’ve been working on.

I’ve been refactoring the encounter system so that the actual reactions are separate from how those reactions are presented to the player. Previously, a lot of the code assumed that the creature encountering something was the player, and that the “King’s Sea III” mode game manager would always be there to handle everything.

That IS NOT what I want for Pilgrimage. I want creatures living their lives in the world simulation to be able to encounter things and react to them using the same EXACT systems as the player does, not just an approximation. A creature should be able to encounter a strange plant, decide to eat it, potentially get poisoned or suffocated, and have the resulting events become part of its history. All without needing the “King’s Sea III” interface to exist. While this can mostly already happen. It has required two differnet implementations until now. A simulation implementation(which i made use the same underlying functions as the player encounters in the last couple updates) and an in game representation (KIngs Sea stuff). But now im slowly making the in game version (Which are called Encounters) , game manager independent, so it will become the main version used by both the actual game modes and the sim. Eventually I should be able to run the same encounter code in all contexts, and simply PRESENT differnetly based on whether its in a game mode, the life sim etc, . So I’ve been moving more of the presentation-specific stuff, such as animations, logs, and death messages, into the game manager, and making the game manager generic (So there is a BASE game manager, and a Kings Sea III manager).

The encounters themselves can then determine what happened, while the game manager handles showing it to the player when necessary, but all the actual simulation interactions can then run inside the encounter and updating teh encounter would update all palce sits used. I’ve now done this for every single plant/non-creature reaction, including chasing away plants, escaping, eating, ignoring, and pondering etc. (Thoiugh i havent done it for picking up plants yet, that should be done in the next day) So now theorheticlaly i could just hand the life sim the encounter and all possible actions and have it deal with it based on the creature doing it’s perosnality, temperment etc.

I’ve also cleaned up the handling of plant-related deaths and added historical events for creatures that survive eating something incompatible with their diet, which can now show up for both the player and AI creatures and is equally impresive since its the exact same encounter handling it. This is all part of my ongoing (And extremely time consuming and ambitious) effort to make the different game modes share the same underlying sim rather than having entirely separate implementations of everything. Once I’ve implemented this, adding new game modes will mostly be a matter of presenting what happens differently, rather than having to build an entirely new game from scratch, even if it is a tile based mode etc.

It’s a lot of tedius work, but it should make adding the other modes much easier in the future and make the simulation better and better. :3

Other little changes I made yesterday

Creature blocks are now loaded recursively rather than relying on a hardcoded list of subdirectories. That means I (And modders) can organize creature files into additional folders without having to remember to update the loading code every time. I also cleaned up the block schemas, adjusting some creature behavior, and making various other little fixes.

Also, Jeremites are no longer hardcoded as the measuring stick of the world! Instead, I’ve added a new creature block tag called sizeIsCanonicalMeasurement. The bestiary’s Fun Facts system now checks for creatures with this tag and uses them as units of measurement when comparing sizes. Jeremites now have this tag, and Fishlords do aswell! This means you can see how large other creatures are relative to both Jeremites and Fishlords. If no creatures in the world have this tag, the size comparison fun fact simply won’t be generated. I’ve also added a check to prevent silly comparisons. If a creature is so small relative to the chosen unit of measurement that the result would be something like “0 Jeremites” or “0.00 Fishlords,” that particular fun fact won’t be shown.

And now, onto the completely unrelated thing that consumed the rest of my evening…

I decided to play Ultima III.

I’ve been wanting to play some of the old Ultima games, so I installed Ultima III.

Immediately, I ran into a problem…

I couldn’t figure out how to control the main menu. The arrow keys didn’t do anything. Apparently, you just press the letters corresponding to the menu options.

Fair enough, you can do that in pilgrimage too (Though it is more obvious eg [1] [2] etc).

Then I got to character creation and realized that the game expected me to already know what races and classes were available. HOW WAS I SUPPOSED TO KNOW THAT? Well, it turns out you’re supposed to read the manual. So I figured I’d print the manual out and keep it next to me while playing, and play on my laptop downstairs instead of my multi monitor “game dev computer” or work laptop. It would be fun to have an actual manual, like people did back in the 1980s.

One problem.

My HP printer decided that printing was a privilege I needed to fight for. After renewing my HP Instant subscription and discovering that printing directly to the printer worked much better than using the HP app, I finally got everything working. And then I realized that I’d accidentally set the print quality ridiculously high.

600 DPI. Full color.

The manual was taking FOREVER to print.

But the pages looked BEAUTIFUL.

So naturally, I decided that printing just the manual wasn’t enough.

I printed the map.

Then the Cleric Spellbook.

Then the Mage Spellbook.

Then the Hint Book.

And then I found some reference cards, so I printed one of those too.

At one point, I realized it was nearly 3 AM and I was still printing Ultima III documentation.

I ended up leaving the printer running overnight.

The original books were quite small, but I’ve been printing everything on full-size sheets of paper, so all the illustrations and text are wonderfully oversized. Some of the original scans even have visible staple marks and folds printed onto the pages, which makes them look like old physical books despite being completely flat pieces of paper.

I’ve stapled the pages of each book together at the corner and put everything into a folder.

It’s basically an Ultima III dossier now.

I haven’t even properly started playing the game yet.

But heres some pretty pictures…

Up ↑