14 December 2018

The LoSt Polls: Interface poll results

The results are in, as LoSt's UI poll closes at the respectable number of 42 voters (I can think of no number more respectable than 42). A heart-felt thanks goes out to all who participated.

Participants were allowed to pick multiple options, which is why there are slightly more ballots cast than people who cast them.

To test everything, I did leave a vote myself, ticking "Other". It bears noting, perhaps, that I put up the poll in part to gauge interest in the project, and I feel like I'm coming out on the other side with increased motivation, as this shows that LoSt does indeed have a little base of interested players.

Now, to get to the meat of the matter – the results, in order of popularity:

More gameplay (24 votes): Not surprisingly, this option got the most votes. The current interface is certainly acceptable, but the game absolutely lacks content. In the time ahead, I'll try to concentrate on this, adding more encounters, bounties, critters and props, and things to do in general.

Mouse support (13 votes): I'm partial to the keyboard, myself, which is probably why the mouse has gotten so little love up until now – but I am also aware of the fact that a pretty big chunk of computer gamers prefer a workable mouse interface, so had anticipated this option to get a fair amount of votes. The good news is that I've started, and the current testing version on my own laptop is already 100% playable with the mouse. I just need to polish off some rough edges before I can call it officially done, which shouldn't take more than a coding session or two. Expect to read more about the details in the monthly update for December.

Sound and music (7 votes): Moving on, we get to the less obvious options, perhaps. Among these features, audio came out on top. I tend to mute Roguelike games, myself, playing either in silence or with my own preferred soundtrack (The Residents' Mole Trilogy is a personal fave in that department, for that good ol'e chthonian feeling). Also, while I do possess a modicum of musical ability, I really don't have the know-how, or the equipment, to make decent recordings. But I aim to please, and have taken note that music and sound would be a welcome addition to the game, although it may still have to wait for a while. Sound effects I can probably rip from various free sources. Regarding music, I could try to solicit outside help – although being a one-person shit storm does have its benefits. Conversely, I may find the time and motivation to learn some music making on the computer, or make recordings using the equipment I have available (a crappy microphone, some string instruments, plus my kids' electric pianos and various bits of percussion). Surely, I'd have a lot of fun hacking together a grainy sounding, psychedelic honky tonk soundtrack befitting my overall vision of The Land.

Smoother graphics (6 votes): This one would entail an improved gaming experience without demanding too much work, and is something I do hope to sink my teeth into in the not too distant future. First of all, a lot of the choppy graphics in the current release will be fixed by defining dedicated layers for drawing backdrops, sprites, speech bubbles, menu popups, etc. Currently, everything is painted to a single pygame surface – a horrible design decision dating back to earlier releases, when there was much less happening on the screen. At some point, I'll have to retrace my steps and implement a more robust engine. Fixing it shouldn't prove too challenging, but will take some manual work, so it may or may not be something I get around to before the next release. Secondly, some graphical problems (like unevenly tessellating wall tiles) stem from the fact that LoSt uses dynamic scaling. While it's cool that the player can set the tile size to any value their heart desires, the result will look better if I set some predefined sizes, and then go over the sprite sheets by hand. But this may still be a while – it's going to entail a pretty big overhaul, as I'd probably take the opportunity to repaint some sprites I'm not quite satisfied with, fine-tune the walking animations for each critter type, etc.

Gamepad support (3 votes): I don't own a gamepad myself, but I've had this option in the back of my mind since quite early in development. Getting it in the game should probably not be too hard. The Pygame framework, which LoSt is built with, includes support for various joystick peripherals, so it's probably just a question of adding some lines to the code here and there to let the game register gamepad input in the same way as it does keyboard events and the like.

Other (3 votes): As noted, one of these votes was my own, to test that the poll was working. The second vote was cast without any comment, so what that player had in mind remains an open question. The third vote for "Other" came with a comment, namely to add an Android version of LoSt… I have to say, it's a pretty compelling thought, and I do believe the interface itself could bear being ported to a smaller touchscreen. The biggest hurdle, however, would be that LoSt is written in Python, and to my knowledge, there isn't any easy way to get Python applications working under Android. I'll certainly look into whether or not it's feasible at all. Barring that, I would have to port the game to a language or engine with native Android support, but that's not something I've planned at the moment. If I were to start using Godot, for instance, it would probably either be something like LoSt 2, or more likely a different game altogether (maybe a Roguelike with superheroes, or a more puzzle/story heavy game in a world inspired by Carl Barks and Tove Jansson). So while I'm sympathetic to the idea of LoSt running on mobile devices, I wouldn't hold my breath to see it happen.

