Download

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

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

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 itch.io page for LoSt as well as mentioning it in one or two forums. Interest in the project remains steady, but limited ;) The entry at itch.io 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,
Minotauros

12 May 2017

The Slow Application Development (SAD) Methodology


Head space!
C'est à un combat sans corps qu'il faut te préparer, tel que tu puisses faire front en tout cas, combat abstrait qui, au contraire des autres, s'apprend par rêverie.
   —Michaux1

A rant about very little in particular (which is incidentally also how, if ever my exploits as a Roguelike developer are to be mentioned in some footnote of history, they will be described).

I found some notes for an old blog post, and decided why not go ahead and publish this scrambled mess?

I was going to start by mentioning Tobias and the Dark Sceptres, which had just been released for free after 13 years in the making. This was in 2014, so bringing it up now might feel a bit late. In that sense, I guess everything is going according to plan.

This is supposed to be a blogpost about the Slow Application Development (SAD™) Methodology, the professed in-house design philosophy here at Domus Daedali. The rules of the SAD Methology are as numerous as they are fickle…

Thou shalt start in the middle.
Thou shalt code under the influence.
Thou shalt add empty variables with vaguely suggestive names, in case thou needst them later.
When too late, refactor.
Release sometime, release sometimes.
Embellish details.
Thou shalt never monetize thy project!

The guy who released Tobias had been tinkering on and off since he was a kid, and the whole thing was made in klik'n'play or something like that. Now, some of the commentariat were boggling at the fact that he didn't charge any money for the game, and I remember thinking: If you have to ask why someone chooses to give away something they've been working on for thirteen years, you probably won't understand the answer.

As always, I find comfort in the SAD methodology.
If it's not broke, fix it.
Never monetize!
It's one step forwards and two steps back, so the way ahead may be to walk away from your project.
Procrastinate!
Take out your money and shoot it in the head! 
We have to build cabins.

LoSt's business plan
The SAD methodology is not applicable to professionalism of any kind: From struggling artists to celebrities and mainstream developers, movers and shakers of the mindscape… We bid them farewell, with a thanks for paving the way nonetheless.

The crux of the matter is that having no real stakes in the project means you've less time in the day-to-day, but so much more as the years accumulate.

Though it remains unclear what we are trying to gain freedom from, we are willing to spend every ounce of our patience and monomania to get it.

A tiny shelter.

Developing commercially entails another mindset entirely. Mind to say, it is not one less respectable. On the contrary, it demands an admirable effort and excess of ideas to achieve the degree of polish needed to set something afloat in the vast ocean of cultural products. In fact, one of the things that prompted me to pick this post up again after all this time, was a post about monetizing RL devlopment over at Cogmind's excellent blog. (That's already been four months, so I'm staying true to my tenets, if nothing else.)

In any case: As fascinating as I find that pursuit, and as much as I respect and understand the decision to venture in commercial game design, I am also glad this is not the way that Land of Strangers is going. Even if I were to try to tidy it up, finish and sell it as an "indie open world wild west roguelike", the work/pay ratio would just be weepable, and I might risk the overall vision by making "concessions" to some imagined demands from the paying public. Developing in accordance with the SAD Methodology, I get instead to focus on the work/play ratio.

What I like about making my "little open acid western roguelike" is that I don't have to take all that stuff into account. I can choose to just say no, or whatever, to wholesome values and clever design choices. Proper graphics and overall polish? Yawn. Audio, who needs it? (Or maybe I will, but just slap on a sub-par recording of me mishandling my youngest son's ukulele.)

