Wednesday, July 18, 2012

Lasers And Player Collision

Previously, I described how lasers collide with the environment in Bullet Time Ninja. Today, let's talk about how to detect collisions between lasers and the player.

The trick I used was to treat the player as a circle, and do a line-circle collision test.

I chose a circle since it fills out most of the ninja, while also leaving a bit of wiggle room to make the gameplay more forgiving. Alternatively, I could have done laser-box collision, but that one is a little more complicated.

Not to say that the circle one isn't.

Monday, April 30, 2012

Level Editor

You can now make your own levels to play in Bullet Time Ninja.

Here's how:

1) Download and Install "Ogmo Editor 0.917"

Download here:
Mirror 1
(if anyone has additional download links to share, please comment)

Begin installation

Wednesday, February 15, 2012


I launched Bullet Time Ninja on Kongregate in late January. The audience reception has been surprisingly polarized.

Players that figured out how to play the game, loved it. The game's average rating was above 3.7 (out of 5) after about 5,000 plays. Unfortunately, players that could not figure out how to play the game, absolutely hated it. Worse, the number of haters grew as the game got more exposure. By the end of the third day on Kongregate, the game had over 30,000 views, and a rating of 3.2 out of 5.

What the hell happened?

Let's take a look at the numbers:

This graph is the total number of players that completed each game level after 300 plays. Most players were friends or random USC students. With only a 10% completion drop on Level 1, and all signs pointed to a relatively smooth learning curve.

This graph is the collective total of players that completed each game level after 60,000 plays. Approximately 24.2% of players did not finish Level 1. Somehow, I failed to teach a sizable portion of players how to play the game. This completely caught me by surprise.

The people who didn't like the game made some blunt comments. Let's read through a few choice quotes:
stupid game 1/5
The problem with this game is it isn't fun.
i have a really hard time figuring out how to play this game, i feel it shouls be easer to dash.. just can t get the hang of it 
Feels really unnatural having S be the jump key and A be the focus key...
Controls would not be too bad if space was dash or jump and s was the other one. Or even W for jump, A to Focus, and D to dash. Just basically something other than what it is now.
is this really all it takes to get badges? wow, i should totally become a game developer. its not totally horrible, but giving this a 2. the controls are absolutely atrocious  
Rather awful. Spend your time elsewhere, this game blows

To have this game's release conclude with a slew of nasty comments really hurts. Had I made a nice amount of money from this game, I probably wouldn't care. However, as of early February, the game has not even made $100 in total revenue. I need $600 to break-even on my development budget. What's worse is that these comments and bad ratings have directly prevented the game from gaining further exposure. Was my design so wrong that the game deserved it?

The main complaints from players could be summed up as the following:
  1. You are not telling me how to play the game 
  2. The controls "don't work"
  3. The game controls should be like this.... (Customizable Key Controls)

The first complaint was both a design error and a demographic error. I was overconfident with my level design, and I assumed that most players were smart enough to figure out this game's steep learning curve with minimal guidance. In response to player complains, I made careful revisions to Level 1, literally posting signs that tell players what the controls are... yet the numbers still show that around 20% of players can't figure it out. Kongregate's demographic is simply not an ideal one for my game.

The second complaint is a stupid hardware problem called Key Jamming. A large number of computer keyboards simply cannot detect when 3 or more keys are held down at the same time. Unfortunately for me, Bullet Time Ninja needs to detect 4 keys being held at the same time for an optimal experience. There is nothing I can do to solve this problem, and ignorant players just assume that I did a crappy job. I think this is why Platformer games are still primarily sold on game consoles.

The third complaint highlights how emotionally attached players are to control schemes that they have already learned. Many players wanted A and S to be swapped, while others wanted WASD + JK to be the primary controls. There is no way to accomodate all of these needs in one control scheme, so I went out of my way to implement a complete customizable control menu.

Despite my changes to address player complaints, it looks like the damage has already been done. Bullet Time Ninja was not mentioned in the weekly Kongregate newsletter, and has not picked up press from any Game Development blogs.

These results are just not enough to justify the time or money that I put into this project. I don't think Independent Games are worth my time any more.




Although, comments like these, sometimes make the whole process worthwhile:
This game... is the most incredible kind of these games ever. not TOO hard. but not easy... plus the game was fast. and honestly, the reveiw... the most amazing thing I've eber seen. showing exactly how the ninja would have moved in real time. being able to see how it looked was incredible. Thank you, for an amazing game. Please make another.

Sunday, January 1, 2012

Lasers and Ray Casting

Let's talk about Lasers.

For lasers to work, we need to do two things:
  1. Shoot laser beams across the game level
  2. Detect collisions between lasers and the player
In this post I will talk about shooting the laser beam, and share some advanced Ray Casting code. My hope is that giving away this code will help flixel developers make better games.

Friday, December 30, 2011

Level Metrics

The December build of Bullet Time Ninja has been online for a few weeks now. I have been using analytics software to track how people have been playing the game. Today, I will share some of my metrics, and show how I am using this information to improve gameplay.

Above is a youtube video of the version of the game where these metrics were tracked.

Measuring Engagement
I use metrics in Bullet Time Ninja to see how many levels people play, and how many times people die in each level. In theory, if the game is extremely fun, most people will play the game all the way through. Otherwise, people will quit and play something else.

Thanks to free services like Playtomic, I can collect large amounts of player data, and organize it into pretty charts.

This chart shows how many people play each level:

Almost everyone plays the first level, but only about one-third of players make it all the way through to the end. Notice that the drop-off is pretty large in the early levels, but is a bit smaller in the later levels as players get more invested.

Tuesday, November 15, 2011

Wall Kicking

Here is how wall-kicking works:

Desired Outcome
When the player touches a wall, the player should continuously stick to the wall until:
  1. The player touches the ground
  2. The player jumps off the wall
  3. The player presses the DOWN key

The "First Frame" Problem
Most Platformer games collide the player against the environment every frame. When the player overlaps a piece of the ground, wall, or ceiling, the player is moved to the closest point that is not touching the environment. This means that we can only tell if the player touched the environment during the first frame that they touch it. Detecting continuous collision over multiple frames is a little trickier. 

It's pretty easy to tell if the player is constantly touching the ground, since we can count on gravity to keep the player falling through the floor every frame. On walls, we only know that the player has collided on the first touch (unless of course, something is constantly pushing the player into the wall. This is a bad idea unless your character is intentionally sticky, like Meat Boy).

Wednesday, September 28, 2011

Character Animation Logic

Character animation logic is a surprisingly complicated programming problem. Every single condition for making a character animate the correct way, in the correct context, needs to be explicitly defined by the programmer. Without a clear methodology, this kind of code quickly spirals out of control, and becomes a major pain during the game development process.

Today, I will walk through how I implemented Character Animation Logic in Bullet Time Ninja.

The code included with this article comes from an earlier build of Bullet Time Ninja, when I was still using the red ninja.

I chose to share this code instead of a recent build because the code is a lot more readable.