Sep 052011
 

One of the things I noticed when I started writing the story for my upcoming RPG is that I couldn’t quite get myself going with the dialogue between characters. I wasn’t sure if I didn’t quite develop the characters, or if the story itself wasn’t developed enough. The truth is I was taking the wrong approach completely.

I’ll never call myself an expert on writing dialogue. I can write a good blog post, probably pen a short story without much trouble, but I’ve never actually sat down and written anything quite like this. I’ve never had an ambition for script writing, and I’m certainly not going to be a play writer. But the fact is, video games need character dialogue.

Continue reading »

 Posted by at 10:24 PM
Sep 012011
 

I was asked to come into a project very late in the game. We had 4 1/2 hours until we were to show off a prototype of the company’s new “portfolio” site. We were five days behind with minimal functionality accomplished. I was asked to save the day.

A little nervous, and completely in the dark still about what this WordPress theme we’d bought was all about, I agreed to give it my best shot. I’ve worked with WordPress plenty of times, I had a decent understanding of how the API sorta worked, and I know PHP like the back of my hand. Still, tearing into someone’s code often times translates into hours of just figuring out their style and where everything is laid out.

Continue reading »

 Posted by at 1:34 AM
Aug 252011
 

Ever since the 80s and 90s days of Sierra On-line’s “Quest” games, I’ve been a big fan of PC and Console RPGs. Cinematics and crisp graphics add to the fun fo the game, but the exploration of the world, and the unravelling of a good story are the two main things that keep me going back to the genre.

About two months ago I joined twitter. I honestly only wanted to follow the local sports writers, and possibly interact with some of my friends. Soon after that I expanded to following Stargate actors. Then I got the idea that I could market myself a little better in case I needed to find a new job really quick, or wanted to pick up some freelance work.

I began to follow everyone who was following @VoodooPuppy, a game developer, experience designer, story-teller, and ruler of worlds. Oh yah, they also like gummy bears. I was following 500, then 800, and made my way up to 1500. I noticed that lots of people started following me back. Some were normal people, others were marketing companies, the rest were anything you can imagine. Something I did notice, people were starting to respond.

I’m now followed by almost 700 people. I have a few regulars that I interact with. We all started discovering that we had similar interests. After that, we found out we liked the same video game genres. We started talking about RPGs, JRPGs, and finally started swapping game titles and companies around.

That’s when I decided to compliment @mistwalker on a fine job with Lost Odyssey, an RPG for the Xbox 360. To my surprise, Mr. Sakaguchi himself responded. It was exciting to make a connection with someone who I’ve admired for so long.

There are now six of us that are starting to tweet daily. We’ve even moved into the direction of doing a little Zork styled RPGing with a new hash ‘#twitterpg’. We tossed around a few ideas, sat undecided, and @mistwalker cast the final vote to go with it. A new age in tweeting was born.

Currently, us six adventurers have just slain a mighty beast with our bare hands, and are deciding which bridge to take. I can see myself, @bendavischicago, @RogerReinhardt, @Dan_Tsukasa, @DawnRivers, and @mistwalker looking around this world. It is our’s for the taking, and we’re marching forward into the unknown to battle evil, save the world, and live as heroes.

I now invite you all to start using and following this hash. While we may not be ready to pickup another adventurer quite yet, 140 characters go quickly, I am interested in what other worlds people will come up with, and what adventures you will embark on. As I sit here on my porch on a mild late summer night, I can see the hash in the trend area in the near future. There are thousands of people tweeting and exploring virtual worlds running through our minds.

Imagine the stories that will come out of all of this. An innocent exchange of tweets praising a genre, complimenting a designer, new twitter friendships coming to life, and it is now ballooning into something more. A creative exchange building new personalities and places, inspired by the greatest games ever written.

I invite you all to partake. Form your party. Set a course. Launch your adventure. #twitterpg is your’s for the taking.

Dan Joseph is the CEO and head of Software Engineering of Familiaris Games.

Aside from my personal flash game projects, I am collaborating with Ben Davis on multiple future
projects, and writing the story and script for an upcoming AAA level RPG, modelled after the same
type of game play you see in Lost Odyssey, Final Fantasy, and other Japanese-based RPGs.  When
I'm not developing games, I'm working as a Web Developer on various major brand web sites.

You can follow me on twitter @iamdanjoseph.  

If you wish to contact me, please click the contact page,
and fill out the form.  I will get back to you as soon as I can.
 Posted by at 10:34 PM
Aug 232011
 

