Kaleidescape
Kaleidescape is an escape-room-esque game, wherein users must solve word scrambles in order to obtain the clues that are necessary to advance in the game, and ultimately escape.
Final project for Program in Computing 10C: Advanced Programming, coded using C++ in Qt. Visuals created in Illustrator and Photoshop.
Collaborators: Natalie Del Toro, Emily Teng
Introduction/Research
Since our previous C++ courses mainly focused on programming concepts and back-end implementations such as memory management and data structures, we never really got to work with the GUI. So for this final project, my group decided to take the opportunity to incorporate rich visual elements and to focus on user interactions through a game experience. Each of us did some research on games that we like, and shared our thoughts on what we might want to implement (while keeping the timeline in mind.) 

Project Ideation
While we all liked the idea of a word scramble game, we didn't really want to follow the classic interface of word scrambles.  Each of us did some research and shared the types of game interface and visuals we liked, and discussed why we liked them and what components could tie into word scrambles. Finally we decided on the model of an escape room game for three main reasons:
1) Both games have an emphasis on "puzzle-solving", which makes it easy to integrate them together. Also the visual components for escape room games are way more dynamic and interesting.   
2) We liked the idea of leaving some clues for the user to explore, and we wanted the user to interact with the program by clicking around on different objects in each "room".
3) Instead of picking a bunch of random words for the user to unscramble, we wanted to tie them together by a story. So the story unfolds as the player discovers the connection between the words. 

Developing the narrative
The narrative is important because it helps keeping the game within a manageable scope. Since we only had about six weeks to work on this project (and none of us had prior experiences with Qt,) we wanted to start with a smaller game and expand on it if time permits. We decided to build 3 to 4 rooms as that seems like a reasonable scale. 
Keeping those parameters in mind, we started brainstorming ways to structure the narrative (and thus the game.) After throwing some ideas around, we settled on creating a narrative around colors. More specifically, we'll have three rooms that represent the colors RED, GREEN, and BLUE, respectively. 

Basic game structure
​​​​​​​Before we started setting up the classes and game interface, we mapped out the basic structure of the game. It is mostly linear with two different ways of starting the game. The “Start” button is an obvious one. Additionally, one could go to “Rooms” to get an overview of different levels. However, only Room 1 can be accessed at the beginning of the game. A room is only “unlocked” once all puzzles in the previous room have been solved. One could also access rooms that they have already passed.
Sound ON/OFF: The default setting for sound (i.e. background music) is ON. One could choose to turn the sound off in the "Options" page. 

Navigation in each Room (User flow)
Each room contains two word puzzles. The user has to click on the correct object or clue to see the scrambled word. They have 4 tries for each word. Unscrambling both words correctly will allow them to enter the next room. 
Buttons are a major functionality for helping players navigate the game. We outlined the different buttons in each page. This is to get a general idea of how different parts of the game are connected. 

Code structure 
We relied heavily on the GUI, so there was not a lot of class inheritance in terms of programming. But we still had flags here and there to determine which stage of the game the user is in, and to allow them to access the rooms they've passed through the "Rooms" button.

Major Functions
Check if player entered the correct word
Check if player entered the correct word
Display images regarding word
Display images regarding word
Room themes and word choices
Room 1 contains an introduction and instructions to the game. There is just one door in the middle. We wanted to make the first room simple and intuitive enough so that the player doesn't feel frustrated or get confused by the interface from the very beginning. There are two main purposes:
 1) It demonstrates the theme of the game because ALL COLORS ARE LOST at the moment. And each time the player solves the puzzles in a room, they retrieve a color back to the world. 
2) It familiarizes the player with the game interface, showing them that they should be clicking around and looking for clues.

Room 2 is the RED ROOM. It contains a computer because RGB refers to a system of colors to be used on a computer display. We wanted to make that connection and give a little hint to the storyline of the game. The two words we chose (spoiler alert!), "rose" and "apple", also are related to red. 

Room 3 is the BLUE ROOM. This time we decided to place the scene in a library because it is kind of an analog to the Internet (as they both share an abundance of information.) Essentially the player would need to search in a pile of books for the first puzzle in this room. We also wanted to incorporate the word scrambles from the red room as a clue. Ideally, the player would have to remember the puzzles from previous room to successfully proceed.  

Room 4 is the GREEN ROOM. A lot of the words we came up with had to do with nature. So we decided to turn the room into a strange, artificial habitat. There are some plants to indicate that the player is getting closer to regaining their freedom (& to return to the outside world.) Once again, the user would need to use information obtained from the past rooms to proceed onwards. 

Visual Assets
I was mostly in charge of making the visuals for our game. From our discussions about the room's themes and different elements we wanted to include, I made illustrations for the backgrounds and the objects that would pop up once the player successfully unscrambles a word. 

The Story
You wake up in the Kaleidescape.
You look around, and realize -- the world has lost its COLOR!
There is no one else in sight, and you cannot seem to see a way out.
Up ahead, there are several rooms. The farther you get, the more color you will restore back into your life.

Final product and interface