• Register

This member has provided no bio about themself...

RSS My Blogs

Cruel New Game Mechanic

meteorfury Blog

It know I have been slacking keeping up-to-date with this blog, but I figured that nobody wants to be completely bombarded with newsletters and I figured that waiting a little longer to post would mean more information to share. So, let’s get down and dirty, shall we?

Game Mechanics

What is in the world are game mechanics? Well, every game has them and Wikipedia defines game mechanics as the constructs of rules or methods designed for interaction with the game state. Mechanics in a game like Super Mario Brothers could be as simple as running and jumping, but only moving forward. As simple as it sounds, the game is nearly one of the most popular in the world just by those simple rules.

My game was lacking something. So for the past few days I was thinking about how can I make this game more challenging, but still fun. It finally hit me today and although it may not sound much to you, it does have a huge impact on how the game is played and how much you are willing to risk to get the reward. The mechanic is simply a super weapon. The only way to get this super weapon is to stop firing your photo phasers (lifting your finger off the screen). While you are not firing and enemies are starting to surround you, there is a meter that will be filling up charging your new awesome weapon.

The risk? Well, you risk losing the game by getting killed trying to charge it. The reward is a massive weapon that could sway the balance of victory toward your side. You will have to make that choice when everything is said and done. Below are some screenshots of the meter charging and the effects the weapon had! Love it!

Screenshots

meteor-fury-action-addicting-shmup-space-shooter-ios-arcade-game-screenshot-201600206003 meteor-fury-action-addicting-shmup-space-shooter-ios-arcade-game-screenshot-201600206002

Screenshots Updated

meteorfury Blog

Today is going to be a quick post. I just wanted to show you some of the updated screenshots I have created. My goal for the release of this game is staged for February. I have accomplished more than what I thought I could in the past few weeks. I trimmed a lot of fat out of the game that would have just made it way too complicated. The level editor I have built for the game has completely streamlined the process and enabled me to throw in some cool effects.

The biggest hurdles I have facing me next is to wrap up the User Interface and create a series of Enemy Bosses for each level. I figured I would start out with a small release first and do incremental updates going further adding the features that I really want to have in it. So, without further ado, here are some of the newest screenshots I have taken:

meteor fury action addicting shm 28 meteor fury action addicting shm 27

Steering Behaviors

meteorfury Blog

What’s up everyone? Hope all is well. I know I haven’t updated in a while, but don’t fret, I am still alive and kicking. You may be wondering why I named this post Steering Behaviors. For quite a long time I sought out a way to create an algorithm that would simulate heat-seeking missiles. While the past version of it did work, it was not realistic. I had my work set out for me since my skills in Math and Physics were in the days of the past. It was time to research.

The Original Algorithm

I was pretty excited when I got this working. The concept was pretty simple and in some ways sort of easy. When a missile would launch from the player it set the target location x and y coordinate and off it went. Each frame update of the game would monitor the target’s current x and y coordinate, rotate, and move accordingly. It was pretty awesome seeing watching this work. In some of the older videos that I have made show it in action.

There was only one thing that I didn’t like and that was the simple fact that when the missile would launch from the player it would make a bee-line trajectory towards its target. The intended behavior that I really wanted was for it to launch out of the ship at a constant rate of acceleration and then it would start to seek out its target when it reached the desired altitude. I tried many hacks, and while some worked (in a way), it was not the sort of behavior that I was “seeking” :).

The New Seek Algorithm

I took to the web to research ways that I could implement the functionality that I really wanted. I then stumbled across Craig Reynolds 1999 paper on Steering Behaviors for Autonomous Characters. This was exactly what I needed. It was the exact functionality I sought out. There was a lot of sample code out there that implemented it, but it didn’t directly related to Objective-C. Before even translating the multiple examples on the web, I needed to understand exactly what it was this algorithm was doing. Here is some sample code in Objective-C for the steering algorithm:


- (void) seek : (CFTimeInterval) dt toTarget : (CGPoint) target
{
    /* DESIRED VECTOR */
    CGPoint desired     = [Vector2D normalize:[Vector2D offset:self.position withTarget:target]];
    desired             = [Vector2D multiply:desired withScalar:self.maxSpeed];
    
    /* STEERING */
    CGPoint steering    = [Vector2D subtract:self.velocity from:desired];
    steering            = [Vector2D limit:steering withMax:self.maxForce];
    
    self.acceleration   = [Vector2D add:self.acceleration to:steering];
    
    self.velocity       = [Vector2D add:self.velocity to:self.acceleration];
    self.velocity       = [Vector2D limit:self.velocity withMax:self.maxSpeed];
    
    
    /* POSITION */
    self.position       = [Vector2D add:CGPointMake(self.velocity.x * dt, self.velocity.y * dt) to:self.position];
    
    /* FACING */
    self.zRotation      = [Vector2D angle:self.velocity];
    self.zRotation      = DegreesToRadians(ceilf(RadiansToDegrees(self.zRotation)));
    
    return ;
}


What my original algorithm was missing was the steering component and acceleration. The velocity was completely computed by the desired vector at a set maxSpeed. Essentially the missile would launch at full speed and make a bee-line directly toward the target. This solution accelerates at a slower pace while limiting the velocity to max speed and limiting the steering force by a max force. I was pretty amazed at how awesome this worked. I would definitely suggest reading that paper I linked above and search for other steering examples that he has proposed in his paper. What would all this jargon be without an example? Well, take a look at this video and in the very beginning you will see me set the target. Watch how the missile travels upwards and then comes back down seeking the target location:

Have a great day all!

Almost Burned Out

meteorfury Blog

This week was nothing but frustrating. I came very close to tearing down most of the game and re-building it. The idea sounded natural and good, but it wasn’t. I was kind of in a state of limbo. I have been working on this game for quite a bit of time. Everyone always said the last 20% is no joke. Now I can clearly see why. Yyou start to sit there questioning a lot of things. You question things like is this good enough? Is this worth continuing? Those that have worked on projects for a long time tend to ask themselves the same questions. Now I know why most people never finished making the games they had originally sought out. They completely burned out or just let their negative thoughts consume them. It almost happened to me. So what happened?

I’m a beginner

I consider myself an accomplished programmer. I have been doing it for well over 15 years professionally. Game programming was nothing something I was accustomed to. Sure, the programming part I knew I wouldn’t have an issue with, but it was the multitude of other things that go along with making games like

  • Graphics
  • Music
  • Sound Effects
  • Marketing
  • New Technology
  • Knowledge
  • Blog Updating
  • Keeping in touch with the Gaming Community
  • Time

There are many other facets that go along with making games. These are some of the major ones that I can think of off the top of my head. The fact that I am a beginner is the reason why this project has been taking so long. There is so much out there to learn and when you think you know it all, there is something else lurking around the corner that needs to be learned. It is a continuous process. I never thought once in my life that it would have taken this long to build something like this. Being the beginner is not that easy and one can simply fall by the wayside if you let things get to you.

The call for help

Sometimes we all need a little boost. We all need a little advice and some of those secret words of wisdom that inspire us. We all do and it is perfectly OK. I needed some help. I took to the /r/gamedev boards where I talked about two major kinks in my game that were pushing me to start over.

Level design

I took to reddit to pose a question about level design. The more I researched the topic of my game the more I saw that people were creating level editors to build them out. I originally thought to myself saying that there is no way in hell that I would need such a thing. The problem was that my level coding was getting extremely bloated and almost getting to the point of being non-manageable. It was frustrating adding just a couple of things and by the time I finished coding it, I didn’t like it anymore or didn’t like the way it was doing what it was doing.

The grand consensus was that I should be building a rudimentary level editing system that would alleviate the strains of hardcoding it into the game itself. The idea itself made sense, but I didn’t really know where to start. It was back to the drawing boards and I have finally come up with a solution for it. Now I just have to build it and that is my current task for the weekend. The level editor will be built with HTML / Javascript / JQuery. It will simply build out the levels in JSON format that can be read by Objective-C and then translated into the precise movements, behaviours, colors, etc for the level.

Programming flaws

