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!