The adventures of Stannis, Roj, Kerr, Olag and Restal

development and releases of new/rewritten text adventures
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

My challenge for 2021 is to develop a text adventure based around independent characters who will interact with you and each other. The environment I've chosen for this is the Blake's 7 universe. I'm hoping to write a series of vignettes based on individual or multiple episodes of the series. The first will be:
Blake's 7 - Episode 1 - Liberation
Framed for a crime he didn't commit, Roj Blake is sentenced to life on the penal colony Cygnus Alpha by the corrupt earth government known as the Administration. En-route, his prison ship encounters a seemingly deserted alien craft of unknown origin and far superior technology. After the boarding crew suffer an unknown fate, Blakes and two other prisoners volunteer to investigate in an attempt to secure the ship for the Administration in return for a full pardon. However, suspicious of his intentions, Commander Raiker follows Blake through the transfer tube onto the alien vessel... Below is a mockup screen of the flight deck although the game itself will start in the airlock with Raiker bearing down on you blasting away.
B7 Start.jpg
NPC abilities:

1. To explore freely the game environment - check
2. Each NPC to have a personal inventory limited by qty or weight - check
3. NPCs to pick up objects they're interested in and ignore those that they're not - check
4. NPCs to interact with each other and depending on their personalities they will either fight a foe in the same room or flee from them.
5. Combat - NPCs will be able to inflict a damage level on their opponent depending on the weapon carried.
6. Health - NPCs will have a maximum health which is either depleted by combat or increased by time or by utilising the Liberator's medi-bay.
7. NPCs to accept objects from you if they want to or decline if they don't (GIVE OBJECT TO NPC).
8. NPCs to give you objects on request if they like you (ASK NPC FOR OBJECT).
9. NPCs to have individual motivations which they will pursue during the game (part of the plot).
10. NPCs to follow you on request (should they so desire).
11. If they die, the objects carried by the NPC to be left in the room.

I'll be looking at the Hobbit and Level 9's later adventures to see what other NPC actions they've managed to include. If anyone has any thoughts and suggestions I'd be more than happy to add them to the list.
User avatar
Lardo Boffin
Posts: 2977
Joined: Thu Aug 06, 2015 7:47 am
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by Lardo Boffin »

Sounds good. Which beeb are you targeting? Sounds like a lot of code and data!
Adventure Language on GitHub
Atom, issue 5, YARRB + video noise killer
Elk
A number of econetted (is that a word?) Beebs
BBC Master, Datacentre + HDD, pi co-proc, econet, NULA
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

Hi Lardo. An original BBC with 32k of memory - no sideways ram for this project! I doubt I'll have memory issues as I'm compressing the text. I already have 50 locations, 30 portable objects and 20 non-portables included and there's plenty of room left so it's all systems go. Writing it in assembly language will also mean a lot more space than if it was in BASIC.
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

I'm working on the same concept... well thinking about it anyhow! The bit I'm struggling with is how to model their motivations. I want mine to carry out any commands the player can, anywhere in the game universe... but how do you get them to select an action that takes them a step towards a goal, rather than just reacting to whatever's in the room? I think you may need to score each possible move for each NPC, a bit like chess.

The Hobbit is a great example, it really brought the game to life even though it was a bit buggy - if you're not quick essential NPCs can kill each other before you get there! Other text adventures feel lifeless to me, in comparison. It's a shame they didn't develop it further. I swapped emails with Veronika Megler recently, she's very happy people still enjoy the game.

I found a Beeb disk image of the Hobbit just before Christmas with all the pictures working and enjoyed playing it again. It's an iconic game; I was disappointed not to see it mentioned in Acorn AWIP (or any Level 9 games). One thing missing on your list OP is the ability to give NPCs instructions, it was key to solving the Hobbit.
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