OS X version (2 votes): Most likely, LoSt is coming soon to a Mac near you. It's not a big deal to "compile" Python applications for personal computers (I'm using pyinstaller, myself) – if you have access to the appropriate hardware. Since my partner just got a new computer, and it's a Mac, I'll try to put my filthy hands on that, and start shipping native binaries for OS X in the near future.

Terminal support (2 votes): I was rooting a bit for this option myself, but the community didn't give it a lot of loving. It means I'll be postponing a terminal version for now, since it'll definitely entail quite a lot of work, and not just of the brainless sort, either. But further down the road, I do hope to get a proper terminal version. It would bring some sweet bonuses, like being able to play LoSt over a ssh/telnet connection, and adding features to support playing with a screen reader.

Integrated content editor (2 votes): This is also an idea I've been kicking around for a while, including a dynamic editor for game data, and the option to enable various mods. Even if it didn't garner many votes, it's still something that might make it into the engine soon. The game's content is kept in human readable text files, which I'm writing by hand. However, I have done some experiments with an automated editor, and found that the process of adding game data became easier and less bug-prone. So while I'll still be relying on my trusty text editor to meet the demand for more content, I would probably be able to chug out more stuff if I put a bit of work into making the editor more streamlined. If and when the editor reaches a certain point of polish, it might as well be included with the public release. I don't see a huge modding community for LoSt emerging, but it certainly won't be a problem if the game at some point supports custom extensions.

That's all, folks. I hope to be able to shoulder the immense responsibility given to me by the poll results ;) Also, since I felt like the poll was a success experiment in and of itself, I'll be broiling my head to come up with another one soon. In the meantime, feel free to drop me a line with comments of any kind, regardless. I'm all ears.

As always,

9 December 2018

LoSt this month: Persistence of sloth

No shadow
No stars
there's no moon and
No cars
   —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,

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,

27 September 2018

LoSt Polls: an Interface Inquiry

Land of Strangers has gotten an official poll, located on the right hand side of this page. It's intended as a simple way for anyone who might have tried the game to offer their opinion. I have my own plans and hunches going ahead, of course, but am glad for any outside influence. The plan is to use this informal poll to inform further development. The result will be made public when I close the poll. If the process feels like a success, there will probably come follow-ups.

So if you have tried the game and have any opinions either way (you can also pick multiple options), please take the chance to exert a little influence on the developer. There are a few options I anticipate will get the most votes, but I'm also interested to see what may be the most popular fringe choices. And hope I haven't missed any options :P

As always,

17 September 2018

Released: Lost #13 (One Crawled out of the Foxhole)

Get it here or from, or click to download the game directly:

Windows binary
Linux deb installer
Linux binary
Python sources

This is mostly a bugfix release for Windows users, who reported frequent crashing with the previous version. With a bit of luck, number 13 will work better for everyone ;)

I also fixed some minor issues and rebalanced some items and shticks. I think the biggest addition is that NPCs now can accept generic gifts. If you get a green speech scroll in reply to giving a gift, it means your favor with the individual in question has increased, which may in turn increase your long term reputation with that NPC's factions. Once I can confirm that the game is working as expected, I'll get on with the plans for the next release.

As always,


Grid view generated too big for screen (crashed in Windows)
Trying to give/drop props crashed in Windows
Typo in data files sometimes caused game to (region hogging ai)
Plants sometimes marked as dead (when not)
Newly dead corpses no longer curse at you for killing them
Sprites in upper left corner vanished between turns
Speech bubbles flicker less in this release
Some speech bubbles were getting supressed
Drifting smoke wasn't spawning/working properly
Dilettante didn't have access to "shooting" shtick tree
Skills with direct damage (eg. Butt whipping) weren't working
Spawning corpses could cause game to crash
Game sometimes crashed when sightblocking objects were destroyed
Shtick T.Y.T. didn't show up during character generation
Removed msg "You stand in uffish thought" when passing a turn
Removed "Trick shot" shtick (not very interesting)
Sledgepick damage set to 1♥
Modified critical hit of knifes (always inflict 1☠ extra)
Nerfed shtick Feel no Pain
Removed shtick Iron Mind (obsolete)
Renamed shtick The Breathing Way to The Blood Way
Shtick Burro is back in the game :)
New critters: Traveling saleskid
Added more cash to the game world
Description of shtick Skillful -> "Gain a random skill."
Scissors now tagged as a blade
NPC AI can use distance measuring in more varied situations
NPCs now accept gifts (and are pleased at getting things they like)
Autopickup no longer works on items marked as corpses or trash
(chargen) Random choice won't pick 3 point foibles (most severe)
Skip repeating messages in log
Crashlog now includes python traceback, when applicable

11 September 2018

LoSt this month: Night Errands

