Archive for June, 2010

End Of June

By the end of June, Dead End was supposed to be finished. It’s not. I did lose at least a week due to a hard drive crash. So that means that I should be able to be finished in one more week. I’m not so sure that will happen. The majority of my to-do list is as follows:

  1. Make a list of achievements and make them obtainable.
    - I figure it’ll take me a day to make up the list and a generic way to award, save and load achievements. The longer part will probably be awarding them when specific events happen. That might take me another day. But of course it depends how long I get to work on it.
  2. Record stats during level; accuracy, times healed, etc.
    I’ll probably do this before figuring out the awarding of achievements since a lot of that depends upon level stats.
  3. Finish up adding level enemies and difficulty tweaking.
    This is what I’m doing now and it will probably take the longest. Getting all of the enemies in there so that it’s not too easy and not too hard is difficult.
  4. Add an endless mode.
    This will start at easy level and progress through and never end.
  5. Make a lite version.
    This will be when everything is finished. The lite version will have ads and only 2 levels.
  6. Maybe a time attack mode.
    I haven’t decided if I want to add this now or in an update. I guess it depends how long everything else takes me but I want to release the game soon and adding this mode will only prolong things.

That’s about it aside from bug fixes and minor additions. Maybe I’ll add another zombie type or something if I think of it.

Oh well, I know nobody reads this but writing all this out does help me focus better on what absolutely needs to be done.


Dead End Progress

I’m making progress with Dead End and think it might actually be finished in the near future. I still have to add enemies to all the levels and increase the number of enemies, enemy damage and cash for the difficulties. Some other stuff needs to be done but that’s the main work left. I’m not sure how long it will actually take because it seems like some tweaking with weapon costs and enemy amounts will need to be done to make the difficulties work properly.


Project Hosting

I just wanted to take a moment and mention how thankful I am for project hosting. I have Dead End’s source privately hosted on Unfuddle. This allows me to use tickets to track work needing to be done and more importantly, they have all of the source code in a Subversion repository.

I didn’t find out how glad I was to be using Unfuddle until my hard drive crashed and I lost everything on it. Since I’m developing Dead End by myself I really don’t have a need for source control other than it helps me stay organized. I could just as easily stored the project locally but then it would all be gone.

If you’re starting out a solo project and storing it locally, either make frequent backups or consider using a project hosting service like Unfuddle. It’s free for the first project so there’s nothing to lose.


Accelerometer Player Control

If you’ve checked out the alpha release of Dead End, you will have noticed that the primary way of controlling the player is through the use of the accelerometer.

The accelerometer measures the force of gravity on the phone’s X, Y and Z axes relative to its current orientation. On earth that would mean that value can be between +/- 9.8 (although my phone maxes out at +/- 10.5, I don’t know why). Take the Z axis for instance. The Z axis runs directly perpendicular to the screen of the phone. If you have the phone standing vertical with the screen facing you, the Z axis will be completely horizontal and the accelerometer will give a 0 value for that axis. If you tilt the screen forward until it’s facing the ground then you will get the max value on that axis.

In Dead End, I take the value the accelerometer gives me and I translate this into a rotation degree for that axis. Turning the phone all the way to the left should rotate the player 90 degrees to the left. So the max value of the accelerometer corresponds to 90 degrees and the angles in between can easily be interpolated.


int mAccelMax = 10;
float mAccelMult = 90 / mAccelMax;
if(y > mAccelMax)
  y = mAccelMax;
else if (j < -mAccelMax)
  y = -mAccelMax;


rotate = y * mAccelMult;

Here, y is the accelerometer value for the y-axis. We define a value which is the accelerometer value at which the rotation should be 90 degrees. Here I made that 10, roughly the max value my phone reports. The multiplier is what interpolates the values in between. Since the max is 10 and we want to go a total of 90 degrees, each time we go up 1 on the accelerometer, we want to rotate 9 degrees. At 10, this will be 90 degrees.

If you want to make the tilt control more sensitive then all you have to do is lower the max value. This will cause mAccelMult to increase which increases the rotation each time we go up 1 on the accelerometer.

You can also redefine the center of rotation, the point where the accelerometer reports 0 and rotation is 0. This allows players to decide how the orientation that they hold the phone at rather than defining it for them. To do this, just subtract the accelerometer value of the point you want to be the center from the current reading.


y -= mHorizontalCenter;


int mAccelMax = 10;
float mAccelMult = 90 / mAccelMax;
if(y > mAccelMax)
  y = mAccelMax;
else if (j < -mAccelMax)
  y = -mAccelMax;


rotate = y * mAccelMult;

As you can see, this is the same code as before except for the very first line.

It's easy enough to use the options menu to allow the player to set tilt sensitivity and horizontal/vertical centers.

Next time I'll post about a problem I had with tilting the phone too much in one direction while having a custom centering point.


Copyright © 1996-2010 Infectious Entertainment. All rights reserved.
Jarrah theme by Templates Next | Powered by WordPress