Although we have a lot to make up for, some recent developments may provide just the content we need to generate more posts. One of the ideas that has been percolating in my mind since Maven's inception is the idea of allowing the player to jump. But 2D games make it difficult to enable such an action. So here is the bottom-line: Maven is going 3D. In this post, I would like to talk a little bit about 1) where we came from, 2) why we wanted new features, 3) what options we considered, and 4) how we implemented our system. However, writing this blog post has shown that this outline will need to span multiple posts.
When I decided to get into game development, I had no idea what kind of games were even possible to make, since I had no experience with programming at the time. Fortunately, I did not try to go the route of full 3D game development, because that would have been difficult. So instead, I wound up pursuing 2D game development.
However in practice, most 2D games of the top-down flavor actually end up falling into a category sometimes known as 2.5D. (Notice the .5 part.) These game generally use 2D graphics and 2D physics to convey a 3D world, but most of the gameplay tends to occur in the two dimensions of horizontal space. Adding the third dimension to the game opens up possibilities for gameplay experience not possible in simple two dimensions.
Based on my background in gaming, there were a couple of key 2.5D inspiration games that encouraged me to make a 2.5D game and shaped the way that I think about 2.5D gameplay.
The first of those inspirations is The Legend of Zelda: A Link to the Past (specifically the GBA port in my case). In this game, the primary gameplay has the player running around on a flat (2D) plane taking actions like swinging a sword or talking to NPCs.
However, the game also has a third dimension. Notice first of all that, although we get a top-down view of the grass, the building roof, and the bushes, we also get a side view of Link, the chickens, the doors, and the side of the hill. You can categorize most of the parts of the screenshot into either a top-down view or a side view, with a dominating exception of the stairs/ladder, which we'll probably look at more in depth later.
In this game, the third dimension (height) mostly serves the purpose of enhancing the visual aspects of the game and does only a little toward enhancing gameplay itself. Notable uses of vertical space include jumping off of cliffs into otherwise inaccessible spaces below, such as (SPOILERS!) the well in the screenshot.
A second inspiration game from the fields of 2.5D game history is Golden Sun (also a GBA game). In this game and its sequel, the primary gameplay has the player walking around on a flat (2D) plane solving simple spacial puzzles or talking to NPCs. (Yes, the game also has the primary gameplay of an RPG battle system, but that part is effectively an entire game of its own that is not 2.5D.)
Like Zelda, this game has a third dimension too. The graphical style of this game tends to more clearly distinguish between graphical elements that are horizontally oriented and those that are vertically oriented. Golden sun uses the third dimension to increase the complexity of its level designs. Two notable uses of space include falling off of cliffs (hmmmmm) and pushing blocks into place on lower levels to serve as stepping stones on higher levels.
When it came to my first game, An Altered Course, I had the above two games on my mind. I focused on core gameplay of walking around on a flat (2D) plane navigating obstacles and interacting with NPCs or other items of interest.
Again, this game also has a third dimension and borrows some of the ideas for increasing level complexity (e.g. falling off of cliffs) from the inspiration games.
Since it was my turn to accomplish this task and not just to admire, I gained some exposure to how primarily 2D game engines handle this notion of an additional dimension. As you may be aware, An Altered Course was created with RPGToolkit and was thereby subject to the limitations of that engine. RPGToolkit is a 2D engine, but it supports some notion of height (for 2.5D) in what it calls layers.
In RPGToolkit, the player, images, and collision areas are placed onto specific layers. Each of the layers are treated separately for interaction purposes and then drawn in order from bottom to top. This layer system allows some semblance of a 3D world, but all real gameplay is limited to occurring on exactly one layer at a time.
Naturally when it came time to developing Maven, I carried over my experience and ideas from An Altered Course. The biggest key difference with Maven, though, was that I decided creating my own game engine would be the best way to provide the flexibility of game mechanics I desired. After the fashion of RPGToolkit, I implemented 2.5D as simple layers into which I would separate collisions and rendering.
When I started thinking about the game mechanics I wanted in Maven, one of the earliest ideas was the jump mechanic. (You can see an early prototype of the jump ability in the old Maven demo.) But the problem that I could never get past with the jump ability—no matter how hard I thought about it—was this: there was no 3D space in which to jump.
But surely you can just fake the 3D space by moving the player between layers during the jump?
Well...yeah..., and we did that in the old demo. BUT there are core issues with physics and rendering that are not solvable without introducing some greater concept of a third dimension. That will have to to wait for the next blog post though.
Is jumping really important?
That will also have to wait for the next blog post.
I have recently started a regular dedicated time for public reading of Scripture at my church each week. In the first three weeks, we went through the book of Galatians and then Hebrews. As I am writing this post, I am reminded of the concept of shadowed realities that is shared between the principles of game development in this post and a passage in Hebrews.
2D games are necessarily limited to less than what 3D games can offer. This is simply because they do not possess the fullness of three dimensions. So a 2D game can provide an experience that is like a 3D game, but it will never give the full experience of a 3D game. When it comes to 3D, particularly with the advent of VR, games can portray a world that seems vividly real. But there are plenty of aspects of reality that are missing from even the most realistic 3D game, like eating or truly autonomous other beings (discounting multiplayer games).
In Hebrews (around chapters 9 and 10), the author talks about Old Testament's sacrificial system being a shadow of God's plan of redemption through Jesus.
Since the law has only a shadow of the good things to come, and not the actual form of those realities, it can never perfect the worshipers by the same sacrifices they continually offer year after year. Otherwise, wouldn't they have stopped being offered, since the worshipers, once purified, would no longer have any consciousness of sins? But in the sacrifices there is a reminder of sins every year. For it is impossible for the blood of bulls and goats to take away sins. - Hebrews 10:1-4 (HCSB)
At the end of the day, sin—no matter how hard we try—is not a solvable problem without a better/greater sacrifice than what humans can offer. The many sacrifices of Jewish law only foreshadowed the better/greater sacrifice of Jesus offering himself once. Any number of other means to achieve forgiveness are equally lacking in the necessary substance that Jesus provides. But now that he has born our sins, we await the better things promised when he returns to bring salvation to those who are waiting for him (Heb. 9:28). And I don't think it is an unfair stretch to think that we will find the things of this earth to likewise only be a shadow of the realities that will be revealed in God's presence one day.