The final assignment for my Visual Story class was to create a short, interactive love story. Our group decided to do a mystery with the question “Who sent the mysterious bouquet?” My teammates shot and edited video, took photos, and recorded audio, then handed them to me to integrate in Flash. Some of them also helped put together slideshows and interface elements

Play The Admirer’s Secret(Be patient–the SWF file is 7.5 MB, and there’s no pre-loader since it was meant to be played locally)

The structure of the piece is basically a choose-your-own-adventure. Players choose which of the five suspects to visit, and after visiting them all, the culprit is revealed. There are five endings.

Implementation Notes

Streaming

This was my first experience with streaming media in Flash. There’s a lot of audio and video in the project, and I didn’t want to have to wait to load all of it at the start, so streaming was the obvious solution. It does make it a little more difficult to move the files to different directories, since the directory the SWF file is called from has to be the same as the one all of the media files are in.

Templates

Since the structure for each of the suspect visits is the same, I decided to create a single template with slots for suspect portrait, description, audio, and transcript. I used a naming convention and the eval() function to pull the correct files and movie clips in when requested.

Ending Mechanic

The ending a player receives is determined by which suspect the player visits first. Since the ending is revealed only after all suspects have been visited (with one exception), most people have forgotten who they visited first and the identity of the culprit comes as a surprise. On the other hand, it means that anyone trying to systematically get different endings by varying the order of visits will take a long time to see them all.

I'm a full-stack web developer with a front-end focus. My expertise is in Ruby on Rails, Javascript, and React JS, but I've worked on all parts of the stack, including database and API design to dev pipelines and end-to-end testing.