[MJW: About two years ago, Kevin contacted me to ask a question about my Avoider Game tutorial. Since then we've been communicating frequently, and I've had the great pleasure of seeing his game develop, and of seeing Kevin himself develop as a game creator. The code, graphics, sound, and music in the game were all made by him, which is a truly impressive achievement. Now that the game has since been sponsored (by MaxGames , through FGL), Kevin and I thought it would be interesting for him to share the development process. I hope you enjoy it!]
To start off, this is story about somebody who knew nothing about ActionScript 3.0 or ever made a Flash game in his life. He spent two years on a game, from start to finish, which meant learning AS3, making graphics, composing music, and putting it all together 4-5 times, until it finally got sponsored and put online.
I was inspired to make a Flash game as I couldn’t understand why there wasn’t a Flash game with advanced artificial intelligence. I wasn’t asking for much, just for NPcs to stop seeing me through walls, for them to strafe and hide behind cover, and to have allies on my side who fight with me. I looked online, unsatisfied with each game I played, unable to find that one game that fits me. The closest game to what I wanted was Endless War 3. I looked at the game and said to myself “I can do this, but make the NPCs smarter”.
Before I continue, remember there is always a reason behind why things are done a certain way. A reason Flash games aren’t too advanced.
I started with learning ActionScript, making things move. I looked online for tutorials, ran across a few, and this site is by far the best site to start out learning how to make your own game. It reminds me of those “____ for Dummies” books, which explain with clarity each detail what you are doing, and why you’re doing it, without taking in too much information.
Shortly after completing the 12 tutorials of avoider game, I worked on making NPCs not see through walls. I started with lines that were connected to the NPC, which bent and resized to “feel” the surroundings, locking onto targets and following them if conditions were met. My NPCs had (and still have) three lines of sight, to detect walls, to detect distance, to detect other npcs, and most importantly, figure out what to do with the given information. All this was needed for an NPC to navigate around walls, and determine when they see another NPC.
I wont go into menu interface (headache) hehe. One major change I did was alliance. NPCs were grouped up and put in a loop within a loop. Maybe even three loops, detecting each other, testing each other to see if they were friends.
Throughout my experience developing this game, it went through several graphical and musical changes. I learned no matter how many times you change the graphics, or music, it wont look or sound much better. Doing the same thing over and over doesn’t produce a different result; insanity.
Next time you look at this game, remember its engine is built from avoider game, just with a bit added on to it. “
MoveABit()” is still in the code, moving the NPCs at a specified speed. The only difference is the speed varies from one NPC to the next, and the direction is always changing.
A few tips:
Don’t always change something becuase a few people don’t like it, unless they are paying you.
When your game is up for bid and you get a bid, don’t reject it no matter how low it is, well $10 might be pushing it.
Start small, simple. Make a simple game and finish it. Then move onto a slightly bigger project.
Back up your files
Back up your files again
Do the above or else! I say do it for every “medium” update. FLAs can corrupt themselves and refuse to open. As your project gets bigger in code, more things can go wrong. Make use of catching errors and separating code into functions.
Check out these versions of the game.