ThunderSOS

I’ve also developed a new Text Adventure engine!

Is this the right place to talk about it? I’d really like to get some feedback - hopefully people would like to try it out?

In my system your game is authored entirely in XML but the engine has a lot of features, not necessarily unique but I think from an authoring point of view it’s a lot simpler than many sophisticated engines as you really don’t need to know programming - especially JavaScript!

Here’s a brief rundown of some of the features:
Everything is declarative XML.rooms, items, tasks, events, Npc definitions and event the verbs themselves!
Full(ish) sentence parsing with verb, noun (both action and target) + adjective recognition with prepositions.
Adverbs also handled so you can augment verbs to behave in a different way according to an adverb. Think LOOK or LOOK UP (a IN b). This is configurable.

Rooms and Room Exits, full map definition with 8 standard compass direction plus UP and DOWN. The author can expand to more directions if they want or add other verbs such as CLIMB by editing the the engine definition game.xml file.

Also Npc names, time strings and quoted text. WAIT UNTIL 19:27, GIVE MONEY TO THE GUARD stuff like that is fully supported.

So yes, there a world clock which is configurable as to hours per day. Tasks and movement take definable amounts of time. Granularity is minutes. Days aren’t distinguished but time intervals know about midnight.

Items, which may be weapons, consumable (usable), containers or virtual objects like information.
Items can be traded with a trading enabled Npc.

Events (Room, events, Universal, onTake, onExamine, item state change, all sorts of things). Events have conditions and world consequences which can affect just about every game object.
also event can be fired in the future either X minutes or at a specific time.

Tasks (triggered from sentences) → basically trigger an event with conditions and consequences (either run an event directly or inline the event into the task with conditions and consequences).

Npc State machines.
Autonomous Npc Patrols - Npcs will drop out of Autonomous mode on encountering the player and drop back once the player has left).
Npc Combat (from task or ATTACK verb) and through states directly.
Npc have their own inventory and can steal stuff from you.
Npc state actions are also like the conditions and consequences, and can do all the same things. Conditions branch as you’d expect to a different Npc state,
Npcs can ask questions too and expect you to make a choice then branch depending on the answer.
Npc proximity alerts: The engine calculates real-time compass directions relative to the player, dynamically mapping placeholders in text you define (e.g., “You hear a market trader shouting his wares to the NORTHEAST”).
Systemic Trading: Implemented full market mechanics driven entirely by XML attribute-based tags. NPCs automatically evaluate item classifications (such as rare or damaged) to dynamically calculate price shifts and/or swap interventions. You can buy, sell, swap or show items to a trader.

The engine is fully internationalizable - the dictionary is defined by the items available (items.xml). Verbs are definable too - mapped to pre-defined verb handlers (hopefully eventually they’ll be completely pluggable) but any new verb you need can be mapped to the task handling system so almost anything you need can be handled that way.
All prepositions and adverbs are attached to the verb and so can be redefined along side it.

Decoupled Environmental Renderers: Solves the “darkness problem” via automatic global rules.
Instead of scripting visibility for individual spaces, you get a clean and simple way of changing the text engine behind the scenes automatically when say, a torch is toggled using tag based room renderers.
There’s a hundred things I’ve missed I’m sure as I’ve been working on this for a little while.
I can point you guys to some docs - I don’t have a Wiki page yet, it’s just on Git as a library and there’s a Libre Office doc file there which covers some of the above in vastly more detail. A full Wiki seems like I’m getting a bit ahead of myself…

There’s loads of stuff it can do - I’m developing an adventure alongside it and that’s acting as my primary source of what the engine needs to do so everything is still very much still in development although what’s there now is certainly stable.

If you’d like to know more I can point you to my git hub and you can download a playable demo and the libraries plus the documentation as it stands. The docs are not really complete - I’m getting to the point where I could actually use a bit of help to be honest.

9 Likes

I’ve split your message into its own topic. This is where you can discuss it.

Once you get your topic going, you can edit the original post/wiki in the topic it started from to include the link to this topic in the list: List new Development Systems here!

It sounds really impressive and I’m intrigued. What’s your git repo? I know you may not be able to post a link with a new account, but you can just add some spaces to break it apart.

On the contrary – if you want other people to use it, there’s nothing more important than a wealth of good documentation.

3 Likes

Git repo is here and there’s docs in the form of an Open Office document::

Github dot com slash ThunderSOS slash 1984

There’s a playable game here too that as I say, I’m using as a source of inspiration for what the engine needs.

