Yet another noob with a plan (and looking for a game engine)

Hmm… I thought at first that GAGS would be a suitable level at which to start, but the specification is rather wordy, and although it allows a variety of action consequences called SPECIAL, it is not as well structured as its successor AGT, which, in turn, is rather more powerful than you would need.

Indeed, both GAGS and AGT are constructed within the framework of the world of the need to compile and play in very restricted RAM - 384K for the AGT Masters Edition and much less for GAGS - with 720Mb floppies. This means defining the game at a much lower level than Inform 7, which itself, in the various Inform developments up to Inform 6, was originally more taxing on the programmer than Inform 7, which actually a front-end on Inform 6.

So perhaps a very restricted subset of Inform 7 would be appropriate as the target programming language, with the meta-language it produces being implemented in SIML. I don’t know how practical that is.

I think it is too early to be writing a game compiler. In order to develop something like that, one needs a good understanding of what one is compiling. If the goal was to write the next Inform, then the task at had would be to study a bunch of Inform source and see how to implement it and improve it. But I’m simply not aware of much source code out there for conversational games like this. I have found a couple of things, but not much (open for suggestions).

I did look at Alabaster for example, but that is a bit of a twist in that it is the game I want to write, but in a form and using an engine I don’t. And of course, no derivatives… otherwise a reboot might be a an incredible learning experience. Many of the concepts are very similar. SIML dialogs/contexts translate perfectly into Scenes and Topics. But the meat of the story is often buried in the source under Inform and the extensions. (I’m not knocking either - Inform is a great engine for a different purpose, and so major extensions.) I think I’m looking for a way to write that story, and not lose the story in the source code. The result is excellent, but from the outside, the effort appears to be massive, beyond the story itself.

So while I’m still working on the core infrastructure, I want to play with how the story (the generic conversational story) should be written.


I guess I was getting ahead of myself - always the implementer, never the systems analyst…

So I read into this and previous posts that your ideal game is ARG-like, where the player really is and remains the player, not the player character.

The game contains one or more non-player characters, someone texting the player from the other end of the line with a problem they want you to help with, for example. It’s not like they’re your puppet executing or attempting to execute commands, which is how all my games have been, but a person or other entity with their own opinions and narrative. The player’s moves are more suggestions or discussion items, rather than commands. Alabaster seems really a little like that.

Nevertheless, the game has to have some sort of compelling story arc or arcs, otherwise it turns into a sort of Eliza. It’s up to the player to participate in the story, using real-world and artificially-created web resources if necessary, but the moves and responses are strictly confined to text messaging.

Am I on the right lines?

Yes you’re on the right track. Eliza is “player” driven and of course the joke of Eliza is that she gives you nothing. That was an exercise in twisting sentence structure. (I had that assignment in school - write Eliza in “lisp”.) There absolutely needs to be some compelling (the minute you say “absolutely” counter examples start churning, but I’m going with it for now) issue(s) afoot. Most of the ideas I’ve had have the human arriving very late - at crisis time. There is something about to happen, someone in trouble, something that just happened. They vary some in initial intensity, but very early on something needs to sweep the character along, and the human with them. This could occur with a character and NPC in partnership or in conflict.

At the moment I don’t have a good mechanism to handle multiple NPC’s in a “group chat”. But I could certainly manage serial encounters with different NPC’s. I have thought a bit about “separate games” running on different transports (in this case email addresses) that talk to the same player. This is nowhere fleshed out. So for now it is one NPC or serial NPCs. For initial games I think it would be better to stick to one NPC.

Alabaster was neat as a conversational game, but it was somewhat passive. The plot and topics leaked out in conversation which was excellent, but I found that I was primarily driven by “topics” command and of course what the game said for me. instead one might receive a text message from someone who apparently just had a single car accident. As the conversation unfolds you learn… They’re on a deserted road and no one has come by for a while. Their phone is messed up (cracked screen and such) and you’re the only person they’ve been able to reach. Their head hurts, which probably explains their amnesia. And as you work them through searching the car for clues, either you suggest (or the NPC steers the conversation if you don’t) to look in the trunk, where you guessed it they find a bloody shovel and blanket (or the more obvious body). The idea is to introduce a mystery to be solved, locking out standard forms of gaining assistance, and hopefully grabbing the player’s attention. In this scenario the NPC isn’t a puppet, but might be puppet-ish with amnesia and a concussion. As time goes on though that would probably change.

So writing this (even this quick intro) would mean handling the specifics of the safety/car/amnesia stuff, but also a lot of basic intro stuff (who are you, why call me, etc.) that would mean that the above intro and all the other stuff that goes along with waking up in a car accident might likely be quite a bit of conversation.

I think the idea of “dual driving” will be interesting to work with. By that I mean I want the story to drive events, compelling the player as much as the NPC, but in the end there will be a number of story points that need to be dealt with and if the human doesn’t take things there, then the NPC might be able to (think the movie The Game). So if the human suggests leaving the car and going for help before the trunk has been searched, the NPC must hint or just plain get explicit. In some situations, maybe not and there is just a missed clue, but for some major story points I’d expect to have to cover that with the NPC.

One of my son’s was commenting on a book he just read for school. He said it was very disappointing because the main character (NPC) made almost no decisions that effected the outcome. So the NPC probably should be active (or at least appear to be).

By ARG-ish, I mean two things:
-The player remains the player (not assuming another character in-game) so there is not transition in and out of the game. It’s always on.
-There could be real-world research etc. that could add to the realism. An example is finding some transit schedule, or using clues about real actual weather (I would reach out to a weather site and grab the live info for some place on the planet) to help locate the NPC.

gotta run…

The crashed car with the body in the trunk is a beauty…

Some other scenarios, then:
A solo climber (principal NPC) has fallen to an isolated ledge. Broken leg. Cellphone screen cracked and mic smashed, gps doesn’t appear to be working. All she can do is text the last number dialled (the player’s) and receive about 20 characters at a time on the bit of the screen that still works (she can send more characters by typing blind). Another NPC is the mountain rescue team for her location, but she needs to identify where she is by (real-world) landmarks she can see and sun/moon direction, visible landmarks, so that the player can call the mountain rescue team to the scene. Battery fading. Player must attempt to pinpoint her location.

Similar scenario. Principal NPC has swum ashore from a shipwrecked yacht onto an uninhabited rocky island. His phone is in a similar condition to the above. The rock is one of hundreds in the approximate area they were sailing. Game writer will find that there are hundreds of such archipelagoes, easily identified on Google Maps - for example 59.5012307,18.782413. He attempts to signal passing boats but if they see him at all, they just wave back. There’s some difficulty about food and water on the island, and there’s a rather dangerous character who has also swum ashore, and who grabs the phone off him from time to time, and makes inchoate texts. Using local ferry schedules and airline take-offs from a nearby airport (both of which he can see), plus features on nearby inhabited islands, player has to pinpoint the NPC for the rescue services.