Never finish.
Work in the crevices.
Start side projects.
(Don't) quit your day job.
Just in case.
Have kids.
Stand in a pedestrian island reciting sutras whilst meditating on the cars coming to rape you.

Psyching up to do some coding
The SAD Methodology depends on a circular definition: The refusal to monetize and the refusal to finalize enable one another, defining a space, like a protective chalk circle where any (in)conceivable project can be allowed to grow. In many cases, it becomes a question of necessity. Lately we're seeing how old giants like ADOM and Caves of Qud are monetizing updated versions of their classic games. One thing these two have in common (and an article could be devoted just to discussing the differences), is that the colossal games which were already in place as the business model started to kick in, had taken many years of hard, unpaid work to achieve. If ADOM and CoQ had started out as commercial projects, they probably would never have seen the light of day.

I suspect this is part of the reason why Mark Johnson  has refrained from any kind of crowd funding scheme for his grand opus Ultima Ratio Regum. It also seems that Krice professes to the SAD Methodology, so what in the world could go wrong? It certainly is the fuel of much vaporware – and honestly, we would be so much worse off without classic never-mades in the vein of Shockfrost's game and World of Rogue.

It might be tempting to say that sites such as Kickstarter have been doing us a disfavor by blurring the lines between professional and amateur development. But the problem doesn't really lie with concepts like crowd funding, even if there is a deep-set problem with how capitalism is carried out these days. Be that as is may, the SAD Methodology isn't mainly about Smashing Capitalism™ (though let's do that as well, while we're @ it).

Rather (with the risk of becoming too pretentious even to the tastes of a reader who made it thus far), I'd say it's akin how a painter or author is never able to step back from the work and say: It is finished. Such a grandiose image can also be applied to humbler endeavors.

Never finish!
Never monetize!
Go and live in the desert!
We're all blessed. 

You know the drill.

We have to build cabins.

As always,
Minotauros



1 "You must prepare for a battle without body, to be able to take a stand no matter what; an abstract battle which, unlike others, is learned through reverie." (Henri Michaux, Poteaux d'angles)

5 May 2017

Released: LoSt #11.1 (Mercury Chewinggum)

This fixes a bug in the Windows executable. The bug didn't affect gameplay, but made it impossible to complete the in-game survey. Linux users and users executing the source code directly should not be affected. Sorry for the inconvenience.

Go to the download page to get your mercury fix.

As always,
Minotauros

16 December 2016

Fragments of principles of prop design in LoSt

Abstraction

Props (and skills) are slightly stylized representations of a characters resources. This stems from back when LoSt (Boot Hill RL, at the time) was a cardgame/RL hybrid. I didn't want the player to become too much like a "paper doll" with assorted inventory. Some learnable skills may assume you to have the necessary tools at hand, as some props assume you possess the necessary skills to use them.
 

Encumbrance, inventory space

All the dead dudes …
I never much cared for detailed weight systems. Instead, LoSt sets a fixed limit to how many props a critter is allowed to carry. Inventory is capped at six slots, which is just enough to get by. To simulate encumbrance, some items are tagged as "heavy" or "stackable" (light). Heavy items impose a penalty on your initiative, making them practically impossible to carry during combat. Stackable items are consumables and commodities: If you're holding a stick of dynamite, you might as well be holding five. Stackable items only take up one inventory slot (per item type), regardless of how many you are carrying.

I'd rather a sledge-pick.

Wearables, containers, more tools and actions …

… building houses, skinning animals, modifying items and mailing them to your future incarnations, gambling, rail laying, light landscape gardening … Who can tell if and how they will appear?

Lead slugs

Lead (♄) is the most important prop in LoSt, doubling as money and ammo. As a symbol of prosperity, it could even be used as a stat akin to karma. Instead of a food clock, a system where the player spends 1♄to rest each night?


Current list of props in LoSt

Glogious death awaits!
Salt crystals, emeralds, rubies, corpses, heads, lead slugs, spirit stones, dynamite, bricks, barb wire, smoke bombs, adrenaline shots, the beads of poverty, prayer books, ladders, lynchers' marks, dice, loaded dice, sledge picks, bowie knives, kiri knives, swords, whips, chainhooks, cats o' nine tails, javelins, spear throwers, sixshooters, pepperbox guns, pistolknives, triguns, game rifles, sniper guns, periscopes, field glasses, rubble, gravel, smithereens, dust, timber, splinters, shards, cigars.

Wishlist and ideas

Shotguns (fire several buckshot i randomized directions), punt guns (like a shotgun, but ten feet long; perhaps for crowd control or safaris), gatling guns (mounted mayhem), stockmarkers (burnmark cattle and people), tripwire and fuses (detonate dynamite from a safe distance), booze and drugs (it all starts with an innocently puffing cigar; fancy becoming an amphetamine addict or ingesting the poison seeds of holy plants), chloroform, tonics, poisons and antidotes, sandbags (why not?), ropes and lassos (for sure!), badges, books, lanterns, pliers, lead ore, caltrops, instruments, stilts, bear traps, nets, eggs, mummies, letters, mirrors, chain and tackle.

All that stuff.

As always,
Minotauros

6 December 2016

Released: LoSt #10 (Bloodshot Vista)

All hope was not lost!
Development is snailing along. LoSt#10 is the interrim release I had hoped to achieve before summer. It will probably be the last alpha release, before the meat of the game will start appearing. I'm still getting all basic systems in place, but #10 is still a big step forward from #9. NPCs have started to speak, and there are shops dispersed across the land, as well as a very basic bounty system (finding it can be considered a kind of an easter egg at present). There are also world building routines that will place the occational settlement, although these culture centers are still very flimsy, with not much to really see or do.

In any case, please try it out if you are interested. All and any comments are welcome.

Upcoming ...

Some features I hope to work on for the next few releases:


Perform steps in random order
* AI: I need to settle some basic AI needs. Proper pathfinding will be in place, letting people use doors, walk around ponds. They'll also be picking up stuff, objecting to theft, and adhering to other defined causes and states of beings.

* UI: Tidbits of UI are planned, and will become necessary. Scrolling menus is one thing, but also some kind of game log to track your character's progress. Also in the works is a zoomed-out view of the map to allow quick travel in explored areas. If I get inspired, I might start working on a mouse interface, but I think it's better to focus on gameplay at the moment.

* Settlements: The big thing in LoSt #11 will be to breathe some life into the settlements. It ties into several features that need to be finished. First of all, I need to streamline the map generation a bit, and define some good settlement blueprints/templates. Second, there must be places of interest, and the locals should feel a bit more alive. In addition to at least a few plot hooks (available bounties/questlines), there must be some shops and etstablishments (randomly including gunsmiths, pharmacists/medics, oracles, assassins, pawnshops). Also, something like a saloon where you can rest, furnished with a bar and perhaps a self-playing piano (depending on how complex the bias/reputation system becomes, we can whistle for features like emergent bar brawls down the road). The town can be seasoned with interesting places and encounters. There might be a village green with a park or pond, a church/shrine, a post/mining/police office, soldiers in barracks, gardens and animal pens, animal baiters who take bets, maybe even baiting animals against humans, (mad?) scientists/naturalists who want rare specimens, landscape photographers who stray into the wild, some random person has a treasure map, or is a junkie, or secretly wants to kill someone else in town, or has the habit of entering empty houses to burgle them, or loves dogs, or hates children.

* Factions/reputation: The Land in #10 is pretty war-strifed. Goons and settlers skrimish. One task ahead will be to make the map a bit more settled, with settlers mostly staying in their towns, and bandits camping in the wild. It will be possible to interact and gain reputation with any factions. If you gain a positive reputation with mudfaced goons, the settlers and law-kids might want to lynch you, but you can still get trade, healing etc. in scattered bandit camps across the land. Further down the road, more factions will come. Law and crime factions will have more organized structures, in addition to various societies, from scientists to monks to queers to carnies to cults. The current AI supports factions quite well: recognizing which factions another being belongs to, liking/disliking beings which belong to certain factions or act in a certain way. As I add more sophisticated behaviour patterns, I should be able to model some interesting semblances of drama and tidbits of story. Engine-wise, I still have to add a detailed system for fluctuating reputation. More time-consuming will be to write the content, defining and balancing achievements/bounties and other trickeries hidden behind the rosepot.

* Bounties: There must be a few bounties to be had in the starting settlement, and some others spread across The Land. They range from petty (templates "my <puppy> got lost in the <cave>", "100Pb for the head of Luci Borges") to more involved stuff later on (kill the four desert masters to become the undisputed champion of The Land, prevent/perpetrate genocide on a group of humans or animals, discover what really lives beneath the lead mines, act as a mediator/monger between settlers and natives …) I'll have to start with something simpler, basic fetch/bring/escort quests, and all that. Some bounties can be pretty open ended, with many moving parts (randomly mix elements like locations, NPC templates, and other special conditions: "Defeat the mad barber in the abandoned sawmill, who has kidnapped the mayor's uncle"). Others may be more handcrafted, but allowing for story emergence. You may get hired to protect an establishment against an awaited attack, and might solve the task by barricading and waiting out the attack, or sneaking into the enemy camp. Hell, you should even be allowed switch and aid the bandits in the robbery, triggering a favorable (or backstabbing) response, with many interesting adjustments to your reputation. To provide reward/encouragement, I've been thinking about tying up bounties with skill/character advancement, instead of a traditional system with experience points. Different types of quests and quest givers yield different rewards (more "moving part" that can be randomized on each playthrough). A hermit might tell you about herbs, or a banker gift you with a very fine pistol, or a master duelist teach you the art if you just prove your worth first. I have been thinking about modeling this around a time system that I believe to be pretty unusual.

* Time: An important feature in LoSt is that wounds tend to be very deadly, and with no available source of healing. I want to add a system for resting, for which the basic template will be "staying in a saloon". In a way, resting is my idea of something instead of a food clock. To rest, you have to pay a certain amount of cash (or fulfill some other criteria, depending on where you're trying to lodge), and the game world fast forwards several days, at the end of which you start out with all wounds healed. Depending on how grievous your wounds are, and the status of all pending bounties, the game might calculate an effect/event that occurs during the period you spend resting. The event could be just a simple string, and could often just gloss over a period of quiet, or provide the player with options to advance the plot or character. If you come back triumphant with barely a scratch, you might be rewarded with a skill advancement of your choice. But if you come back with 0Pb and a gun wound, you might develop a bad reputation or foible. What's worse, the guy you set out to kill in act I might come back in act II, with a plan for vengeance. Since the player must rest to heal, they'll want to make each rest count. The yardstick pace for a starting character should be to win one bounty, then rest, and then head out for a new adventure. Longer streches of time could also be passed doing seasonal work, training with a master or living in the underground city of fools.

If you think this sounds convoluted, you haven't heard the half of it. The art will be to keep the story suggestive and the system open ended, connected with factions and all the other "moving parts", to achieve a semblance of direction action/plot.

As always,
Minotauros

11 March 2016

sense of place (ii. out of the dungeon)

Welcome to the second installment of this article series about map generation in LoSt. Part I covered the basic anatomy of a place. The topic of this post will be climates, and some things to consider when creating an overworld-based Roguelike, such as my game is set out to be. The rant that follows may please some in part or in its entirety; there's no "tl, dr", in any case.

Meanderings 

þe olde labyrinthe
Let's start with a digression, namely the topic of labyrinths, in a meandering attempt to reach the actual topic at hand, as it were.

Early European culture distinguished two main types of labyrinths: "unicursal" (with a single path leading circuitously to the center) and "multicursal" (having branching paths, only one of which leads to the designated goal)1. In modern times we typically include a third category of "network labyrinths"2.

We might attempt to establish a fourth kind of labyrinth here. Let's call it a "deterministic maze": It has several paths, all of which lead to the same endpoint. A curious specimen in academic labyrinthology, deterministic mazes are quite frequent in video games3. Consider how the exemplary level designs of Zelda are structured as deterministic mazes: In addition to a (meandering) main path, there are shortcuts and detours available. These, however, are carefully constructed to ensure the player's passage through certain waypoints (culminating with the boss). Likewise, story-driven games tend to gravitate towards one fixed ending (or a few), like a stream might bifurcate around a great rock, only to converge on the other side.

The traditional Roguelike dungeon falls under this category of deterministic mazes. All roads lead to Yendor. And yet, procedural generation shines at its brightest when behaving more like a network labyrinth, which is to say, when the completely unexpected occurs. After all, what could be more like a network-maze of thematic associations than Dwarf Fortress?

I'll make one last point concerning historical labyrinths: The maze King Minos had Daedalus construct for the Minotaur, served as a prison, to keep the monster trapped within. Conversely, the labyrinth is also a fortification, built to keep trespassers out. Most Roguelikes emphasize this last aspect of the labyrinth, as an impenetrable stronghold to safe-keep the universally coveted MacGuffin. The motif of descending and ascending with the amulet, as featured in games like Rogue and Nethack, is actually a quite striking image. However, it was clear from the outset that I wasn't going to take LoSt in that direction.

Out of the dungeon! (screenshot: LoSt #7)

In part, I wanted a less clearcut world than provided by the genre classics. Instead of the player vertically piercing a main dungeon, I wanted plots with broad horizons, unfolding around different locations on the map: inside houses, atop steep ravines, deep within thorn forests, on the makeshift streets of desert settlements … Rather than the concentric circles of some "Caverns of Chaos", I envisioned a network maze, like the myriad connections of a root system, or perhaps even that megalithic mythic maze, but splintered, turned microlithic by erosion or earthquake.

So, I bid you farewell, unending fields of nadir … for now … Fun fact: Versions 5-7 of LoSt did play out in a dungeon (the goal was to break out of confinement), and I am planning to reintroduce caverns and mine shafts at some point. But when that day comes, the underground biotope will only serve as one of several climate types, not the center of the world (as is literally the case in most RLs).

Drawing the line(s)

Turning away from the dungeon level as the measuring stick of map generation entails leaving behind a kind of thinking one finds in for instance Andrew Doull's Unangband Dungeon Generation. And yet, rereading Doull's articles after all these years, they still inspire with their zen-like attention to fundamental design principles. Much like the pilgrim who must traverse the maze before reaching that vantage point where he finally achieves overview of its many winding paths, I find myself prompted to reexamine the inner workings of deterministic mazes, as I try to extricate myself from their manifold confines.

Games use deterministic mazes for a number of gameplay-related reasons. Globally and locally, the structure can grant the player a sense of agency whilst keeping the designer in charge of the game's progression. Some important aspects that a typical RL might contain in deterministic mazes, include:

  • Scaling difficulty: The player descends ever deeper into the game world, and is faced with ever more challenging obstacles. Most RLs simply assign a numerical danger level to different monster types. The danger level of a generated level typically depends on the current depth, the player's level, or a function of both.
  • Pacing progression and loot distribution: Just as the dungeon gets more dangerous, so the hero grows in strength, acquiring experience and better equipment. Some games design early levels to teach the player certain skills, or supply the character with certain props/abilities, which will be needed later on. In RLs, where each challenge might have several solutions, it is often a question of keeping the character appropriately powerful at any given time. Features like side-quests can also be used to ensure that the player has access to particular artifacts and resistances. This not only serves to balance difficulty, but even provides the player with an incentive to move on. After all, unearthing shiny loot is a core experience in most Roguelikes.
  • Keeping the story in line: The world is organized so as to preserve narrative coherency. Granted, most Roguelikes skimp on the story, but let's take ADoM as an example. Before reaching the elemental temples, you are guaranteed to speak with the dying sage (who blocks your passage at an earlier level). This dialogue provides your character with an incentive to raid the temples and retrieve the orbs. In Rogue, and many successors, the vertical dungeon is presented as a goal in itself, with a storyline consisting of nothing more than a text snippet ordering you to head for the center of the labyrinth.
  • (Surely, I'm forgetting something here …?) 

early experiment with "deep" climates
Some of all this must be emulated in an open world. In particular, the difficulty curve must be scaled by making sure that the top-tier baddies (and assorted goodies) won't show up too early.

When it comes to "keeping the story in line", the construction of an open world must strike the balance between narrative linearity on the one hand, and a more, if you pardon my French, "rhizomatic" narrative structure on the other4.

Keeping that in mind for later, I was presently more concerned with making an open map that also provides meaningful thresholds in the game space.

./lost/kits/desert_life/climate.yug
Currently, the world generator in LoSt starts out by dividing the map into roughly hexagonal zones and designating a climate type to each zone. The method is really quite blunt – I am very little interested in huge topological maps that make sense from a geological viewpoint5 – world generation begins by setting a climate for the centre zone, and basically flood fills from there, calculating a climate for each new zone on the basis of its preexisting neighbors. During this phase, zones can also be prepatched to contain specified "places of interest"; a feature which will be used to situate settlements, special locations, boss fights, etc. The world generator is stored as a data kit, so it can easily be expanded and judiciously randomized. It will be able to choose between many small templates (for climate map generation, water distribution, locations …) and combine them into unique composite themes for each world. As the game progresses, each new zone is generated on the fly, and put to sleep once the player reaches a certain distance.

what was the thread, again?
Regarding the looming question of how to put thresholds in an open gameworld, the examples of games having already done this in various ways are too numerous to start listing.

In LoSt, I'm experimenting with what I call "deep climate" types. A deep climate is a derivative of a basic climate, spawned in pockets within the bigger region. In their basic layout, deep climates provide a threshold by hindering the player's movement somehow: "Deep deserts" might be an area overgrown by thorns, or just a deadland with a looming ziggurat in the middle. "Deep plains" might be wild groves, oases ruled by ferocious animals and plants, understood in part by native people, but where no life-lovin' settler treads. The idea is to use these deep climates to set up barriers between the opening and the mid-game. Overgrown areas can be constructed as half-way mazes, with uneven "corridors and rooms" dug through an otherwise dense carpet of vegetation. Different kinds of deep climates will offer different kinds/degrees of impenetrableness. You can always wade through thorns at decreased speed, but it's harder to trick your way around a narrow mountain pass.

Deep climates zones will also spawn more dangerous encounters than the basic climates. They will feature fiercer cousins of the critters you find in the basic climate, or larger packs with more and tougher alpha individuals, in addition to particularly nasty critter types exclusive to the deep climates. I hope to use these deep climates  as antechambers/buffers/passages to "vaults" and other special locations. Should I succeed in that venture, I may actually have done little more than replace the concentric RL dungeon with a slightly more loose network of glorified "deterministic mazes". And yet, that's still a place to build from, I guess.

Did I go a full circuit with this whole labyrinthine post, and end up about where I started? I should probably be content with that tiny advancement, a whiff of something slightly ellipsoid.

As always,
Minotauros


1 As Penelope Reed Doob points out in her study The Idea of the Labyrinth: From Classical Antiquity Through the Middle Ages, unicursal designs were curiously used to illustrate texts describing the multicursal labyrinth of myth. The earliest labyrinths were unicursal, and seem to have been something like fertility rituals, where the devout would pass through a spiraling maze – much like we organize airport waiting lines today. In any case, the kind of multicursal designs we know from children's comics and coloring books, is a modern phenomenon.

2 The very idea of the "network labyrinth" implies a winding maze in itself. The term was coined by Umberto Eco, who described it as "a tree plus an infinite number of corridors that connect its nodes." (From the Tree to the Labyrinth) This kind of maze connects with a multitude of modern concepts, from data clouds to deconstruction, whilst retaining an aspect of a particular medieval idea of the labyrinth as a metaphor for laborious/hard-gotten knowledge (even if substituting medieval "circuitousness" with modern "rupture" as the source of epiphany).

3 Streching the definition of a deterministic maze, we could hold Pacman as an early example: A maze with no center has as its endpoint the state of depletion after Pacman has covered all its corridors, gobbling up all the pellets. Pacman's concept of "covering the entire area" is really borrowed from the ancient unicursal mazes, but set instead in a maze of branching paths.

4 I'm not implementing bounties (quests) yet, but keeping some of this in mind: hoping to opt out of fixed quest lines, perhaps by implementing bounties as part of the factions found within the game world. Let's say you're assigned a mission to capture a criminal. The task should be solvable in different ways, but it should also be possible to ignore the mission, or join the baddies instead, or fail, yet live to see another day. I expect finalized versions of LoSt to have no win condition (but several possible plot hooks to get you started). This will ideally make it possible to recover, at least story-wise, from committing a blunder such as making your intended ally your lethal enemy.

5 A tiny bit of topology is high on my todo-list, but it will pay more attention to the rules of drama than the rules of science. I am thinking of adding an intermediate step in map generation, after the climate zones have been defined, but before quest locations are placed, where the game will put natural borders in the form of water and cliffs. Rivers and lakes will be straightforward enough, simply continuous bodies of water patterned across the land. Cliffs will be implemented as a map feature, so the game won't keep actual track of relative elevation etc. A cliff hex will be defined with a slope in one direction. It has the property of sliding everything that lands on it in this direction. Barring any special skills or equipment, if you try to scale a cliff from below, you'll just be thrown back where you started, but it'll be possible to jump down the cliff from above. Cliffs will also provide special cover, giving advantage to shooters on the high side. Once the functionality of cliffs is sorted out, they can be distributed around the map, both in "encounter-sized" chunks, and in great walls that form an initially impenetrable barrier: to reach that summit, you have to take the winding mountain road, crawling with baddies.

1 December 2015

Released: LoSt v.8 «Still Life»

I decided to release the game in its current state, This is version 8, titled «Still Life». Hopefully, someone might have interest in trying it, just to stifle their own curiosity, and perhaps to leave a comment or two.

Get your fresh bloodshed here:
Windows executable
Python sources

(Linux users: Apologies for delayed Deb package this time. I'll put it up shortly; in the meantime, Linux and Mac users can quite easily run the game from source, by following the readme inside the archive.)

Save files are not backwards compatible. This even goes for the configuration file, so if you're reinstalling LoSt, your safest bet is just to delete your old configuration folder (named ".LoSt" and contained in your home directory).

«Still Life» is very much a pre-alpha release. Compared to the last version, which featured a dungeon and a win condition, I've rolled back to something even less reminiscent of a real game! Let's hope the one step backwards precedes a leap onwards … Highlights of «Still Life» include randomized species of plants and animals, basic overworld generation, and snazzier graphics (with configurable resolution and animation options).

There have been a lot of changes behind the scenes, which will make it easier to add more content to the game from now on. I guess the basic setting will take shape within a release or two, and hope to start working on humans in the next release. Implementing NPCs will entail getting more or the basic engine in place, including speech, trade and bounties (quests).

Comments welcome

I'd be happy for any comments, even (especially) if it's just that someone didn't get the game to work or didn't understand how to play it. At the current point, I'm curious as to how people find the interface and combat system, both of which are quite unconventional.

Ideas and requests for content and features will be given high priority, as a carrot for those interested in the further development of LoSt. At the current point, the game is a bit lacking in theme. There are not many objects to find, and practically no lore. Also, the random animal species doesn't yet yield really memorable creatures. I'm sure the animals will get some more personality once text descriptions are added, but I'll also need some inspired ideas for how to take this feature a bit further. In general, I'm looking forward to getting the setting more or less in place. So if anyone want to see telescopes implemented before lassos, or would love to play a travelling quack in the next release, make your voice heard, and I'll try to accomodate.

As always, Minotauros

28 September 2015

measurements of the known world

I want the setting to be highly random every time you play. Questlines, species of animals and plants, important places, they should all be procedurally generated – at least to a certain extent.  It's impossible not to work with some templates. Say you want random places – you have to stop the randomness at some point and set fixed parameters. If I want settlements to crop up in the game, it's not going to happen unless I make some blueprints with blanks to fill in, and a balanced "world blueprint" to put at least a few villages in addition to other places of interest. The same goes for animals: I can't just blindly generate a bunch of random species and put them on the map. There must be a balance of predators, prey, pets, and atmospheric population of The Land.

Every now and then, some fresh developer announces that he (mostly guys do this, yeh :P) is writing a RL where a totally unique world and plot will be generated each time. Content like trade, reputation and other intelligent behaviour will supposedly just procedurally occur from the sublimely wrought code that binds it all together. I think what we (counting myself amongst this throng of vapourware developers) fail to realize, is this basic principle, that you have to actually implement all the content that goes in the game. Sure, you can patch it together so that interesting combinations will occur procedurally, but there is a reason why so few RLs (if any?) exist that really take this to the next level. A conventional truth is that procedural generation can be used to alleviate manual labour by pregenerating stuff like landscapes, that would otherwise have to be coded by someone. This may be true for genres like FPSs and development models used in big business, but in RL development, the opposite seems to be true: Rather than handcrafting less content than the player is going to see in any one game, you'll end up having to make more, by orders of magnitude.

If there is something like a story in any given RL game, I think it's the setting. Exploration of the game's universe doesn't happen linearly, but rather fractured up by features like permadeath and randomness. I actually believe this to be a key to random stories in RL games: Granted, you'll find yourself implementing stuff like procedural dialogue and questlines, but the actual sense of the work will be in something perhaps much less grand: just the kind of random stories that have always been extolled on RL forums. So much for holy grails and silver bullets.

As I stated, I want the map to be randomly generated, but I'm not aiming for a huge world. My current testing version generates a landscape encircling a diameter of about 400 hexes, surrounded by endless desert. Rather than each playthrough taking place on an entirely different planet, I'm envisioning different regions in one and the same world. For one thing, it'll make a lot more sense if later I implement ghosts, or even the option for retired characters to show up as NPCs in later games. It also means I can write quite specific lore to reflect a single world/culture, and possibly conceive of one or more overarching plots, possibly even win conditions. (And yet, why bother with win conditions; doesn't an unwinnable game world highlight the very strengths of the RL genre?)

I will of course allow myself to vary parameters in the setting if I think it can be used to advance gameplay or the story itself. The Land is situated on the frontier of a continent loosely based on historic America, during a period of colonization by settlers and officials of «the old world». One could randomize the ruling form of the old world, for instance: Is it an empire or monarchy, or a federation or a group of rivaling states? That might not be worth the effort, actually. But it might be interesting if for instance the religious fractions were partly randomized. In one game priests and mystics hailing to the prevalent religion(s) might be wandering monks and nuns, in another they could set up temples in villages or near natural sources and holy sites. And I've been thinking about having the old world represented by a random currency in each game.

Old world money, however, would probably just function as trade goods. The popular currency used in The Land is always lead bullets. Slugs function as coins as well as ammunition, so in The Land, the saying that one person's life is worth one bullet, is no metaphor; it's the actual rate. It's a harsh land. Slavery may be more or less predominant in different playthroughs, but it will always be an issue
in the game world. But I guess there may be some sort of hope. Should I flesh out the theme of slavery into a main plotline, one conflict would surely have to be the fight for the abolishment of slavery! The law is still fluent in The Land, dictated by the varying influences of various power fractions. Fractions might include commercial companies and military forces from the old world, opposed to forces for political independence, ranging from semi-autonomous settlements to secret societies, but also powerbases ambiguous to this dichotomy, like the church or different sects/cults, local commercial interests and gangsters fighting it out between themselves while simultaneously trying to stave off the man, who wants all of their heads on a platter.

Some fractions might be pure berserker types when faced with the players, such as desperadoes, highwaymen, and parts of the natural world. For now, I have more than my hands full just getting all systems to work and writing the bare bones of a weird western setting, but naturally I would love to add an indigenous culture, with its own bases of power and playable careers. In the current public version, there is already the skeleton of a career system, starting the player out with a random career out of many. I'll soon pick and flesh out a few careers, and then add more as I go along. Careers might represent power fractions in themselves, and I hope to use them as stepping stones to describe the setting. I'm pretty sure The Land will feature lots of conspiracies, so it might make sense to have some of the careers represent something akin to guilds or networks. There may be a fellowship of the railway station masters, or a code of conduct taken by certain gunslingers and avengers, etc. The career you choose at the beginning of the game will represent your background, so it should be fully possible to start out as a lyncher, but then pursue the skills and ethos of a witch hunter or an agitator. Starting careers should open up something like a skill tree, however, and maybe possible starting missions. As development progresses, specialized skills can be assigned to specialized careers, in addition to being learnable in the game.

At the moment, I'm debugging and finalizing the basic world building engine, whilst simultaneously using it as an opportunity to add some content. For instance, I've been having some trouble with places/encounters containing subencounters (say, a pampas, containing a house, containing a critter). To test and tweak, what better way than writing up a few places that use this exact mechanism. The next release seems to be in sight. And if you think I've been ranting my way through this blog post, you should probably have stopped reading a long time ago.

As always,
Minotauros

20 September 2015

Shaping up

I've been hacking away some at LoSt (even if I borrowed my motto from Beckett's early prose piece The End: «I did not work every day.») – adding more infrastructure for loading and randomizing content, as well as a basic landscape/climate generator and encounter system (if still pretty crude, it'll do for our testing purposes).

This means I'm facing a period of adding some content, which is always fun. Especially as most of the game is generated from data files now, meaning I'll be able to quickly add and test different kinds of items and critters/people with particular behaviors.

I'm recycling a lot from abandoned projects, so I can move quickly enough, even if «I did not work every day».

I reckon the next release will feature a wasteland with some houses and human encounters, as well as plants and animals (randomly generated species, of course).


Speech and experience/time are probably next on the todo list, after which I'll be able to concentrate more and more on adding content.

Compared to coding, adding content is easier from a technical point of view, but it can be much harder to design and balance. (Not to mention that I'm still ironing out system basics like whether or not to use explicit facing).

As always,
Minotauros

17 June 2015

the joy of rotozoom()

A quick update: I've been working on a new routine to display tiles, with support for animated sprites. Instead of the epitomal @, you are a pair of footprints wanderig around. There are some dogs pawing about, as well, and the system currently supports critters up to 4 hexes big (mounts and pachyderms, I reckon). Further down the road, I'm opting for some kind of speech system with speech bubbles, and probably typographic sound effects (comic book onomatopoeia like "clank" and "boom").

All animations can be switched off in the configuration menu, of course. Even then, I've a nice system where you can switch between resolution levels (and, theoretically, tile sets) at a whim, to support both small and big screens. All very much thanks to pygame's smoothscale() and rotozoom() functions.

The next release is probably going to be all about a desert biotope, with pseudo-random species of animals and plants. I've been moving a lot of the content over in data files, to make it easier to add new stuff. The very template-like desert dog that's currently in the game, is contained in the following lines in the data files:
cri small dog # "cri" means "critter", as in "define new critter"
inherit "critter" # get some basic stats
nom ["a","big chihuahua","chihuahuas",""]
max_health (2,1)
tags ["animal"]
causes ['self-preservation','zombi moves'] # define behavious
hands "bite" # natural attack
size 2 # two hexes big
tile ((2,2),(2,2),(2,2),(2,2)) # refers to four (identical) paw sprites
end # end entry for critter "small dog"

# the following three entries make up a very simple "reptile brain" AI plugin:
cause self-preservation # "cause" = preferences/ethos of being
bias [(('harm',0,0,'self',0),('aggravate','agent'))] # hate attackers
states['relaxing'] ["zombi wander"] # when relaxing, just walk randomly
states['attacking'] ['zombi attack'] # need to be able to fight
end
state zombi wander # the "relaxing" state of the critter
actions [(30,("relaxing",0),("finish",0))] # 30% find other pastime
actions [(10,("wait",0),("finish",0))] # 10% stand still
actions [(100,("wander",0),("finish",0))] # 100% walk randomly
bias [((0,'foe',0,0,0),('attacking','agent'))] # attack foes on sight
end
state zombi attack # attacking state
actions [(100,("is_dead","q"),("return",0))] # if quarry q is dead, exit state
actions [(100,('ally','q'),('return',0))] # is q is an ally, exit state
actions [(1,('nil',0),('return',0))] # 1% P of randomly exiting state
actions [(40 ,('approach','q'),('finish',0))] # 40% try to approach quarry
actions [(100,('attack','q'),('finish',0))] # 100% try to attack quarry
actions [(100,('approach','q'),('finish',0)), (100,('wander',0),('finish',0)) # backup strategy: charge!
end


As you can see from such snippets, I'm not aiming for this to be expandable by anyone except me ;) but there is support for "modules" in the game, so you can theoretically mix and match packages of content. In the long run, one could release expansion packs, maybe stuff like a "steampunk mod" or an "undead apocalypse mod", for people who are into that kind of weird west, and the players could choose to include or exclude the various modules at their leisure (I would love a "postapocalypitic cowgirls/Burroughs/Genet queerporn mod", mesself).

Dreaming about long term goals such as this, is of course a very important part of RL development. I think I'll celebrate the next release with a meatier blog post detailing my sterling Slow Application Development (SAD) Method. In the meantime, interested parties can get your snapshot release here (python sources).

The next big thing to do, is to systemize how random elements are picked, so that I can start adding more content; the encounter tables, so to speak. I'm going to use the kind of rhizomatic data entries examplified above, but they need lines beginning with something like "frequency". There needs to be a module or object to make sense of cases like how, if an oasis appears in the desert, it might possibly contain the tent of a travelling salesboy (but probably not a nest of poison ugguks, which you'd be more likely to encounter underground), and in that tent (possibly) of box of posessions, amongst which (possibly) a handgun which (possibly) only holds four bullets, but scores deadly shots with a 1/6 accuracy (just possibly).

The devil, of course, is in the details, that is to say the content. The anatomy of a critical hit, and of the revolver itself, not to mention the salesboy and his tent, the oasis, the desert … With small steps I might be able to slowly populate the current waste land and build a world of biotopes subtle and sprawling, struggling centres of civilization, and a gruesome, mysterious subterranea.

By the way, rescaling the sprites can also be used to get a nifty overview map, although it would be risky to navigate around that, once I get some dangerous encounters up and going in the desert. On the long todo-list is a "travel mode" which zooms out to a larger map view. But here and now, it's more pressing to fix various issues with map generation, some of which become apparent from this very screenshot.

As always,
Minotauros

19 March 2015

On the fence

How time flies when development is at a standstill. LoSt can be said to be en route, though; in concordance with the Slow Application Development (SAD) methodology that "we" (that is to say, I) have proudly developed in-house, I'm zealously adhering to the doctrine of "release sometime, release sometimes".

Being busy with other things still leaves me headroom to ponder some issues I'll be tackling in LoSt (this being quite possibly the only redeeming quality of the SAD methodology). I'm not so far away from having most basic functionalities in place, but I still need to make some big decisions. For instance, I'm still on the fence regarding whether I should keep content in data files or put them straight in the source code. In my single big computer game project so far (Squirm RL) I kept "everything" in data files, and I loved how easy it was to add new effects, items, quests, and monsters. On the flip side, I had to stay within the boundaries of the "natural laws" that ruled the game world, and whenever I needed to step outside of these boundaries, I had to mess around with the parser itself, as well as dive into stuff like the main loop and basic event handling. (Let's hope this is the last time I squeeze in a Squirm postmortem on this blog)

For LoSt, it might have been a good idea to use a scripting language. But since I'm writing the darn thing in Python, anyway, that would basically amount to bundling content in with the source code. I think that may be the way to go, just to get maximum flexibility. For instance, I'm planning to have most animal species randomly generated for each world seed. It'll probably be easier to balance and maintain such a fluctuating bestiary as a separate module, rather than implementing a half-assed "catch-all" data syntax.

I already did some work on this, quite early in the process, and came up with a simple plant generator, which spits out basic info on six species of plants, balanced against each other so you won't get a  world with only poisonous plants, or no flora except grasses. A sample run gives something this result:

Bluebread (a small bush, bearing fruit, with a poisonous stem, and capable of walking by uprooting itself), nodding olive (a huge cactus, labeled a tree, with branches that can be used to make rope), sugarelder lilac (a tree with medicinal roots and flowers containing an antidote to poison), bane-grass lily (a toxic grass, however with edible flowers, and roots that can be made into rope), medusapod needle (a flowering grass tagged as "hexweed" and "species delicacy"), and crow's nest foxbrush (a big bush with medicinal berries, and which also is capable of walking).

It'll take some work of the imagination to expand this simple mock-up to include a whole biotope. I'll probably have the generator start out with some kind of "template ecology" where the blanks are filled in, to make sure of stuff like at least having some plants and herbivores at the bottom of the food chain, but more importantly to enforce such as affects gameplay: For instance, there should always be some ferocious animals for the player to fear, but not too many of them; and I certainly want horses or some kind of equestrian beast to appear in every world; and depending on how the game ends up balanced, I need to make sure that resources like food and medicine are distributed in appropriate quantities.

I imagine it a bit like laying out the cards in a fixed pattern for a game of solitaire, or when consulting the Tarot. Except the cards themselves may contain new blank slots, to be filled with yet new cards drawn from the deck. Thus, a "card" containing the template for a small predator will contain some basic stats, but also ask the engine for more "cards" to flesh out the details: whether it's a mammal or a reptile, how it lives and hunts, as well as more unique traits (eg. particularly fast or strong, or poisonous, or easy/hard to tame as a pet).

This, again, raises the question of how to draw random elements when constructing and populating the game world. I may hold on to the "deck of cards"-analogy, making each alternative less likely to show up twice in a row. That would make it easier to restrict for example the probability of every single species in a world being poisonous (although even that may be left at least theoretically possible). And a "deck of cards", periodically reshuffled, may be a better way to assure balanced random drops over time, than simply rolling a die and consulting a table of results.

At the moment, I'm happy enough to ponder this a bit more before getting back in the thick of coding.

In related news, I'm about to send off a pile of stuff for work, which might mean I'll manage to make space for some LoSt development in the next months – although I may have to scramble for a new big project, to accumulate the resources I need for that long-awaited frontal attack on the evergrowing stack of bills.

17 July 2014

The Story So Far

A while ago, I started to tinker with a computer game named Land of Strangers. The game is a Roguelike set in a fantasy world inspired by various fictions about cowboys and cowgirls. It's still in the very early phases of development, but can already by downloaded (as a Windows executable, a software package for Debian/Ubuntu Linux, or as source code (written in python)).

Louise Ortiz, travelling salesgirl, soon to be dead (screenshot from LoSt v. 7)


This blog was established to write about LoSt (although I might make the odd excursion into stray topics, I'll try to stay on the case). For the sake of archival completeness, here is a final link, to a forum thread which I've been using to rant about LoSt: http://forums.roguetemple.com/index.php?topic=3221.0

The summer is going to be awfully quiet, but I'm guessing we can expect a new release early next fall. It will focus on making the supporting cast a little smarter.

As always,
Minotauros