SwapWare is a 3DS game I developed alone in five days during a student exchange program of August/September 2013 between three schools: Trident Computer College, Nanyang Polytechnic and Supinfogame.

We were welcomed by Trident Computer College at Nagoya and received a one-week course on 3DS programming. Then we were asked to develop a game alone within one week, using the 3DS functionalities. That’s when SwapWare was developed.

My main intention during this project was to implement a dynamic gameplay using the two screens of the 3DS and make it able to run on its limited hardware (the library we were using allowed us to utilize only a small part of the console memory). Since I was working alone on this game, I settled for a concept which used simple graphics that I could draw myself and mechanics which could be coded easily. So I chose a reflex-based mechanic using screen-swapping mechanics and exploiting the specific inputs of the console.

Top screen explanation.

In SwapWare, the player has to make the highest score possible by entering inputs before a countdown reaches zero. Each of the two console screens has his own countdown and entering the good inputs adds some time to the screen whereas doing the wrong input reduces the time left. The inputs are separated in two kinds: the round ones and the square ones. The top screen has a round placeholder in its center and can only validate round inputs. On the other hand, the bottom screen has a square place holder and can only validate square inputs. So the player has to swap these inputs to put them on the right screen and enter them.

Top screen
Top screen
Bottom screen
Bottom screen

Another mechanic of the game is that if the player manages to get the same input on the two screens, he can validate the two at once and add a large amount of time and score much more points. That’s why the next input is indicated at the top-right of each screen in order to let the player anticipate when he is able to make pairs. I also managed to implement a difficulty curve: the longer the player plays, the smaller the time he gets and the more points he earns for each successful input.


What I did:

  • C++ programming on 3DS library (use of the special features: double screen, micro, 3D layer effect, touchscreen…)
  • Graphic assets making on Illustrator and Photoshop
  • Concept
  • Difficulty curve creation and tweaking
  • Memory optimization


What I learned from this:

For the first time, I did a video game all by myself. I programmed the game from scratch; I did the graphics and the game design. It was really enriching to see all the facets of the production and to be confronted to all the issues that each pole can face. Also, it was my first approach of C++ language. It has been a good opportunity for me to learn it.

Furthermore, programming on 3DS was an exceptional experience that only few students can have and I am sincerely grateful to Trident to have given us such an opportunity. I learned many things about console-specific hardware, the real 3D display system, technical limitations and so on.


What I would like to improve:

Due to the memory limitation, I was really held back on the graphical, sound and gameplay assets I could put into the game. If I got more time to optimize it, I would like to put more inputs such as input-spamming, more complex shapes to draw on the bottom screen and implementation of the gyroscope. I would also like to put some random events that would increase the challenge for the player.

Furthermore, I would add some sounds and background music to the game since I had not enough time to optimize the textures and free some memory to implement them. Moreover, I would add more feedbacks and animations since in this kind of game a great part of the fun comes from the visual effects and the easy readability of the action.