Download

BLOG       DOWNLOAD/ABOUT         LINKS         CONTACT
Showing posts with label progress. Show all posts
Showing posts with label progress. Show all posts

23 November 2022

Hiatus Update

To anyone who still have hopes for Land of Strangers, apologies for infrequent updates are not something I'm going to give. The year hasn't been booming for LoSt, but the project is simmering, and I can at least say a new release is in the works.

still doin' the work of the lord

Some refactoring had to be done, including porting to updated versions of the Python tool chain, so version #14 will have changes to the engine and interface. Last week I had a fit and added basic terminal support, which went as well as could be hoped. I'm confident that that it will be doable to add more UI tweaks later.

For the terminal mode, the greatest challenge was how to make the hexagons, and how big … in the end I chose the smallest resolution (with each hex 1 line tall and 2 columns wide), to fit as much of the map as possible in a terminal window. With that decided, input and output was easy to implement. Rather than using external libraries, I wrote the functions using ANSI escape codes directly. It's a solution that's portable across major OSes, and workable as long as I don't get too fancy.

While LoSt has been ported to Python 3 and a saner architecture, work on content has been on hold. Ideas are not lacking, and I'm nearing the point of adding stuff back in, as I will get to world generation and NPC behavior, two big topics with pending redesigns ;) It's a really big piece of the puzzle, but necessary to populate the open game world of LoSt. 

In short, once the new engine is off the ground, I can concentrate more on adding content and fun stuff to the game. Current mood is optimistic regarding a working release in the near future. At that point I might make a github repository for LoSt, although I don't know if it interests anyone except myself.

As always, Minotauros

31 December 2020

LoSt this year

non-obligatory pic of a big croc
The blog stayed literally dead silent this year, reflecting the equally sad fact that 2020 was a pretty slow year in the development of Land of Strangers. But I did recently tell some interested commentators I'd write a status report for the project, and I have grown fond of writing a little piece to sum up the year, anyway ;)

At the end of last year, I had already started refactoring some parts of the code, in particular the graphics engine. Since then, I've been tinkering on and off with the project; albeit, mostly off, to be perfectly frank.

Early in the refactoring process, I decided while I'm at it to port the whole game to Python 3 (as well as the newest version of Pygame). This has thankfully turned out to be a quite straightforward transition; it's mostly a question of modernizing the syntax of print() statements – whether because I'm very pythonic in my style, or just a terribly primitive coder ;) Anyway, the timing turned out to be auspicious, as this was also the year that Python officially discontinued the 2.7 branch (which LoSt has been using up to and including the current public release). 

In spring, I lay down some coding sessions and got the basic graphic functionalities up, to the point that I have working menus and a "@ walking around the map" interface with basic event handling and such. I'm bringing in the old code in chunks, trying to streamline a bit along the way, and planning to put in some small and big redesigns that have been on the project's Todo-list.

In autumn, I've been streamlining how I add end edit random content, hoping to lay the grounds for more rapid development later on. But I try not to get lost in the here and now of making the engine as flexible as possible – try to keep focus on what is needed for game worlds in LoSt, and accept some quirkiness in meeting those needs rather than put in complex, catch-all solutions.

Once I nail the basic functionality of editing LoSt's so-called kits (≈plugins/components, used to define in-game beings and concepts), I can probably pull in most of the already written content, along with basic parts of map generation, to start building on the game in an actually playable state again. lol almost eight years after the initial release of LoSt as a 7drl.

𝅘𝅥  𝅘𝅥𝅮   distill-ay-shun 𝅘𝅥
𝅗𝅥  can … be … fun 𝅗𝅥
Not directly related to user interface, I will be slipping in some design changes with the ongoing update, though I will probably write more about these another time. Suffice to say, the system for health and time, combat etc. gets the hopefully final do-over, and some fleshing-out of (macro scale) world generation, as well as the AI. I also have been thinking about text generation … We'll see what comes of that, in LoSt and/or other projects … 

A lot of this is related to narrative, as I've been thinking about ways to strengthen the game's original setting, as well as giving more direction to play through «quests» and the like. I think my next milestone release will contain a manual (to get most of the non-generative text out of the way) as well as a themed tutorial, probably a nod back to early releases that cast the player as a revolting mine slave (the tutorial should be notoriously hard to clear in itself, and maybe with simple(r) achievements to unlock the basic backgrounds for the «proper game», eg. fire a pistol for the option to start as a duelist/gunslinger, win at unarmed combat to start as a pit fighter/brawler).

Regarding release #14, it may become Yet An Interrim Release™, or more or less fleshed out in certain compartments. I don't have a current time plan, but believe I will be working more on LoSt in the coming months, so it's hopefully on the not too far horizon. 

At the moment, having said that, I think I'll say no more than a happy healthy new year to you all.

As always,
Minotauros

11 January 2019

LoSt this month: Enemy of the state of the art

At the turn of a calendar year, it's customary to take stock of the year that went and the current state of affairs ;) Regarding Land of Strangers, 2018 was a relatively slow year, although I did manage to release version #13. And have been going at it (slowly) since then. 2018 actually marked the 5th anniversary of LoSt, and development, I guess, is going more or less according to plan.

Looking ahead, my current goal is to make the game more "presentable", a two-fold task. For one thing, the current interface is still a bit rough around the edges, though mostly complete now. Second, the game needs more encounters, places and things to do in general (and reasons to do them).

In December, I did some work on LoSt.

LoSt with a mouse (but as you see,
sprite rendering is still buggy)
The game now has a mouse interface. It's click to walk towards a tile or bump into an adjacent being (open a door, attack a target). Right clicking will bring up a menu next to the cursor, where you can choose an action or prop. The new action menu, that hovers over the map, is now also bound to the keyboard's "action hotkey" (Space/C). The keyboard bindings were thus switched around, since the "inventory hotkey" became obsolete. Instead, I added a pure utility command to toggle through your inventory. This made sense now that inventory handling doesn't cost any game time.

I'm still testing out the default configurations, but think the details will iron themselves out naturally as development and testing continue. For instance, I still want the game to register a mouse grab/long click (default to the same as right click, for anyone with a one-button mouse?), as well as double clicking (autowalk to a visible hex on the map).

Regarding content, I've been hacking away at some of my "sites", as I call them. They're just glorified place templates/blueprints with moving parts and various variables. I have some sites to play around with now, and plan on adding to them as I go along. At the moment, I'm working out basic patterns for placing them in relation to each other. The sites themselves are currently quite insular, in that there is little direct interaction between them, although this is going to change.