I realized today that I’ve pretty much disappeared on everyone. Sorry about that! Real life got in the way, and my duties as a web developer were needed 2.5x more than normal. Its been kind of fun, but stressful at many points. I’m about done though, and piece 10 of my Flash Game Dev 101 series will be released after this week.

In the meantime, I’d like to take the time to talk a little bit about HTML5 and project planning.

I recently was brought into a project to help with. It was as simple set of html/css pages. No programming. No databases. Just static pages. All the art was done, so I just had to come up with the html and css code, and let ‘em loose. The only issue, they wanted it done in HTML5/CSS3.

One of the things that makes building a html5/css3 only site is Internet Explorer 8. It is still widely used, and will be for some time. Windows XP users can’t upgrade to IE9, and many of them have no interest in Firefox, Chrome, or Safari. Sure, you can download a hack, such as PIE.htc, but that doesn’t solve all the problems, and you’re still left with some quirkiness about your pages.

One of the reasons for the decision to go the html5 route was the ability to embed custom fonts into the web pages. Creative people shy away from the standard fonts so they can use “prettier” fonts, or even just something that is fresh.

I can fully understand that.

The issue we ran into was we were converting a single web site, into a new landing page web site, and then many pages embedded into a facebook application and placed on their fan page. We needed something trackable, SEOable (that has to be a word!), and so we (thought we) couldn’t just go the route of static images with links laid over the top.

Personally, I liked the idea of all of this. I still do. But looking back on it, the headaches of trying to make IE8 look right, and function right, and the client expecting things to be perfect, it just was a no-win situation for us developers.

The moral of this story. If you’re going for cutting edge, you need to understand and plan that your IE8 customers won’t see the site as you want them too. You either have to accept that, or scrap all the html5/css3 elements. Animations will have to be flash, rounded corners will have to be images, and fonts will have to be standard.

Familiars Games Update

Ben Davis and me are still working on getting our second game out the door. Ben has been patient with me while I’ve not had enough time to work on Priority Delivery, and has begun sketching out his next personal project. So far he has a winner, and he’s still working towards improving it. We’re looking at September releases for both of those games.

The story of Johnny that I’ve been talking about has moved forward a bit thanks to my iPhone’s notepad app. I’ve been writing down notes and developing characters in places such as restrooms, conference rooms before meetings, and in traffic jams when the roads are closed for a wreck (yes, this happened last week!).

Twitter

Thank you all for keeping in touch via twitter! I always thought it was a stupid platform, but have realized its power and entertainment. Thanks for following!

Video Game Endorsement

If you’re looking for a GREAT Xbox 360 game, go grab Lost Odyssey. It’s a couple years old now, and harder to find, but you can order it online if nothing else. The game has 100+ hours of game play, terrific cinematics, excellent graphics, and a strong story. The game play itself is also very good. Controls are smooth, and movement is smooth. I have put it on my personal Top 10 RPGs of all times, which I’ll be posting here on DanJoseph.me eventually.

That’s it for today!

Dan Joseph is a Software Engineer/Architect.  

You can follow him on twitter @iamdanjoseph.  

If you wish to contact him, please click the contact page,
and fill out the form.
 Posted by at 1:12 PM
Aug 092011
 

Series: Flash Game Programming 101, Putting It All Together, Step Nine.

I’ve taken you through an eight step process to introduce you to the world of Flash Game Development. You’ve got all the essentials to place objects on the stage, interact with them with the keyboard and mouse, detect basic collision, and add some to your game.

Now its time to put it all together in one big project. We’re going to take a two-step process for this. The first will be a basic gunner game base. You’ll have a left-right moving gun turret, and an alien pod that goes from left to right across the screen. You’ll be able to fire at the alien pod, and see the bullet move. We’ll also introduce sound and scoring into the game.

First, let’s setup the library with the elements that we need. Make a new symbol, set it as a movie clip, and draw some form of a gun turret. Make sure you set the top at Y 0, and then put it in the middle, giving the X a slightly minus setting. After that, make an alien pod, laying it out about the same way. Third we’ll need a bullet draw. After that grab yourself two sound files, and import then. Make sure you export them all to ActionScript and give them class names.

For these objects, you can use clip art, draw shapes, or make your own fancy pieces. I just draw some basic shapes for the sake of the lesson. It’s not as important what they look like, as it is where you position them in the symbol. Setting the top of them to Y 0 allow us to make the bullet look like its firing, and it will also help us position the object on the stage with the AS3 code.

Now let’s setup all the libraries that we’re going to use. They’re the same ones that you used throughout the eight steps.