Remember I said I was a good programmer? :) Well, I am, but at times we all step into shit here and there. The fact that I am a beginner at game programming is the biggest problem. I knew absolutely nothing in the beginning when I started to program this game. I would read, code, test, and code again until something worked. As time went on I naturally become more proficient in things. What was happening was that the older stuff that I had worked on when I first started was really not done the correct way. The process had become putting band-aids on top of band-aids. This is when I took to reddit again to ask some advice about rewriting my game the correct way.

The support and responses I got back were insurmountable. Some of the smartest people in the industry have discussed what I was going through and that they have all done the same thing in the past and in some ways continue to do so now. It was pretty cool knowing that I wasn’t the only one going through this type of thing. I was very close to refactoring the entire game and starting over. In the back of my mind I knew it wasn’t a good idea. I knew it would take a tremendous amount of time to do and a lot of the folks giving me advice said there would be a good chance I would be back to where I started out with but with a different game :) That wasn’t enticing at all. I took a couple of days off from programming to build out a plan of attack.

Plan of attack

I am not going to be restarting this game. What I have decided to do was unplug the bad pieces of code and refactor them. I will continue this process until I am satisfied with the results and things are working the way I want them. The second biggest thing which I discussed above was building a level editor. This will reduce the stress and complexity of trying to hardcode it in the game itself and give me more of a visual of what the levels will look like instead of trying to imagine what is going on. I have cut down a lot of the features I wanted to put into this version and did so because I want to release this game. Personally, I think it is a lot of fun and I would much rather complete something, get it out to the public, and at the same time concurrently work on future updates to the game where I can release monthly updates. That is my plan. My plan is to finish this game. My plan is for all of you out there to friggin enjoy playing what I have created.

Peace out, folks!

Meteor Fury is Explosive

meteorfury Blog

For the longest time that I can remember playing video games as a kid, I just loved the way the explosions felt and they way they were animated. It was quite a satisfying feeling. I always gravitated toward the space shoot-em-ups (SHMUPS). Funny, not once in my life did I ever think I would be a computer programmer capable of actually producing something that I loved as a child. I am pretty excited to show you the results the hard work I have put in over the past week. I pretty much focused on 3 main areas. So, let’s get to it … Oh, for the newcomers, welcome! For those that continuous read these posts, thank you .. seriously, it means a lot!

Explosions

When I started learning how to program in sprite kit, I was new and I pretty much had no idea wtf I was doing. I mean, I knew how to program and I have made a couple of small games in the past, but this is, by far, the biggest venture I have taken.

Like I said above, the explosions were something I always just wanted to get right; something I wanted to look and feel good. I have gone through many transitions of how I wanted them to look and if you looked at some of my older screenshots you would know what I am talking about.

Here are a couple of samples of what I am talking about:

meteor fury action addicting shm 3 meteor fury action addicting shm 7

Special Weapons

What is a space shooter game without awesome weapons? Well, go out and get yourself a pet rock and let me know how that goes. There are going to be a few of them for this release and in future upgradeable releases there will be a lot more.

The one that I really wanted to get done right were the heat-seeking missiles. They are AWESOME. You can either tap anywhere on the screen and the missile will head there and make a nice BOOM! or you can click on an enemy target and the missile will follow it until its demise.

I was able to complete this last night, but now without 8 cups of coffee and scotch tape to hold up my eye-lids. The results were awesome, but I need to clean up the code a little bit to make it more efficient. Here are some samples:

meteor fury action addicting shm 4

Level Editing

Yeah, I have discussed this before; a lot actually. Most of my levels are hardcoded into the game itself. While this works for me, in the future it will be cumbersome if someone wanted to create their own. I have been fighting the idea of creating a level editor for some time, but I am now convinced that building a very basic one is a necessity.

I am not talking Mario Maker here, I am talking about a basic text document created that will be read by my game to generate the enemies based on certain time-intervals and conditions.

This game is going to be hard, but it is going to be a lot of fun. Thee will be a lot of things to blow up! Check out my IndieDB account as well. I just created my game profile there and it would be awesome if you guys could check it out once in a while. Stay tuned folks. We are getting there!