Start Your Engines


Part 2 of the series left us with the urge to pursue a 3D engine, but what can we do to get out of 2D land? In this post, we'll look at some of the options we considered to fulfill our 3D dreams.

Part 3: What Engine Options for 2.5D Game

Truthfully, we didn't look at that many options to satisfy 3D requirements; so I have once again proven that my series outline from Part 1 was not well thought out, but here we go anyway!

Option #1: Full 3D Game

As soon as I start talking about 3D games, the variety that inevitably comes to mind is what I'm going to call that of a "full" 3D game. In a full 3D game, the engine handles 3D physics and 3D rendering via 3D models. Most triple-A games in the current video game industry are full 3D games.

Interestingly enough, the direct successors to both 2.5D inspiration games cited in Part 1 appear to be full 3D games, despite having gameplay that is nearly identical to their true 2D heritage. I think that a lot of game developers wind up going this route because of already-built game engine support.

The Legend of Zelda: A Link Between Worlds
Golden Sun: Dark Dawn
Read More

Ups and Downs of 2.5D


My trajectory was explosive for parts 1 and 1B of this series, but this post has been a bit harder to put together because my outline was apparently terrible. Despite that, I'm going to try to stick it out.

Part 2: Why Care About 3D

It seems that a much larger percentage of games are 3D than was the situation in the past, but a 3D game is by no means necessarily better than 2D. I brought up in Part 1 of the series that one of the driving motivators for 3D in Maven was the jump mechanic. Jumping is a pretty good representative of the primary class of 3D features that we care about; so I'm going to try to visit the questions posed at the end of Part 1: "How might an engine fake jumping in a layer-based 2.5D game?" and "Why is jumping important?" (I know, I know. I changed the questions a little bit; so those aren't exact quotes. But if I'm quoting myself...)

Fake Jumping in a Layer-Based 2.5D Game

In the old Maven demo, we tried to produce a jump mechanic that would allow the player to jump over things or jump up to higher areas. This visual should give an idea of what we are talking about with the jumping-over-things part, and we'll touch on the jumping up part later.

Up to this point, our development had consisted in layer-based 2.5D game engine land; so we had to consider how to accomplish this feat while always keeping the player on some layer.

Read More

B Is For Bonus


I got a little bit ahead of myself in the last blog post and missed talking about a key area of technical discussion: what we did with a third dimension in An Altered Course. In this post, I would like to talk a little bit about some very specific ways we used the third dimension in An Altered Course and how we achieved those features from a technical perspective.

Part 1B: Where We Came From

As discussed in the last post, AAC was developed with RPGToolkit and its layer-based 2D game engine. With this system, all components of the game are subdivided into discrete layers for independent handling of physics and rendering.

Rendering Objects Across Layers

Although I described RPGToolkit as splitting the game into layers for rendering, I didn't particularly note that on each layer the engine will render first the background image and then the "item" and "player" sprites in y-axis order (as discussed in some length in an older post about layering). This is one of the features that using an engine like RPGToolkit buys developers so that they don't have to implement the feature themselves. As you will see in some of the screenshot examples, this engine also adds a fancy feature of re-rendering important sprites like the player again at less-than-100% opacity so that it still shows when it is behind something else. However, RPGToolkit does not know how to render sprites across multiple layers; so we had to do some extra work in level design to make tall object render properly.

In this first shot, you can see an example of these tall trees that were present all over the place in AAC. The player renders properly in front of the tree, and one tree renders properly in front of another tree. So far, this capability could be accomplished simply by making the trees "items" on the same layer as the player.

But in order to generalize this concept to work when there are more layers involved, our solution was to split the tree sprites across multiple layers. Generally, we would split these large trees into three different layers so that the trunk was put on layer 1, the middle section on layer 2, and the top part on layer 3.

Read More

Moving to 3D


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.

Part 1: Where We Came From

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.

Types of 2D Games

To state the obvious, 2D games necessarily lose one of the axes that is present in the real world. Therefore, 2D games generally fall into one of two camps:
Top-Down like Pac-Man
Side-Scrolling Platformer like Super Mario Bros.
Read More

Flash Into Action


Obligations have cleared up recently in a significant way to allow development on Maven. We're looking at having something new presentable by the time CGDC rolls around.

In the meantime, check out this trippy shot of soldiers with Flash-like symptoms in the middle of some timing refactors.

Flash Soldiers Screenshot
Read More

Rakuen World Building


After a long period of not posting, I've decided to have a change of pace and write about some other games I've played outside of the work we are doing at SoloVid. (Maven hasn't moved much in the last year, but we're still hoping to see it come!)

I'm not much of a gamer, but I do enjoy games. I particularly enjoy the fascinating things I learn about game design from other games. So today I'm going to talk a little bit about Rakuen, a storiented game by Laura Shigihara. The game very much takes queues from Kan Gao's To the Moon, but there are some things Rakuen has to add to the genre.

Read More

New Website


You may notice that the website looks a little different. We have just migrated from using Weebly to a custom PHP website. Weebly worked really well, but using the free version did not allow great file management, and custom HTML was a little onerous to manage.

Shout out to Weebly RSS feed Generator web app which made the migration process a little easier.

With that item off the checklist, hopefully you will start seeing some more updates soon!

Finding Howler


This week, we got another awesome song from Michael Shawn Carbaugh II! (At the moment, I'm going to make you wait to hear it though.) After receiving the song, I realized that we have some serious issues with audio looping in Maven's engine. There are basically three methods to looping audio that I have pondered.

Audio Loop Using Single Audio Element

Currently, the engine uses HTML5's audio element with the loop attribute.




The great thing about this method is that it is built into HTML5 and is very easy to implement. For example, the HTML for the example above is simply this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<button id="playAudioSingle">Play</button>
<button id="pauseAudioSingle">Pause</button>
<br/>
<audio id="audioSingle" src="IntoDarknessHalfLoop.mp3" loop controls></audio>
<script>
	document.getElementById("playAudioSingle").onclick = function() {
		document.getElementById("audioSingle").play();
	};
	document.getElementById("pauseAudioSingle").onclick = function() {
		document.getElementById("audioSingle").pause();
	};
</script>

However, as you may have noticed, the playback of the loop is imperfect, and the extent of this imperfection varies depending on the browser.

Read More

Better Weather


Did I ever show off the new weather graphics from Freedan Studios?
Better Weather Screenshot

Layering


In the real world, when one person is standing in front of another, you see the front person and not so much of the one behind. In a game world, it is a little bit difficult to ensure that interacting objects display to show accurately who is "in front." Let me show you what I am talking about.
Guy on top of woman's head

If we choose to not think about layering, we may easily end up drawing sprites in random order, with the effect that one sprite may look like it is walking on another sprite's head.
Read More
Older Posts