The long term plans are quite grandiose, of course (and I easily see another half-dozen years before the game is feature complete). There might be something like pseudo-random factions, each with their influence in the form of sites and encounters across the map. Random quests should reflect faction enmities, alliances and goals, and provide the player with a means to influence the story. While some factions will mostly be guaranteed, like robbers and law kids, some should be optional or highly random, such as ranches and trading companies, a traveling circus, or the ruins of a toppled civilization scattered across the Land.

In the short term, I'm concentrating on adding some plot hooks and bounties that might later work as side quests, or as segments of longer quest lines.

Also on the short term todo list is to make a few last fixes to the interface, to improve graphics rendering a bit. This shouldn't be too big of an undertaking, and needn't happen asap, but I probably want that in before the next release, at least, in the name of "presentability".

Meanwhile, in the future

yet another
punt gun pic
Going onward, I'll continue fleshing out sites and factions, and making interactions more detailed in general. Regarding long-term plans and feature ideas, I've glossed over some old notes and todo lists, and might at least give a rough outline of some of the ideas that have persisted over the years and may perhaps come into fruition one day…

Non-lethal combat: There should be the option of running away, also on the NPCs' part. I might add a "neutralized" state, when a critter doesn't have any untapped grit (red hearts) left. At this point, the critter is immobile and at the mercy of the environment. Defeated NPCs can be dealt with as the players wants (leave them, rob them, kill them, etc). Likewise, NPCs might opt to spare a defeated player character's life, typically incurring some other loss. Ending up in prison, or tarred and feathered in the middle of the desert, can work as an appropriately harsh, but not final, defeat in a game that on the one hand features permadeath, but on the other doesn't offer to advance the player character to godlike abilities.

Posses: I'm thinking of a more detailed system for defining units of NPCs, from a flock of birds to a band of robbers. There is also no reason why the player shouldn't be able to join or gather up posses of their own. In fact, I intend the game to encourage it. There should be shticks and props to recruit NPCs, depending on factors like your reputation. Again, adding NPC allies might be a way for the player to increase survivability. More importantly, perhaps, I imagine it fun with scenarios where the player has to cooperate with computer-controlled units.

Expanded usage of Grit ♥ and Lead ♄: I might to try to make small changes to how these traits work. I think ♥, aside from being a health bar, could be used to measure fatigue and other ailments, and maybe even as slots you can fill with status effects (for instance, being hasted from mercury bubblegum might tap a single ♥, or sprinting makes you accumulate fatigue markers). ♄ (lead) is also a stat that might be expanded a bit, perhaps to represent resources on a more general level. Some actions could cost a few ♄ to use, like tinkering shticks.

Ropes and miscellaneous: Rope could be an option to deal with prisoners, like hog-tying a neutralized foe and bringing them alive before their perpetrator. There could also be props like fuses and trip wire, or shticks to set traps. On the topic of "tinkering and utility" shticks and props, I can currently only say that all of that might or might not make it into the game. There will certainly be some rules for harvesting/building in the Land. I've set this up with destructible terrain and all that – but it remains to be seen which directions these ideas will take.

Riding, velocity: I've pretty much worked out in my head how I'll try to design this. When a being is moving fast, the game will assign it a certain velocity/inertia. Sprinting humans will be moving 2 hexes/turn, with some animals going faster. The next logical step would be to add mounts – probably some kind of hossies, broncos or other equines ;) That entails rules for animal taming and more, and while I'm at it, I'll probably want to add a system for pets in general :) The velocity system can be expanded to some pseudo-Galilean rules for moving platforms (boats, carriages, trains). I think riding as fast traveling can work well with the game's "reasonably big" overworld. Walking from town to town might be a bit of a chore, but it should be bearable on horseback and outright luxurious to ride a train.

Fire and flooding: I'm gonna want at least some rules for the elements, including wildfire setting off dynamite and other slapstick situations.

Landscape elevation and such: This is another feature I hope to somehow kludge through. There will probably not be a proper z-axis in the world's coordinate grid, but some tiles may serve as terraces or slopes, almost like the old Zelda-games, with unclimbable cliff sides segmenting mountain areas, balconies that can only be reached by a staircase, etc. I do also have ideas for something similar to Rogue-stairs, which lead to a separate map, for places like mines and cellars. It would be quite cool if I could implement standing on the roof of a house, or even atop of a moving wagon or train. In general, I can think of a lot more landscape features that could be added, like quicksand, ravines, landslides, dust devils, swarms, etc.

Gatling guns: At that point, you should be able to get scenarios like going down a dangerous river arm on a boat with a mounted machine gun.

Gambling: Current ideas include a simple dice game, as well as betting on fights between animals and/or humans (or even becoming a professional pit fighter). I want the interface to be pretty simple, most likely betting by bumping or dropping some ♄ on the bookie/table. By striving for a seamless interface, I hope to include ways to influence the outcome and proper responses. You might get away unnoticed with feeding some Kraft-Futter® to give "your" bird the edge in a cock fight, but maybe not shooting one of the contestants in a dog race.

Drinking and drugs: I'm still not quite sure how to bring this into the game, but it certainly deserves a place in the setting. Since it's a one player computer game, I want some technical incentive for using intoxicants, as well as punishments for abuse and addiction. It seems hard to balance. I guess you can have "speedy" combat drugs, or effects like sipping whisky to shake off negative mental effects, or even eating a weird root to go on a spirit quest. For adverse effects of abuse, that topic is probably tied in with the next …

Passage of time: The current public release features the very bare bones of a "passage of time"-system, used to heal long term wounds and "cash in" on your achievements, getting new shticks and reputations. There is certainly room for expansion and improvement. In the long run, I imagine a several systems coming together here. With each passing week, there may be a chance of "newsflash" events which affect the current state of various sites and factions. For instance, if there is a conflict (quest/drama) with a village being plagued by a group of bandits, and the player just passes time, something might happen, like the robbers besieging the village, or the villagers organizing a militia to strike back. There may also be changes occurring in the longer run, including aging and other effects of wounds, abuse, trauma and karma.

In-game hall of fame: Surprised that not more games feature this, I'll definitely add an in-game graveyard/high score in LoSt. Boot Hill should be an actual place you can visit, with gravestones for some of your former top characters. There are some more far-flung ideas for features that could let a player character influence future playthroughs, from a postal service à la Shiren, to options for retiring a character, to actual vengeful spirits of characters past.

LoSt this year

Rounding off 2018's installment of monthly status updates with yet another week-late post, I don't think I'll extend the series into the coming year. Whilst writing "LoSt this month" has helped me keep my eyes on the road, I hope to use the blog for some other ramblings in 2019. Stay tuned, of course, and in the meantime, cheers to an auspicious future, and to all of you, players, developers, dabblers and lurkers.

As always,
Minotauros

9 December 2018

LoSt this month: Persistence of sloth

No shadow
No stars
there's no moon and
No cars
November
 
   —Tom Waits, «November»

I'm sorry to report that this was another slow month in LoSt. For once, I'll try also to keep the blog post short to reflect this. Besides, November's update is way overdue. I did add a few shticks, in particular making way with some plans I have for unarmed combat. The idea is for players who start climbing the martial arts skill tree to tailor their natural attack into something unique for each playthrough, by combining shticks that each determine different aspects of their fighting style. The skill tree will have several tiers, each with a handful of mutually exclusive shticks, so that a given character can only acquire one "critical" effect, for instance. Hopefully, this will turn into a system with some interesting synergies and strategic choices to be made.

I also started to add a new site of interest, a hunting lodge where you can collect bounties on animals, much like how you're currently able to visit judges to collect on the heads of criminals. I'm starting to get to the point where there are enough random sites that it'll make sense to begin ironing out the system for placing those sites on the world map, and determining their internal relations. I do anticipate this to be quite a big undertaking, but hopefully worth it in the long run, and probably something that can take shape over the course of several releases.

Finally, I put in some work to improve the mouse interface, which should probably be prioritized in the next release, judging by the preliminary results of the current poll. By the end of the month, I do hope to have mouse support properly implemented, so that I can concentrate on sites and other content in the time ahead. With a bit of luck and self-discipline, I'll wrap up the year with a meatier blog post outlining some plans for upcoming releases.

In the meantime, I wish y'all a happy and prosperous conclusion to 2018.

As always,
Minotauros

Sloth will prevail!

3 November 2018

LoSt this month: Counting words

Bison skulls at a refinery (1892)
Michigan Carbon Works, Rogueville, Detroit


I've been stretching these semi-monthly updates to the point that there will probably only be 11 entries by the end of 2018, but hope to pull a Phileas Fogg-like and deliver December's post in such a fashion that year's updates will feel well-rounded overall ;)

October was a busy month, albeit not on the gamedev front.

In between life, I've been making some notes and plans related to Lost. More locations and encounters remain the over-arching todo task. In addition to "random roving reavers" (that I mentioned before), I've been elaborating some sketches for something like a hunting lodge. The current template is a house with stuffed heads on the wall, where you can gain favor and experience by handing in rare specimens. As the game world grows, hunting will likely become a topic that interests and connects various factions, from lone trappers to colonial trading houses. Further on lies the theme of strategically destroying nature to gain geopolitical dominance, which would sadly be one of the few situations directly inspired by history, ie. the mass slaughter of American bison. Of course I'd have to connect it to other themes in the game, and turn the dials up to 11, to get workable content. Unless the player outright seeks employment with the exploiters, running errands clearing out dangerous biomes and the like, they might become adversaries in ongoing plots and shoot'em-up sequences. I already have sketches for an encounter akin to a death squad, currently as a template for my "random reavers", that could surely be used and fleshed out along with story lines on speciecide and terror.

Markov the mole 

One "little" thing I did start to kick around in October, was a prototype for a loosely Markov-based dialogue generator :P Just dabbling, toying with ideas for later implementations.

Text goes here
I went and got some source text (screenplays mostly, lifted in all Freundschaftlichkeit), and made a very basic Markov generator. It doesn't give anything I can use straight off, but gives a feeling for possible ways of randomizing text. There would have to be an organizing system, to make the text (seem to) recognize certain topics and follow some syntactic principles. Such an engine can be hand-tuned over time, with the "puzzle pieces" themselves, the snippets of words to string together, stripped from the text source and stored in some kind of database or (more likely, a convoluted) python dictionary. I can't say how fine grained it's plausible to make something like that. Or if the ideas I'm currently experimenting with will turn out useful at all. Surely, it won't be easy to make the output actually reflect the state of the game world. Ideally, NPCs should talk about other people, places and phenomena, so such a system would have to be purdy clever. I'll report back in a few years, hopefully, or who knows, maybe even before that?

Anyway, still with the Markov chains, you typically want as large a text source as possible, to offset the effect that words which rarely occur, also link to fewer other words. They become less dynamic, tending to crop up in the same context over and over.

Comparing word counts with/without thesaurus
While repetition has its uses, a well written text can often benefit from a larger vocabulary. But in Markov chain source texts, you want the ratio of word count to vocabulary to be as high as possible; because that gives each word/sequence a greater number of possible follow-ups. Hapaxes are the worst in this sense.

I considered a thesaurus to bypass the problem somewhat. I tested by running the input/output of my basic generator through a custom dictionary, that was premade with an actual thesaurus (moby dict). The basic idea was to find clusters of words with similar meanings, like "robbers", "rogues" etc., and substituting all of them for one vanilla synonym like "villains", but with the rule that when the generator comes across "villains", another randomizer substitutes that word for one of the synonyms. 

moby-thesaurus, while a great asset, didn't yield fantastic results with my primitive algorithms. Some coupled phrases are quite wonky, like "good piece of desert" equaling "honorable master of mare". Stuff like that can possibly be pruned away, and there's the occasional stroke of random coherence, like this generated insult: "You wretched, double-crossing natural! Nincompoop, futile bluff." So there may be an idea hidden in here somewhere. As of yet, it mostly sounds like someone is definitely speaking about something, but it's not very clear what
Cut me free! Now why are you got opposite it. As a united in the British I destroy it! 'Cause I've got to break the activities destroy. And my performer normal our guns are what are you how. We hit the province. That don't you? You had a bleeding … High, huh? – No … tight.
As always,
Minotauros

15 August 2018

LoSt this month: State of the art

Early GUI mockup
Surprising as it may seem, the first release of LoSt was a bit more than five years ago. I've come a short way since then. However, if LoSt is currently lacking even something as basic as a win condition, it has seen some more "rounded" releases in the past. Regarding the win condition, that's something I actually had in #4-7, when LoSt was a light crawl with the necessary features to constitute a bare bones, but complete, little game (it took place in a mostly unicursal labyrinth, as you played a mine slave ascending from the depths of the shaft).