import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.TextField;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.ui.Keyboard;

Next let’s declare our variables.

var myTurret:Turret = new Turret();
var myBullet:Bullet = new Bullet();
var myAlien:Alien   = new Alien();

var dispScore:TextField	   = new TextField();
var scoreFormat:TextFormat = new TextFormat();
var myScore:Number         = new Number();

var myFireBulletSound:FireBulletSound = new FireBulletSound();
var myShotAlienSound:ShotAlienSound   = new ShotAlienSound();

You can see the names here that I used for my library items that exported for ActionScript. I’ve also introduced a scoreboard, styling for the scoreboard, and a counter for the actual score. Now let’s place the initial objects on the stage.

// Setup Turret

myTurret.x = 55;
myTurret.y = 310;

addChild( myTurret );

// Setup Alien

myAlien.x = -20;
myAlien.y = 65;

addChild( myAlien );

// Setup Scoreboard
dispScore.x = 10;
dispScore.y = 10;

addChild( dispScore );

scoreFormat.font = "Arial";
scoreFormat.size = 28;
scoreFormat.bold = true;
scoreFormat.color = 0x121212;
scoreFormat.align = TextFormatAlign.LEFT;

dispScore.defaultTextFormat = scoreFormat;
dispScore.text = String( myScore );

Please take note of where I played myAlien. -20 pixels off the left side of the screen. That’s where it will start when the game starts, giving it an appearance of coming from afar to invade and destroy us. Next we need the initial event listeners.

// Stage Events
stage.addEventListener( KeyboardEvent.KEY_DOWN, moveTurret );
stage.addEventListener( KeyboardEvent.KEY_DOWN, fireBullet );

// Alien Events
myAlien.addEventListener( Event.ENTER_FRAME, moveAlien );

I’ve setup two for the keyboard. One is going to monitor the left and right arrow keys for movement, and the other will handle the spacebar for firing our bullet. The other event is to start the alien animation movement across the top of our screen. Let’s take a look at the functions now.

function moveTurret( e:KeyboardEvent )
{
	var multiplier = 10;

	switch( e.keyCode )
	{
		case Keyboard.LEFT :

			myTurret.x -= multiplier;

			break;

		case Keyboard.RIGHT :

			myTurret.x += multiplier;

			break;
	}
}

I’ve decided to go with a multiplier of 10 for the movement. As you recall from our earlier tutorial, that is how many pixels left or right we’ll move the turret.

function fireBullet( e:KeyboardEvent )
{
	switch( e.keyCode )
	{
		case 32 : // spacebar

			playSound( myFireBulletSound );

			myBullet.x = myTurret.x;
			myBullet.y = myTurret.y;

			addChild( myBullet );

			stage.removeEventListener( KeyboardEvent.KEY_DOWN, fireBullet );

			myBullet.addEventListener( Event.ENTER_FRAME, moveBullet );

			break;
	}
}

Here we have the spacebar event for firing the bullet. I like to use the switch control for all of my keyboard events, even in cases where is this just one. This gives us a framework for adding more in the future.

You’ll see in here when the spacebar is set, we play the firing sound, set the location of the bullet, which is at the top of the turret. Remember when I said its important to set the top of the turret to Y 0? This is why.

Notice the removeEventListener. We want to limit the player to firing only one bullet at a time. To do this, we need to remove the spacebar control, and then add a movement event to animate the bullet upwards. Let’s take a look at the bullet movement.

function moveBullet( e:Event )
{
	myBullet.y -= 5;

	// If we shot the alien, make it reset, add 10 to the score.
	if ( myBullet.hitTestObject( myAlien ) )
	{
		myScore += 100;

		dispScore.text = String( myScore );

		myAlien.x = -10;

                playSound( myShotAlienSound );

		resetBullet();
	}

	if ( myBullet.y < 0 )
	{
		resetBullet();
	}
}

In this function, we have multiple things going on. First, we’re moving the bullet 5 pixels at a time upwards. Then we’re doing two if conditions, with the first being a basic collision detection. If the bullet and the alien object meet, we’ll increase the score by 100, move the alien back off the screen, play a sound, and reset the bullet. Let’s take a look at that code next.

function resetBullet()
{
	myBullet.removeEventListener( Event.ENTER_FRAME, moveBullet );

	removeChild( myBullet );

	stage.addEventListener( KeyboardEvent.KEY_DOWN, fireBullet );
}