Hi ash73, you've raised a very good point about The Hobbit, although I haven't played it for over 30 years I do recall the novelty and fun to be had in communicating with other game characters such as Thorin who frustratingly sometimes did what you asked and other times didn't (very much like real human beings). If memory serves me correctly I had great difficulty with a barrel puzzle which I believe involved asking a character to help you - I strongly suspected it was buggy although it was probably just Thorin being awkward.
The way my current command line interpreter (CLI) works (used in LAND and MIST) is to simply understand single word commands eg NORTH, verb, noun commands such as GET LAMP or verb, noun1, noun2 commands such as THROW SWORD IN LAKE. This worked fine for those games but for my new project it looks as though I'll have to develop a much more sophisticated CLI, perhaps along the lines of The Hobbit's Inglish (I've just downloaded a copy of A Guide to Playing the Hobbit where it's mentioned for further research). Do you know how sophisticated Inglish was? For example, can you ask a character to do anything that you yourself can do or is it limited to certain commands such as GET, DROP, GIVE, OPEN, CLOSE (what would happen if you typed ASK THORIN TO HELP? or ASK THORIN TO ASK BILBO TO DROP KEY?) Also, are there multiple nouns with different adjectives such as a red door and a green door or a wooden key and a brass key that the CLI has to be able to distinguish between? Thinking about it, it's a good job I'm setting aside the whole of 2021 for this project...
User avatar
Lardo Boffin
Posts: 2977
Joined: Thu Aug 06, 2015 7:47 am
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by Lardo Boffin »

My adventure language process accepts

Verb
Adverb
Noun 1
Noun 2

and effectively tokenises the statement to allow logic such as

IF V%=5 AND N1%=2 AND N2%=10 AND R%=10 THEN ...

It also supports AND and IT so you can TAKE LAMP AND LIGHT IT.

This all allows for seemingly complex statements such as SHOOT THE WEREWOLF WITH THE SILVER BULLET.
Unrecognised words are ignored. It also allows for differentiating between red and green doors or brass and gold keys etc.

I don’t have NPC interactions yet but it is on the to do list. I have got as far as making locked doors / blocked exits applicable to the NPCs as well as player by having a ‘passable’ flag for each location / direction combo. Nothing worse than locking a door and the troll who is following you steps through it...
Adventure Language on GitHub
Atom, issue 5, YARRB + video noise killer
Elk
A number of econetted (is that a word?) Beebs
BBC Master, Datacentre + HDD, pi co-proc, econet, NULA
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

Hi, following on from Lardo's process description, mine will obviously depend on how sophisticated I want the CLI to be (at the moment I'm being very ambitious). I'd hope to include the following word types and I'll create a table for each for lookup:

v = verb: v1, v2, v3 etc (GET, DROP)
n = noun: n1, n2, n3 etc (LAMP, AXE)
a = adjective: a1, a2, a3 etc (BLUE, GOLD)
av = adverb: av1, av2, av3 etc (QUIETLY, QUICKLY)
ar = article: ar1, ar2, ar3 etc (THE, AN)
p = proposition: p1, p2, p3 etc (TO, ON, UNDER)

What appears crucial is that first word (verb). I can then investigate whether there is a simple pattern followed for each (it may be that articles and prepositions can be recognised but ultimately ignored - unrecognised ones could be flagged up in the response):

GIVE THE BRASS KEY TO THORIN
v1, ar1, a1, n1, p1, n2 - reduces to v1, a1, n1, n2

ASK THORIN TO QUICKLY DROP THE BRASS KEY
v1, n1, p1, av1, v2, ar1, a1, n2 - reduces to v1, n1, v2, a1, n2

Also possibly adjective+noun (a1,n1) could be shortened to n1, eg I have a red box and a blue box, there is no box noun but the red box is noun 6 and the blue box is noun 7. If GET GREEN BOX is entered then the response is "I can't see that here."
TAKE THE RED BOX will take the red box in the location only, DROP THE RED BOX will drop the red box in possession only. TAKE THE BOX will take any box which is in the location whether it is red or blue.
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

The Hobbit code is in two halfs, a parser and a game engine, written by two different people. The parser converts natural language into tokenised commands as described above, so complex sentences are boiled down into simple constituents, then the game engine deals with NPCs and injects commands for them, based on their attributes. You can say to NPC do x, y, z and they can be any standard inputs. So you can for example, give Gandalf a long list of instructions and he will carry them out. I remember a mate of mine trying to get him to play out the entire game while Bilbo stayed at home!

It keeps track of everything that's happening in the world, not just at your location. Everything gets a turn, and it doesn't wait for the player either, if you don't input anything for a while the player automatically waits and the NPCs do something. Apparently they had problems with all the NPCs meeting up and killing each other off before the player got there! It can still happen to one particular character if you don't hurry. You often meet NPCs that have been captured by other NPCs in the dungeon, too.

The other great thing about the Hobbit is everything is in a data structure, so what you can do is limited by physics rather than scenarios coded into the game. Literally everything is an object with a size, weight, strength, etc, so you can pick people up and carry them around, or even use them as weapons!

