Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Uthman Apatira, posted on August 16, 2001

Image Description, by Uthman Apatira

Hi- my name is Uthman Apatira and this is a screenshot from my just completed tutorial titled “How to Create Your 3D Fighting Game in 7 Days.” Each day of the tutorial is a comprehensive walk through of each of the basic steps required in order to make a very basic but nonetheless, complete fighting game. The topics for each day are as follows:

Day One: Models & Bones
Day Two: Animations
Day Three: Model Loader Animations
Day Four: Assigning Movements to Keys and the Combo Buffer
Day Five: The CPU Opponent- Really fake A.I.
Day Six: Sounds and Music
Day Seven: Game Interface and Special Effects

Throughout the course of the tutorial, a novice programmer who is fluent with NeHe’s base code and OpenGL will go pro by learning the tricks of the trade behind character animations with Brett Porter’s PortaLib, DirectMusic and

DirectSound with Andre LaMothe’s T3DLIB3.H taken from him “Tricks of the Windows Game Programming Gurus Vol#1” and finally, a touch of my own programming style to complete the series.

Every day of the tutorial comes with source and demo. The full tutorial (and soon to come whitepaper) can be downloaded from my website:

Image of the Day Gallery


Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

August 16, 2001, 02:17 PM

Face off of the freemans! Looks really sweet!!!


August 16, 2001, 02:24 PM

Hey, that's sweet. Sounds like you have put a lot of work into this. I was just thinking about using my engine for a little 2 player combat. This tutorial will be a great reference.

Rectilinear Cat

August 16, 2001, 03:04 PM

I'm not sure I like all the dependencies on lots of other people's libraries. And NeHe's basecode is a little overcommented (ok, so it was helpful in the beginning, but now it gets in the way) and can be hard to read at times. Aside from that, the idea is great. I'm gonna go check out those tuts right away!


August 16, 2001, 03:28 PM

Wow! I don't do OpenGL, but that's almost enough to make a guy want to switch. Nice stuff.


August 16, 2001, 03:30 PM

very cool!


August 16, 2001, 03:40 PM

I have great compliment for your game.
It looks like created in 9 days

Craig Rennie

August 16, 2001, 03:46 PM

NeHe's tuts are intended for beginners... to a beginner there is no such thing as overcommenting :)


August 16, 2001, 03:47 PM

Hey, that game is great fun!! :)

Nice done!


August 16, 2001, 03:49 PM

Looks really nice, and like it would be a usefull set of articles. Just one thing though. Could you draw a black circle(or better yet full shadows) underneath each player? They some times look like they are floating without it. Not a big problem, but it would be worth the time it took.


August 16, 2001, 04:07 PM

This is pretty cool. I think I'm going to spend some time going through your tutorials before head off to school. Good luck getting sponsors!


August 16, 2001, 05:09 PM

Wow MC Baxton is back, I was almost beginning to miss him. I believe the point of this screenshot was for a tutorial. It's not supposed to be a mip bizzling, alpha razzling, texture chunking, barrel full of monkeys engine. I'm sure your engine does all that though.


August 16, 2001, 05:27 PM

Yes, well... all except for the 'barrel full of monkeys' part ;).


August 16, 2001, 05:30 PM

I hope your project turns out well :) I went to ur page and ran accross the ascii art project of yours, but the link was broken :((


August 16, 2001, 05:33 PM

Thats a great idea.. I really hate stencil buffers to it would be applicable to me too- having a black circle blended with the floor texture under the player. Thanks!


August 16, 2001, 05:38 PM

You do not actually need the stencil buffer for ground-plane shadows though it makes it a bit easier. You start out by projecting the vertices of your shadow casters onto the ground-plane using the light position. Then just draw this with lightning disabled and with a black texture. The problem with this is that it normally results in z-fighting. You can use glPolygonOffset() to prevent this or do what is suggested in Game Programming Gems. You basically want the triangles to project to the same pixels without being at the same 3-space position. Look it up or just use glPolygonOffset() if you use OpenGL.


August 16, 2001, 05:41 PM

Sorry, I forgot that the original poster suggested just to render a black circle beneath the character. First you find the center of the shadow circle by finding the intersection of the light-centroid ray with the ground-plane. Simply make the size of your shadow decal be proportional to the distance from the character to the ground-plane. You still need to offset it somehow (cf. my previous post).


August 16, 2001, 09:04 PM

Very nice! I've been looking for just such a tutorial; one that covers an entire game. I will certainly read your right away. Thank you.


August 17, 2001, 12:26 AM

looks like a very impressive work! unfortunately i could not launch the game i believe because i have no sound card ): and the workspace is damaged so i could not fix... however, i don't agree that this can get anything near a 2D street fighter or kof game (;. keep up the good work anyway!

Frans Bouma

August 17, 2001, 04:47 AM

The rendering of the halflife models could have been done with Valve's modelviewer routine, which is very straight forward. The code is a bit ugly but that can be re-formatted quite easily. The modelviewer routine is freely available with the HL sdk, or grab one of the mdlviewer sources floating around the net :) (f.e. mine (using MFC-MDI-C++) from ;)). But it's perhaps more wise to use milkshape's native format than valve's .mdl format, allthough I don't know if they differ that much. (but the valve format has nasty limits).

Using the valve rendercode however you can easily place .mdl's in your own 3d scenes and let these scenes come to life without a lot of code.


August 17, 2001, 05:10 AM

Such a Tutorial is really a good idea :)
Most of the parts are useful for any kind of a game -
so I think it's possible to create a first person shooter
(for example) in a few more days.