Resetting the bullet is as simple as removing the event, removing it from the stage, and adding a new event listener for the spacebar. Its the same addEventListener code as above. It will utilize the same function.

Finally, let’s take a look at the movement of the alien, and the sound playing.

function moveAlien( e:Event )
{
	myAlien.x += 2;

	if ( myAlien.x > 575 )
	{
		myAlien.x = -10;
	}
}

Moving the alien is trivial. We’re going to move it 2 pixels to the right at a time. We’re also going to check and see if goes beyond our stage, and then reset the alien back to -10 off the left of the screen, and continue on his path back across the screen.

function playSound( soundObject:Object )
{
	var channel:SoundChannel = soundObject.play();
}

Sound is just like in our earlier tutorial. A simple one line function that plays the sound you toss at it. In our case, the firing sound, and the collision sound.

Now you have a basic framework for a space invaders type game. You know how to take each of the elements from our first eight sessions and tie them together. You know how to animate multiple things at once, and how to detect when they touch. You understand how you can make a turret appear to fire a bullet.

We’re still not quite done. Notice you don’t have any boundaries to your turret. You could theoretically drive it off the right or left of the screen, and never see it again. We’ll cover that in lesson ten, and introduce you two a couple more advanced items you can put into your first complete game.

I realize I went pretty fast through the symbol setup in the beginning of this lesson. I feel by now you have a grasp on how to use that part of the flash interface. Please also keep in mind that I’m always here to answer questions and help if you get stuck. You can contact me directly, on twitter, or leave a comment here.

Dan Joseph is a Software Engineer/Architect.  

You can follow him on twitter @iamdanjoseph.  

If you wish to contact him, please click the contact page,
and fill out the form.
 Posted by at 10:50 PM
Aug 082011
 

Series: Flash Game Programming 101, Adding Sound, Step Eight.

Sure, there is a growing trend in flash games that suggests people don’t care about sound. I personally believe the real story is a lot of people play where they can’t turn on their sound. They’re either at work, at the library, or somewhere in public. The fact is, your game needs sound.

Adding basic sound to your game is simple. Simply grab or make two shot mp3 (or aiff) audio files, and put them in your project directory. After that, import them, and export them to ActionScript, just like you would your symbols. Give them the classnames StartSound and StopSound. Now we’re going to add some code.

import flash.media.Sound;
import flash.media.SoundChannel;

var myStopSound:StopSound       = new StopSound();
var myStartSound:StartSound	= new StartSound();

playSound( myStartSound );

function playSound( soundObject:Object )
{
	var channel:SoundChannel = soundObject.play();
}

Let’s first implement the starting sound. We’re going to attach this to our space bar, and button click to make the ball animate. We simply want to play a sound when the ball starts moving, then play one when it stops.

The first thing you’ll need to do is import the sound library, and declare your sound variables. You’ll also need to make a function to play the sound.

import flash.media.Sound;
import flash.media.SoundChannel;

var myStopSound:StopSound       = new StopSound();
var myStartSound:StartSound	= new StartSound();

function playSound( soundObject:Object )
{
	var channel:SoundChannel = soundObject.play();
}

Now we’re going to attach the sound to our start and stop events. Let’s first work with myStartSound. You’ll need to modify a couple of functions, and add one.

function buttonClicked( e:MouseEvent )
{
	playSound( myStartSound );

	stage.addEventListener( Event.ENTER_FRAME, moveBall );
}

function keyPress( event:KeyboardEvent )
{
	var multiplier = 2;

	switch ( event.keyCode )
	{
		case Keyboard.LEFT :

			myBall.x -= multiplier;

			break;

		case Keyboard.RIGHT :

			myBall.x += multiplier;

			break;

		case Keyboard.UP :

			myBall.y -= multiplier;

			break;

		case Keyboard.DOWN :

			myBall.y += multiplier;

			break;

		case 32 : // Spacebar

			playSound( myStartSound );

			stage.addEventListener( Event.ENTER_FRAME, moveBall );

			break;
	}

	if ( myWall.hitTestObject( myBall ) )
	{
		myBall.x = 200;
		myBall.y = 200;
	}
}

Take note of where we placed playSound(). Play sound will play any of your library sound files that you’ve declared in your project. In our case, we’ll be passing myStartSound and myStopSound into it. Make not of where I placed playSound( myStartSound ). I put it first in the spacebar handler, and first in the button click.

Now let’s take a look at firing the stopping sound.

