Destructoid: The Myth Of Casual Gaming = Midcore?
Jim Sterling over at Destructoid has written a very insightful blog about The Myth Of Casual Gaming . Jim writes:
The truth of the matter is that the hardcore/casual divide is little more than a myth, and the companies that are so desperate to secure themselves a casual demographic are doing little else than chasing rainbows.
Jim seems to be covering some of the same ground that Jeff covered in his original blog about Midcore gamers. However, I don't think Jim would agree to any term to describe his feelings, especially one thought-up by a little dev blog like 8bitrocket.com. Still it seems that the idea of there being a majority of gamers that are not described by the terms Casual or Hardcore, abut are simply gamers that want some logical features added to their games is a growing idea, even if the list of features is a moving target.
We will continue to cover this "idea" using the term Midcore, because we like it and it seems appropriate, but when someone as insightful as Jim has thoughts along similar lines, we will support those as well, even if that same person might not support us. Thne import part is to spread care about the the concept of "Midcore" in whatever form it might take, not simply to advertise a moniker.
Flash Game Inter-web Mash-Up: Feb. 21, 2008
Blogs and other cool stuff that might interest the Flash game developer.
Funface Games has an absolutely outstanding article on how to promote your Flash games. This is a must read for anyone serious about making games for a living.
Ira Wiley at One More Blog has recently published an article called How To Make A Successful Flash Game. Ira discusses the criteria he uses to review games for AddictingGames.com. It is a great analysis of what it takes to make a game successful.
The ArmorBlog has a relatively new one on how to become a game developer.It has some very useful information, and points beginners to Flash and AS3.
Scott Bilas, from Drizzle.com, discusses the Oberon development team's experiences in building Flash games. The team is made up of former members of AAA game development teams who decided to try their hand at the casual games market. The article discusses, in detail, what tools and resources a professional game developer will need when he/she starts to work in Flash. It also includes some interesting tricks, tips, and overall is a very useful and full of good information.
King of American Kong
I have been feverishly trying to put the final touches on my latest game, Pumpkin Man, but have been stalled by the movie King Of Kong. Steve and my sister were discussing it today, and even though I have been itching to see it, I haven't had time. I was jealous that they had seen it, so I ran out and rented a copy. After watching it, all of the special features, and listening to all of the commentaries, I am in awe. The best documentary I had seen before this was a little know opus on middle American film makers called American Movie. King of Kong is just as good or better.
American Movie told the story of Mark Borchardt and his struggles to a create a horror film will little money, poor equipment, but a lot of heart and some talent. The film is filled with real life American wonders in its characters. Some of them seem too far fetched to be actually real, but I have never heard anyone claim they were anything but. Very much in the same vein, King of Kong is filled with interesting characters that almost seem impossibly surreal. Like most cinema (and much of today's new media), some information is left out to tell a good story. Don't worry about that until after you watch the film though. It is a riveting underdog story with touches of treachery and that will keep you glued to your seat.
It tells the story of Steve Weibe, a school science teacher who is trying to beat the Twin Galaxies posted high score on Donkey Kong. Steve is very much a West coast outsider threat to the old boy network protected Donkey Kong high scores of the Twin Galaxies own Billy Mitchell. Steve struggles (seemingly alone) against a cast of over-the-top villains that wouldn't seem out of place in episodes Knight Rider, or the A-team. Mitchell is made out to be a little shifty and dishonest, while the Twin Galaxies gang's one-sided poor treatment of Weibe (for the most part) will leave a bad taste in your mouth. Of course, it is mostly a one-side take, and I know it has come under fire a little for compressing time, and leaving out some material. All that being said, it is a great work of art, and a must see for any film fan, especially a retro fanatic like myself.
Flash Game Development Inter-web mash up : Feb. 14, 2008
The latest in Blog entries and articles that might interest Flash game developers.
On GamingYourWay.com, Squize has finished his latest commercial game - a Rainbow Islands (at least to me) inspired platformer with a Valentines Day theme. Leading up to the release, he has a series of blog entries detailing the development. It is some interesting reading.
Mochiland has the story of Will Hankins's Filler, a game that to me seems inspired by the classic Qix, but with ball physics. Basically, the article details how Will agonized over taking one of a few Exclusive offers for his game, but finally chose to go the non-exclusive route and made much more money. It is a good read, and very important for those of us that don't want to feel pressure to give up our own developed IP to someone at a very low (most of the times insulting) excusive offer price. You will read that Will did get some non-insulting offers, but most of us have received dreg offers for games we have worked countless hours on. If more people follow Will's lessons, maybe the market rate for good games will go up to a deserving rate rather than drop to an even more embarrassing level than today.
We, at 8bitrocket have released the third part of the multi-part lesson on creating an Asteroids game in AS3. In this part I show how to use a sprite sheet to animate missile animations to a single BitmapData canvas.
Jess Hansen has the first part of what might prove to be a very nice set of tutorials for Flash Game developers called, Common Flash game programming challenges, part 1: Rotation with radius. It covers the topic of how to use AS3 to create a moon style object rotate around another object. He goes on to create a game that is similar to some of the 2D Super Mario Galaxy clones being developed right now. This is a great tutorial! His blog is pretty new, but promising. Here is a link to his first game is a physics based puzzled called Minelink.
Real World Software Development has the interesting take on why Silverlight and Microsoft will dominate the Internet.
Tutorial: Using Flash CS3 and Actionscript 3 to create Atari 7800 Asteroids Part 3
In Part 1 we covered creating an array of pre-calculated vector values for animating our player ship. We also covered caching the rotated frames of the ship in an array of BitmapData objects. We then added the ship to the screen and move it with the keyboard.
In Part 2 we covered adding the asteroids to the screen. The asteroid animation was cached into an array in a different manner then the ship rotation. With the asteroids, we took the frames of a timeline animation and drew each one into a BitmapData image that was placed into an array.
In this lesson, we will cover shooting the missiles from the player ship. We will use a third type of BitmapData animation caching by implementing a sprite sheet. We will cache the frames from the sprite sheet into an array and play them back when the missiles are in flight. We will also add code to capture the [z] key for firing missiles, and implement a method to limit the number of missiles the player can have in flight at any one time.
Creating the missile sprite sheet.
To create the missile sprite sheet I first fired up Fireworks (my graphic editor of choice). In Fireworks, I create a new image with a width of 40 and a height of 4. I plan to have 10 frames of animation and a 4x4 missile. Using the limited creativity at my disposal, I created 10 missile frames by changing the color of the missile on each of the 10 frames. I saved it as a PNG file and imported it into the library of my 7800asteroids3.fla. If you want to use the Flex SDK to make this game, I have provided the .png sprite sheet in the the .zip of for this tutorial.
The missile sprite sheet in Fireworks looks like this (at 800% zoom):
![]()
In the library in my .fla file I changed the linkage id of this file to be missile_sheet. That is all the setup needed inside the .fla file. Now, on to the code needed to get our missiles on the screen. Like part 2, I will just be showing and explaining the changes I have made to the code since part 1 and 2. The entire new .fla and .as files available at the end of this tutorial.
In our Main.as class, I had added a class import:
[cc lang="javascript" width="550"]
import flash.display.Bitmap;
import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.display.BitmapData;
import flash.geom.*;
import flash.events.KeyboardEvent;
//** added for part 3
import flash.utils.getTimer;
[/cc]
We added the getTimer class. It will be used for figuring out when the ship is allowed to fire another missile. This delay can be changed to add massive amounts of missiles to the screen. If all of these optimizations work correctly, we have the horse power to make some awesome effects.
In the variable definition section I have added in the new game variables needed for animating the missiles on the screen.
[cc lang="javascript" width="550"]
//*** part 3 variables
var missleTileSheet:BitmapData;
var aMissileAnimation:Array;
var aMissile:Array; //holds missile objects fires
var missileSpeed:int=4;
var missileWidth:int=4;
var missileHeight:int=4;
var missileArrayLength=10;
var missilePoint:Point=new Point(0,0);
var missileRect:Rectangle=new Rectangle(0,0,4,4);
var missileMaxLife:int=50;
var missileFireDelay:Number=100;
var lastMissileShot:Number=getTimer();[/cc]
The missileTileSheet variable is a BitmapData object that will hold an instance of the missile_sheet (exported name) in our library.
The aMissileAnimation array will hold the 10 frames of animation for our missile. These will be BitmapData objects.
The aMissile array will hold all of the missile the ship fires that are currently in flight.
Our missileSpeed will be 4 pixels per frame tick. As well, our missileWidth and height will also be 4 pixels. There is no reason why the speed and the height and width are the same, the speed can be anything you want, but the faster you make it, the more of a chance there will be that our missile will go through a rock and collisions will not be detected.
Next we pre-calculate missileArrayLength and set it at 10. Pre-storing this will help speed up our loops, and save execution time. We also pre-create missilePoint, and missileRect. The missilePoint will change for the current x and y coordinates of the missile, but by pre-creating the Point object, we will save execution time during our game loop. The missileRect will always be the same, and we pre-create it here to save execution time later in the update and draw cycles.
The last three things we do effect the life of the missile (the number of frame ticks it will be on the screen), and the amount of missiles that can be on the screen at any one time. By changing the missileMaxLife variable, you will change the number of frames each missile remains on the screen. By changing the missileFireDelay to a lower number, you will allow more missiles to be fired in a shorter amount of time. Conversely, making his number higher will limit the amount of missiles the player ship can have on the screen at the same time. The final new variable is a getTimer object that holds the last time a missile was fired. We will explain more on this later.
In the createObjects() function, we have added lines to create the tile sheet for our missile sprite, and cache the 10 frames into an array of BitmapData objects.
[cc lang="javascript" width="550"]
private function createObjects():void {
//create generic object for the player
playerObject=new Object();
playerObject.arrayIndex=0;
playerObject.x=200;
playerObject.y=200;
playerObject.dx=0;
playerObject.dy=0;
playerObject.movex=0;
playerObject.movey=0;
playerObject.acceleration=.3;
playerObject.maxVelocity=8;
playerObject.friction=.01;
playerObject.centerx=playerObject.x+spriteWidth;
playerObject.centery=playerObject.y+spriteHeight;
playerRect=new Rectangle(0,0,spriteWidth*2,spriteHeight*2);
playerPoint=new Point(playerObject.x,playerObject.y);
//init canvas and display bitmap for canvas
canvasBD=new BitmapData(400,400,false,0x000000);
canvasBitmap=new Bitmap(canvasBD);
//init background
backgroundSource=new Background();
backgroundBD=new BitmapData(400,400,false,0x000000);
backgroundBD.draw(backgroundSource,new Matrix());
backgroundRect=new Rectangle(0,0,400,400);
backgroundPoint=new Point(0,0);
//part 3 init tilesheet for missiles
aMissile=[];
aMissileAnimation=[];
missleTileSheet=new missile_sheet(40,4);
var tilesPerRow:int=10;
var tileSize:int=4;
for (var tileNum=0;tileNum<10;tileNum++) {
var sourceX:int=(tileNum % tilesPerRow)*tileSize;
var sourceY:int=(int(tileNum/tilesPerRow))*tileSize;
var tileBitmapData:BitmapData=new BitmapData(tileSize,tileSize,true,0x00000000);
tileBitmapData.copyPixels(missleTileSheet,
new Rectangle(sourceX,sourceY,tileSize,tileSize),new Point(0,0));
aMissileAnimation.push(tileBitmapData);
}
}
[/cc]
First, we in initialize the aMissile array. This will hold all of the missiles that the player fires so we can updated them on the screen and eventually allow us to do collision detection between the missiles and the rocks.
Next, we initialize the aMissileAnimation variable. This will hold the 10 frames of BitmapData representing the animation frames for our missile.
We then create an instance of our missile_sheet library png. Since a .png file imported into the library is essentially a Bitmap object (pixel BitmapData), our missileTileSheet BitmapData object is assigned the new instance of the missile_sheet. We pass in the width and height of the missile_sheet when we create an instance of it.
Our next task is to actually loop through the 10 tiles in the tile sheet and create a BitmapData object out of each tile. First we set our tilesPerRow variable to be the number of tiles in the row (40/4=10). We then set our tileSize to be 4. Our tile is a square of 4x4. If the width and height were not the same, we would have to create a tilewidth and tileheight set of separate variables. I specifically created square tiles to eliminate this need. We then create a loop with 10 steps in it.
Within each step, we first need to find the upper left hand corner x position of our current tile to cache and put that in the sourceX variable. This is done by taking the remainder from out tileNum/tilesPerRow calculation and multiplying it by our tile size. So, one the first pass, our source x should be 0. The first tileNum is 0 also. 0%0*4=0. Our sourceX=0; Our sourceY=0/0*4 or just 0 also. On the next line, create a new BitmapData object called tileBitmapData, and give it a a size of 4x4 with a transparent background and no fill color. We then copyPixels from our missileTileSheet into that new tileBitmapData object. We need to supply a rectangle bounding the area we want to copy and a starting point to copy into. The starting point will always be 0,0 or the top left-hand corner of our tileBitmapData object. The rectangle will start at our sourceX and sourceY and extend 4 pixels in each direction. This allows us to cut out the slice of the BitmapData we want and then we place it in the aMissileAnimation array with a push() function call.
[cc lang="javascript" width="550"]
private function runGame(e:TimerEvent) {
checkKeys();
updatePlayer();
updateRocks();
updateMissiles();
drawBackground();
drawPlayer();
drawRocks();
drawMissiles();
}
[/cc]
Our runGame() method has been updated. We have now added updateMissiles() and drawMissiles() methods to each game timer tick. As you can see below, we also added some code to the checkKeys() function. This allows us to capture the [z] key press and fire off a missile when it is pressed.
[cc lang="javascript" width="550"]
private function checkKeys():void {
if (aKeyPress[38]){
//trace("up pressed");
playerObject.dx=aRotation[playerObject.arrayIndex].dx;
playerObject.dy=aRotation[playerObject.arrayIndex].dy;
var mxn:Number=playerObject.movex+playerObject.acceleration*(playerObject.dx);
var myn:Number=playerObject.movey+playerObject.acceleration*(playerObject.dy);
var currentSpeed:Number = Math.sqrt ((mxn*mxn) + (myn*myn));
if (currentSpeed < playerObject.maxVelocity) {
playerObject.movex=mxn;
playerObject.movey=myn;
} // end speed check
}
if (aKeyPress[37]){
playerObject.arrayIndex ;
if (playerObject.arrayIndex <0) playerObject.arrayIndex=shipAnimationArrayLength-1;
}
if (aKeyPress[39]){
playerObject.arrayIndex++;
if (playerObject.arrayIndex ==shipAnimationArrayLength) playerObject.arrayIndex=0;
}
//*** added for part 3
if (aKeyPress[90]){
fireMissile();
}
}
[/cc]
The fireMissile() method is called above when the [z] key is pressed.
[cc lang="javascript" width="550"]
private function fireMissile():void {
if (getTimer() > lastMissileShot + missileFireDelay) {
var tempMissile:Object=new Object();
tempMissile.x=playerObject.centerx;
tempMissile.y=playerObject.centery;
tempMissile.dx=aRotation[playerObject.arrayIndex].dx;
tempMissile.dy=aRotation[playerObject.arrayIndex].dy;
tempMissile.speed=missileSpeed;
tempMissile.life=50;
tempMissile.lifeCount=0;
tempMissile.animationIndex=0;
aMissile.push(tempMissile);
lastMissileShot=getTimer();
}
}
[/cc]
When the [z] key is pressed, we first check the value of the lastMissileShot variable. Remember, in the variable initialization section of code for the class, we set this to be the value of getTimer(). Before a missile is shot for the first time, it holds the number of milliseconds that have elapsed since that initialization. We check to see if the current value of the getTimer() is greater than this lastMissileShot value + our missileFireDelay (100 milliseconds). If so, we can fire off a new missile.
We do this by first creating a generic object called tempMissile. We set the current x value of the missile to be the playerObject's centerx value, and its y to be the playerObject's centery value. This way, it will appear that the missiles start from the center of the player's ship. We next set the dx and dy values to match the direction the player is currently facing. We do this by finding the current arrayIndex of the playerObject and using it in the pre-calculated delta x and delta y movement vector array.
We set the life of the missile to be 50 frame ticks, and set its starting life count to be 0. When it counts up to 50, it will be removed from the screen. We set the animationIndex value of the missile to be 0. That will put the missile on the first (red) graphic. The index will be increased on each frame tick. When it reaches 10, it will be set back to 0 and start over.
The final two things we do are push the new tempMissile object into the aMissile array, and make sure to reset of lastMissileShot value to be the current value of a getTimer() call. This will start over the 100 millisecond delay count and won't let another missile be fire until that delay has been reached.
[cc lang="javascript" width="550"]
private function updateMissiles():void {
var missileLen:int=aMissile.length-1;
for (var ctr:int=missileLen;ctr>=0;ctr ) {
var tempMissile:Object=aMissile[ctr];
tempMissile.x+=tempMissile.dx*tempMissile.speed;;
tempMissile.y+=tempMissile.dy*tempMissile.speed;
if (tempMissile.x > stage.width) {
tempMissile.x=0;
}else if (tempMissile.x < 0) {
tempMissile.x=stage.width;
}
if (tempMissile.y > stage.height) {
tempMissile.y=0;
}else if (tempMissile.y < 0) {
tempMissile.y=stage.height
}
tempMissile.lifeCount++;
if (tempMissile.lifeCount > tempMissile.life) {
aMissile.splice(ctr,1);
tempMissile=null;
}
}
}
[/cc]
The updateMissile function is called on each frame tick by the game loop. It is virtually identical to the updateRocks() method with one big exception. The missiles will expire when 50 frame ticks have passed. For that reason, we cannot use a FOR EACH statement to loop through the array of missiles. We much use an iterator (for loop) that has a variable as an incrementor. Above, you see that we have a for statement that starts with the current length of the aMissile array (minus 1). We loop backward through the array of missiles.
First we set the new x and y values for the missile by multiplying the dx and dy values (respectively) by the speed of the missile. After that, we check the new x and y values against the stage bounds to apply the WRAP AROUND warp to the missiles. If they leave one side of the screen (or top or bottom) they will wrap around to the other side.
The final thing we do is increment the lifeCount variable and then remove the missile if the count is greater than the life value of the missile. If it is, we splice the missile from the aMissile array and set it to be null so the garbage collector will sweep it up on a future pass. The reason we loop backward through the array is evident here. If we looped forward, when we spiced a value from the array, it would change all of the future array values for this frame tick and the next value in the array (after the splice) would suddenly become the current value. Because we increase our counter loop counter (ctr) right away, we would actually skip checking the missile object that comes after the spliced object. It might sound crazy, but this small item has chased away hours and hours of my debug time.The way around this of course is to loop backward through the array. When we splice a value while looping backward we don't effect the missile objects that are lower than the spliced object.
WHEW!
Now on to the final new section of code for this lesson.
[cc lang="javascript" width="550"]
private function drawMissiles():void {
var missileLen:int=aMissile.length-1;
for each (var tempMissile:Object in aMissile) {
missilePoint.x=tempMissile.x;
missilePoint.y=tempMissile.y;
canvasBD.copyPixels(aMissileAnimation[tempMissile.animationIndex],missileRect, missilePoint);
tempMissile.animationIndex++;
if (tempMissile.animationIndex > missileArrayLength-1) {
tempMissile.animationIndex = 0;
}
}
}
[/cc]
The drawMissiles() method is actually ALMOST exactly like the drawRocks version also. We are simply looping through all of the missiles and calling a copyPixels() method on each on. We copy the current BitmapData object from the aMissileAnimation array to the canvasBD. We first need to set the missilePoint.x and y values to be the current x and y for the missile. Remember, the missileRect was created earlier and doesn't change. It is a Rectangle(0,0,4,4) rectangle that doesn't change, and can be used for all of the missiles.
The only difference between the missiles and the rocks is that we are not going to have a frameCount for the missiles. The missiles will update the animationmIndex on each frame and not wait 3 frames like the rocks do.
Any, my few friends who have made it this far, we are done with part 3.
Use the left and right arrow keys to rotate the ship. The up will thrust, and the [z] key will fire missiles.
The source files are here: 7800 Asteroids Tutorial Part 3 source files
Bookworm Adventures Review
Bookworm Adventures

Platforms:
PC
Links:
Game Play:
A serious update to the Pop Cap classic Bookworm Deluxe. Fight monsters by creating words from a grid of 16 letter tiles. Play through three separate books and several mini-games. Collect experience to gain levels and increase your health and attack power. Use crystal tiles to increase your attacks. After you finish each quest, you receive a special item that can be used to gain bonuses in your attack or defense. Unlike the original Bookworm game, letters do not have to be touching to be used to form a word. A seemingly simple concept that is, in reality, insanely addictive.
9/10
Intangibles:
The game includes a thin, but welcome story to ties together the increasingly difficult set of word battles. Letters do not seem to arrive in a completely random manner, which helps make the player feel like they are in control. Creating extra-long words that bash enemies to smithereens might be the best use of 6th grade vocabulary words ever devised.
8/10
Save Anywhere/Respect Our Time:
Perfect. The player can quit the game at any time, and the their progress will be saved. Battles last about 2-5 minutes, with a full level lasting 10-15 minutes. You can extract some satisfaction from this game no matter how much time you have to play it.
10/10
Games Should be Affordable:
$19.95 is an absolute steal.
10/10
Reasonable Graphic Choices:
Graphics and sound are nice and serve the game well. Sounds and special FX are satisfying and should not tax any video card.
9/10
Players:
Single Player Games:
This is primarily a single player game, although you might find others huddling around the computer trying to help you form words.
Cooperative Games On One Screen:
N/A
Multi-player Games
N/A . A head-to-head mode would have been a nice addition
8/10
Casual Games Don't Have To Be Simple Games:
Bookworm Deluxe was watershed moment for "casual games" that required real brain-power to complete. Bookworm Adventures takes the concepts of the earlier game and expands them into a deeply addictive contest.
9/10
Size Does Not Matter
Very small footprint:. 43MB of hard drive space required. A perfect example of a quality game with almost no bloat.
10/10
No need to be mature for the sake of being mature:
Some of enemies are a bit scary, but nothing that would keep the family or your non-geek girlfriend/boyfriend away
.
9/10
Yes To One-Time Fees, Rarely To Monthly Fees:
Pay once, but no options to update with more levels.
8/10
Final Mid-Core Gamer Score:
One of the best Mid-Core game available for the PC
90
Alien Shooter Vengeance Review
Alien Shooter Vengeance

Platforms:
PC
Links:
Gameplay:
Blast scores of aliens in this 2.5D isometric shooter. The game has the feel of the "Fallout" series put into an action game.
8/10
Intangibles:
Feels old school, but plays very smooth. Explosions and FX are very satisfying. Addictive to the core.
7/10
Save Anywhere/Respect Our Time:
Auto save after completing a mission.
5/10
Games Should be Affordable:
$20.00 is right on target. The quality price ratio for this game is outstanding.
10/10
Reasonable Graphic Choices:
Plays on most PCs. Incredible 3rd person, above perspective 3d visuals. It looks and plays like the best Genesis, Amiga, or Atari ST game you have ever seen.
8/10
Players:
- Single Player Games:
This is primarily a single player game. - Cooperative Games On One Screen:
N/A for this game. No two player action that I can find on one screen. This doesn't hurt the game in the least. - Multi-player Games
Free cooperative and death match multi-player
7/10
Casual Games Don't Have To Be Simple Games:
This is basically a shooter. There are RPG elements though that help it to be more involving.
9/10
Games Do Not Need to Be 5.5 GB To Be Good:
Relatively small footprint. 500MB of HD space required. Not out of the ordinary for the quality of the game
7/10
No need to be mature for the sake of being mature:
Very violent, a lot of blood and dead aliens.
6/10
Yes To One-Time Fees, Rarely To Monthly Fees:
Pay once. Free multi-player.
Manifesto Score 10/10
Final Mid-Core Gamer Score:
77
Flash Game Development Inter-web mash up : Feb 7, 2008
The latest in Blog entries and articles that might interest to Flash game developers.
Scott Jeppesen, a friend, and recent new hire at Electrotank, has created an awesome logging tool for Flash CS3 and Flex in AIR. In his blog entry, he describes some of the cool features such as the ability to filter log messages by the logger instance -so if you have multiple apps running, you can just see log messages from the one you are interested in.
On the GamingYourWay blog, Squize has a new series of diary entries on his latest game - a Valentines Day themed platformer. If you are interested in a peak at the game development process from a seasoned, consummate pro, check this out.
Mochiland has posted the latest in Steve's (8bitrocket's very own Steve) series on making an object oriented shooter in AS3.
Make it big in games has a new feature on 80 Ways to Add Community Features In Games. This is not NEW, but it is relatively recent and very much worth a read.
GameProducer.net has a very interesting feature on To Clone or Not To Clone. It discusses the time honored decision of how much to innovate when trying to create a game.
Venture Beat has a new article called Four startups talk about making casual games work
20 Tutorials To Create Your Own Flash Game is a new entry on the dezinerfolio.com site. This is a very nice resource for the beginning, novice, and even intermediate Flash Game designer/programmer.
Anatomy of a Flash Game: Lesson 2 – Creating Enemies And The Game Environment
The good people over at Mochiland have posted part two of my four part tutorial on making a game in Flash AS2 using object oriented methodologies while incorportaing Mochibot, Mochiads, and Mochi Leaderboards.
This lesson covers creating enemies, creating a score board, and various other topics in the quest to create a reusable framework for making games.
Please check out the lesson here:
Anatomy of a Flash Game: Lesson 2 - Creating Enemies & The Game Environment