August 17, 2001, 05:58 AM

Wow Great.... :)
the window title remind on an old bruce lee's
martial art book "how to win a fighting in 7 days"


August 17, 2001, 06:32 AM

Just noticed something funny in the way you use arrays.. =)
Here's a few blocks of your code..

struct cb
char cbc[5];
double cbt[5];
comboBuf.cbc[5] = comboBuf.cbc[4];
//comboBuf.cbt[5] = comboBuf.cbt[4];

And my point is that you declare an array that has 5 elements in it,and you use the sixth..
Allways remember that arrays start from [0].

Sorry to be a critic but.. =)

Wim Libaers

August 17, 2001, 08:34 AM

I think it would be better to either lower the resolution of the character textures, or increase the resolution of the ground texture. In addition to the problem of no shadows being present, the blurrier ground makes it seem as if it is out of focus, so pretty far from the feet which are rendered sharply (more in focus). Making both equally sharp or blurry will make it more obvious that they're on the ground.


August 17, 2001, 09:02 AM

Dispite the critics, your efforts are commendable. Although I'm a DirectX junkie and probably will not use your tutorials, the concept is great. I think what is interesting is that I bet alot of people telling you x or you should of done y, probably have not completed their own game of this caliber. With this in mind, many people new to OpenGL will appreciate your resource, and you can leave it to them to make some of these "enhancements". But you have done two things in general that are more than commendable:

1. You FINISHED a game.
2. You freely made the source available to others, AND explained the

For these two reasons alone you should be proud of your accomplishment.

I'm sure you appreciate the feedback of others, and some people have good intentions when they tell you what they think is wrong, but some like to flaunt their intelligence/ego just to seem important. I am in the programming industry, and I see it all the time. If you keep putting out tutorials like this, you will get alot of traffic at your website. Good luck in your endeavors.


August 17, 2001, 09:47 AM

Maybe that this is in general the better way, of buiding a game:
First create the most importat parts, so that the game is playable,and implement other features ( like complex landscape-rendering ) afterwards.
I think, there are many people first implementing as many features as possible in their engine, and then the game will never be finished !
I think a good example for this are all the landscape-engines which are alwas shown here as IOTD.


August 17, 2001, 11:52 AM

slaps himself


August 18, 2001, 05:40 PM

"Throughout the course of the tutorial, a novice programmer who is fluent with NeHes base code and OpenGL will go pro by learning the tricks of the trade behind character animations with Brett Porters PortaLib, DirectMusic and ..."

i like what you're doing. the fact that it's a tutorial is indeed commendable, though i take some offense to the above comment.

one of the issues i have with nehe's bascode (though i also applaud his site because it does get people interested in programming) is that the the hard parts are already done for you. one simply skips over these and takes it for granted without bothering to learn the true nuts and bolts of coding such an application.

the 'pro' developers that i know (read: those who code for paychecks) are not even in the same universe as those people who have only cut and pasted nehe's work and added some features of their own.

i understand that his site is intended to introduce people to opengl (though most often it introduces them to programming as well which is a bad way to start imo) but with that said i find it almost a slap in the face to say people will 'go pro' if they learn some simple algo's from your tutorials. these same 'gone pro' hacks wouldn't even get an interview.

so um, yeah...nice work, but ease up on the hype ;)

This thread contains 27 messages.
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.