Inspiration

In the last month or so, I read Microsoft released the old game Zork as opened source. I've been thinking about entering the Kiro contest for a bit, but I didn't have a good idea on what to enter. Also, I didn't want to completely theme other projects that I want to work on just to match the contest rules. So on Monday with only five days to go until this contest ended, I decided to transpose that open source Zork code into Python code running serverless on AWS with Amplify Gen 2 and lambda does into a text base game that still had cool visuals for each room.

What it does

The game is a visual tech base game. It's a spooky version of the old Zork game from early computing days.

How we built it

I preplanned a bit with Gemini to make sure the project was feasible. In the end I wrote out a project.md with the pitch that we're bringing back this game and we resurrecting it into a spectacular version and start it out with Kiro my spec prompts told it "we're re-creating the games or as shown in the project product MD and the source code is here and we need to extract the DNA of the game, please outline a strategy to do this."" That quickly morphed then to instructions to extract all the rooms, objects and other items from the source code and create Jason files from that renaming all the labels with the spooky text so the game would have a spooky theme.

Once we had the reference data for the game I started building the first spec for the backend with the command "as a senior react and python devloper define the backend mechnaics for this game, assume that we will hook in the app to a react front end."

As I was working through the backend code, I worked with Gemini nano banana to create the 110+ room images. Google helped create an initial prompt. Then I would use the original image and created subsequent images from it with commands like “Let’s create a similar image for ‘Engine of Torment’.“ The description is "This chamber houses a massive machine of unknown purpose. It's constructed from bone, iron, and still-beating organs. The machinery pulses and whirs, powered by dark magic. The buttons are made from preserved body parts, and pressing them causes the machine to scream.” I did need to re-upload the reference image every so often so that the style remained fairly similar..

The next phase was the frontend with "our backend apis are now setup, we need to work on our frontend now." After much refinements I started working through the tasks.

As an app started getting flushed out on Amplify Gen 2 and also on the local sandbox it became a parent that a lot of functionality was not complete yet. That required more research prompting more comparisons to the source code to make sure we didn't miss out on functionality and. And overall a day or two of iteration. At this point, the game functionality in general works for most of the beginning parts of the game, but we don't know yet if it if the game is winnable.

Challenges we ran into

The challenges I faced, mostly related to the spec code getting written not without full functionality that was in the original game. I ended up using a few different AI coding tools, including Z.AI and Google Amplify Gen 2 just to get a different perception on the code and take a different methods to ensuring good code coverage in good documentation overall on this original game.

I was very happy using the AWS MCP this round deploying this app with lambda does to AWS Amplify Gen 2 was very straightforward. On previous projects, I deployed the lambda does outside of Amplify Gen 2. Where on this version it was straightforward just to point it as part of the Amplify Gen 2 project. Also, the local sandbox development environment worked very well for testing the game locally.

Obviously, I faced a time crunch because I was trying to get the project done in five days, but I'm very happy with what I achieved. The game is playable. It might not be winnable, but it's a great start. And this level of application/game it would be impossible to create in such a short time without AI coding tools. If I was doing it manually, I'd still be digging through the old code and trying to figure out the game mechanics.

Accomplishments that we're proud of

The game has great visuals and it's generally playable. It's something that I want to continue to work on to ensure that the game is actually winnable.

What we learned

I'm still learning how to write good prompts and create good spec documents. For this hackathon, I think I did fairly well with fairly weak initial prompts for my requirements. But I iterated well in the back requirements and design phase and think I came out with fairly good tasks that implemented the app fairly well. We did have a lot of missing functionality that needed additional requirements, but that's not that big a deal considering how complex the game mechanics were in the original game.

What's next for West of Haunted House

Finalize the game so that it's winnable

Share this project:

Updates