last updated 9/3/2003

Real-Time Strategy

For some screenshots go here! (UPDATED 4/23/03)

History (started 12/27/01)

Sunday, September 7th, 2003

Worked out some object stuff. Each map will have an object file associated with it, listing every object on the map at load time. The engine will iterate through this list, loading unique object types and their associated bitmaps into memory. Already loaded object types will simply be duplicated in memory. Like just about every other data file, the object map is a text file.

Got it so map will load number of objects to fetch. Next step is to actually load each object and it's associated bitmaps.

Hey, at least I'm working....

Wednesday, September 3rd, 2003

Damn the games! I can't stop playing! Ahh!! I finally bought Cossacks:European Wars and Art of War. The Gold Edition, for about $20. Man, if this game was set in medieval times it would be the best thing since sliced bread. Yeah, it's got its quirks. To them us Americans probably seem a little strange as well. Heh. But dang, the gameplay is pretty good. Definitely what I'd like my game to look like one day. I can't wait for American Conquest:Fight Back to come out end of this month.

Got a little work done. Fixed another memory leak problem. I think I've got it so all I have to do now is add mymem.cpp/.h to a project and stick a few externs my global headers.h. Poof. Everything is leak-checked. I think....

On another note it's godawful slow on large maps. Too slow. 64x64 is what I'm testing at now, and it's good. I tried 256x256 and it was forever logging. I might need to go less verbose on the logging stuff, or maybe it's because I'm not using iostreams...heh. Note to self: migrate to usage of iostreams. Duh.

Saturday, July 26th, 2003

Hiatus. Sabbatical? Laziness. Bah, I'm not cut out for this line of work. Heh. Good thing it's just a hobby, or I wouldn't be in this line of work for very long (i.e., fired). Heh heh.

Ok, blame it on Rise of Nations. It's not my fault BHG made such a great game. What was that old excuse? Oh yeah. I'm testing the competition. That's it. ;)

Wednesday, April 23rd, 2003

Basic font support working. See shots page for example. Take care.

Monday, April 21st, 2003

Got a basic memory manager working. It only serves to track leaks, ensuring that for every 'new' I also have a 'delete'. Got textures reloading properly when switching to/from fullscreen. WM_PAINT messages seems to be handled properly now, since when I'm in windowed mode it appears to redraw properly without corrupting other windows. Added preliminary code for Objects. Just a hack right now, but I'll be building on the framework with time. See the shots page for some pics. Slowly progressing, thanks be to God.

Saturday, April 5th, 2003

Got some work done over the last several weeks. Blending smoothly, albeit linearly, between tiles is a milestone for me. See the shots page for details. At this point I'm gonna' try and go back and work on my win32 stuff, since I think I've got some memory leaks. I also need to fix things like failing to reload textures on alt-tab, etc.

Wednesday, March 11th, 2003

"Soon" he says. "The urge is creeping up on me" he says. LOL!

And what, a year later? At least since I did any actual work on the project. A year and 4 days to be exact! Well, I've finally resumed working thank God. The renderer is being reworked from scratch so no new shots. Hopefully soon. Lot more internal work to be done on stuff like map format. Right now all it does is load a map and display wireframe terrain.


Wednesday, July 24th, 2002

Geesh!  Another two months since my last update.  Must've REALLY looked like I abandoned the project.

Ok, really, I'm doing more "testing".  ;)  This time on Warcraft 3, which is even in the same genre as my game.  So lots to be learned there!

I will code soon, Lord willing.

Monday, May 20th, 2002

Wow, over two months since my last update.  Must've looked like I abandoned the project.  Well, to be honest I've done next to nothing in the last two months.  Unless you count playing Homeworld and since April 4th, Dungeon Siege, as "testing".  Gotta' keep up to date on what else is out there, right?  :)

The urge to code is creeping back over me.  You have to remember, I didn't play one single game since a little before 12/27/01, so that was like 2-3 months straight with no games.  Just making up for lost time.  Heh.

I'll post more soon, Lord willing.