Current state of the art
With release #8, the game was reset to alpha stage, but by widening the scope somewhat. This is where the overworld, with its randomly generated flora and fauna, was introduced, and I also started on simple animations. Speaking of the graphics engine, suffice to say it's an incomplete mess at the moment, but not top priority with the next few releases. There should come a refactoring at some point ;)

Regarding this month in LoSt, I've had the project on the backburner, tying up some loose ends for the upcoming release #12; from a change in how the message log is displayed (the last on my list of player requests in response to #11), to strengthening the "main bounty" a bit and fixing some minor AI bugs. The last big thing that remains, is still to somehow balance the acquisition of new shticks. I'm thinking I'll just count "experience points" very crudely (more from seeing new areas of the game world, than defeating enemies), and then "bumping the player up a level" at  intervals. The more I've been thinking about it, the less inclined I am to settle with something too much like good ol'e XP. But for that precise reason, I'm more eager to just get anything in place right now, so that I can put out #12 (heavy on engine-related changes, but not extremely meaty content-wise) and get on with it.

If I have any general long-term vision at the moment, it would probably be to make #13 rather quickly, adding some more content/encounters, whilst fixing issues that become apparent in #12. My personal view is currently that the game isn't very fun to play, mostly because there's not much to do in the game world. If I make some interesting bounties and places for #13, I should have a solid base to build from. After that, there are still some features I'm looking forward to adding to the engine, including riding and rope use (which will probably also be used for taking prisoners in non-lethal combat). Some other stuff will come in organic relation to the content I manage to add. For instance, if/when there are ranches, there should come systems for things like herd handling and branding; and if/when we get lumbering and floating logs down the stream to the mill, that would go hand in hand with more fleshed-out systems for water movement, as well as platform riding (carriages/boats/floating logs). A log drive down the river, getting attacked by hostile humans and animals along the way, could be fun (or leading a cattle/post ride through the outlands, which could be modeled along a similar arc). We'll see about all of that, of course. Here and now, I'm crossing my fingers that the next update on this blog will concern the release of #12.

11 July 2018

LoSt this month: Petrichor

Fame is the worst thing that could happen to your reputation.
   – Kate Tempest, «These things I know»
LoSt's loyal fanbase never lost faith.
When May turned to June, I decided to push my so-called monthly update ahead of me, just a few days, to make some progress that I could report (May had been another slow month). Well, here we are squarely in the middle of July already!

Since last, I did sink some hours into character advancement (≈leveling up). It's hard to fit it into the game at this moment, since it would rely on some more content to get the right scope. At the moment, I scrapped the original idea (described in an earlier post) of letting the player influence skill advancement by presenting them with story options (à la «choose your own adventure» books, reminiscent to how they did it in Shattered Planet). A system like this may come at a later date ;) What I did keep, was the idea of tying up character advancement with a resting mechanism, that also encompasses healing long-term wounds and amassing reputation. I got in place a very rough system, that just looks at the player's recent conduct tracker and decides how/if to modify character traits. The current design will need a lot of refinement, but the bare bones may still be deemed enough to cut it for release #12.

Goals and Achievements

A long term plan I've been having for LoSt, is to have a rather involved system for renown and faction relations. I have now added a reputation stat, which is a step in the right direction. The new mechanism builds on an existing framework of «causes», data plugins dictating critter behavior, which I've also been using to simulate a faction system, by giving each cause a list of other causes and flags that they have a particular bias towards. Favor between critters is a simple positive or negative integer that's set randomly each time a critter sees another critter for the first time, and the cause-related modifiers work by simply adjusting the (min,max) range. Thus, predatory animals attack prey more or less on sight, because the «predator mentality» cause has a (-2,-2) favor modifier to any critter tagged as «prey». Likewise, shticks like «Animal friend» and «Musky» work by flagging the player so that animals get an extra modifier of (0,+1) or (-1,0), respectively.

The main addition to this in #12 is that individual critters can now have a dynamic reputation stat. It works by listing a set of causes and assigning each cause a modifier. Reputation is modified between missions, whenever the player rests at the saloon (or other resting hubs that will appear). The game tracks and stores the player's conduct as «karma», so I have info about who @ has interacted with and how, which tools/shticks have been used, success/failure at missions, places visited, etc. Reputation is currently modified by looking up the causes of critters @ has pleased or annoyed, and making a few random checks to see if @'s reputation should be modified with one or more causes. It can be fleshed out later, especially as I'll want to flesh out a more detailed system for factions, which could be much more than just glorified AI plugins, as is currently the case.

Related, a sketchy system has cropped up for something I call «boons», tangible achievements and missions the player can fulfill. Currently, the main mission is to bring down a wanted bandit, and I'm testing with some minor boons, including collecting the bounty on any random mudfaced goon, visiting a new place, or drinking milk (perhaps the first in a series of boons related to abstinence, for careers like ascetics and abolitionists). At the moment, boons cheesily yield a kind of experience points, which at certain intervals trigger a «levelup» function that improves the player's stats upon resting. It's at least fun to test, since we now get characters that scale up and gain new shticks (skills) as time passes.

Defining boons as the source of coveted experience points may be hard to balance, in that it could easily encourage grinding to collect'em all. I might offset this by tying shtick acquisition more directly to what you do on the map: as instantaneous rewards for collecting particular boons, through books or paid tutoring, etc. Another system I've been thinking about, is to introduce a stat like decrepitude. (The term is ripped from Ars Magica, where wizards become slowly more old and gnarly and in danger of drifting away from the world). In LoSt, decrepitude, or whatchammacallit, would work to impose a soft time limit by amassing over time as new foibles and negative stats (trauma, wounds, addictions, bad reputations, etc). I think a system like that might work well, especially in conjuncture with some other long term ideas about the option to retire your character, and other ways characters' legacies can have an effect across several playthroughs.

Be that as it may, I'm trying to restrain the todo-list for the upcoming release #12. It's better to put out some crude implementations, and hopefully getting player feedback that can inform further development. It's really high time for the new version to come out, and it's going to be a meaty one, even though it may end up as a short interim before #13, if I can quickly turn around and fine tune some of the bugs that will undoubtedly become apparent upon release. There are some minor things I will definitely (hope to) fix before #12 is ready, but nothing too big, mostly just tying up loose ends.

