Super Princess Peach: Dark Side of Peach

Dark Side of Peach is a remake of the Nintendo DS game Super Princess Peach. Like the original, it is a 2D sidescroller. Instead of remaking exactly an old game, I chose a current game and decided to jazz it up but changing the feel from bright and cheerful to dark and dramatic.

In this new, more adult, story, Mario has dumped Peach because he was embarrassed that she had to rescue him (the original version of Super Princess Peach) and she has fallen into a pit of despair and must learn to deal with her depression. Eventually she cheers up and decides to exact revenge by hooking up with Mario's brother (Luigi).

For this demo, I kept Peach's ability to make plants grow with her tears as it fit the game's new theme. However, I dropped her other abilities for simplicity. Her goal in the one demo level is to collect all the puzzle pieces to reveal the secret message. She must avoid goombas, make plants grow with her special crying ability, speed across donut platforms, and hop across chasms to collect them all.

Peach GUI
Demo Video Download

In this demo video, I struggle to make my way through the level. Here Peach is trying to discover all the puzzles pieces hidden throughout the level to reveal a silly secret message. At various points, I point out notable things on the screen with the mouse.

Peach ingame screenshot

Installable demo Download

This demo runs on Windows XP/Vista utilizing DirectX 9. This project has no sound.

This demo is a single level. The level has one type of enemy and several collectable objects: coins, gems (used to recharge energy for crying power), hearts (used to recharge life) and puzzle pieces. Peach moves left and right with the LEFT and RIGHT ARROW keys. There is one type of foe: the goomba, which, in classical Mario style, is defeated with a hop on his head (SPACE to jump). Coming in contact with a goomba will do damage and bounce you away.

Interact with plants by standing next to one and crying (hold S to cry). This will let it grow so you can climb it (UP to climb). Press ESC to pause. Deaths through falling into a pit or losing health from goomba attacks will respawn you at the beginning of the level.

End game screen

Disclaimer: This demo is quite old and some of its implementation is buggy. Specifically, it will not actually end unless you select quit from the menu. To avoid this, do not end the application by using ALT+F4.

Source Download

This project was created in Visual Studio using C++ with DirectX 9. Maps were created from CSV files in MS Excel.

This was my first project ever in C+ so some of the quite is, admittedly, very amateurish. However, while I cringe looking at some of the code, I am still very proud of having accomplished so much starting from nothing.

To download source code, a password is required. Please email me password requests if you have not already been provided with the password.

Game over screen

Source code has the same disclaimers in running it as the demo does.

Experience

This project was my first real use of C++ (which I learned for this class). Looking back on this project, I can see that my code was poorly architected and clumsy. Since then, I have become a much better programmer in general.

This game is where I learned a lot about details. Knock- and feedback when the player takes damage were not originally planned for and merely added when I discovered that they were needed. Additionally, not keeping the player in the center of the viewport all the times (when jumping, for example) should have been considered because it's very disruptive. And, of course, timing based on elapsed time rather than a counter because frame rates change.

Credits

This project was produced for an assignment to recreate an existing game. The original game, Super Princess Peach, and many of the original sprites are the property of Nintendo. Some sprites and graphics are original; others are modified from the original game sprites.

Some source code was provided by Professor Richard McKenna at Stony Brook University. Some classes used in this project were provided to the class for our use including most of the utility classes for DirectX.