Hi, I'm Sarah! Thanks for checking out my game!

There's not much to it at the moment, but I have plans to continue working on it, so feel free to read more about it below. I created this game as a capstone project for the completion of my degree in Integrated Computer Science at Kansas State University. My degree concentration is in English (emphasis writing), which led me to developing a story-based game.

The code for this project can be found at github here.

General Overview

This game came about from an experience I had working in a hotel laundry room one summer with a friend. We had fun coming up with wild conspiracies and mysteries while on the job, and I thought it could be a fun idea for a game.

The player starts out as a new hire at the Starlight Hotel named Kira who, after meeting a few coworkers, starts to realize that there's more to this hotel than meets the eye. Through interacting with coworkers and exploring the various hotel areas, the player will uncover the secrets hidden the shiny, beachside hotel. For a more detailed overview of the storyline, click here.

Technical Details

This site is hosted on Netlify and was created using React, a JavaScript library for web development. Additionally, Redux was used for state management and several other packages were used to aid with the development process.

I used an online tool to create the game sprites (more details on the credits page), and I used the images it generated to create the standing animations with a simple image editing software.

I originally planned to use Tiled to create a map for the game, but this proved to be difficult without learning to use more advanced libraries. I also originally used a domain-specific scripting language, Ink, to create the game logic, but I realized early on that it didn't fit my plans for this project as well as previously thought, so I decided not to use it.

What I Learned

Despite not having many working pieces by the end of the semester, I learned a great deal from my time spent on this project and I feel that I was able to use my previous programming experiences from various classes and internships to help me in the development process.

Skills I was able to use include:

  • Prior web development experience from two summer internships.
  • Object-oriented thinking (despite the fact that this project is not strictly object-oriented) to help organize code into classes/components for better readability, reusability, and extensibility.
  • Experience with debugging/troubleshooting code from all of my previous computer science classes and internships. This was especially helpful when learning how to use new technologies or in using functional components in a different way than I'm used to.

Some of the challenges I faced along the way:

  • I initially wanted to include a 2d game map that the player could move around on and interact with. I had many issues getting the map to render on my React application and determined that it would take more advanced libraries and/or greater knowledge in game rendering to accomplish this than what I was able to do in a semester-long project, leading me to design the game without a map.
  • Despite having a good amount of experience with React, I have never developed a game before, so it took a bit of trial and error to figure out the best way to create certain aspects of the game. Because of this, I wasn't able to plan the game structure out well beforehand, and instead would often write code that I later scrapped due to it being inefficient, not reusable, and not very readable.

Technical and non-technical things that I learned:

  • The biggest thing I learned on the technical side was learning to use Redux for state management. I previously had mostly used React hooks to manage state, but considering the amount of data that was needed to be stored for the game, I knew it would be better to use something like Redux to manage context and reducers.
  • I've never developed a game before, so this project helped me learn how games are structured behind the scenes, and what kinds of data need to be stored. For example, I initially stored several values for the player or for npc's that I later realized I didn't need, and I also discovered various properties that were necessary for the game to work well. I additionally had to figure out how to structure my program to be iterable so that the game could loop through all the player options instead of having every possibility and step hard-coded into my components.

Planned Improvements

  • Finish the functionality of all the components so as to be able to fully play through the story.
  • Polish the design of the game, including sprite animations, color and font choice, header/footer design, etc.
  • Add functionality to save current game progress to a file as well as the ability for a player to load previously saved data into the game from the start screen.