Old time text adventure powered by a LLM

Hello all!

I was interested how modern LLM’s could work as a parser for old time text adventures in the eighties like ‘Hobbit’, ‘Eureka!’ and ‘Spiderman’.

So I made this little project and deployed it to fly.io.

This is just a side project, but I would really appreciate if someone took a glance at it and provide feedback!

The URL is:

In order to play, you have to authenticate first, in the upper right corner button through Auth0. I had to add this because I am using propietary LLM (openAI o4-mini currently) and it demands guardrails for malicious prompts and things like that. Sorry about it!

Also, my apis for text and image creation may run out of juice, sorry if that happens!

1 Like

The README includes instructions for installing after cloning, but there doesn’t appear to be an URL to clone from. I tried searching on Github and nothing came up. Where’s the code?

I’m especially curious to take a look at the adventures folder, which is mentioned in the README, but I can’t find a way there from old-time-text-adventure.fly.dev.

Uh oh, I’m… not gonna login to this. When I click the “Login” button on https://old-time-text-adventure.fly.dev/ there’s a red exclamation point in the upper-right corner, and when I click it, it says:

Dev Keys

One or more of your connections are currently using Auth0 development keys and should not be used in production.

This doesn’t feel secure to me.

1 Like

Are your adventures pre written, or does the ai make them up on the fly?

Yeah, like the other user said, you definitely need to fix your Auth integration and properly integrate with the auth providers instead of pushing your dev keys to prod.

that aside, here is some feedback on the game itself.

  • You’ve perfectly captured the look of old time c64 interface, however, with that you’ve also reproduced the annoying things like poor contrast and bad readability. The blocky text, the faded colors, it’s cool, but there’s a reason no one does that anymore.
  • The pictures don’t really add anything and are often not related to what’s happening in the actual story. It reminds me of those low quality story book ai generators.
  • It would be nice to see the previous entries of the story so I can look back at what i’ve done, what other characters have done or said, etc.
  • Speaking of the story, I think there is too much text in each response: 5-6 paragraphs are a lot to read for just like one or two actions.
  • The loading times are annoying, I would stream the text responses back so it at least doesn’t feel so long, also this would help make the length of the responses not feel so tedious.
  • Honestly, the writing feels bland. I don’t know how to improve it as long as you are relying on an LLM for it. Maybe concentrate on one storyline and really flesh it out developing characters, personas, key items, settings, etc. instead of having 10+ generic scenarios.
  • Small things like, after i input a command, i need to scroll all the way back up to start reading, then i need to click into the text input box to type again. These ux things should be taken care of implicitly.
  • It is a bit frustrating that i need to phrase my inputs a certain way. I don’t want to have to type out a whole paragraph each time I want to do something. If i was doing that already, I’d just use chatgpt or grok instead of this game. It might be worth considering how you can make your system handle simple commands like “bet 20”. Maybe an input enhancer of some kind that provides context and enriches the statement to then be passed onto your main story generator?
  • The most impressive thing about this is your technical diagram. It seems you’ve put a lot of thought into the design of the system and it shows in how organized and well thought out your different layers are.
1 Like

Thanks all for your feedback!

About the interface, it was a known choice to use C64 look with it’s drawbacks. In fact, I had to spend some time to tweak the css to have the flickers, parallel lines and all that old time annoying stuff… However, I have though of adding an alternate css for normal non-c64 look, but then I was thinking that is this a good idea for the immersibility? Well, according to the feedback I think I’ll add it to the backlog. Also the other things about UI needs to be improved, I’ll work on that scrolling and focus stuff. Also, scrolling the adventure backwards should be doable at least for the current session.

I totally agree with the images that they are not very good at the moment. The problem is, that the FLUX model I use for image creation only ingests if I remember correctly something like 700 chars, and I feed the whole scene description to the prompt, and also a short prompt wrapping. This means, that almost all prompts for the FLUX are truncated and the result is disappointing. A good solution would be to use LLM to create a <700 char prompt for the image generator, but this would cause a fetch (=time & €€€) to the propietary LLM model. I think I’ll make this in future.

Another good notion is the one about streaming responses, instead of long waiting periods. However, my project architecture makes this extremely difficult, as the python backend takes care of the LLM service, then passes it to the react.js frontend. This is doable in deed, but difficult.

About the bland story and LLM’s ability produce a story; The LLM creates the story on the fly according to a prewritten synopsis, context and some policies. These are all just prompt wrappings currently as I tried some agent graphs but they did not improve the result so much and only added time and €€€. One of the ideas why I made this was trying the limits of prompt wrapping versus agents and in fact I have a sample agent setup also, but currently the repo is private and can’t be cloned. There is of course much you can do with prompt wrapping regarding the text style, length of output and such, but this does not make the LLM a good writer. Also, the LLM has trouble keeping a good pace in the games (spends time in trivial things, like lighting a fire can take three turns), following the synopsis and deciding gracefully when the end game conditions are met. If it interests someone, I could show a sample of prompt wrapping and an adventure template, but I think it would be quite off-topic for this board.

In the image generation I use a certain style for each adventure that I enforce in image creation prompt wrapping. I think I should do the same thing in the text generation, however, I think I need some tips on what kind of text would be suitable and what would improve the overall and adventure specific text quality.

Thanks also for notifying about the Auth0 issue; However, I am completely unable to reproduce it? I have tested the app in chrome, firefox and edge. Also, the dev version and prod version use totally different accounts in Auth0 and should have no visibility to each-other, so I am a bit dazzled by this.

One more thing about the README.md; The github repo is currently private and so mostly the stuff in the README is not relevant. However, I decided to mirror the README for those interested in project architecture and well, I have always trouble keeping the dox updated but at least the README is usually the most up–to-date info about the project architecture etc. Do you think I should remove it?

But thanks again for all testers, I really appreciate!

1 Like