In addition to Renegade Sector Pilot and Upon the Shoulders of Birds, I’m working on an overhaul to my top-down game base-code. A lot of this is cleaning up the spaghetti code and make it easier to use for a wider range of projects. I’m also adding some new features. One of these is multiple collision layers for multiple elevations. This allows me to stuff like have a bridge that you can both walk under and walk over:
Since my first collaboration with Todd Luke is now available, I figured I should go ahead and announce our next collaboration. Upon the Shoulders of Birds will be a vertical platformer where you jump from bird to bird in your ascent. The birds also constitute the enemies in the game, as they’ll shoot down at you while you’re below them.
This has been an interesting design challenge for me as it places such a heavy emphasis on enemy design. Todd Luke has also switched over to a more painterly art style, instead of upscaled pixel art, which I think is looking really good. Here are some concept images he did for the enemies in the game:
In case you missed it, we released Treasure of the Abandoned City a couple days ago. Yesterday I discovered that I had incorrectly set up the store through which you can get the standalone version. This is now fixed, and you can pay-what-you-want for the standalone version + soundtrack and bonus features here.
The next installment of Tales of the Renegade sector will be released next week. The episode will be released with a pay-what-you-want model. You can pick your price (minimum $1) for a standalone version of the game + soundtrack and other bonus features. There will also be a free ad-supported version you can play in-browser.
Featuring art by the talented Todd Luke, the new episode will follow the Captain to the gates of an Ancient Abandoned City in search of another of Laserbeard’s treasures. However, getting the treasure won’t be easy. The city gates are sealed and the city surrounded by malevolent stone golems. In his quest, the Captain will uncover the treacherous history of the city, and discover how it became abandoned.
I’ve uploaded the final installment of the Venusian Vengeance commentary track. To celebrate, I’ve also reduced the price of the game to $3.99 USD (Buy it here). You can find the whole commentary series here:
Most definitions of games will say something to the effect of “an interactive system of rules with a goal”. You have some sort of win condition you’re tying to achieve or at least a lose condition you’re trying to avoid, and you have to interact with a set of mechanics to improve the gamestate. The implication in this is that the fiction that gets overlain on this is useful for communicating the game-state, and creating context, but isn’t strictly necessary to play the game. If you understand the rules, you can use those rules to figure out how to win.
There is, however, a class of challenges that often occur in games where the solution isn’t based on any sort of defined ruleset. Situations where a certain pre-defined action has to be performed at a certain place or time. Point and Click Adventure games are almost entirely made out of these sorts of challenges. The only rule at play is “show the right item to the right person, or select the right dialogue option in order to proceed”. The actual solution to the problem is to understand the narrative context surrounding the decision. The story dropped hints that character X needed item Y. If you stripped away the fiction of the game, what would be left would be at best a random chance that you do something right, and at worst nearly impossible.
The mechanics at play in something like Phoenix Wright don’t constitute the challenge, they just facilitate the actual challenge, which is not itself mechanically based. You aren’t manipulating a system to achieve a goal, you’re understanding a story to come to a conclusion about that story.
Contrast this to a mechanical puzzle, for example a block-pushing puzzle or something like Tetris. You can figure out the solution solely by understanding the rules that govern the interactions between objects.
There are also many games that contain a mix of the two. Think about how much of a Zelda game you’d be able to play if it were in a language you don’t understand. Think of how much of it you wouldn’t be able to do. Combat and block puzzles would lose nothing in translation, but delivering Zelda’s note to the guard in Kokariko Village would be a frustrating effort in trial and error.
I don’t want to get into the “these things aren’t games” argument, because I don’t think that’s particularly productive. But it is interesting to see that a large subset of games can’t be played through an understanding of their rules alone, but rather by understanding the fiction of the world, and coming to a predetermined conclusion.
Working in 3D for Renegade Sector Pilot has introduced a whole new set of challenges in terms of enemy design. Especially since this is a rail-shooter, meaning enemies can move fairly freely in 3d space and aren’t confined to a single plane.
I had a basic idea for a standard enemy type. It would come up from behind the player then fly around in front of him and shoot back at him, and occasionally fall back behind the player. I wanted to get that feel of jockeying for position as it flies past you and it needed to have smooth but interesting movement, meaning it couldn’t just fly in a straight line, and it it would have to gradually turn to change direction.
The easy part was making it approach from behind. I gave it a max speed slightly higher than the player’s speed, and a minimum speed slightly less than the player speed. It then had an acceleration value. If it was behind the player, it would speed up by its acceleration value, and if it were ahead of the player it would slow down. I eventually changed this point to a little ways ahead of the player, that way it would spend more time in front of the player and only occasionally fall behind the player.
I then made it change its flight angle in small circles. I had a constantly-increasing counter, then made it’s x and y angle be based on the cos and sin of the counter. So it started flying in a little spiral. The problem, of course, was that it could fly out of bounds of the stage, hitting the tree wall or the ground.
The solution I finally came up with to this was to modify the angle based on the location of the ship. The closer it is to the edge of the stage, the more it’s angle is pushed in to the middle. If the ship is in the center of the stage, it could have an angle anywhere from -10 to 10, whereas if it’s at the far right, it could have an angle of -20 to 0.
Put that together, and you have enemy behavior that looks like this: