So who hasn't heard of ChatGPT by now? You live under a rock or what?
https://chat.openai.com/
It's the latest internet chatbot from the Elon Musk backed OpenAI company. It does a lot of things really well, a lot of things really poorly. It's not AGI (Artificial General Intelligence) It's not going to take over the world, all it it supposed to do is be a friendly, resourceful chatbot program.
"Hi there! My primary function is to assist with any questions you may have. I am a large language model trained by OpenAI, and I can help with a wide range of topics. Just ask me anything, and I'll do my best to help."
I've kind of been playing with it off and on the last few days, it's free to sign up, and there aren't very many limits (no explicit content, violence, spam, deception, malware) but is otherwise free to use during this beta. As is sharing generated content "Posting your own prompts / completions to social media is generally permissible". And of course I wondered if it would be able to "learn" to play Gemstone. Some things I have found are that each conversation you have with ChatGPT is unique. If you convince it to play a game, or tell you a story, if you reset the session, or log out and come back later, there is no way to "pick up where you left off" but generally, it does a pretty good job remembering details from the beginning of a session as well as ones at the end. So it doesn't really learn from me, the researchers who developed it trained it, I am kind of generating a temporary framework for it to "play" GSIV in, but it most likely wont remember the "hard fought details" like learning to NOD SPRITE instead of just NOD between sessions so that's going to be annoying.
Furthermore this is all just for fun, as is everything about GSIV (right?) I'm obviously not selling this or profiting from any of this, just sharing a story with fellow nerds about how I wasted a couple hours on my Saturday getting one computer program to talk (poorly) to another. Hope you enjoy!
I am posting both logs to pastebin, as well as attaching them here so you can use whichever suits your preference. I am including a raw log of the game session, as well as an edited log of the session where I indicate what I send to ChatGPT, and what ChatGPT sends back to me, back and forth. It's kind of brutal to read in plaintext and could really use some markup to make it more readable but I'm done editing and you get plaintext.
ChatGPT GSIV Session 1: https://pastebin.com/NF0Dy0Wf
Raw Game Session log 1: https://pastebin.com/aBBrRFfm
(How in the name of all that is internet does a text forum about a text game in 2022 have a file size limit of 19.5KB??? (See PNG attachment at bottom for a lol/facepalm) I guess you only get the PasteBins)
I thought I would give it a test and see how it did making a new name. Kind of see if it "wanted" to play I guess? It really failed the test IMO, it repeated names, failed repeated prompts to choose new or unique names, just kind of meh, so I just picked one it kind of suggested (the list of 5 came from the GSIV Character creation wizard random names thing) and moved on, it never really came up after that. Maybe I should have spent more time trying to convince it that it was this character, in this world? or understand that it controlled a virtual character in a virtual game world? I'll try some other stuff later.
Once I got in-game, It started off better than I thought, it kind of seemed to "play along" with the questions. It seemed inventive and exploratory, seemingly coming up with things it would be interested in on its own (such as "Can you teach me about magic?" or "What kind of adventures do you like to go on?" to learn more about the sprite and what it can do). It struggled with the syntax at the beginning (NOD SPRITE when it wanted to NOD at SPRITE) but then it did figure out LOOK MAN, but it got better eventually (weaponshop). I was also really struggling with not overloading it, and trying to coax it into the concept of "entering commands" when it sometimes balks at things other than conversational questions and answers type stuff. It didn't really bat an eye at Luukos, and it "researched" what was going on before making an "educated" choice. It didn't exactly piece together the "sequence" of "ok I have decided to help the woman, so from earlier I know that means typing "SAY YES" to her earlier question, but it did seem to make a decision that is what it wanted to do, and came up with some pretty plausible commands to indicate its choice. It also pretty well indicated it "understood" that it had "completed a quest" and kind of seemed to indicate an interest in moving forward.
I kind of helped it again with the syntax for the sprite, and then we had a big disagreement and misunderstanding about getting to the weaponshop. I think I made this a lot worse by not indicating clearly what its commands to the game were, and also not asking it clearly for commands it wanted to send to the game, but it also clearly did not grasp the sequential nature of the DIRECTIONS command and that it needed to follow step by step. I guess I was trying to be "impartial" and not try to explain too much to it maybe? It kept trying to generate its own version of Icemule, and pretend it was already at the weapon shop, kind of like it was trying to take over telling the story. So I fudged it and completed the navigation to the weapon shop, pasted the sequence to its input and then it kind of caught back up.
In the weaponshop, It's probably a little hard to tell from the logs but I really felt like ChatGPT did a great job here working out the totally archaic obscure GSIV syntax of buying an item from a merchant. It knew to start with ORDER, then it read the list and knew from previous response what to order so it tried ORDER WARBLADE, when I showed it that failed, it read the log and changed to ORDER ##, then it read that response and tried BUY ##, which failed, but then when I showed it the entire sequence back, it totally sussed out: ORDER, ORDER ##, BUY, done. I kind of got a little lost on whether it decided to go out or if I nudged it again, but anyway when it did, then it found the warrior and used the right syntax to hand over the warblade. This was when I started feeling really confident.
Then I tried to tighten up the preferred sequence and get it to figure out that It was supposed to generate a command only, then that I would tell it the response, it was supposed to analyze that data, and then come up with another log. It said it understood, but there were still some pretty obvious hiccups. for example it told me: "Yes, I understand. I will no longer give predictions about game responses and will only provide commands to be sent to the game. I will wait for you to tell me the response from the game before providing another command."
Again it really got stuck on the NOD vs NOD SPRITE command and I nudged it forward again, but the game did not really provide that clearly if you are "explaining like I'm 5". Also again I fudged the directions to the tavern a bit, the longer sequences really seem to lead it into story telling mode, it doesn't want to follow along step by step. It did OK with "reading the room" and following the explicit directions from the sprite to hide, listen, steal, give the paper to the councillor though. Again, it totally got lost with the directions to the temple bit, and also again tried to make up its own version of the game/story by telling me (incorrectly) how and when to HOOT. It was too slow deciding what to do next and didnt tell me to HOOT in time, so the smugglers got away but we still kind of succeeded ya know. Then it read the log and knew to go to the bank so we did. Again I helped fudge the directions a little bit. I am sure that with some more proper training or more careful prompting, it could be convinced to do this, but I didn't spend too terribly long working that part out.
I did stop it partway to the bank and it did pick up that it should give a correct direction command to follow the steps, but then I fed it some more data, and it also incorrectly read the "you are already here" bit and tried to go through a nonexistent archway to get to somewhere it already was. Then I was really impressed that it remembered from back at the temple the sprite said to DEPOSIT ALL, and it suggested that, so I did. Then it also remembered WITHDRAW 5, and said to do that next so I did. I also fudged past the part where I'm using a peasant f2p account and wasn't going to go through teaching it to repeat a command to confirm its bank account choice.
Then I tried again with the directions to the North Gate, it did poorly, and then when I fudged it there, it failed again by trying to keep going (maybe following the last DIR commands received?) when it was already there. When it told me it was at Town Center (actually was at the gate) and then moved SOUTH (away from gate) and away from its destination, I gave up for the time being. Was late for other activities and out of time.
Overall, I was pretty impressed with its level of understanding what was going on. It failed many tasks, but also passed many others. DIRECTIONS are hard, but it figured out how to buy a sword at the weapon shop. It remembered some quest goals (DEPOSIT silvers and then go to N Gate) but then had a brain fart when it got there. It couldnt figure out a name for itself, but it also didn't care. It seemed interested in the lore and determining what side to be on (good or evil) and made the obvious "not evil chatbot" decision to not help the Luukos guy.
In total, I think I spent just about 2 hours getting the dummy f2p account set up, logging, ChatGPT and WizardFE (Wizard4LYFE!) screens set up so Lich wouldn't intrude (there was some very interesting things happening with it trying to guess room numbers) and then running the test and compiling the data, editing the logs, and writing the post.
I plan to jump back in after this and try again and intend to post a followup. My first plan is to try to feed it back its entire game session log from the first session and as it what it wants to do next (char is still where it was at the end of the log). I think the biggest key is that I need to make sure to ask it each and every time what its next command is based on the data I send it. I tried very poorly to tell it "just assume what I paste is game data and if you see an open ">", give me a command. I have heard some examples on Twitter etc about people successfully setting "parameters" like that for example teaching it to play chess or emulating DOS, etc. but I obviously did not do it well/right. Other ideas include feeding it the map DB somehow and teaching it to either use go2, or at least tell me in plain words "i want to go to room ####" I feel that would be a huge step forward.
This is too much writing, I won't do it again if no one cares, so let me know what you think!