Welcome to the official page of my finally completed
8-year long project Prince of Persia: The Crystal Castle. This game is a
fan made sequel to the original DOS 1989 and 1993 games Prince of Persia
and Prince of Persia: Shadow and the Flame in which you can continue
playing as the heroic prince of Persia, scaling towering height, avoiding
traps, and finally come to terms with the Prince’s most challenging adversary
yet! It runs on over 24,000 lines of C# code written using the Monogame framework and
SDKs, and you can download it either from the Microsoft store or the Amazon
android store:
Microsoft store: https://www.microsoft.com/en-us/p/prince-of-persia-the-crystal-castle/9mvtg0wfq2q9
Amazon store: https://www.amazon.com/gp/product/B08R2CJBPM
(preview only, to get the game you must install the Amazon store app on your
phone and then install the game from within)
More platforms hopefully coming in the future!
Overview
The game’s story continues after the events of the
second DOS Prince of Persia: Shadow and the Flame game in which the
prince faces his new arch enemy: the evil witch who mysteriously appeared at
the end of the previous game. The play and feel of the game are exactly the
same as in the originals, except with additional support for Xbox controller
and touch screen. The goal in most levels is to navigate the terrain and find
the gate in the wall that leads to the next level, overcoming any obstacles in
the way. As with all of the Prince of Persia games, time plays an essential
role in this game since after a bit of gameplay the story will introduce a time
limit that the game has to be completed in. The game also offers a menu system
which includes the ability to save your progress in case you want to quit and
come back later to it.
History
In 1989 Jordan Mechner released the original Prince
of Persia game and in 1993 he and Broderbund Software released its sequel Prince
of Persia: Shadow and the Flame. Then in 1999 Red Orb Entertainment
published Prince of Persia 3D which unlike its two previous predecessors
is a 3-dimensional game. A large prince of Persia fan community has grown
around these original games since then (see for example https://popuw.com/) and in 2014, when I was 15, I
decided to make a sequel to the first two games. My game was going to be called
Prince of Persia 2.5 because on the timeline of things, the story in it
takes place in between the events of the second game Shadow and the Flame
and the third game Prince of Persia 3D. It was a large project to take
on, but I knew that in the process I was going to learn a lot including
programming, animation, game design, how games work in general, etc. Eight
years later I finally finished!
Fun Facts
· I
play the evil witch! The process for how I accomplished this was the following.
1.
First, my brother
filmed me dressed as a witch. Drawing on my obvious natural talents for costume
design, in order to look like a witch I decided to dress myself in a pink bed
sheet and use a bright orange marker as my “wand.”
2.
After that I wrote
and applied a “cartoonify” filter to the video’s frames to try to make them
seem less photorealistic.
3.
Finally, I redrew
my face in all of the frames since I decided that my face wasn’t scary looking
enough. You can go to the homepage of this website to see if you agree with my
decision 😊.
I also recolored the marker brown in order to make it look more like a magical
wand. The result:
· The
picture of the Persian kingdom in the opening sequence of the game contains
around 1,400 little houses in it. They were placed randomly by a program since
it would have taken an enormous amount of effort to do that by hand!
· The
columns and potted plants in the game are placed randomly each time you restart
a level. The reason for that is that I created those two decorative elements
after I finished making all of the levels and I didn’t have the effort to go
through each level again and place them by hand. So I decided to let
probability do the work for me!
· There
are quite a bit of parabolas and cosines in the code for this game. Cosines in
particular appear whenever there is any kind of oscillation. A clear
demonstration that math is useful, if I say so myself!
Technical Specifications
· The
game was written in C# from scratch using the Monogame framework 3.7.1.
I hope to upgrade to Monogame 3.8 soon as that might provide me more platforms
for which I can release this game to.
· With
the 3.7.1 framework I’m currently able to make the following builds:
1.
Universal Windows
Application: built and published. Please see:
https://www.microsoft.com/store/productId/9MVTG0WFQ2Q9
Platforms include
Desktop with Windows 10, Windows Phone 10, and Xbox One. I only tested it on
the Desktop version though since I don’t own any of the other platforms listed.
If you’ve tested it on one of the other platforms, please let me know that it works there.
I’m eager to know!
2.
Android: built and
published! I’ll try to see if I can host the game in a few other locations as
well. For now, you can download it from within the Amazon store app. To preview
the game, visit
https://www.amazon.com/gp/product/B08R2CJBPM
To actually get
the game you must install the Amazon store app on your phone and then install
the game from within.
3.
Desktop DirectX
(for any Windows OS): built but not published yet.
4.
iOS: not built
yet.
5.
Desktop OpenGL
(Windows/Mac/Linux): built but not published yet.
6.
I’d like to try to
port my game to the Unity engine. That would very exciting since then I’d be
able to make a web version of my game.
· Thinking
about cheating? Think again! In this project I learned how and implemented a
checksum defense of the player data and hall of fame files using the standard
C# SHA256 hash algorithm library. So if you’re considering editing those files
manually, don’t say I didn’t warn you!
Release the Level Editor?
Bugs/Suggestions
If you’d like to report any bugs that you encounter in
the game or would like to leave a friendly suggestion, please go to:
https://forms.gle/nnW8zM6e6EWBj5y29
All input will be very much appreciated!
Note: I make every attempt to make the above information as complete and accurate as possible. If you find that I omitted something, please contact me indicating what you believe needs correcting.