Thursday, March 7th, 2002

Did I mention I'm refining?  Almost done reworking my classes.  I've made a CWinApp class which encapsulates the functionality of the base window application (creation, deletion, etc.), mouse and keyboard handling, and rendering, and I've made a CGameApp class which derives from it and will encapsulate the map and objects (CMap, CObjectManager).  Any class that needs textures can derive from CTextureManager, which is what my CWinApp does for the mouse texture, and is what my CMap class for the terrain tiles will do and what my CObjectManager class for the object sprites will do.  Consequently I have only one global for my logging functions.  I can't say whether this is good or bad, but it's neat.  Heh.

See the latest screenshot for my Developer's Desktop.  Oh wow!

Did I mention that I'm slowly progressing?  :)

Monday, February 18th, 2002

Still refining.  Made a class for my window code.  Found source of fullscreen picking slowdown: my Voodoo3 driver.  After loading the latest [beta] driver I could find (1-16-01) the slowdown disappeared.  Slowly progressing....

Sunday, February 10th, 2002

Refined a few things.  Got rid of the lockups, I think.  It ran for maybe 9 hours at least.  I had forgotten to delete arrays with brackets (i.e., delete [] foo;).  Oopsie!  Made minute progress on object map code.  Next update should be with it working.  Means I'll be able to have variable sized shadows for the trees as well as multiple objects in one tile (i.e., tree + undergrowth), among other things.  Switched to perspective for a breath of fresh air.  Let me know if it looks any better.  No matter what I do I'm not going to allow camera rotation though.  It'll always be fixed.  Got some issues resolved with alpha blending and the depth buffer, which allows me to do decent underwater occlusion now (2D considering).  Oh, and rudimentary picking is working (you can see a tile selected in the latest screenshot).  My framerate drops to 1-2 fps when I pick in fullscreen though.  Windowed it seems to work fine.  Weird.  Thank God for progress!

Monday, February 4th, 2002

Alas, not much accomplished in the last 11 days.  Hmm.  Got lots of sleep though!  Latest screenshot is nothing sensational.  Progress thus far includes more non-rendering code work.  Engine loads map.txt which includes two vars: heightmap and tileset.  Heightmap tells it what BMP to load for the height information. Tileset is another .txt file which has the number of tile textures and a sequential list of them.  Sample used for latest iteration looks like this.  The tiles are 64x64 24 bit BMP files, but this should be any size supported by your card.  256x256 looks great zoomed in, but takes up as much memory as sixteen (16) 64x64 tiles.  A full map could contain up to 65,536 different tile textures, though around 200-300 would probably be sufficient.  Yet to work on object map code.  Actually, I'm probably going to spend all of my time going back and refining stuff for a while.  I've been experiencing complete lockups after continued running of the engine.exe.  No doubt due to sloppy code.

Thursday, January 24th, 2002

Conventional small tiling textures are back and here to stay!  See the screenshot I made of some randomly distributed tiles (still the 4 same base types).  Got tons of work done on non-rendering code, converting lots of C stuff over to classes.  Destructors are awesome.  Next step is to get the object map working so I can drop some controllable, or at least mobile, units into the engine.  Stay tuned.

Monday, January 21st, 2002

Heh heh.  Last update was pointless.  Problem was in fact the GENTEX.EXE.  I have no clue why, but the particular version I had uploaded didn't work.  Fixed that.  New version seems to work fine.

Sunday, January 20th, 2002

Updated ENGINE.EXE.  Got a bug report from a WinXP user.  Program made it to right after where it converts the giant bitmap into 256x256 chunks, then failed.  Interesting to note that in his log.txt it stated that normals were generated, so I'm assuming I fixed that at least.  Working on a Win95 platform trying to debug for the 2000/XP platform is like coding blind.  I made some changes where I could imagine something being interpreted differently on the advanced platform, but please let me know what happens one way or the other.  Just grab the new ENGINE.ZIP and you'll be all set.

