What is Dragonorb
Dragonorb is a tile based JRPG (Japanese Role Playing Game) that I have been developing with C++. In dragonorb the player explores a world in a tile based game while collecting treasure and being assailed by enemies. The main focus of Dragonorb as in most JRPGs is the story of the game. The aim of the game is to travel through an interactive story while collecting treasure, each section of the story will bring the player into a new map within the world.
Dragonorb uses a tile based movement engine which decides where the player can and cannot move. It also employs simple battles that happen at random when the player moves through an area.
Target Audience/ Demographic
Dragonorb is a JRPG, JPRG are heavily story focused and use the narrative to push the player through the game. This type of genre attracts two demographics. The first is children and teenagers who like these types of games as they are simple to play and the story draws you into the world they are also relatively easy. The other demographic it attracts is the older generation of gamers who grey up playing games in the 90s. They are attracted to these types of games as they find them nostalgic and they feel they are playing a game made in the time when they were children.
For Dragonorb I also plan for it to be ported onto mobile devices. The reason for this is that the mobile game marker is rapidly growing. There are thousands of games on consoles and PCs but not that many on mobile devices, people also like to play games when they are on the move and dragonorb is a perfect game for that as it is simple to play and you can play it for 5 minutes, save your game and pick it up where you left it later.
The JRPG market is large, however a lot of games in this genre have been implementing more action elements which dilutes from the core concept of JRPG. Dragonorb is pure JRPG, with a turn based battle system. This will attract people who enjoy playing classic JRPGS.
The methods I used when creating Dragonorb.
Dragonorb uses a state engine to control which part of the game the user is accessing. The first state is the main menu, this allows the user to press a button to begin playing the game. I used game states as they allow me to have multiple program within a single program. This is needed for Dragonorb as dragonorb has multiple maps and also a fight simulator for the random battles that happen within it.
For movement and the map Dragonorb uses three 2D arrays which are layered on top of each other. The first layer is the collision map, this map simply contains 1s and 0s. When the player decides to move what would be the new position is compared to the collision array. If the new tile is a 0 the player can move there and they are moved to the new tile. If the new is a 1 the player cannot move there and stays where they are.
The second map is the landtile array this contains the basic tiles such as grass and water. This map is drawn on top of the collision array so that the user never sees the collision array and forms the foundation of the floor.
The third map is the object array, within this array objects such as houses and trees are drawn. This map is drawn on top of the landtile array and as some of the objects are transparent creates the image of houses and trees on top of grass or water. It also contains small objects such as haystacks and rocks.
To make the battlesystem I used a lot of global variables for both the player and the monsters. I also used a variable called turn, which is used within a sequence of if statements to cycle through the animations and actions of both the player and the monster. When Turn is set to 0 the players chooses a command, the action they chose is then animated and the monsters gets a turn. In this demo of the game the monsters simply attack after the players has chosen to use a potion or attack. Whenever the player attacks the monsters hit points is reduced by an amount equal to that of the players attack variable. The monsters deal damage to the player in a very similar way. When either the player or monster has died the game reverts back to the map the player was previously on (If the monster was killed). Or to the main menu after displaying a game over screen.
What went wrong with Dragonorb
I ran into a lot of problems when creating dragonorb, the first problem I encountered was figured out how to make the tile arrays work which took longer than I expected. I initially attempted to make the tile array with a 2D vector but was not able to figure out how to implement collision. I later used a 2D array with values compared to the playerX and playerY global variables, as the elements within the 2D array were static I was able to directly compare the kplayers position to an element within the 2D array and make the program stop you moving if you are not allowed to move there.
The next major problem I had was I had no idea how to make the battlesystem that I desired and I found animation looked clunky. I was not able to achieve a battle system to the standard I desired. I did however manage to make a functional battlesystem with only one character and one enemy.
I also had the problem of working alone on a group project alone which meant I was not able to bounce my ideas off another person. This meant that if I hit a wall in my project I stayed there for months and no progress was made on the project.
Screenshots of dragonorb