Ugly bugly.
☞ Fix flickering text bubbles when the map scrolls. In fact, there are a bunch of graphical glitches that I'm loathe to fix one by one, simply because the whole display engine needs an overhaul; small patches now would be a waste of time in the long run, but this exact bug is so disturbing that it's probably right to label it release critical.

☞ Brush up AI: This is another topic I don't want to do too much with at the moment, but changing the combat system around did leave a few bugs. In particular, I need to fix some causes/beings that won't enter their attacking states properly.

☞ Make boon system release ready: To get some more to test with, I might define a few more minor boons. And although I am happy to leave the character advancement system as a prototype, some fine-tuning would still be in order there. I may also have to look into the UI department, for instance whether the player should receive a notification when they collect a boon. It's tempting to start adding more places and missions, of course, but I'll try to save that for later versions. Regarding the prototype boss fight/starting quest, I have it working from a technical perspective, but the actual fight/encounter is a bit uninspired, so maybe I should fire up my content editor to give that particular challenge a bit more zazz.

2 May 2018

… breeding lilacs out of the dead land

There will be another short update this month. After March, April was really the kind of month where the project went from running on the backburner to more or less coming to a pause. There have been more urgent matters to see to in my life (mostly good things), so it felt natural for LoSt to come into the background for a bit. I'm not too worried about taking a short break, it's how LoSt have always been developed, and I've found one can often benefit from leaving a project for a short while, and returning with new energy and perspectives later. Technically, LoSt is very close to a new release, so I do hope to get in the saddle again shortly to make the last few adjustments. Then again, there's no gain in rushing a release, and I would ideally also like to add a least a bit of content to go with the new engine features. Precisely when it comes to finalizing changes and coming up with new content, taking a step back to gain an overview is the kind of technique I like to employ.

Oh, and in case anyone wondered, the title of this post is only to provide context for the half-assed pun in last month's title. I'll make another update by the beginning of next month, at the latest. Let's see what I have for you then.

As always,
Minotauros

2 April 2018

March is the coolest month

(At least it's been pretty friggin' cold up here.) March has also been a rather slow month for LoSt. I'm chugging away at the short term todo list, and have been sinking some hours into a system for passing time and learning from your experience. I'm not too concerned about balancing character development or making any final decisions at the moment, just getting a prototype for the kind of system I have been envisioning.

The system merges current skills and perks into one pool of special abilities (shticks), mostly for simplicity's sake. I have to make some small changes to character creation to reflect this. Once that's in place, I should have all features that are necessary for the planned #12 release. I anticipate April to bring bug squashing as well as authoring content, to make use of the various additions since the last release.

3 March 2018

Making time

Last month, I wrote about reimplementing wounds, and some of the changes that prompted. This month, I've mainly been working on time systems.

Sometimes, incremental changes to a project come in a surprising order, at least to an inexperienced developer like me. For instance: LoSt is designed with a simple interface in mind, and has no separate commands to use objects in different ways, like so many genre classics, with their mappings for "q"uaffing and "z"apping and whatnot (and to be fair – these interfaces are difficult to learn, but quite snappy once you do). LoSt's interface, instead, requires you to always wield an item before you can use it. Problems arose with props like cigars and syringes (consumables, really like those "q"uaffables and "z"appables of yore). The fact that they couldn't be used directly from the backpack meant it took too long to use them to be worth it in most situations.

I try to circumvent the problem by making inventory handling not taking any time. This change ups the tempo and gives the player more options, so I'm generally happy about it. It does change the value of some skills and props, like pistolknives (whose main selling point was that they could be used for melee or ranged combat). One scummy tactic that became apparent with the new system, was to keep a stack of loaded guns in your pack and fire them in succession, to save the time of cocking between each shot. So be it. To penalize the behavior, I instead added the rule that moving a cocked gun around in your inventory has a small chance of the gun going off. I don't know how realistic this is in terms of gun engineering (as a European pacifist, my personal relation to guns is limited ;) Should it be grossly inaccurate, I guess my last defense would be that LoSt plays out in a fantasy world, where many small things are different, so there, and in any case, nothing is funnier than shooting yourself in the foot, and I do think the system retains the sense of the basic motif: the rhythm of drawing, cocking, and firing a gun.

On the topic of short time spans: One thing that has baffled some players of LoSt, is the turn order. One reason is undoubtedly that a bug caused the system to behave weirdly, which I've finally gotten around to fix. But the system itself is a bit unusual for a crpg, and not really well documented. I'm taking steps to fix this, to make it easier to understand what's going on. If I can solicit some feedback for the next release, I'll hopefully manage to finalize the rules for combat some time soon-ish ;)

Rest for the wicked

One important feature that's missing in #11, is healing. This month, I've been implementing the bare bones, by adding the option to rest for a prolonged time and going back to full health, so it's now officially in. At the time of writing, the local saloon is the only resting hub, but other options will come later. Before that, I'm facing a chunk of work just to get the basic mechanics in place.