Oh, and I forgot to mention that I added command line options for different screen resolutions.  From 320x200 up to 1024x768.  Otherwise it defaults to your desktop resolution now.  I personally didn't notice anything significantly different in the way of framerates, even for 512x384.  I couldn't read the font in 320x200.  Heh.

Meanwhile, busy converting the engine back to small tiled textures.  Also expanding functionality on the way, so progress is slow.  Stuff like making the engine load a MAP.TXT file which contains which tileset and heightmap to use.  Like making a TILE.TXT file which contains all the tile BMP's to use for the tileset.  Etc., etc.

Saturday, January 19th, 2002

Added link to program that generates the ground texture.  Updated engine to now load ground texture.  You must generate one before you can run the engine, since I deemed that was easier than making you download a huge BMP.  Links are now at bottom of page.  This iteration has some seam issues on generation of the 256x256 chunks of ground texture.  Engine now logs everything to LOG.TXT, so if it fails to load or crashes you can read the last thing it did.  Made a fix which may or may not fix the crash on normal generation on Win2000/XP systems.  If you can, try out the engine WITHOUT -normal and see what happens.  Let me know!

Due to size issues related to the use of one large ground texture I will be going back to 64x64 seamless tiles, ala Warcraft II or AOK.

Tuesday, January 15th, 2002

Yanked out the run-time precalc of the terrain texture and instead made a separate console program to generate it.  It loads 4 base tiles, snow1, stone1, grass1, and sand2 and makes a giant texture for each map.  At run-time I then load this giant bitmap and break it up into 256x256 pixel chunks that I then use to texture the heightmap.  Next I'll work on tidying up everything so I can post the latest program/data files for you to check out.

Saturday, January 12th, 2002

I wanted to make some decent progress before I made another update, so finally here I am.  I am pleased (and thankful to God!) for finally getting something decent in the way of a textured landscape.  Some more tweaks need to be done (as you can see from the screenshots), but it's a big improvement over the way it used to be.  I'll update the executable as soon as I can so you can experiment with different base tiles and heightmaps and their resultant variable texture combinations.  The blending I'm using at present assigns the same height to every 16x16 section of pixels, so that's why you see the tiling effect.  Hope to post new shots with it fixed soon.  Lord willing.

Monday, January 7th, 2002

Laziness precluded my updating prior to today; finally finished revamping of rendering pass such that now the terrain, water, and objects are all drawn in one pass - does this increase fps? honestly, I don't know heh heh; added wireframe display at request of Possibility (; added texture toggle; water level adjustable; water translucency depth adjustable - how far you can see underwater; now I will finally focus on texture blending between tiles - I want to do this in realtime but may simply end up using tons of memory and precalculate for entire map at runtime.

Thursday, January 3rd, 2002

Totally revamped drawing routine - now doing one pass instead of three (terrain, water, objects); only got terrain and water working in one pass now - will do objects later; at suggestion of Brannon ( on the forum I only draw visible terrain and water tiles.

Sunday, December 30th, 2001

Got time working - water and trees now seem to oscillate the same no matter the frame rate; trying to get some kind of shoreline surf effect going; displays the mouse pointer now - need to reread that article on framerate independent mouse motion - heh heh.

Saturday, December 29th, 2001

Added rudimentary font support; finally I can tell frames per second!  added some command line options: one for no terrain normals (which seems to cause crashes at this point on some Win2000/XP systems) and one for one step at a time error testing (takes forever).

Friday, December 28th, 2001

Fixed bug where land terrain texture sometimes became a water texture; rounded trunks of trees in Paintshop Pro; still need to code timing functions and add font support.

Thursday, December 27th, 2001

Water perturbation limited to onscreen portion of watermap - sped up routine drastically; previously was updating entire watermap in memory every frame; added wind effect to trees; need to add timer routine(s) to normalize the timing of water and wind effects.

Wednesday, December 26th, 2001

No history up till now, so we'll just start with what's working: terrain rendering; water rendering with realtime sine wave perturbation; rudimentary object rendering (trees, boat); objects in water bob up and down.