REST for the Wicked is a text adventure game illustrating some of the basic concepts and interactions that define the REST framework. It was created by Justin Majetich and Geoffery Zoref as a portfolio project for Holberton School. Our aim was to complement the range of text-heavy resources that exist online by providing an interactive, spatial-visual explanation of REST.
We were inspired by educational coding games like Flexbox Froggy and Untrusted, as well as text adventure games of the 80s and 90s. In deciding on a format for the project, we felt a text adventure game would make an intuitive analog to REST interaction. A touchpoint for art direction was the early Macintosh HyperCard aesthetic. To approximate this look, game assets were created using Cloudpaint - a web-based emulation of MacPaint v1.5.
The frontend application is built with React and React-Redux, while the backend runs on Django and the Django REST Framework library. If you'd like to learn more about our development process or technology stack, check out Justin's post on Medium and Geoff's on LinkedIn.
You'll navigate the world of REST for the Wicked using the interface pictured above. Your main instrument of interaction with the game world is the request bar, located in the UI's top module. You'll use it to navigate and manipulate the game world.
We've modeled the request bar after an actual REST request. To make a request, drag a method, path, key, and item tile onto the bar and execute the request. For example, you could use the 'GET' method tile and the '/lobby' path tile to move to the lobby.
As you explore the world, you'll collect items and keys, which can be used to access or interact with certain rooms. To use an item, 'POST' or 'PUT' it to a path, as pictured below. You can think of a 'POST' request as adding an item into a path, while a 'PUT' request uses an item to change the room's state.
As you explore the game world, you'll collect methods, items, and keys. These are stored for use in their respective invetories. You're also provided a map to orient yourself within the world.
Try it out at restforthewicked.app!