May 2007 Posts

Picking and Bounding Boxes

Got the next essential small step of the project in today, picking, that is selecting an object that exists within a 3D world from a mouse click in the 2D world. Found some really good resources for this including the Hazy Mind site again and a new one I discovered by accident by Charles Humphrey. I had a little trouble at first with working out how to calculate a bounding box, but yet again the XNA community came to my rescue. Thanks to Andy and his blog I now have a custom content pipeline that generates a bounding box for my mesh automatically.

Now that you can select a unit on the map the next step will be to add the ability to add properties and *gulp* custom scripts!

Unit Placement

I have to be honest I haven’t been working as hard as I could have recently on the TD project. The reason for this is that I have been trying to decide whether to progress with it atall. I believe it is an awesome project and will be successful, however each time I complete something in the project it adds to the complexity never subtracting from the amount of work remaining.

I finally however decided that I would stick it out as my mantra goes "Your success is only measured by your accomplishments". If I constantly keep starting new projects then I will never accomplish anything and therefore never be successful.

I had a long chat with my new friend Ebor Jan Folkertsma about different technical challenges associated with developing a tool and a game engine in tandem. The chat was extremely useful in the fact that it allowed me to take a more objective view of the project and split it down into simple tasks rather than getting swamped by the enormity of the project. It also made me feel like I wasn’t sailing into uncharted waters, there were others out there that had run into similar problems and had come up with solutions to solve it. Basically Ebor gave me a big morale boost which encouraged me to stick with this project.

So onto the progress. Well as I said not a whole lot of visible progress has been made, I have mostly been re-organising the core of the project again to best suit my needs. I have however been adding more functionality allowing the user to place objects on the level in preparation for setting triggers and the like later down the road.

Next step in the project is picking so that the new objects on the map can be selected and have their properties modified and triggers added and the such 🙂

TD Terrains

Well i havent updated in a while one the TD project, not because I wasnt working on anything but mainly because i have been struggling with the nuts and bolts of 3D RTS game development.

Normal game development is fine when you only expect ever to have your game to simply run. When you want to make it run as a game but also act as a tool at the same time you have problems. The way the TD project is structured we have a game "Engine" project that contains all the code to display our objects on the screen, then we have a "Tool" project that contains all the code for making maps, it creates an instance of the Engine so that it can render those objects. We also have a "Game" project that will be the actual game and will contain all the other game type logic like menu systems etc.

Getting all these to work nice and happily and in an efficient way is proving to be umm difficult. The problem is confounded by the fact that the tool requires multiple rendering windows to display things at once, causing me to redesign alot of the way the game works. When you only have one window open you can set classes to be static all over the place, but if you need those classes to interact in a non static way then you have to use managers to sort out how they should interact, introducing more complexity nightmares!

But anyways, enough of that. Time for pretty pictures:

As you can see Mr Graham ‘Golden’ Furner has been making good progress on his terrain generation algorithm for the project. Hopefully I will beable to get enough of the structure in place so we can begin to merge the two parts of the project together!