The big news in LoSt in August was of course the release of LoSt #12 «Night Errands». I tried to cast the net a bit wider with this release, creating an page for LoSt as well as mentioning it in one or two forums. Interest in the project remains steady, but limited ;) The entry at generated 20 downloads the first week, which is less than I get at the blog, but probably not bad for a project that's young and quite niche. If anything, the niche part is why there's a potential target group for the game at all. If you're looking for a turn based, hexagonal RL about slightly trippy cowboys and cowgirls, the field isn't very crowded.

For a final note on statistics, the biggest chunk of traffic is directed from the «New Releases» section at the front page of RogueBasin. So there's at least a hot tip to other fledgling developers.

Off to err another night

I got a decent yield of bug reports, in particular of LoSt crashing under Windows. Most have had quite simple fixes, though I'll admit to slapping on the occasional dirty hack, when the deeper issue is something I want to come back and fix, ahem, but not just yet.

In the meantime, I'm making sketches for more encounters and places of the same scope/kind as Arken Town and the bandit lair, that can get a marker on the world map, may be connected to boons/missions, etc. The kinds of places could include anything from a ranch, to renegade soldier laying in ambush, to a really big fish in the river. I'm currently doing some work on an encounter with random marauders. The system is reminiscent of how random fauna is generated (adj+noun to give templates like «cannibalistic amazons» and «shotgun-totin' killer monks»), to be expanded later. I'm still defining the mechanics to dynamically generate, place and link these sites, which is probably about where the interesting stuff will start to happen. The general idea is that, as I get more and more varied templates for sites, each game world will pick its limited number of important places from a vast pool, and then randomize and generate relations between different factions, locations and so forth, hopefully yielding a unique mix for each playthrough. Even if the string of events is just so many fetch quests, it would be fantastic if you could play one game running errands for a mountain monastery, and the next aiding an infamous bandit in trying to take down a certain banker.

This level of realization isn't just around the corner, but I live in ambiguous hope ;) Reviewing old notes, I come across some long-term plans that correspond okay to how the game evolved in the years following. And most planned features on the official roadmap have expected dates set to «trop tard! jamais peut-être!» («too late! never, perhaps!»), as Baudelaire put it in his masterly poem «To some hot tail who passed in excruciatingly short skirts one midsummer eve» (or what it was called).

Anyway, given the buggy Windows version of #12, I should rather make haste to release #13, but careful not to deliver another broken package. Once I have a working, hopefully not too ugly release with the latest improvements, I can start sinking some work into these sites as I see them, and hopefully get the game world to shape up a bit in the coming time.

As always,

20 August 2018

Released: LoSt #12 (Night Errands)

Download Land of Strangers #12

I finally decided that the time was ripe to release Land of Strangers version #12. This version has been in the works for a year (on and off), and represents the meatiest changelog in the project so far. Some of the more notable changes include a basic infrastructure for bounties (quests), the option to heal long term wounds by resting, a zoomed out view of the map, and a rehaul of the combat system, UI and controls. In addition, #12 is the first version with (rudimentary) mouse support, as well as a (placeholder) system for character advancement by shtick aquisition.

LoSt joys
The current scenario starts you in Arken Town, a sleepy settlement in the unsettled outskirts of the young world that some simply call The Land. By some ill-boding twist of fate (yet, ill-boding still unbeknownst to whom), you have gleaned the location of an infamous fugitive. So you find yourself drawn to the jailhouse, at least to ogle the Wanted-poster and count your options …

As always, player comments are very welcome, here or on appropriate discussion boards or to the e-mail address supplied in the archives. Players should be advised that the game is still sparse on the content side. However, picking up the plot hook with the bandit campsite should offer a challenging little game in itself, enough to showcase the new features and give some indication of the direction I'm hoping to take the game in.

Version #12 is quite experimental, rolling in a lot of systemic changes. It is intended to be somewhat of an interim release, as I'm hoping to add more content for the next version, as well as doing a quick turnaround of important bug fixes that will hopefully become apparent in the time to come. There are some obvious issues, especially a lot of graphical glitches. Take it as a late entry to the "glitch roguelite" subgenre, if you will, but feel free to take the opportunity to point out errors and make more general comments regarding the graphical interface.

As always,

PS. And now, what we've all been waiting for, here's the changelog (a few minor changes may have fallen between the cracks and been left unnoted):
Keep fucking that chicken.
SYSTEM Started work on travelogue mode (zoomed out map) 
SYSTEM Scaled everything up a bit in size
SYSTEM Added base system for boons
SYSTEM Added long-term resting (incomplete)
SYSTEM Added individual reputation stat for Critters (incomplete)
SYSTEM Dynamic nicknames (incomplete)
SYSTEM Experience/shtick acquisition (temporary)
SYSTEM Disabled sprinting (temporary)
SYSTEM Drop/pickup now works on adjacent tiles
SYSTEM Give items by dropping them onto an adjacent NPC
SYSTEM Replaced wound system with a flat Grit meter
SYSTEM Interrupted attacks not blocked, but always graze/go wild
SYSTEM Increased inventory space
SYSTEM Flumadiddling (inventory handling) counts as a free action
SYSTEM Flumadiddling with cocked guns can be dangerous
SYSTEM Better support for instantaneous events
SYSTEM Perks and skills merged to one category, shticks
SYSTEM Character generation changed to reflect new shtick system
SYSTEM (testing) Set all shtick costs to 1 point in character generation
SYSTEM Kits for unarmed combat moddable (like prefixed guns etc.)

CONTENT Start game in Arken Town, a small settlement
CONTENT Basic bounty: Bring a wanted bandit to justice
CONTENT Changed intro text to reflect sample, soft "win condition"
CONTENT Simple rivers and mountains added as climate types
CONTENT Added some props: [redacted] and more
CONTENT New shticks: Muster, Circle blow, The breathing way, Leatherbrain
CONTENT Made bricks stackable and gave them stats as thrown weapons
CONTENT Derringers and pepperbox guns are now two separate types
CONTENT Changed effect of adrenaline syringe to: heal all bruises
CONTENT Changed effect of bleeding to: inflict all bruises as wounds
CONTENT Changed feel no pain to: always heal for 3 turns
CONTENT Changed war wound to: increase chance of wounds healing badly
CONTENT Changed tough as nails to: decrease chance of healing badly
CONTENT Removed Swordfighter career, added Barber instead

UI Started to implement mouse support (incomplete)
UI Configuration wizard for first-time players
UI Message log now oriented to center of the menu
UI Message log not flushed between turns
UI Added option to cancel character creation mid-process
UI Replaced dual-button system with main button (experimental)
UI Separate shortcut keys for inventory (default [F1-F10])
UI Shortcut [G] and [,] to get/give/drop command
UI Commands to zoom in/out on map
UI Menus reorganized to put option 0 on top
UI Scrolling menus are still ugly and buggy, but less buggy :P
UI Distinct animation for grazes and several other events/effects
UI Support for onomatopoeta (sound effects) on tactical map
UI Added colored messages (signals pleased/annoyed status)
UI Speech scrolls now take a few seconds to fade out when dismissed
UI Removed all non-free fonts from the game
UI Modified font (Linux Biolinum) for better unicode support
UI Redid the in-game character sheet a bit
UI Disabled player survey (at least for now)
UI Removed obsolete manual (temporarily)
UI (debug) print_me() to log/stdout when looking at beings slightly prettier
UI (debug) Game now makes a backup log when the game crashes

WORLD Place templates can contain player's starting position
WORLD Merged Region and Climate classes
WORLD Added Superregion class (named region on the map)
WORLD Region name generation takes climate etc. into account
WORLD Lots(!) of small and big changes to how the world is built

AI States can be pure switches
AI State machine can remember several distinct targets at once
AI Can prompt the player to choose an alternative and react accordingly
AI Can test (simple) scripted conditions directly from the data files
AI Some tactical changes to reflect new combat systems (incomplete)

BUG Time system with simultaneous actions wasn't simultaneous
BUG Shtick descriptions weren't displayed during character generation
BUG Sometimes crashed when critter ai had no target
BUG Game crashed with manually inputed world seeds
BUG Trying to draw off screen crashed (hopefully fixed)
BUG Various other small bugs that would crash for no reason ;)
BUG Post mortem "screensaver mode" sometimes hung
BUG Impossible to demolish house walls
BUG Certain places didn't spawn at all
BUG Savescumming may have been buggy, should now be more fool proof :)
BUG Help screen didn't print command keys properly
BUG Game window sometimes started maximized when it should not
BUG Reset some attributes when patching beings with certain kits
BUG Some speech scrolls were rendered twice (fixed, but reappeared )-:
BUG Some speech scrolls didn't get painted to the map
BUG Speech scrolls flickered for a split second between turns
BUG Sprites disappear when several gets drawn to the same hex
BUG Certain "steppable" objects, like thorns, didn't work properly
BUG Random characters always started with "animal friend" shtick :P
BUG Character sheet listed inventory's kit names instead of prop titles
BUG Typo in /kits/desert_life/brains.yug made tool wielders unable to attack
BUG Dilettante sometimes got same skill twice
BUG Attack forms without crit effects did no damage on crit hit
BUG Typos "pilarist", "omniscinet", "likelyhood", and a few more ...

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,

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,

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,

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!