Posted on December 17, 2006
I was able to squeeze in a little work on the new game between trips to various shopping centers for Christmas presents. One thing I wanted to research is how collision detection is done in these overhead perspective retro games. I fired up the Atari 800 KRAZY Shootout first to look at this closer. In this game, if any part of the player touches a wall, the player if killed. It is very basic, but because the perspective in these games is not a true ‘ or a true overhead, it actually comes out playing odd. See the diagram below.
The red circle shows the head of the player. If this was a true ‘ perspective, the player would not be injured or hurt until his feet touch the blue wall. In this game, even the player’s head touching the wall results in a lost life. I will investigate trying to remedy this in my game.
The Berzerk games play basically the same. Marauder remedies this situation somewhat by using a true top-down perspective. It looks odd, and player even more odd (for other reasons), but is actually more realistic in a simple way. Since I plan to pattern my player movement after Berzerk (KRazy Shootout’s running player looks silly), I will need to either accept or remedy the all collisions.
My next step was to create some simple frames of animation for the player. The Berkerk Atari 800 player has two basic frames. One is a standing frame, and the other is a running frame. It doesn’t make for very fluid animation, but for this test, those two will be fine. A modification I want to make in my game is to have the gun arm controlled by the mouse. It won’t be 100% realistic, but moving the mouse left and right will rotate the gun to 8 different firing positions. This will allow the player to run in one direction and fire in the other.
Posted on December 16, 2006
With Retro Blaster nearly complete, I have decided to start on a new game. This one will be very simple. I plan to do a few simple games in the next few weeks to try out my bitmap animation techniques in a variety of more simple shooters. Since I love 8 and 16 bit retro games, I decided to try out some Atari 2600, 5200, 7800, and 800 games a make a list of the ones I want to tryout.
One of the best places to research Atari games is Atariage.com. They don’t cover Atari 800 games, but they have a full and complete listing of all carts (and most of the roms too) released for the Atari video game systems. I would love if they would add in a section for the XE Game System and list all of the carts released under that label, but so far they do not have that information. For the most extensive listing of Atari 800/XL and XE games, there is no better resource that Atarimania.com.
One of the first games I played in the arcades of the 80’s was Berzerk. There were a number of versions of this game made for various Atari systems. Atari released the arcade port on the 2600, 5200, and 800/XL/XE. There was also game very similar game called K-razy Shootout released for the Atari 800. Yet another similar clone was a game called Marauder. I will play all of these and maybe a few more clones, if I can find them, to create a non-scrolling, screen, by screen adventure / shoot ’em up. To keep it simple, the maze screens will be the same each game, but you will start in a different room each game. There will be some items to collect, a few extra weapons and power ups to find, and a ‘reactor’ or similar item that will need to be destroyed before the player moves to the next level. Each level will use the same screens, maybe mixed up randomly, but will get progressively harder with more enemies to fight and fewer health and weapon power ups to collects. That seems pretty simple.. I’ll play the games emulated to get some more ideas.
One thing I disliked about 80’s games was the use of ‘men’ or ‘ships’ to depict lives. This is purely personal taste, but I like the convention of health or hit points. I used that idea in Retro Blaster, and I assume I will use the same convention in this game. It helps makes all games a little more role playing-like and adds a little bit of extra strategy to the game. Also, while I love games like 1942, I hate that every time I get hit by any ordinance, my plane crashed and I had to start over. I may love retro style games, but if I can improve on older conventions and make them more fun (for me at least) I will. Now, on to the games:
Atari 2600 Berzerk
This is a pretty good version of the game. The arcade game wasn’t overly complicated, but this is still a very impressive game considering the limitations of the Atari 2600 hardware. The basic idea is to run from room to room, shooting the ‘Cylon’ like robots. If you stay too long in a room, Evil Otto will arrive and try to destroy you player. Some interesting things to note about this version:
1. You can only shoot one shot at a time.
2. The little light on the front of the ‘Cylon’ moves left to right, and is not a light, but just a rectangle that is the same color as the floor.
3. Evil Otto comes out in game variation #2 pretty quickly, and makes the game a little too difficult.
4. There is no point to the game other than surviving for as long as you can and racking up a score. There is nothing wrong with goals as un-lofty as these, especially for a retro game.
Atari 800 Berzerk
This version is much closer to arcade perfect than the Atari 2600 version. It adds a couple elements not in that game. Here are my observations about this version.
1. You get a bonus for shooting every robot on the screen without dying, and you can shoot two bullets at a time. The bonus is in the 2600 version (10 points for each robot, but it doesn’t say Bonus, it just puts the extra score on the screen in place of the user score)
2. The game is still too damn difficult to play though.
3. The robot heads rotate in this one very much like the 2600 version.
4. Also, the door the player entered through will be sealed off with a different colored wall so he/she cannot go back through to safety.
5. Oh yeah, in both 2600 and 800 versions, you will die if you touch any of the walls. Now, I don’t want to get picky about ‘realism’ in 2d game where you are being chased by robots and a bouncing happy face will kill you, but who in their right mind would build a maze in which the walls kill any who touch them? I might add this ‘feature’ into my game, but then again, I may not,
This game is much like Berezek with some well defined differences.
- There are only a limited number of maze screens. Each is slightly more elaborate than the screens in berserk.
- The player’s goal is to find and destroy a power cell before a bonus gage at the bottom of the screen runs out.
- The game is much more colorful, but ultimately uglier than Berzerk. The player and enemy characters are down right weird. The reason for this is the added ‘realism’ in the game. First off, the characters are all view from a direct above perspective. This explains how squashed everything looks. Also, enemy robots and valuable items (well item) will be hidden or invisible from view if they are behind a wall. You, as a player looking at a birds-eye view of the game do not have an advantage over the player on the ground. It makes the game strange to play, but it is an interesting idea.
- The goal of the game is to destroy the shoot a power cell on one of the screens, and then do it all over again, and again and again. It is ultimately too easy.
- The one very unique thing about this game is the ability to pick up magic amour that will protect the player for a few seconds.
Atari 800 Marauder
The graphics in this version are much higher resolution than the Atari 2600 version. Unfortunately it was based on a Apple II game and uses a black and white or only dithered color mode of the 6502. The 2600 version comes out looking slight better because of this. This version plays and sounds much better than the 2600 version though. It contains many more screen variations and a very satisfying explosion when the player shoots the power cell. I can’t find any instructions for the game. Atarimania.com does have a review and some good comments on the game, but without the docs, I have no idea if there is a set of magic armor in this game. Special note, this is actually stage 2 of a 2 stage game. Stratos is the first stage. It is a completely different game. It is more of a Missile Command / Space Invaders style game with more colors on the screen.
K byte software made quite a few arcade game clones for the 800. KRAZY Shootout was one of the first games I ever played on my 800 on Christmas morning in 1982. I remember being amazed at the detail in the images and explosions. There are many nice features and touches in this game.
- When the player leaves a screen, it animates out in a unique way, flattening down like a pancake. Also between screens there is a bonus counting screen. Bonus is awarded based on how much time it takes the player to finish a screen. There are three bars at the top of the screen: green, yellow and red. The player receives bonus if he/she can clear a screen while in the green or yellow zone. If you don’t shoot all of the enemy robots before the end of the red zone, you have to start the zone over again.
- The maze screens are created at random.
- Beside enemy robots that are on the screen when the maze appears, more will generate in as the player destroys robots. Also, there is radioactive debris lying around the screens that must be avoided.
- The control in the game is very well done. Your player cannot run and shoot, if the action button is pressed down, the player will stop. The gun can then be aimed in any of 8 directions and fired.
My Retro Gone Berserk game.
I imagine that I will make a game that is more a combo of K-RAZY Shootout and Marauder than just plain Berkerk. For a ‘quicky’ game, I still need to add enough elements to keep it fun. It needs some of the game play sensibilities that the NES and Sega Master System brought to gaming in the late 80’s. Those would be extra weapons and maybe a secret room. Here is a basic outline for the game I will create in Flash.
- The game will be in a maze of rooms in a 5×5 grid. That will be 25 rooms. All rooms will have doors at the top, bottom, left and right. For each game and each level, the rooms will be the same structure, but they will be randomly placed in the 5×5 grid.
- The start room will always be on the edge of the grid. The goal will be to destroy the power cell, and exit back through where you came.
- All of the outside doors, the door that would lead to no where if on the edge of the grid will take the user to the opposite side of the grid. That will be the case in every room BUT the start room. In the start room, the outer door will be marked ‘Exit’ and exiting through it will trigger the end of level sequence.
- There will be a timer like in KRazy Shootout. It will look like a colored bar and start at green. It will slowly change from green to yellow to red. The player will get more bonus points if he/she finishes the level in the green or yellow portion of the timer.
- The player will have attributes much like in a role playing game. There will only be a select number of these attributes. Hit Points will act like a life meter. When Hit Points reaches 0, the game is over. Shield will represent how many hits the player can take before Hit Points will be deducted. Shield and Hit Point upgrades can be found in chests. Fire Power will represent how powerful the player weapon is. It will start relatively low, but will increase as the player picks up Gun upgrades from chests. The gun upgrades will add to the number of bullets on the screen at one time, the number of barrels the gun contains, and the size of the guns bullets. There will be some nasty fire power at 100% gun power.
- The power cell will explode, injuring the player if not destroyed by before the time runs out.
- The enemy will be robots. There will be a couple types of robots. The basic drones will just fire and move randomly. The chasers will come right at the player and try to hit him. The Black Knights will be the hardest. They will shoot directly at the player and become much more difficult to destroy in later levels.
- The walls will be radioactive and the player’s shield or hit points will be drained in he/she touches a wall.
- I want to attempt to use a mouse/keyboard control scheme. The player will move up, down, left and right with the WSAD keys, but will move his gun arm 360 degrees with the mouse and shoot with the mouse button.
Next up: My first milestone in creating this game will be to demo a maze and movement noted above. The next blog entry will be a discussion of and a playable version of this demo.
Posted on December 15, 2006
Right now, Steve is putting the final touches on the technical design for our 8bitrocket.com site. It won’t be spectacular looking, but that is because we want a pretty basic site. While he is doing that, I am finishing up my latest game called Retro Blaster. It is basically Asteroids, but I have put a lot of work into the Actionscript animation engine, so it is more of a tech demo that has ballooned into a much larger game.
Retro Blaster uses a relatively new Flash 8 technique that I call bitmap animation caching. It is an idea that I got from a short optimization conversation I had with Jobe Makar (http://www.electrotank.com/) about blitting objects on the screen in Flash. One of the largest resource hogs in Flash is the rendering engine. Complex animations, with many points, use up an incredible amount of resources. For example, I am using Steve’s particle engine to create explosions. These explosions use a small version of the object that is exploding as a base particle. The objects can have many points, and the particle engine will create individual particles from these small versions of the objects. Basic Movieclip bitmap caching is fine for objects that are simply moving across the screen, but if an object needs to run through an animation sequence, Movieclip bitmap caching is completely useless because it will cache each animation change each frame and because the screen is invalidated on each frame, you derive absolutely not benefit from the cache. In some cases, the system runs even slower than without Movieclip bitmap caching.
My solution was to copy each frame of an animation into a Bitmapdata object. All of those objects are pushed into an array. When played back in sequence by copying each frame in the array to a MovieClip you eliminate much of the resource use (not all, but about 75%) compared to rendering on the fly. Basically this amounts to pre-rending all of the animations needed for game play. Everything from explosions to asteroids rotating can be cached in a BitmapData array and displayed when needed.
My first attempts at this amount to simple tech demos where I places as many as 1000 objects on the screen, and displayed their cached and non-cached animations. I calculated the frame rate.The frame rate for 1000 non-cached objects never rose about 7FPS on my Dual Core 3Ghz machine.
See a demo of 1000 objects rendered with plain vanilla Flash rendering
The frame rate for 1000 cached objects would hover around 18FPS. That means I could put nearly 3x the number of objects on the screen with my new method.
See the demo of 1000 animation cached objects<.
Since a decent Asteroids clone would probably never need more than 100 objects moving and animated on the screen, I decided that I could lover the number to 300 and check the frame rate. At 300 objects, the frame rate stayed at a comfortable 30FPS and didn’t budge. That made me feel secure that I could sustain at least 25 FPS, even in the most hectic of Asteroids games.
See the demo of 300 animation cached objects.
All three of these frame per second calculations will be slightly lower when played in a web browser. I timed these inside of the Flash IDE. This problem can be aleviated in a number of ways. The best is to set your movie FPS to 100, and then use setInterval to run your game loop. If you must use onEnterFrame, then make sure to play with the wmode propeties of the imbed code to see which value works for the specific browser you are targeting.
Retro Blaster was born out of this. I started with my own rudimentary graphics, but after being completely unimpressed with my artistic ability, I asked a co-working named Marc Manalli to help out. He is a very gifted illustrator and was able to whip up some great stuff in just a few hours.