Search

Untrustedlife

Your window into the mind of a questionably sane indie horror game dev

Pilgrimage version 0.3.4 Released

Version 0.3.4

This is a biggen!

  • Creatures now grow as they age.
    • Both visually and in the simulation. Size determines what you can eat based on what the adult version of that species is capable of eating. So now, for example, baby Baleen Water Wogansp occupies a different ecological niche than the adults (They eat coral!).
  • Creature size is now visually represented during encounters. Your own creature gets bigger with age (depending on its block file), and encountered creatures and plants scale relative to your current physical size. and their own size and ages A Jeremite looking at something enormous relative to a jeremite now actually sees something enormous. And something young and small will actually look and behave young and small. This now affects all encounters. Even creatures that dive to fish for you use their age-appropriate size, which in turn changes what they’re capable of eating. And something huge will see everything else as appropriately tiny.
A digital game interface displaying a narrative where the player encounters an ancient lobster. Choices for the player are presented, including options to eat, chase away, escape, or ignore.

When you are a worm, everything looks like a leviathan.

  • Creature ascii art and plant ascii art now support multiple lines Also, A large portion of the creature and plant roster received new or revised ASCII art to take advantage of this, including things such as the Water Wogansp.
  • Removed old tiny flag, repalced with size similar to creature sizes. Existing plants were assigned sizes, and their encounter presentation scales relative to the player just like creatures do.
    • Plant sizes matter in gameplay aswell, hard large plants  are harder to eat for example. It also change sowe ytou escape suffocating plants.
  • Made food encounters more forgiving
  • Land fauna generation is now habitat based instead of diet based (there was  a bug in previous versions where certain creatures would always be settled even if they were supposed to be silentSettlers or powerSettlers. This is fixed.
  • Dangerous generated plants will be appropriately large when their block files imply they should be capable of trapping/killing large creatures.
  • Escaping a ghost now rewards +1 food instead of +2.
  • Jeremites are now a unit of measurement
  • The bestiary now has a fun facts section that tells you each creature’s size relative to a Jeremite. And yes, that comparison will actually change if you mod the Jeremites size.
    • An adult Jeremite is, naturally 1.00 Jeremites.
  • Procedurally generated plants can now also have multiline art.
  • Large ASCII creatures are positioned based on their actual rendered label dimensions instead of a simple font-size assumption.
  • Failing to eat a hard plant now has its own silly animation: the creature repeatedly tries to jab/eat the plant, fails,then sladly slinks back home. 
  •  Ghost encounters received more appropriate fade/attack/death animation instead of reusing animations that visually implied the wrong participant was attacking and other nonsense. 
  •  Creatures dying of old age during encounters now an appropriately honrable death animation (totally honorable, totally) . 
  •  The Character Sheet now displays your creature size versus its adult forms size.
  • A whole ton of balance changes to almost all creatures and plants.
  • Water Wogansps and Honey Wogansps received updated and very elaborate ascii art/lore
  • Existing creature descriptions and lore received various little tweaks.
  • Added more thematic ponder lines, particularly around physical scale and growth.

My original intention for this release was actually filling out land scosystems a bit, and i did get to some of this

  • Hell Turkey, carnivorous mutant turkey, with actual gobbling sfx.
  • Giant Centipede, large terrestrial predator. 
  •  Giant Diving Centipede a water-loving centipede that can dive after fish, with appropriately awful insect SFX. 
  •  Giant Cave Jeramy, an enormous blind translucent cave slime. Importantly, it is a Jeramy, not a Jeremy. Note the A.
  •  Grindylow , a long-armed aquatic shoreline predator with a collection of deeply unpleasant ambient vocalizations. 
  •  Emu, the classic large, aggressive, omnivorous, surprisingly good swimmer that booms, drums, and grunts and is great at killing rogues.
  •  Elephant Emu, a titanic Emu relative,noit so sbtly based on the extinct Elephant Bird, it is a strong swimmer and eater of plants/small animals/tall fruit,and a producer of titanic BOOOOMs. 
  •  Deer, classic large, swift herbivore with Foraging and Escape Artist skills and a meaningful plant-food size range.
  •  Carrion was also added as new edible for water things to make playng as a worm/lobster/whatever moreinteresting
  • Fixed historical creatures being born into the player’s currently selected region instead of the region they were actually supposed to be born in. The region fallback order was backwards in the previous release.
  • Fixed creature-selection tooltips being able to run off-screen. The creature selector now uses a custom wrapping tooltip. 
  •  Fixed confused players learning a creature’s identity through old-age messages. Old-age death/ancient-creature text now respects observer confusion instead of leaking the real species/name. 
  • Fixed queued sound effects surviving into the next game. 
  • Fixed bug where generated creatures from old worlds would “leak” into new ones and be just completely broken (I basiclaly had a missngNo situation)
  • Fixed silent settlers that lived outside of water always existing when they ate meat but not fish, instead of only settling based on the intended chance.
    • Non-Aquatic Creatures that ate both worked properly and non-aquatic creatures that only ate fish also worked properly, it was literally just non-aquatic creatures that only ate meat that were broken (And technically exclusive plant eaters/exclusive rot eaters aswell, but they didnt exist before this release). Anyway it was a weird one.
  • Fixed being able to issue commands while a new encounter was still resolving. In particular, this could cause weird behavior when an encountered creature immediately died of old age because the player could click a command before the death sequence completed.
  • Fixed some encounter labels near the bottom of the screen not responding to mouse hover. The bottom UI containers were intercepting mouse input.

For the next version, I’m planning to spend some time cleaning up the Canon Viewer. As the simulation has gotten more complicated, there’s also a lot more information to dig through, so I want to make it easier to actually find the interesting stuff. That means better searching, sorting, and filtering, along with some general UI cleanup so large creature entries are easier to read. And more little things on creatures an dplants that thye bestiary/canondex can ramble about.  I also want to introduce a temperament system that will have some smaller effects on creature behavior for now, but will matter a lot more later once dungeon delving and the RPG/Tile Based modes exist. A creature’s diet shouldn’t really determine its personality and a small thing should still sometimes attack you. 

There are also a bunch of smaller things and i never want to promise that a release will be about specific things becaus I might be pulled into a wonderful rabbit hole liek i did this time.

One other thing I want to tackle is making encounter logic much less mode-dependent. Right now, encounters are tightly coupled to the “King’s Sea III” mode when they really should be handled by generic resolvers that don’t care what UI or game mode is presenting them (Or whetehr its a game mode at all, hist figs should be abel to basiclaly play the game like the player does, which woud also mak ehistory way more interesting) . If I can separate those systems cleanly, it should make adding the planned “King’s Wilds” Mode much easier, and there’s a real chance it could even make it into this version, though that mode also relies on things like regional pois an dregional connectivity so, we will see.

It could even end up becoming the regional connectivity release, where I suddenly add a bunch more civilization sim, caves, pois, and related systems. So, like I said, I don’t really want to promise anything too specific beyondwhatever gets added next, I want it to be at least as cool as what made it into this version.

And this version was already pretty damn cool, like encounting a water wogansp is literally like encountering a fanatastical sea leviathan. Which is just fucking aweosme

Just Pilgrimage nonsense…

We measured god, he’s apparently 2962.96 Jeremites.

Text graphic presenting fun facts about the size of an adult Fishlord, stating it is approximately the size of 2962.96 Jeremies.

:3

Probabilistic SImulations Are The Future

Probability-first simulation might be the future of simulation games

I recently saw a video where someone simulated an entire Minecraft world primarily through probability. Instead of literally running every creature’s movement and every tiny action in the background, the simulation determines what is likely to have happened based on the state of the world at any given timestep.

I realized that I already do the same thing in Pilgrimage.

(Which you can download here btw https://untrustedlife.com/pilgrimage/)

I’ve started thinking of this as a “probability-first simulation” or a “probabalistic simulation”: rather than coding every possible action as something that must physically occur step by step, you define the conditions and probability of an event, then allow individual stories to emerge from those rules. Each timestep runs the relevant probability checks to determine what happens within the world’s constraints. To simulate a golem moving, for example, I only need to know its current location, where it can move, and the probability of it leaving the rectangle representing its current location, just like in the video i linked above, that is essentially the basis of this concept, you know the constraints, the probabilities, and the chance of something happening each year. From that, you can determine whether it happened today, within the last hour, or at any point over any timestamp.

For example, imagine starvation has a 3% chance of affecting a historical figure each year. The game can convert that annual probability into the appropriate chance for however much time the current simulation step represents. It can then evaluate that chance for every important figure, regardless of whether the simulation is currently advancing by a day, a month, or several years.

The probability can be modified by the figure’s attributes, skills, environment, species, age, and current circumstances. If the starvation actually occurs, the figure can make defensive skill rolls to survive it. One creature might forage successfully, another might endure through sheer tenacity, and another might die.

Now apply that approach to combat, disease, reproduction, migration, political upheaval, territorial disputes, the construction of monuments, or somebody becoming a legendary historical figure. (Or MINECRAFT)

You can create incredibly atomized simulations where thousands of individuals have their own lives and histories without continuously simulating every footstep they take. You’re simulating the meaningful outcomes rather than every action leading to those outcomes. This is incredibly powerful.

Probabilisitic simulation itself obviously isn’t new. Simulations have used random rolls forever. What feels newer, or at least strangely underexplored, is treating probability as the actual foundation of a detailed world simulation rather than merely using it to add randomness to existing systems.

It also works beautifully with deferred generation in my experience. The game can leave something unresolved until it becomes relevant, then choose from the remaining possibilities based on everything the simulation has already established (As constraints). Once observed, that answer can become a permanent part of the world’s history.

The result is a world that can feel as though it has been running in absurd detail the entire time, even though much of that detail only needed to become concrete when it actually mattered and most of it was similified to nealry pure probability. Which is why its so fucking brilliant.

I really do think this is one of the keys to making more advanced simulation games. The answer to deep simulation is atcually to build systems that understand what could happen, how likely each possibility is, and deal with it when the simulation actually needs to choose an answer.

You don’t need to simulate everything. You need to simulate the possibility of everything, which is much, much less hard on a persons CPU. :3

Since that video now exists, im seriously considering making my own vidoe going through my own systems for a world simulation! Stay tuned! I just need to learn how to be good at editing videos.

Also they may have used AI to help make that sim btw….

I wasn’t going to mention that but the end screneshot of their screen made me sus as hell.

Pilgrimage: Version 0.3.3

Version 0.3.3

Next big update!

  • Creatures can now have different first-person, third-person, out of sight, and above-water behaviors and sounds. Also confusion and ghostly creatures are all handled (ghosts get extra Os added after Os so you get things like “I can doooo ittt” rather then “I can do it” or “Yooou hear a noooise abooove” for ghosts, which is just fun.
  • Because of this most creatures have much stronger peronalities.
  • The fishlord is now like  a mix of maui and dagoth ur :3
  • You will see a lot more extra flavor text in the log from cretaure-unique utterances by you and others.
  • The game’s visual presentation was heavily upgraded with new shaders. The main menu, options, character screens, world-loading screens, and King’s Sea III now use animated/distorted shader effects that give the game much more organicness and charm.
  • Water biomes now look and move differently. Rivers, lakes, and oceans have different shader behavior, flow, and current effects.
  • Creature labels now float in the current.
  • There is a new block tag “DiveHunter” which needs to be true for creatures to dive-hunt you , but also creatures with high natural or learned  swimming (including hist figs that otherwise wouldn’t) can also do it. 
  • Added rats, giant rats, and even bigger rats
  • Added marine snow to oceans
  • Shiny player creatures are now possible :3
  • And i fixed just a boatload of bugs.

In total, this update actually has more player-visible things than the last update, but a lot of it is just buried in creature configuration, and I’m not going to list every little thing individually. It’s just a much more flavorful experience overall, IMO. :3

I should also say, the plan for the next update is to add temperament to creatures and fill out the above-water ecosystem more. That probably includes proper land and amphibious plant generation unles i get pulled into a rabbit hole or dont see value in it, making poisonous/toxic plants actually matter more when you interact with them, and generally making the surface feel like an ecosystem instead of just “the place things sometimes attack you from.” :3

I also want to start adding weirder encounter-specific creatures, like a Water Grue that hides in the deep and can trick you into diving toward it. The temperament system is also being built with an eventual dungeon-crawling mode in mind, so a lot of this should be reusable later.

After that it’ll be on to more specific locations and systems like caves, which should be VERY exciting.

Up ↑