function moveBall( event:Event )
{
	if ( myBall.y <= 10 )
	{
		stage.removeEventListener( Event.ENTER_FRAME, moveBall );

		playSound( myStopSound );
	}	

	myScore++;

	dispScore.text = String( myScore );

	myBall.y -= 10;
}

Since the moveBall() found is used with the keyboard and mouse events that animate the ball, we only need to put the playSound( myStopSound ) line in one place, just after we stop the ball.

Let’s put it all together.

import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.TextField;
import flash.media.Sound;
import flash.media.SoundChannel;

var myBall:Ball 				= new Ball();
var myWall:Wall 				= new Wall();
var myLaunchButton:LaunchButton = new LaunchButton();
var dispScore:TextField			= new TextField();
var scoreFormat:TextFormat 		= new TextFormat();
var myScore:Number              = new Number();
var myStopSound:StopSound       = new StopSound();
var myStartSound:StartSound		= new StartSound();

scoreFormat.font = "Arial";
scoreFormat.size = 28;
scoreFormat.bold = true;
scoreFormat.color = 0x121212;
scoreFormat.align = TextFormatAlign.LEFT;

myBall.x = 200;
myBall.y = 350;

myWall.x = 400;
myWall.y = 200;

myLaunchButton.x = 400;
myLaunchButton.y = 350;

dispScore.x = 10;
dispScore.y = 10;

addChild( myBall );
addChild( myWall );
addChild( myLaunchButton);
addChild( dispScore);

dispScore.defaultTextFormat = scoreFormat;
dispScore.text = String( myScore );

// Stage Events
stage.addEventListener( KeyboardEvent.KEY_DOWN, keyPress );
stage.addEventListener( MouseEvent.MOUSE_MOVE, trackMouse );

// Symbol Specific Events
myLaunchButton.addEventListener( MouseEvent.MOUSE_UP, buttonClicked );

myBall.addEventListener( MouseEvent.MOUSE_DOWN, mousePress );
myBall.addEventListener( MouseEvent.MOUSE_UP, mouseRelease );

function buttonClicked( e:MouseEvent )
{
	playSound( myStartSound );

	stage.addEventListener( Event.ENTER_FRAME, moveBall );
}

function trackMouse( e:MouseEvent )
{
	if ( myWall.hitTestObject( myBall ) )
	{
		myBall.stopDrag();

		myBall.x = 200;
		myBall.y = 200;
	}
}

function mousePress( e:MouseEvent )
{
	myBall.startDrag();
}

function mouseRelease( e:MouseEvent )
{
	myBall.stopDrag();
}

function keyPress( event:KeyboardEvent )
{
	var multiplier = 2;

	switch ( event.keyCode )
	{
		case Keyboard.LEFT :

			myBall.x -= multiplier;

			break;

		case Keyboard.RIGHT :

			myBall.x += multiplier;

			break;

		case Keyboard.UP :

			myBall.y -= multiplier;

			break;

		case Keyboard.DOWN :

			myBall.y += multiplier;

			break;

		case 32 : // Spacebar

			playSound( myStartSound );

			stage.addEventListener( Event.ENTER_FRAME, moveBall );

			break;
	}

	if ( myWall.hitTestObject( myBall ) )
	{
		myBall.x = 200;
		myBall.y = 200;
	}
}

function moveBall( event:Event )
{
	if ( myBall.y <= 10 )
	{
		stage.removeEventListener( Event.ENTER_FRAME, moveBall );

		playSound( myStopSound );
	}	

	myScore++;

	dispScore.text = String( myScore );

	myBall.y -= 10;
}

function playSound( soundObject:Object )
{
	var channel:SoundChannel = soundObject.play();
}

Now you have the essentials of adding sound to your game. You can use a single function to play any of your library sounds. Try moving the function around and seeing where you can make it play. Test it on the mouse movement and on the keyboard functions. If you have any questions, please comment or contact me directly.

Dan Joseph is a Software Engineer/Architect.  

You can follow him on twitter @iamdanjoseph.  

If you wish to contact him, please click the contact page,
and fill out the form.
 Posted by at 8:27 PM
Aug 062011
 

I’m thinking about hosting a game development contest. The only thing I’m unsure about is how many people would truly be interested? I’d love some feedback here in the comments on it. Maybe we can get a nice discussion going.

The only hang up I keep coming to is what would be the winning prize? I own a Web Hosting company, Canis Hosting, and have thought about throwing out a year’s domain registration and with a lifetime hosting package out there. But would that attract anyone?

The basic premise I was thinking of would be to lay out a genre and UI specifications. Possibly focus on a technique or platform. I don’t think it has to be limited to Flash games. How long could something like this go? Seven days? 30 days? I guess that’s all up in the air.

