For the Interactive Fiction project, I indeed learned a lot. Some of my key insights were picking a topic you can be passionate about, figuring out how to cut down scope, increasing accessibility while maintaining authenticity, and working to attain a balance between quality and quantity in terms of choices.
Brainstorming for the IF process was interesting. I was really excited to write some fiction. I ended up going with Adventures in Computerland, but during the brainstorming process there were so many other ideas. I ultimately picked Adventures in Computerland because as a section leader for CS106B and person interested in gamifiying aspects of different subjects, I thought it would be fun and also build on an educational CS106A/B comic called Bit by Bit. Additionally, I thought it would contribute to a goal of mine of making CS more fun 🙂
As I went through the project, I realized just how important picking a topic that I was passionate about was. Although crafting and coding the story was stressful at times, my love of the topic made brainstorming ideas and jumping into the fictional world fun. I found myself thinking about ideas outside of working on the project or losing track of time while working on different paths. It’s not always possible to pick a topic that you’re passionate about for a project, but I learned that when dealing with a subject that you are passionate about, it can be easier and really fun to generate ideas with refinement coming later. Finding something generative like that isn’t necessarily easy, but definitely rewarding.
When I was drawing an outline, my scope was significantly larger than what I ended up finally submitting. My concept map was somewhat detailed and had ideas from both of the introductory computer science classes CS106A and CS106B. As I was coding up the project in Twine and even through the paper prototype, I soon realized how unattainable the whole length would be. In the brainstorming process I also envisioned a world where there would be additional bits of code and maybe even a code-a-long. As I started working on the project, i soon realized that I couldn’t keep this up, getting lost in the details while trying to finish the narrative— or at least get a draft— was a struggle. I realized that the whole process of prototyping wasn’t to get a final draft, but rather a sample of ideas. So in certain spots I inserted code and I significantly shortened up the narrative, going from the inside out of my concept map and deleting things I deemed to be good-to-have while keeping the essentials. I sometimes get attached to characters and storylines that I make, so at times, it was difficult, but by reducing my scope I was able to focus on what I already had and was able to test out other elements of the IF project.
Another issue I ran into was authenticity vs accessibility. As a project based on characters and certain concepts from CS106A, I was well aware of the fact that not everyone has taken a CS class, let alone CS106A. One concept I constantly grappled with was how to make the comic authentic to the concepts in the course while also making sure it was understandable for everyone. I tried adding annotations, but realized that putting them straight into the comic like normal text detracted from the main narrative. In the end I ended up adding explanations in gray so that they would be there, but feature in the background. This helped to resolve an important tradeoff.
Another lesson I learned was of the importance of quality of choices. When playtesting, sometimes it was fun for playtesters to try the different options, but if they felt it was too surface, that detracted from the meaningfulness of the game. In addition to the storyline being entertaining, more meaningful choices would have made the game more fulfilling. This was one spot I probably had the most room to improve upon. I wonder, what would be the best approach to finding meaningful choices? Planning them out beforehand? Or seeing what naturally pops up? How would I make choices feel natural but not forced?
Overall, the project was really fun to explore and I enjoyed having to craft a narrative while trying to teach a lesson— that CS can be fun and played around with.