Sunday, November 27, 2005

Concept Art

I was looking at some concept art other people have done on Google. There are some amazing designs. Most of mine are done in ten to fifteen minutes while I'm watching TV or waiting for VS to install! The ones on google are so well drawn, the perspective, the ratio, the attention to detail, they even consider the size of a human, then I look at mine, and it's funny! It's like comparing a 10yr olds painting to a true grphic artist/designer. So i'm not sure how insulting it is to me to even publish my concept ideas! But hey that aint gonna stop me I think I'm happiest when I'm a ten yr old!

These drawings were done when I was installing Visual Studio. Hence the inspiration came from objects around me, from the number 7 and 8 to a mouse.

Armadillo or an Earth Drill piece

The picture on the right started off in the shape of a fish with one eye, the eye being at the top.

ES sideways and the letter F

Number 8

Where I currently am

I'm now at a cross roads on the edge of the cliff. One road goes down the cliff to a bottomless pit with scary pointy rocks the other goes back and the last way goes forward into the unknown.
It's times like this where I wish I deisnged the program better instead of jumping head first and seeing how much I could do, then again this project did begin as an exercise to see what I could do with DirectX and how easy it is to do it, or at least thats my excuse for the poor design.

The solution is split into two.
  • The game and
  • The Rendering engine

Ideally I wanted to contain all the directx calls and references into the rendering engine. However due to needing DirectInput to handle what button was pressed and translating 2d into 3d coords I needed IntersectInformation in Direct3dX. I've also used default mesh objects for the weapons which are contained in the mesh class. I've also used the Vector3 and vector2 to hold the postion of the games characters (weapons, ships, bullets, etc). These are all things I've implemented in "The game" and so I was unable to seperate all the Dx calls into the Rendering Engine.

I've not done any UML for a while, but I've tried to draw out the classes and how they are implemented in a class diagram.

Initially I had RenderMesh and MostSimpleMesh in one class, but the memory requirements was high. However each enemy I had on screen contained its own textures, having 20 enemies meant a lot of memory usage. I've now seperated the class into two, RenderMesh and MosstSimpleMesh. MostSimpleMesh is only held once per enemy, in colEnemies. This does mean that less memory is now used. 20 enemies, but only one texture.

I've implemented a basic particle engine for explosion and flying stars going down. The players ship can drift towards the mouse cursor at a set speed or more accurately move directly where the cursor is. The ship can hold addons including weapons and the particle emitter for the engine exhast. In theory you should be able to hold a number of weapons on the side of the ship and use meshes (.x files) for them. The player can also shoot, different fire for different weapons which do different amount of damage and travel at different speeds.

A screenshot of the game running, with enemies being shot down:

The lighting needs fixing up, in the game and in the menu. I think I also need to get the background to slide down and also make it a few semi-transarent layers to simulate a nebula and the ship moving upwards.

At the moment I've only got one menu, i'm using the same menu for the main menu and the in-game menu. In the near future I think I'll seperate it out, I'll have a simple 2d menu for in-game and a more dramatic fancy 3d menu for the main menu.

Installing DirectX in Win2000

For the last couple of weeks I've not been able to update my program. First thing was I bought a bluetooth mouse that had a faulty adapter. When is the worst time to plug in a faulty adapter? When windows is loading, that way it can cause a surge and ultimately switch the PC off when Windows is loading; causing data to not be loaded os saved properly and general corruption of important Windows files. That is what happened to me. Despite trying, there was no way to restore my Windows 2000. So I had the much practiced but awkward task of reinstalling windows and all my software and of course trying to recover saved passwords and emails. Installing windows is no fun, ith al those F's , C's , U's and K's !!

This time however I installed WindowsXP since it has restore points, I thought it might be helpful! I installed Offic2003 more than once and it still refuses to load up Access, however Word and everything else loads fine though! Yesterday I spent a long time installing Visual Studio. I must have installed it 4 or so times with various options, but it still complained that the debugger wasn't installed. Only after installing SP1 did it work properly and I could finally run a solution without any problems.