In addition to healing, the passage of time is planned to include systems for advancing the player character, as well as story lines/world events. The basic idea is to make resting a big deal, something that affects strategy. You currently pay for healing by paying rent for your room, but I'd like to further underline the importance of time by letting (potentially) "something happen" when the player rests. The nature of the changes imposed on the game world should reflect the player's recent behavior. Character development will include modifying reputation and the opportunity to gain new shticks. Furthering the "world story" will, I think, pertain mostly to world factions and bounties/quests (this last bit not planned for #12, so I honestly try to disregard it for the time being).

Modifying reputation: The engine already has a pretty detailed conduct tracker. For instance, if you massacred everyone at the saloon, you will have a lot of hostile karma in relation to the villagers. I think I might just try to take this data and generate reputation procedurally. If I manage to do it right, it should be more flexible and unpredictable than simply stating, "doing X modifies your standing with faction Y by N points". Although there should be systems for such corner cases, as well. The "proto-bounty" I'm working on now, which involves capturing a specific, named criminal, is a good example and a testing ground for this. Resolving the conflict by collecting the bounty on said criminal's head in Arken, flags the player with a special achievement, which amongst other things should be weighed extra when reputation is calculated between missions. In short, I must start out with a simple and open ended system, that I can expand on later.

Getting shticks: My current vision of how this should be implemented, involves quite a bit of foot work, and I'm still not sure if it's going to be any good. I hope to get in a kind of prototype for the next release. What I'm envisioning is basically for the engine to pick three options for the player and let them choose one. But I had an idea to make the interface less gamey by presenting the options as flavor text. Instead of: "You rest at the saloon for two weeks. 1) Get pistol shtick, 2) Get science shtick, 3) Increase local reputation", it could say something like: "You spend two weeks recovering from your wounds at the saloon in Arken Town. You eat a lot of soup, but at the end of the stay, you start to get back on your feet. 1) Go target practicing in the wilds, 2) Read a book, 3) Hang out with the locals" The place you're resting, and special NPCs stationed as the player's neighbors, should affect the available options, as well as the pseudo-randomized outcome of choosing each option. The end-result as I'm envisioning it, would be a bit like choose-your-own-adventure books, where the outcome is not given. So you won't get to cherry pick the shtick you want, but are allowed to nudge the system. If you opt to practice gunmanship, you might get a random pistoleering shtick, or a reputation bonus related to guns, or if you've used a particular pistol a lot on your latest mission, that particular gun may turn into an "artifact" with a random prefix. Likewise, "spending time with the locals" could have many outcomes, from a simple reputation boost, to learning certain rumors/plot hooks for new quests, or maybe your plan backfires and the villagers end up lynching you (especially if their bias towards you is negative in the first place, of course). It's a system that certainly has its hurdles and slopes, but I believe it has potential.

Story advancement: As noted, this lies even further in future, since I'd rather release #12 in not too long to get a better idea of how the current changes work out on their own. Suffice to say, everything will be tangled together with world factions, their relations and current objectives. Some questlines and bounties may have time limits and random outcomes, depending on player agency. Using my protobounty with the wanted-poster in Arken Town as an example, there might be a window of opportunity to get the bandit. The actual plot could be tested by querying the game world for the bandit's status. Maybe, at the end of each week, there is a chance of the bandit making a move. World events could be almost as Markov chains, with possible continuations depending on the actor's state. For a fugitive criminal, follow-ups could include a raid on a certain place, or fleeing the game world, or switching base to a small fortress somewhere on the map. From the new situation, the options would change again – if the bandit settles in a fortress, it probably means they're not "fugitive" any longer (although they are still wanted by the law), so the option to flee the Land might go away. It will probably have to be more involved than Markov chains, maybe more like a behavior tree. The different states should be abstract enough to be applicable to differently flavored scenarios. For instance, there are many kinds of shootouts and raid scenarios, which share a lot of similarities, especially on a tactical level. You basically drop a bunch of units in a hostile place and give them a certain objective (free the prisoner, find the macguffin, kill the enemy), and if then the player comes walking along, the units will become active and havoc ensue. I think it would be possible with a system where each faction and NPC of interest can have pretty simple flags regarding their narrative status and relations to other factions. The "fugitive/persecutor" conflict is archetypical, and will have a similar narrative dynamic if the story is about a political figure in exile/hiding, or someone fleeing the wrath of a mafia boss. As I'm working now on the ramifications of capturing the bandit in the protobounty, it should be possible to leverage the same rules to make it possible for the player to do stuff like joining the bandit's side by offering them the head of someone they are out to get. How you build reputation will inform who are more likely to chat to you about their lore and objectives and even actively hire you, and who are likely to attack you on sight. And yet, reputation needn't be an end in itself, in any technical term. There could be objectives generated on the map that are better performed incognito or require other maneuvers, like finding a hidden treasure.

Oh, the dreams one has. If only I could make time.

As always,
Minotauros

2 February 2018

LoSt this month

“How’s it look to you?” Bill said. He was handling the reins, sitting tall and handsome, nodding at voices when somebody called to him from the street. The word of who it was in the wagon got through town before Charley and Bill made a hundred yards. 
“Like something out of the Bible,” Charley said.
[…]
“What part of the Bible?” Bill said, when they were alone again. 
“Where God got angry,” Charley said.
   —Pete Dexter, Deadwood
Full speed ahead!

Last year saw some sporadic updates under the header of "LoSt this week". They weren't exactly the most ambitious posts on this blog, but still a way to document progress, at least. I figured I'd try a model of more reliable monthly updates this year. We'll see how reliable I manage to keep'em.


Back to the Meat

January saw some slow, steady development. Most notably, perhaps, I've reimplemented wounds in accordance with some old plans. I'm now testing with a flat counter à la hit points, although I call it "grit" rather than hp. The player will probably start with about 9-12 grit (a bit more than your average neighbor, owing to the natural determination and character that sets a wannabe frontier hero apart). Grit is marked out when an actor gets wounded. Currently, there are markers for bruises and grievous wounds. Wounds are semi-permanent, and typically only heal between missions, whilst Bruises regenerate every turn that is passed without taking any action or receiving any damage.

That's the gist of it, but I'm still ironing out the details and making related changes. The idea is to make bruises "inexpensive" (in that there is no food clock), so the player can freely gambit their grit in any local situation – if they feel confident on winning the fight. Wounds, on the other hand, will force the player to touch base every now and then, and some bounties and other story related content will certainly have time limits and thresholds; the world should not stand still if the player spends two weeks at the saloon to recover from a bear attack.

Expanding on the current implementation, I'll test using grit for status ailments and buffs in addition to wounds. For instance, being temporarily blinded or confused might occupy a grit marker. Likewise, positive modifiers from skills/props could tap your grit when active. I think this can work well as "payment" for certain skills, having decided early on that I don't want skills with cooldown periods, as that may encourage techniques like pillar dancing. Instead, each effect should be designed with built-in weaknesses. For example, the "fan gun" skill allows you to cock and fire in one turn, but at the cost of reduced accuracy. Another available effect is sprinting (move at double speed for some turns), and I hadn't been able to come up with a good penalty for that. Now I'm thinking grit may offer a solution. Let's say you accumulate "out of breath" markers the longer you sprint, meaning that you must spend turns to recover, or else come into the next encounter at a disadvantage. That should cap the amount of running around it's feasible to do, without nerfing it too much as a defensive strategy. I don't mind if running away is an effective "panic button" for many situations. Knowing RL players, each and one will die by the dozen, anyway; and it bears mentioning that I'm hoping to add non-lethal combat: in particular the option to surrender – so why not an option to run away? The villain should really just stand back and shout insults then, all the while depleting the player's reputation as a valiant hero.

UI Overhauls

Testing #12: «Wanted» poster in Arken Town
Note random truism in the bandit's generated name :)   
Changing the combat system has many ripples. For one thing, the tactical menu had to be rearranged. Working with visual interface design is something I find at once painful and strangely compelling (a bit like masturbating with a branding iron). There's a lot of relative coordinates to keep track of, especially if you take into account varying resolutions and font sizes, and more often than not I'll stumble over cryptic pieces of algebra in the existing code, that my previous self sucessfully used to put things where they belong on the screen, but which my present self is utterly unable to understand.

The new UI puts some info in a top panel. I've kept the right hand menu for inventory, actions and message log, but I was thinking it might be nice to add a "wide screen" mode as well. You'll notice the new interface has flashy menu buttons. I added these since LoSt now has basic mouse support. Yay. The icons in this screenshot are place holder art, by the way. They are more or less hand made, but some are direct ripoffs of Mayan glyphs that actually mean something completely different. So I may or may not keep the visual style, but I'll want the designs used to be original, in any case.

Fonts: Before…
While I was at it, I did some font work. Earlier versions used (and embedded) a few fonts with restrictive "freeware" licenses. I've been wanting to clean up that whole mess: reduce the amount of embedded fonts and make sure everything is open software. So I went font hunting, and found 1001 Fonts quite usable, especially as the site has the option to filter for only open source fonts. I also used Fontforge for the first time, making a very basic Frankenstein font by merging some glyphs into Linux Biolinum. I pulled the glyphs from various free sources, but was especially thrilled to discover Quivira, a font with pretty good Unicode support. In fact, that's where I got the glyph ♄ for lead, arguably the most important letter in the LoSt alphabet.

Fonts: After!
I also redid the logo, using Gimp to draw the letters with filled rectangles, that I then ran over with a bunch of filters. The new menu font IM Fell was just added for being pretty great and having probably the second most fantastic license I ever read (donated to the Oxford University by its creator upon his death in 1686). It may be too old fashioned for LoSt in the long run, but here and now it's quite functional.

Questin' fer Bounties

Since I need to test out the new wounds system, as well as the basic content for defeating the bandit scourge of Arken Town, I had to zoom back in on tactical aspects of the game, which has been refreshing after mostly doing macro-level world building stuff for the last period. I had completely "turned off" encounters (houses, animals, and even plants), but now switched them back on to get a trajectory back and forth to the bandit to slay him/her and bring back the head to the sheriff in Arken. If I do that (currently not trivial, but there's always the cheat options in the main menu :) it raises a little "karma flag" that I plan to use later, to influence reputation and skill advancement, whenever the player passes time between missions at one of the game world's resting hubs (eg. saloons, oases, hospices, cloisters).

I want you kids to get ahead
The infrastructure for implementing this basic kill/fetch quest, where the parameters are ultimately written in the human readable data files, can be used to track smaller achievements as well. There will probably be other "little karma flags" for conduct like giving to beggars, (not) shooting someone in the back, flaunting your pistol in church, and just generally pleasing/offending members of this or that faction/group in one way or the other. In the long run, I hope that the life time of more accomplished characters will span several years of game time, with slowly developing reputation, skill set, as well as global faction relations and story lines. If the game should come to that point, the "original bounty" I'm working on now will probably just be folded into a repertoire of random situations, that can be repeated, omitted and randomized over many replays.

So I'm walking a bit in the desert, getting killed some on the way, trying to imagine what the game will be like a few iterations down the road…

As always,
Minotauros

Gif of the month looks decent, but there's a lot of
graphical glitches too, as when simultaneously
scrolling the map and fading out dialogue bubbles!

10 December 2017

LoSt this week (yearning for Arken)

An easy bug fix, which I still
struggled to get just right. 
I'm still working on Arken Town (the settlement where the game is set to start), and making lots of small engine tweaks along the way. I've been refactoring the world generation routines for a while, and even if the changes don't make a huge visible difference, I spend quite some time just thinking the designs through. Organizing the data associated with the settlement, for instance, had me setting up some infrastructure to handle other important places on the map.

I've also changed to the climate map generator, so I can access more detailed info pertaining to regions and landscapes later. It's mostly stuff I need to generate bounties and story lines (ie. at the sheriff's/post office in Arken hangs a wanted poster, and the game must generate details regarding the fugitive's whereabouts).

The map generator just needs a few finishing touches before I can leave it for now, I think. So I'm zooming in again on the minutia of Arken to get this baby up in the air.

The gunsmith

Since I don't have a lot of time to muck about with LoSt these days, I'm trying to divide development into small chunks that can be handled in short, sporadic sessions. (In that light, it may be detrimental to the project that I take a few hours to write a blog post like this, but I hope it's part of the fun to some people at least who might drop by here from time to time :)

Now that I'm starting on Arken in earnest, I've decided to do it house by house. Each of the planned "places of interest" that can be generated, will demand that I fine tune the engine a bit. First out is the gunsmith, a pretty inconspicuous kid that offers some services. In addition to selling guns (and possibly special ammo), the smith can repair or enhance guns you already own (by adding a prefix, basically imbuing the gun with a special shtick).

Bittner lever action repeater, by a German gunsmith
Regarding engine tweaks needed to get this in the game, it's mostly AI-related. I have been working up to this, and already implemented the basic interface for giving items to NPCs. Now, I just need to make the gunsmith react appropriately if someone offers them a gun. It could be done by adding some states to the content database, but looking at practical solutions, it strikes me that the current AI module is very shaky. It may be a good time to go in and do some basic changes, since I'll only be facing increasingly complex NPC behavior as development continues. It's honestly something I've been mulling about in my brain for a while, so I have some ideas…

Adding the gunsmith will entail another addition to the engine, again quite moderate, but with possibly wide reaching consequences. When you offer the gunsmith a gun, I decided I'll have to pop up a window with a prompt to the player, like: <"I can fix this for 30♄." (Y/N)?> I already have <more>-prompts, so making it happen won't be a big deal (just get the confirmation, pay the bill and upgrade the gun). But it's something I might need later for popups connected to other game changing events. For instance, when resting at a saloon, the player may just see: <You rest for a week. Press Space to continue.> But the game should do a lot of things, like healing the player's longterm wounds, passing game time, and (if appropriate) grant the player new reputations and shticks, just to mention a few things. So, even this silly little popup becomes an issue to ponder on the metro after I've delivered the kids to school (whether I should compare that to a calligrapher meditating for hours before executing a simple stroke, or just admit analysis paralysis). In any case, it would be meaningless to hack my way through this to the benefit of the gunsmith, just to have to redo the whole thing when I come to the saloon a few houses down the road.

As always,
Minotauros

(1 hex ≈ 1 screen) A last change I must do before #12, is to make
the world larger with "bulkier" regions. The Land isn't supposed
to be huge, but the current scaling makes it feel too small.

17 June 2017

LoSt this week (2 steps ahead, 1 step back)

It's been a while since I found the time to anything substantial with LoSt, but this week I managed to put in a few coding sessions and implemented some features that I've long been wanting to have. 

So I fired up old trusty byzanz to make a gif, which came
out slightly discolored, but I kind of liked that crusty feel. 
First, I got in a basic function to zoom in and out of the map. This will provide the framework for waypoints/travel, a logbook, etc. later on. Even in its current bare-bone condition, it provides me with a nice tool to examine my maps. It is an example of something which it is perfectly lovely to make. Since it'll help me as a developer, I'll of course be furnishing that map with icons to represent waypoints and other points of interest. And I probably won't be able to resist adding some ornament, like a compass rose or a smooth transition animation. All of this will only enhance the play experience.

Coming soon to a GUI near you?
Today I sat down and wrote the outline of an editor for place themes/blueprints. It's been cumbersome to use a text editor to make these, and the simple little application I hobbled together this afternoon is already more comfortable. It just makes the blueprints, so I still have to write the map legend by hand (rules like eg. fill hexes marked "E" with walls, put 1-3 shooters at "s", pick and put features/loot at "a", "b", and/or "c"). But it might make sense to add the function to set those parameters straight from the blueprint editor. It would have to be able to write blueprints as well as regular kits, which are the data syntax I use to store almost everything in the game. A few releases down the road, the actual game might even ship with a full fledged content editor that can be used to add/mod places, critters, props, bounties, skills, etc. :)

I hope to use these tools to do a rather extensive overhaul of the world building routines, that I've been dreading on the horizon for quite a while. The thing is that the current Python class used to build places is very all over the place. So I want to go through it and remove crud, as well as adding some tweaks and variables that I'm going to need to implement the next big thing in LoSt, namely bounties (random quest lines). Let's hope I manage to be clever about it, not leaving too many traps for myself later on. There are details I would like to get right sooner rather than later. For instance, I've been feeling that the game world is a bit too constrained. To amend this, I must above all make some inspired changes to the combat system, but I want to try to tailor them to fit a world with more space. Ideally, a house should have room for a table with some chairs that several people can comfortably walk around. For this alone, I only need some minor tweaks to the code, but when the time comes to remake all the old blueprints, I'm pretty hopeful that my little editor will be a nice tool to have. I've been digging up some maps of Western towns, thinking it should be possible to generate something similar, using map chunks. Typing out big map segments in a text editor was a great hassle, though, and is going to be much easier now.

A sleepy settlement

Nail Soup

I mentioned that bounties are the next major feature to show up. They introduce a whole new feature to design, and it's a feature that touches on practically every other part of the game. From the world map, to dialogue, to props, to combat, to the skill system, everything seems to come together around bounties. It's also a point where the setting is bound to become much more defined, which is a Good Thing™. Although I've always liked that early stage of creative development where everything is still lying quite open, I'm also looking forward to getting some meat on the bones with a starting settlement to provide the player with plot hooks, a place to rest, important NPCs, etc. 

Long term readers will note that I've already touted the coming of bounties as a feature for quite a while already. But it feels now as if I have to deliver at least a rudimentary fun game within the next few releases, or I might as well abandon the whole thing. Not said in a pessimistic note, rather hopeful that I might manage to reach the next stage of development in not too long a time.

Bounties will provide some sense of purpose and direction to the game, by stating explicit goals and pacing healing and advancement of skills/reputation between missions. But as I mentioned earlier, I also have to fix the combat system somehow, to make melee a more interesting option. As is, fighting happens too fast and is too deadly. There is usually no time to do any fancy footwork before you're dead, even if the game points in that direction with "fancy footwork" skills like Tumble and Feint. I may test "slowing down" combat a bit, giving everyone (at least the player) a tick more health, and making most weapons deal a bit less damage. Maybe even natural regeneration of bruises should be slowed, as long as the system stays transparent. The player should be able to take a hit or two as he spends a turn repositioning, switching weapons or using a skill. If I start with gentle tweaks of what I have, it's hard to say in advance if I will stumble upon something that works, or get some completely other idea for how to do it.

And really, it's not just a question of rebalancing the actual combat system. Other planned features will have an effect. For instance, there will be more ways to gather posses to aid you in battle (currently doable with the Populist shtick), and I am planning AI templates that will allow non-lethal battle, in particular surrendering (by dropping your weapon) and capturing (using rope or chain). And so maybe it will be okay for the combat system to be on the lethal side, if the player can (un)reliably hope to solicit the aid of NPCs or let himself be captured by the bad kids rather than outright killed (leading to possible interesting escape scenarios).

It feels a bit like I would want to do all the changes at once, just to be able to see how they interact. But I guess it's more like cooking. You start by frying the garlic and then the onions before getting on to the saucy parts. And a good saucier can predict how a sauce will turn out in advance, when it still only tastes like flour and salt. Me, not so much. I have this floury soupy slop, for sure, but no inkling of how it's going to turn out in the end.

As always,
Minotauros

PS. The current working title of LoSt is "Nail Soup", which is obviously an allusion to Dungeon Crawl: Stone Soup, although the allusion itself may be less obvious: "Stone Soup" is (so I've heard) a Portuguese fairytale about a vagrant who fools some villagers into believing that he can teach them how to make soup out of nothing but stones and water. They gather round, and the vagrant starts cooking, after a while remarking how the soup would be even better if they added a few carrots, perhaps. One of villagers happens be in possession of that precise vegetable, and so they add a few. After a while, the vagrant says this is gonna be good, but it would be even better if they added some chopped potatoes, and so it goes. In the end, the soup turns out pretty awesome of course, since everyone chipped in, which is the morale of the story. "Nail Soup", on the other hand, is the Norwegian variety of that same fairytale. Here, the protagonist vagrant meets with a single old crone in a house, asking to spend the night if he promises to teach her how to make soup just from nails. The story proceeds more or less as its Continental cousin, except here the hero is just ripping off a single person, so that the productive/social morale of the story is flipped. When a Norwegian speaker talks about making nail soup, that means rather to make something with no or meager resources.
And there was much rejoicing