I’d love to see some input on this. Maybe others would like to get involved as well?

 Posted by at 1:32 PM
Aug 042011
 

As I started laying out the world in which Johnny lives, I kept wonder if I should make it all green. Should I put mountains throughout the whole thing? Perhaps I should put trees all over the place. I was trying to make it mesh, but was missing the point completely.

As you look around planet earth, you don’t see a giant forest. You don’t see a giant a mountainous spread. There are differences that come out of no where, yet they always seem to blend right in. That’s when I realized I was going about it all wrong.

I decided to write down all the different places I wanted in my world. I wanted forests, mountains, rivers, lakes, an ocean, and flat lands. I wrote down a few more elements over the course of a few days. After that I drew a rough outline of how I wanted my world shaped. Did I want the river through the middle, or just here and there? Where do I want to put my ocean?

These are all questions you should ask yourself. When you come to the answer, ask yourself if each element would work in the real world. Rivers need a water source, but do they have to come off the ocean? Do they have to come off a body of water at all? The answer to that is yes, they need to get a source from somewhere.

What about mountains? I don’t personally believe they have to be in a general spot in the world, but you should decide if you want a mountainous world or not. In my case, I didn’t want a mountainous world. Sometimes designers will put them in the middle of the world. Other times you’ll find them at the top or bottom of the world.

The next part I focused on was the placement of my forests. It would have been really easy to make the rest of the world filled with trees, and then cut out the trees for the cities. Instead I opted to scatter the forests around the world, leaving some areas open with large green flatlands. In other areas, I textured the ground with rock, gravel, and dirt. I found it was ok to all of a sudden have a line where grass was growing, as if I’d crossed over a fence into someone’s yard.

After I laid out my terrain, I then placed my lakes, and drew rivers out from that lake. I decided on which side of my world would have the ocean, and drew some rivers and channels out from that. Before I knew it, I had a nice world laid out. It meshed together really well, and I didn’t have to section it off and feel awkward about it.

So the next time you’re drawing out your world, take a walk outside. Get in your car, drive around the area, and pay attention to where different things start and end. Take notice of water sources, don’t just put a river in and have people wonder where its fed. You’ll have a real world that people can relate too, and feel at home in.

Dan Joseph is a Software Engineer/Architect.  

You can follow him on twitter @iamdanjoseph.  

If you wish to contact him, please click the contact page,
and fill out the form.
 Posted by at 10:21 PM
Aug 032011
 

Ever since joining twitter and interacting with other like-minded gamers, I’ve noticed activity on the site go up, and mail starting to come in. At first I was a bit overwhelmed, but now I’m really enjoying it. I love interacting with people, and this is just another outlet for that. Let’s take a look at some of the e-mails that I received this week.

1. Cottrell wants to know if I can assemble a couple of tutorials. One being a fighter game, and the other being a Double Dragon type game.

Cottress, first of all, thanks for writing. You’re the first person to request a certain type of game tutorial. The fighter game is the more complex game out of the two in my opinion. There are basic elements of moving and collision, but you have to account for some AI and determine what type of collision it is, and who hit first. The second being a scroller probably will be more easy. I’ve got a handful of tutorials prepped, and will be doing those first, then I will explore these.

2. Tony read my tutorial on using Prototype and PHP to do easy Ajax. He’s like to know when I’m releasing my full Ajax tutorial.

This particular project is actually quite large, and I have been focusing mostly on my Flash Game Dev the last few days. I haven’t put a date on this, but it will most likely release in the early fall.

3. Reese asks, what games do you currently have published?

Right now I have only three games published. They all reside on OriginalPoetry.com in the Games area. Poetry Match was the first, followed by Poem Builder, and then finally Word Scramble. I’ll have an action game out on Newgrounds in the next couple weeks as my first wide-spread release.

4. Carlos is curious, are you available for freelance work, or to build games for others?

Yes to both. If you’d like to hire me for any web work, or commission me to build a game, please contact me directly.

5. Several others asked how long the Game Dev 101 series would be.

Its 10 steps and will conclude laster this week/early next week. After that I’ll be starting on an advanced set based on what we learn. I’ll be taking you through an actual game build.

Keep the mail coming, and we’ll do more sessions!

Dan Joseph is a Software Engineer/Architect.  

You can follow him on twitter @iamdanjoseph.  

If you wish to contact him, please click the contact page,
and fill out the form.
 Posted by at 10:33 PM