I'm trying a similar approach, with an object data structure broken down into rooms, items and persons, the latter having personality factors such as complicity, allegience, mobility, objectives etc... but it's the objectives I'm struggling with. For example if their objective is to get to a certain place or obtain a certain item, how do you get them to choose actions that take them a step towards it? You could limit the verbs and nouns they can choose, so they focus on what's relevant, and score each action. But you have to add randomness so they don't just carry out the same sequence every time.

The parser is relatively easy, I wrote a half decent one when I was a kid. The lesson I learned is the most frustrating thing about text adventures is finding the right word when you know what you want to do... so in future I'm going to simplify that as much as possible.
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

ash73 wrote:
if their objective is to get to a certain place or obtain a certain item, how do you get them to choose actions that take them a step towards it?
Regarding motives I think you'd have to define what each individual's character traits are before then deciding how to program them.
For instance, take Vila from Blake's 7 as an example. He's physically weak, cowardly, quick-witted and an expert lock-smith which presumably means he covets objects of value or maybe he just likes the intellectual challenge of beating the system. Therefore, in the game I'd ensure that if he comes across someone he's fearful of he'll leave the room. He'll also attempt to unlock any doors or safes he comes across and he'll take anything of curiosity, value or to help his self-preservation. So heavy weapons such as large axes are out but he'd probably grab a dagger. He'll explore the Liberator, eventually finding the "treasure room" (yes there was one), helping himself to any valuables he can carry and then he'll probably find a crew room to lie low in. But will I let him find the treasure room and crew quarters by chance or will I give him a data-table of nudges whereby if he's in a certain room I force him in a certain direction so he progresses randomly but inevitably to the treasure room first and then his quarters second? Or do I make it more realistic and log which rooms he's visited and he'll continually seek out new rooms until he eventually comes across the treasure room? So I guess there are ways and means to program the motive just by breaking it down and coding it appropriately. Unfortunately, this will probably entail a lot of coding and data-tables... Fascinating stuff though. Looking at Inglish (although without actually playing The Hobbit yet) it looks like a phonemenal piece of programming, presumably without parallel at the time?

Incidentally, flicking through some old Micro Users, I found an article by Alice on The Hobbit (June 1984 pp 61-62) which is well worth a read.
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

I think the Magnetic Scrolls parser was probably best, the oft-quoted example being "pot the pot plant in the plant pot". Examine me reveals all about the pot reference :)

Well worth playing the Hobbit again, it was just so much fun. They went a bit far with the randomness but I think it adds to the experience. I spent ages getting all the people and items in place ready to kill the dragon, then at the crucial moment I tell a certain NPC to shoot the dragon... and he says "no", and we all get engulfed in flames, lol! The sequence of commands to escape the dungeon is just brilliant, with everything that can go wrong.

I do like your Blake's 7 theme, one of my favourite programmes. Looking forward to playing it.
User avatar
Lardo Boffin
Posts: 2977
Joined: Thu Aug 06, 2015 7:47 am
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by Lardo Boffin »

ash73 wrote: Sun Jan 03, 2021 3:07 pm
The parser is relatively easy, I wrote a half decent one when I was a kid. The lesson I learned is the most frustrating thing about text adventures is finding the right word when you know what you want to do... so in future I'm going to simplify that as much as possible.
I have a synonym system - words in a list have an ID number to which they are tokenised so you might have:

TAKE 1
GET 1
DROP 2
CLIMB 3
UP 3
etc.

Take lamp and Get lamp both end up with a V% of 1.
Adventure Language on GitHub
Atom, issue 5, YARRB + video noise killer
Elk
A number of econetted (is that a word?) Beebs
BBC Master, Datacentre + HDD, pi co-proc, econet, NULA
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

Lardo Boffin wrote: Sun Jan 03, 2021 6:36 pm
ash73 wrote: Sun Jan 03, 2021 3:07 pm
The parser is relatively easy, I wrote a half decent one when I was a kid. The lesson I learned is the most frustrating thing about text adventures is finding the right word when you know what you want to do... so in future I'm going to simplify that as much as possible.
I have a synonym system - words in a list have an ID number to which they are tokenised so you might have:

TAKE 1
GET 1
DROP 2
CLIMB 3
UP 3
etc.

