Athena is an author and games are fun so we put it together with distributed systems to get this madness!
What it does
Two player choose your adventure game in which players can either split off on their own paths or continue through the story together. There are certain parts in the story where the players can reunite if they so please. The choices of one player affect the choices available to the other player. Both players try to collect points based on their paths and whoever has more points at the end wins.
How we built it
We defined our own specification for a concurrent choose your own adventure in yaml. Our server is written in Go and uses the Gorilla toolkit and socket.io. The frontend uses bootstrap and jquery.
Since we defined our own custom parser for our yaml specification. New adventure games can be specified by just adding new yaml files. Additionally, all of those games will support concurrent multiplayer out of the box.
Challenges we ran into
- parsing yaml in Go while maintaining a flexible yaml format
- concurrency from multiple players
- CSS is a major pain :(
- making an http handler middleware in Go for handling cookies
- connecting sockets together nicely with the cookies
Accomplishments that we're proud of
- it works... mostly
- it was creative
- 18 different endings!!!
- the layout is as intended!
What we learned
- coming up with good specifications is hard
- yaml is powerful, but can be a pain especially in static-typed languages like Go
- CSS layout
- CSS grid
- Media Query
- cookies are amazing when you get them to work!
What's next for Such Retro Choices
- more concurrency
- support for more players
- more interactions between the players
- more flashy content for the story
- mobile version