I then tried to run my ES Game which seemed to run ok, it just wasn't able to create the Direct3d device? I had the same problem in Windows XP as well. Perhaps it my program I thought, so I ran some other DX programs, all worked fine. I then ran programs that used Managed DX and they too had problems. So it has got to be the managed DX that messing it up somewhere.
I have no idea why though. I've tried installing the Directx9c user runtime -which downloads what it requires from the web, the 9c manged redistributable and the oct 9c redist, the oct20005 sdk - which doesn't run in Win2k. All with no joy, I'm not sure what I had isntalled last time that allowed it to work. I've just read that from Feb 2005, Win2k is no longer a supported platform for DirectX development ( So i'm downloading the Dec2004 sdk (They seem to release sdk updates every two months), if that doesn't solve my problems I'll have to try and get it to work in WinXP. I can't believe how much trouble I'm having to get this working. I just hope no end-user has to go through this, as I'm sure they would just not bother, give up and move on to the next game.

The Dec2004 sdk solved nothing. I've given up on Win2k since its no longer supported it's not worth my efforts or time. I installed the enhanced asus video driver for my nvidia Geforce 4 card, no help there. I installed the via 4 in 1 driver (it has AGP 8x driver) that didn't help.

I then ran the Windows Update and installed the Service pack 1 for .Net framework 1.1 and the service pack 3 for framework ver1.0, restarted windowsXP and what do you know, it started to work. So now my game runs and I can reume development.

Although I can't be bothered today, so I might just try making a start on documenting what I've done.

Saturday, November 26, 2005

Finished Medal of Honour

Finished Medal of Honour Pacific assault today.
I quite likeed the way the game starts with you landing on Tarawa island, you die, and then the game back tracks some years to the beginning. You then do training, and eventually the last level is you landing on tarawa island. Neat idea starting and ending the game in the same area, except the second time you're better equipt to deal with what is thrown at you.
The levels are short at the beginning and gets longer at the later levels whereupon you start to realise why there is a quick save! Having short levels to begin with is another good idea, it gives the illusion of quick progress whilst also easing the gamer into the game. Once you've got them eating the honey and they realise how niec it is, they then want more, whereupon you can make them work for it i.e. longer and more difficult levels.

The main menu is also interesting in that it changes as you progress through the game; the sun starts to shine through you can see the nice blue ocean, the tent gets holes in it, everything becomes nicer, brighter and cleaner as you get further in te game. Also when you choose an item in the menu it takes you to a section of the 3d scene. For example if you click on multiplayer the camera pans to show guys playing cards, exit will pan the camera to a guy sitting on a jeep, intelligence pans to the noticeboard whereupon a 2d translucent sub menu is shown.

Wednesday, November 23, 2005

Concept Art

Ship design

These are some of the concept ideas I had for possible ship designs. One if the few good things about a tablet pc is that you can draw with it. They aren't the best pictures, but any that make it into the game will have to be done in 3d anyway. I'll probably use gameSpace to create the mesh since it's free.
Creating the 3d mesh is one thing, having the imagination to know what to create takes something else.






I own the copyright to these images, so please ask if you wish to use them.

Monday, November 21, 2005

Medal of Honour

I was playing Medal of Honour the yesterday. What a great atmosphere that game has. Could it simply be the subject material, the war, the associations and friendships that are made with your AI companions, the cut scenes, the heart moving subject/content, the pace in some parts or the subtle music that is heard yet not noticed. Whatever it is there is a good atmosphere.
The game had some nice ideas that I thought might be worth replicating.

  • I like the idea of having to call for a medic to patch you up, as oppose to it being done automatically, perhaps could add a repair bot to my game? Or even make it so you have to manualy turn the shields on?
  • I like the way the game shows stylised screenshots of what the oncoming level will be like. A bit like the grey foretelling future video clips in Prince of Persia Sands of Time that show before the level starts, which sometimes help in solving puzzles. Should I add this into my game though? Not sure, it really does depend on how long level take to load. There needs to be a threshold value. E.g. If it takes longer than 1 min to load a level then some music or screen shots would be nice to see, rather than just text that says "Loading...". Of course if the level is going to load in 10 seconds, then I don't think it's worth doing. Even if I did add it, what would I put? As all there would be is a few pictures of enemies being shot... a waste of hard disk space?
  • Having buddies/companions/colleagues in the game is very good, as we all need a rock to associate with, after all isn't that why people watch soaps? ES will certainly need to have some common ground through out the game. Perhaps a general or a major who is in constant contact with you or a hangar bay where you can store weapons, or at least feel like you are returning home after a long hard day beating up aliens.

Hmm.. I think I need to add a to-do list somewhere on this site. And/Or a possible
features list; what is possible to add, what would be nice to have and what has now been done.

Sunday, November 13, 2005

How it got started

First off I should mention why I'm doing this.

I'm a big fan off Xenon 2 and I loved the way you could buy and sell items for your ship at the end of a level. At one point you were able to have a ridiculously huge ship, well the same size ship but huge amount of addons put onto the side. From ion lasers to missiles launchers to hovering drones to side shooting things.
I liked the levels, they made good use of the sides of the screen having walls that you could hit or bouce off, plus you had monsters crawling accross, or was that R-Type? either way the walls were as dangerous as the enemies that came hurtling towards you. So I was certain from the beginning that I wanted that add-on feature in my game.

Years ago I created a 2d scrolling game. It was working from stars falling down to the enemies flying and shooting at you, to your ship being able to fly around. You could even upgrade your ship or change it.
I never did get round to finishing the game off however. Being a 2d game there was a lot of graphics works to be done and I just didn't have the time to create all the levels, graphics and animations I wanted. Since I now wanted to learn directx I thought, why not recreate this game in 3D, that way I can take advantage of lighting, meshes (hence not so much graphics works to be done), particles effects (so little or no explosion animations need to be pre-rendered) and other effects.

Since I was beginning development from scratch I tried to break the project up into two parts:
  • a Directx rendering engine project - This will handle all the interfacing with DirectX and the associated rendering routines. Hopefully as generic as possible.
  • a Game project - This will hold all the game related code, from SpaceShip classes to bullet and weapon classes to loading up resources (sounds,music,textures,meshes,etc).
I've never done any Directx programming before so there was steep learning curve to learn. The whole project/solution was as much about learning Directx 9, as it was about having fun and doing something that I eventually could be proud off.
After lots of searching I eventually found an example of Drectx 9 that didn't use DirectDraw. After reading through and digesting the code I later decided to make my game 3d and not use 2d bitmap sprites.
This example provided the basic skeleton of my eventual solution. I also found a fantastic example called PathFinder 3D that illustrated a lot of DX9 techniques. From how to draw particles to detecting what object the mouse is over (translating 2d screen coord to 3d world coords) and also how to set the opacity of objects.

With these two Directx9 examples and my years of knowledge I set out to create a 2d style scroller in a 3d world.
With the eventual aim of selling it.

It begins

This is my first blog post ... ever.
This blog will be all about my new game. The game is a 3d top down space scroller; a bit like Xenon2.
It will be created with VB.Net using managed Directx 9. So I will try and point out development problems I encounter and any issues I may yet have to resolve, such as the characters and story. As these can be changed at any point during the development process. It is partly for other people to watch the progress of the game developing and add or suggest their own ideas and partly as a personal record for me.

The blog will include the development issues I encounter, the game ideas I have, concept drawings and story ideas.
This is an ongoing development process, so any ideas or comments anyone has are welcome.