Take lamp and Get lamp both end up with a V% of 1.
I mean things like examine rug and look under rug (there's always a key!) giving different responses, why should they? And why do you have to unlock door, open door, go through door... if you've got the key just add it to the list of valid exits. I think stuff like that really puts people off.

There's a good example in the Hobbit when you're standing next to the river bank - if you type look, search, examine river... nothing, but if you type look across river suddenly you notice a boat on the other side. As if you wouldn't notice it otherwise!

Another one in Snowball, when you access the computer you have to wear a visor and look at each option and blink, how are you meant to guess that? And of course your character would already know. Even better one of the options you can blink on is how to use the visor.

I think it's better to have simple instructions. In that example you could just say use computer and if you don't have the visor you get a negative and if you do it describes the process and asks which option.
User avatar
Lardo Boffin
Posts: 2977
Joined: Thu Aug 06, 2015 7:47 am
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by Lardo Boffin »

Agreed! Some of the weird things you are expected to guess and syntax you are expected to use can be really irritating. Trying to give a computer commands in Hitch Hikers Guide to the Galaxy (Tatung version, not sure about others) drove me up the wall.

Strictly speaking you could examine a rug without picking it up and therefore not look underneath it to know there is a key there but it should at least say ‘you see a bulge’ or similar. But then it all takes up space in RAM.
Adventure Language on GitHub
Atom, issue 5, YARRB + video noise killer
Elk
A number of econetted (is that a word?) Beebs
BBC Master, Datacentre + HDD, pi co-proc, econet, NULA
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

I think the B7 project is now developing along the following lines (and getting bigger and more complicated all the time of course):
- Improved CLI / Parser with The Hobbit's Inglish being the goal
- Game plot to include greater role for NPCs rather than just a single-player game along the lines of find the treasure and bring it all back to the brick building to win i.e. the NPCs will be semi-autonomous - see below
- NPCs to be developed to include individual motives - further discussions required on what constitutes motives and how to program them. It would be nice at some point to call them Intelligent Agents rather than Non Playing Characters.

My first idea for motives is to look at NPC movements. Imagine the three of you have arrived in the Liberator's airlock and have disposed of Commander Raiker. One of you could be the scout who will set off and map the entire spaceship bringing back anything of interest (ignoring for the moment any potential hostiles). This sounds like it could be a useful routine. I'll have a go at programming it - it'll be interesting to see how long it takes the character to perform it (the Liberator currently has 42 locations).
User avatar
Lardo Boffin
Posts: 2977
Joined: Thu Aug 06, 2015 7:47 am
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by Lardo Boffin »

Good luck with the IA motivations! To quote Hitch Hikers...

A robot was programmed to believe that it liked herring sandwiches. This was actually the most difficult part of the whole experiment. Once the robot had been programmed to believe that it liked herring sandwiches, a herring sandwich was placed in front of it. Whereupon the robot thought to itself, "Ah! A herring sandwich! I like herring sandwiches."
Adventure Language on GitHub
Atom, issue 5, YARRB + video noise killer
Elk
A number of econetted (is that a word?) Beebs
BBC Master, Datacentre + HDD, pi co-proc, econet, NULA
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

Very good Lardo! Every adventure game should have a herring in, at least one red one anyway.
I've managed to program Avon going on a scouting mission through the Liberator's 42 locations. I used my map to plan how I'd program him finding his way around until he'd visited every location and it wasn't anywhere near as straightforward as I first imagined. If you've got some spare minutes and a pen and paper to hand have a go at drawing an adventure map with say 30 to 40 locations and then work out a process of how an NPC starting somewhere at random could visit every location without access to a map (just like in real-life).
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

Going O/T but as it's an interesting discussion about text adventures and whatnot...

I've been playing Strand Games remastered Magnetic Scrolls games, they're really good.

https://strandgames.com/

I started with Jinxter, probably my favourite from the series. They've added new high quality pictures, ambient sounds, and a gui to make things easier. One very nice feature is a map that builds up as you play the game, you can click on any room and your player will find their way there. They've programmed a way to navigate the map as you can watch the instructions being entered. It also flags where you dropped items so you can find them again. No more scribbling maps on bits of paper!

I think it's a couple of the original developers, great to see they're still enthusiastic about the games.
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

fuzzel wrote: Mon Jan 04, 2021 6:54 pm I think the B7 project is now developing along the following lines (and getting bigger and more complicated all the time of course):
- Improved CLI / Parser with The Hobbit's Inglish being the goal
- Game plot to include greater role for NPCs rather than just a single-player game along the lines of find the treasure and bring it all back to the brick building to win i.e. the NPCs will be semi-autonomous - see below
- NPCs to be developed to include individual motives - further discussions required on what constitutes motives and how to program them. It would be nice at some point to call them Intelligent Agents rather than Non Playing Characters.

My first idea for motives is to look at NPC movements. Imagine the three of you have arrived in the Liberator's airlock and have disposed of Commander Raiker. One of you could be the scout who will set off and map the entire spaceship bringing back anything of interest (ignoring for the moment any potential hostiles). This sounds like it could be a useful routine. I'll have a go at programming it - it'll be interesting to see how long it takes the character to perform it (the Liberator currently has 42 locations).
The thing that made them value-add in the Hobbit was their special skills, you couldn't finish the game without them... and keeping them alive was like sheparding a group of toddlers around a supermarket! I think you're on the right track with Villa picking locks and so on, so you need him to be (a) alive and (b) in the right place at the right time, but you don't want him racing round unlocking everything straight away.

On the parser front, the things I find useful are lists and pronouns, e.g. (a) take all, put all except sword in bag, (b) examine ring and wear it. The structure is quite simple, but it helps the player get the job done with less typing. I'd suggest focus on this rather than obscure and complex sentence structures.
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

fuzzel wrote: Tue Jan 05, 2021 7:12 pm I've managed to program Avon going on a scouting mission through the Liberator's 42 locations. I used my map to plan how I'd program him finding his way around until he'd visited every location and it wasn't anywhere near as straightforward as I first imagined. If you've got some spare minutes and a pen and paper to hand have a go at drawing an adventure map with say 30 to 40 locations and then work out a process of how an NPC starting somewhere at random could visit every location without access to a map (just like in real-life).
You could implement a route finding algorithm, where you can enter 'NPC, go to <room>' and the character makes its way there. Very powerful convenience function for the player, and for giving NPC instructions. Maybe even encoding their objectives, if you could set it as a low priority task so they do other stuff as well. A scouting mission would just require setting a destination and they'd visit every location en-route (but not every location).

The same function would enable the player to go to any room they've been to before with a single command, while NPCs still get a turn for each move you make, or you could use it to do stuff like 'find object' to retrace your steps.

To calculate a route you could start at the target and score every location one move away as 1, then every location one move from those locations as 2, and continue until you hit the NPC location, then the NPC selects moves that reduce the number until they reach the target. But you'd want to randomise it a bit too. And it would have to be interruptable (if the player is in contact with them).

Actually comms chatter could be interesting with your theme, you could keep in touch with NPCs with those bracelets and find out what they're up to.

The routing algorithm in the games I mentioned above is quite smart, if there's an obstacle in the way it takes you as far as it can and stops, rather than failing completely, which is a step further than my brain can think!

This sort of stuff is often more interesting than the end product, to me. Don't worry if there's only a few bytes left for the game!
catventure
Posts: 15
Joined: Thu Jan 21, 2016 4:26 pm
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by catventure »

Good luck.
Some of the stuff you are doing is great!
In my Windows creator I made it so I could have characters that could be static, move randomly, follow a move path or pattern or follow the player.
This youtube video, although a little old, shows some possible interactions..
https://www.youtube.com/watch?v=XSoFmT5cYVI

catventure.
Author of "TAB".
An offline, downloadable, parser based, retro text adventure/interactive fiction maker for Windows XP and above (32;64bit)
Similar to popular 80's creators like QUILL, PAW, STAC or GAC.
Visit http://tab.thinbasic.com
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

ash73 wrote:
I've been playing Strand Games remastered Magnetic Scrolls games, they're really good.
I've just had a look at their website and I'm seriously impressed. I had access to The Pawn and Guild of Thieves as a kid (my brother had the Commodore 64) and I borrowed the discs but the protection system where you had to have a copy of the novella and answer questions about which word was on which page etc stopped me in my prime. At £1.50 per game (plus VAT) they're extremely good value, especially with the add-ons you get like the map. I'll add them to my list of must-haves (now all I need to do is find the time).
ash73 wrote:
The thing that made them value-add in the Hobbit was their special skills, you couldn't finish the game without
them
That's an excellent point, I'll ensure that each character's skills are used to the full but only when requested. There's not much fun in booting up, sitting back in one of the Liberator's comfy chairs and letting everyone get on with it. So Vila's lock-picking, Avon's computer-wizardry, Jenna's piloting skills and Gan's strength will all get a look in (from memory I'm slightly confused about Gan - he had a limiter in his skull which prevented him getting violent but I'm sure he got in a few fights - I'll have to watch the first series again). Not sure how to include Cally's telepathy... It fits quite nicely that as Blake you're the boss, though good luck getting Avon to go along with it...
ash73 wrote:
On the parser front, the things I find useful are lists and pronouns
I agree, GET EVERYTHING OR GET ALL is very useful (provided there isn't an allosaurus) and IT shouldn't be too hard to incorporate. The one complicated command is ASK which involves having a much longer sentence than most other commands. Zen is a particular problem for me, do you input ASK ZEN and are then given a selection of choices eg:
1. Plot course to Cygnus Alpha
2. Open airlock
etc
or do I expect Blake (you) to work out what to ask him? I'll have to ponder this one...
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

ash73 wrote:
To calculate a route you could start at the target and score every location one move away as 1, then every location
one move from those locations as 2, and continue until you hit the NPC location, then the NPC selects moves that
reduce the number until they reach the target. But you'd want to randomise it a bit too. And it would have to be
interruptable (if the player is in contact with them).
This is an interesting way of calculating a route but I'm not sure how quickly a BBC would be able to work out a solution. Suppose you and the object are 8 locations away from each other. There could be an average of 3 exits from each location. This would mean the number of possible exits calculated would increase at an alarming rate:
0 locations away: 3 exits
1 locations away: 9 exits
2 locations away: 27 exits
3 locations away: 81 exits
4 locations away: 243 exits
5 locations away: 729 exits
6 locations away: 2187 exits
7 locations away: 6561 exits
8 locations away: 19683 exits
So if you're 8 locations away from each other, the program would have to search through a maximum of 19683 possible exits until
it found the target location and then have to work its way back (unless my assumptions above are incorrect). I'm trying to think of an alternative method where there's an imperceptible delay, although there'll be an inevitable trade-off between speed and finding the shortest route.
User avatar
Lardo Boffin
Posts: 2977
Joined: Thu Aug 06, 2015 7:47 am
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by Lardo Boffin »

Each of my locations has a byte for flags. These are used to determine light / dark, under water and out in space etc. Each direction from a location also has a set of flags (door locked etc.)

You could do similar and have a direction flag per NPC. When determining a move you could have a random value and then check the flags and add a weighted value when set. You then move in the direction with the highest value.

They will get there eventually!

If you have less than 9 NPCs thats only 1 extra byte per direction.
Adventure Language on GitHub
Atom, issue 5, YARRB + video noise killer
Elk
A number of econetted (is that a word?) Beebs
BBC Master, Datacentre + HDD, pi co-proc, econet, NULA
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

What my current FIND procedure does to get you from your location to an object's location is the following:
Each location has an extra direction (in addition to N,S,E,W etc) which we'll call map-centre, so if you type CENTRE you''ll move one step closer to the central location. So my program will plot a route from you to the central location in terms of location numbers eg 22,25,41,1 where 22 is your location and 1 is the central location. It then does the same thing for the object eg 14,39,38,42,1 where 14 is the object's location and 1 is the central location. It then combines the two so would end up with the route to the object as 22,25,41,1,42,38,39,14. An improvement on this was, instead of always going to the object via the central location, the program searches each route and when it finds a location in common it uses that as the joining point, so for example, your route might be 14,39,38,42,1 and the object's might be 34,37,38,42,1 so the combined route would now be 14,39,38,37,34. This seemed to work ok but the problem is that you can have a situation where you're in the next location to the object but if the shortest routes calculated take you and the object in different directions to the centre, say you're both going around the outside of a polygon, then you'd go the long way round.
So maybe the best solution is a combination of ash73's and mine - first I check using his method if you're within two or three locations and if so use that method, if you're more than two away use my method. And keep recalculating each move (bearing in mind both of you might be on the move).
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

fuzzel wrote: Fri Jan 08, 2021 7:09 pm
ash73 wrote:
I've been playing Strand Games remastered Magnetic Scrolls games, they're really good.
I've just had a look at their website and I'm seriously impressed. I had access to The Pawn and Guild of Thieves as a kid (my brother had the Commodore 64) and I borrowed the discs but the protection system where you had to have a copy of the novella and answer questions about which word was on which page etc stopped me in my prime. At £1.50 per game (plus VAT) they're extremely good value, especially with the add-ons you get like the map. I'll add them to my list of must-haves (now all I need to do is find the time).
I've spent ages playing all three this week, Jinxter is my favourite, some of the new pictures are stunning and the puzzles are ingenious. I would have paid more for Jinxter if I realised how much work they put into it.

Guild is very good, but suffers slightly from a lack of interesting NPCs, exactly what we've been talking about here. It feels odd wandering about a huge castle and grounds without really meeting anyone.

Pawn is actually quite a poor game, despite being iconic. Lots of illogical puzzles and the parser is very fussy you have to pluck some ridiculous sentences out of thin air. Still enjoy it though, meeting the devil is quite creepy.

Just for a bit of contrast, this is well worth a quick play:

http://williame.github.io/ludum_dare_23 ... ost_compo/

A couple of guys wrote it for a competition in under a week, all in javascript! Very simple text entry and minimal descriptions, it even tells you what commands you can use at each location. The whole thing is based around a graphical map which gets revealed a section at a time as you play.
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

fuzzel wrote: Sat Jan 09, 2021 12:18 pm
ash73 wrote:
To calculate a route you could start at the target and score every location one move away as 1, then every location
one move from those locations as 2, and continue until you hit the NPC location, then the NPC selects moves that
reduce the number until they reach the target. But you'd want to randomise it a bit too. And it would have to be
interruptable (if the player is in contact with them).
This is an interesting way of calculating a route but I'm not sure how quickly a BBC would be able to work out a solution. Suppose you and the object are 8 locations away from each other. There could be an average of 3 exits from each location. This would mean the number of possible exits calculated would increase at an alarming rate:
0 locations away: 3 exits
1 locations away: 9 exits
2 locations away: 27 exits
3 locations away: 81 exits
4 locations away: 243 exits
5 locations away: 729 exits
6 locations away: 2187 exits
7 locations away: 6561 exits
8 locations away: 19683 exits
So if you're 8 locations away from each other, the program would have to search through a maximum of 19683 possible exits until
it found the target location and then have to work its way back (unless my assumptions above are incorrect). I'm trying to think of an alternative method where there's an imperceptible delay, although there'll be an inevitable trade-off between speed and finding the shortest route.
Time to dust off the assembler! I'll do some experimenting if I get chance. You're probably right, though.

I'm getting lazy with all the data manipulation in python :)
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by ash73 »

Got a prototype route finder working, it is quite slow in BASIC but I'm chuffed it works it's quite fun to watch. It generates a procedural map, most rooms have 3-4 exits. Red lines are walls.

I need to swap it round to search from player to target, I realised afterwards some exits might be one-way only.

I also discovered BBC BASIC doesn't like recursive functions, so I had to use a simple queue instead.
Attachments
MAP.ssd
(17.5 KiB) Downloaded 35 times
satnav.png
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

Excellent work, ash73. I like your graphical representation and doing it in Basic first probably helped you to debug it along the way. I jumped straight in yesterday developing the hybrid approach of your technique for up to two locations away then mine if it didn't find the object. However, although it's fast I'm not happy with some of the results. Whilst I was scrutinising your graphic this morning I suddenly thought of a much better way of doing it (than mine, not yours!) so I'll have a go at that over the next few days. It's never easy to scrap something you've spent hours developing but I'll soon forget about it if the new version works as well as I hope. It'll be interesting to compare results (speed-test?) if I get mine working (we'll need identical maps of course).
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

I've just finished writing the code. I've reserved memory area &7600-&762A for the "moves away" from the start location number for each location So &7601 is for location 1 up to &762A for location 42. For my convenience &FF is put in your current location rather than 0 as all memory areas start with a zero value. Running it takes less than a second and it correctly identifies location 13 as the furthest away at 8 moves. See below. Finally, I just need to plot the route from start to finish using the data which is relatively straightforward. Your grid knocks the spots off mine btw!

B7 FIND grid 42 locations.jpg
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: The adventures of Stannis, Roj, Kerr, Olag and Restal

Post by fuzzel »

Just in case you want to compare directly with my version, here's a copy of the map I'm using. You'll notice I've used 8 directions rather than 4:
B7 Locations.pdf
(233.97 KiB) Downloaded 54 times
Post Reply

Return to “new projects and releases: text and graphic adventures”