The main game (1984) is encrypted but I have included a tiny sample game which you need to get the main game.xml (you don’t really want to rewrite that from scratch).

Link for convenience: GitHub - ThunderSOS/1984: Playable game but no code · GitHub

5 Likes

Thanks!
The documentation there is accurate but incomplete. There’s so much to do…

I’ve made a new release with the latest libraries, gamedata.dat file and some updated docs. It’s version v0.13 dated 30/7/2026.

This is definitely the place to talk about it . System sounds interesting, XML is a bit chunky to type, so is there an authoring tool?

OK. I tried to play your game, but it put my PC into permanent ALL CAPS and i had to reboot to fix it. I probably wont try it again.

I couldn’t figure out how to get anything running. I see that there’s a run.sh containing the line java -cp "./lib/*.jar" org.happysoft.games.Main. I guess that’s looking for a Main.class? And all the classes defined in jtextadventure-0.1-SNAPSHOT.jar, but no Main? But I’m not a Java guy and might be missing something. I only got as far as I did with the help of chatgpt.

There is a class in jtextadventure-0.1-SNAPSHOT.jar called Main so the run.sh should run that - the class is in the directory org/happysoft/games.

.jar files are just zip files so you can rename it and open it up to have a look.

Admittedly the .sh script is my best guess, I’m developing on Windows so I use the .bat file but it’s not far different. I think it should work.

Do you have a relatively recent JRE or JVM installed? Can you type java -version on the command line and show me the output?

Well it does turn on CAPS for input, it is a command line game. You just press caps lock to turn it off again. Did you not get the output:

**** Welcome to 1984: Eyes of the State ****

You are in the living room of your flat.

There is a sofa, a desk and the ubiquitous telescreen. The flat on the whole is dilapidated but not dirty or untidy.

Exits are:
SOUTH to the kitchen in your flat.
NORTH to the hallway outside your flat.

You can see: THE TELESCREEN
You can see: THE DESK

What next?

if it got as far as turning on caps then the game must be running somewhere.

I hope you give it another go.

Not yet unfortunately, that would be a lot of work as things can get complicated with tasks interacting with events and running NPC state machines and things. It would be nice for sure but it’s just me at the moment!

This is my download straight from git, on Windows I just do the following:

C:\Users\chrisf\Documents\1984>dir
 Volume in drive C has no label.
 Volume Serial Number is 803F-4CAF

 Directory of C:\Users\chrisf\Documents\1984

11/07/2026  17:02    <DIR>          .
11/07/2026  17:02    <DIR>          ..
30/07/2026  10:48            72,892 gamedata.dat
12/02/2026  13:16               160 generate_resource_bundle.bat
27/07/2026  16:45            87,946 Java Adventure System. Developers Guide.odt
31/07/2026  11:55    <DIR>          lib
23/07/2026  18:40             3,629 messages_en_GB.properties
26/10/2025  15:39               143 run.bat
26/03/2026  17:06                47 run.sh
30/07/2026  10:44    <DIR>          sample
               6 File(s)        164,817 bytes
               4 Dir(s)  61,167,718,400 bytes free

C:\Users\chrisf\Documents\1984>run

C:\Users\chrisf\Documents\1984>echo off
**** Welcome to 1984: Eyes of the State ****

You are in the living room of your flat.

There is a sofa, a desk and the ubiquitous telescreen. The flat on the whole is dilapidated but not dirty or untidy.

Exits are:
NORTH to the hallway outside your flat.
SOUTH to the kitchen in your flat.

You can see: THE TELESCREEN
You can see: THE DESK

What next?

Ah, there’s a bug in the bash script:
It should simply be
java -cp “./lib/*” org.happysoft.games.Main

not *.jar

I’ll upload a new version immediately.

OK, I still can’t post links but please check tag v0.14 in the repo above - the run.sh should be fine now.

Note you need a relative new JRE or JVM installed as well.

Yes, I did get that output. The game was running. My capslock button is disabled, so I couldn’t undo it. Only reboot, which is annoying. How about not forcing caps?

Yeah I can do that. I didn’t think about that to be honest, it’s pretty unusual.

OK tag v0.14_1 disables auto caps.
I’d need to make this configurable or even add a command to turn it off or something (SWITCH OFF CAPS?) - since most of the time it’s quite a nice thing to have. I feel it adds to the old style adventure game feel.
But yes, I guess it would be annoying if you can’t use your caps key!

Can you force the input to display as upper case without relying on caps lock?

1 Like