Blobula 0.7 with new maps

Not a whole lot, but 2-3 new maps have been added.

Download the demo here.

Whats up with Blobula?

Allright the last couple of posts have been very technical so now its time for some more fun stuff. I have been working on Blobula off and on the past couple of days as a I work on my last two projects for the month (networking and engine 1). Right now, I'm getting ready to implement the challenge mode that will actually have a timer and high score table. I'm working on some maps to use in the challenge mode. A friend of mine made one which uses the "zip line" effect in a really neat way. I'll put together the map pack later tonight and send it out.

Dispatch Table

The Dispatch table is a template class. The map contains a objects that are derived from a base action class. The derived class overrides a pure virtual method called Execute on the base action class. Each derived class is actually templated to hold a function pointer. Execute is always called on the base class and the arguments are always passed as the base type pointers. So as long as Rect and Circle derive from Shape, you can properly call RectToCircle(Rect *, Circle *) through the table by passing (Shape *, Shape *).

This is a pure technical note for myself!

A revamp that no one will notice

I decided a few days ago that my "collision library" was poorly written and very limiting. I went on an ardous campaign to rewrite the library so that it performs EXACTLY the same but will allow for easier expansions in the future. My collision system uses a set of bounding volumes (circles, rects, oriented rects) and a huge set of intersection methods that handle them. The system being used was directly from my SGP project where I wrote the collision system into the Animation Engine. This was slowly working against me since the interface for the Bounding Volumes was extremely dirty and used my misinformed version of "double dispatch." The interface was so bad because I was trying to find a way to have the proper intersect method get called between two Bounding Volumes when you don't know what type they are (if a & b are just of base type BV). To solve this, I created an interface where each BV type knew about the other BV types. This worked but created a messy dependency problem and also made it a huge pain in the ass to add a new collision shape (basically keeping me from adding one). This problem also occured with my game objects. Certain objects stored their data differently and would need to perform different kind of collisions. This time to solve this problem, I wanted to avoid the shitty interface issue so I created a "Dispatch Table" that stores a map of function pointers. Each object has to have a unique ID and a unique bit flag that when OR'd with another objects bit flag creates a unique value. Using this data, you can register several functions with the table and make a quick call which will resolved which intersection method to call. This system worked so well that I wanted to do that "look at my shiny new hammer" on my collision library. While this is normally a bad idea, I knew my collision library needed it. So know, even though more tests are needed, I have moved the library out of the Animation engine and removed all the dependices between the Bounding Volumes. Hurray...now no one will notice

Hot Damn

templates can use const!

Quick Thanks

Wanted to quickly thank the following people for their support with Blobula: Laura Skowronski, Mike Belotti, Dan Krotov, Theo Christiansian, and John Sica.

Blobula 0.7

Hey hey hey everyone,

Download the new demo.

This one adds two modes you can switch through in the game.

Challenge Mode (hit F1) will make you find the "exit shapes" to get the next stage.
Freedom Mode (hit F2) will let you cycle through maps with the bracket keys.

The map editor has also changed. When you create static shapes, you can also specify what type you want them to be. Setting it to geometry will just make them like normal. Setting it to trigger will make it an exit shape. Force Emitter is also in there but is currently unsupported.

All old maps are invalid with this version of Blobula. Sorry!

Blobula Freedom v0.6

Hey everyone,

Here is the newer version of Blobula Freedom.

I just added a slightly more proper jumping feature. When you hold space bar down, the blob will start applying a force down that builds up (to a max) the longer you hold it down. When you let go, that force is applied in reverse upwards [Credit to Mike Belotti for that idea!]. You can use this to try and jump. I'd appreciate any and all feedback!

Oh and I wanted to share some info on editing the game:

I tried as much as possible to make the game data driven. All this data is currently stored in easy-to-edit text files that are located in the Resources folder. Here are they key files:

Resources\Blobula_Freedom.ini will allow you to edit basic game settings like gravity and max jump speed along with blob's color.

Resources\GameData\BlobSettings.CFG will allow you to edit physics settings for the blob including the strength of the various springs that keep the blob together. This is fun to mess with and see what will happen. Just remember that collision is done with the outside points of the blob only! Also make sure to keep the radius under 200 or else there shall be problems!

Oh as an extra note, try to keep any shapes you make in the editor to 4x4 tiles (when set at 64, tile size - the default). There is a small bug with the spatial partitioning system that doesn't like objects being much bigger than that.

Blobula Freedom v 0.5

Hey everyone!

Download the Demo!

Well this is a brand new version of Blobula..the game about a blob.

So this is called Blobula Freedom because the real Blobula game will actually have a rules, goals, etc. This is just a mess around version.

I added more maps that you can cycle through by pressing [] keys. I also included the map editor (no instructions though) if you want to try to edit / create a new level. If you create a new level, make sure you go into the resources/maps/ and update the Blobula_MapList.ini. I will get some better documentation up soon.

Note about the map editor: I did some testing and found that unless you have a new version of the .NET framework installed, you won't be able to run the editor. I'm trying to find a work around for this but my lack of knowledge on building a release-mode c# application is working against me.

Any and all feedback is 110% encouraged! you can post here or hit me up at naveen.nattam@gmail.com.

Thanks everyone!

Blobula v 0.2

Hey folks: as promised, here is my first blob demo.

Vastly improved demo over the one that was up here.

if there are any crashes..well sorry.

Physics and the Matrix Revisited

Physics has been a harsh mistress for me. I always seem to repeat the pattern of progressing very fast then hitting a roadblock so hard that my nose comes out my...well you get it. I spent the last several days fighting my mass-spring system for my blob. I tried several things and was becoming increasingly frustrated. I finally stumbled upon a post at GameDev and took found one fellow programmer as frustrated as myself. He got a lot of good advice which included stepping back and breaking the problem down into small demos. I needed to do this so I took some deep breaths and wrote several small pieces. Starting with just two point masses using verlet integration, I started messing with apply forces. I eventually came upon something that never fully dawned on me before: Forces are constant! This is incredibly obvious to anyone who has dabbled in basics of physics, but I didn't quite realize how important that concept is. The way I was implementing, sources of forces can lumping up every iteration. So my springs were adding their force every frame to my points. Each spring generates ONE force that is changed every frame (not added!). Egads! So much to re understand! So many doors opened!

Now for the second part of my post. I recently acquired the score to Matrix Revolutions and I have to say its way better then the movie. Thats a shame.

The Times they are a changin

My adventures in becoming a game programmer have led me to learn more about myself then just technical-oriented stuff. I've learned a lot about myself as a person. I learned that my real passion is for technical oriented things because it fuels my love of creative works (games, movies, books, etc). I learned that when time is against you, you must divide and conquer and you must do it fast.

I'm not sure why I opened with that, I think its a note to myself really. Anyhoos, to the point! I've been working on Zombocolypse for a while now (roughly a month) and progress was sort of moving forward at a decent pace. The more I got into it however, the more I wanted to pull out. Making a shooter game should be a piece of cake. But for the love of everything holy, I don't like making it! I came to the realization that my real love for personal work is off the wall kind of experimentations. I used to do that all the time and I loved it so much. The shooter game has led to less and less of this and more frustration with my personal work. I spent the last couple of days after break rewriting my entire collision system to provide a much more interesting map making tool. This redesign caused me to rip apart and toss a lot of old code that I admit was poorly designed in the first place. Now I have an enviroment to create some fun experimental collision demos. This has effectively put a stop to Zombocolypse. Now I am going to venture into some more "experimental" gameplay.

People who have looked at my work have always like my collision-oriented stuff (springs, blobs) the most. This is stuff that I am more interested in ultimately and I'm going to make it my focus for my game. I am not sure what the game will be but I'm gonna keep it more focused in this "goofy" category and less action-oriented.

I think, I am ultimately trying to make a game Laura would play.

Next goal: get a demo where you drive a blob around a level. See ya then.

The H Grid

So I just wanted to post that my Hierarchical Grid is working! Its not 100% optimized but it does allow me to create several static shapes to form the world geometry. This is pretty neat but is requiring some serious rewriting of my collision code. Still more work to do but now my level collision is independent of the tile map! The next step is to create some new rendering methods to draw in polygons. If I can do this, then I can actually create some truly odd levels.

Live Free or Die Naturally

Happy Die-hard day everyone!

The State of Naveen

Hi everyone. Man o' man it has been so friggin long since I posted...so much has gone on and I've just gotten lazy with keeping this blog up to date. I'm gonna just sit here with some tunes and hammer out everything that has been going on with me (as much as I can recall at this hour).

School has been going well. I finished last months classes pretty decently and I'm about to finish my AI course tommorow (or later today depending on how you look at it). AI has been a complete blast. Our teacher, Jerimiah, has been on of the best teachers I've ever met in my academic career. His care for his students understanding of the subject matter is incredible. He has provided extremely good documentation (to the point that I never actually went and picked up my books). The labs were not exactly challenging but did teach me a whole hell of a lot. The best thing has been just asking Jermiah questions and bugging him pretty much every day of class. We were required to do a research project (which I just wrapped up) for the class. We were given the option of programming a little virtual robot to compete in a deathmatch (in Java using a nice API to control the bot) and then the choice of making something about a topic we did in class, etc. I chose the later and took the current state of the zombie game and put some AI driven agents to fight the zombies. Overall the experience was really awesome.

The whole project has really gotten me into AI. I think the main reason I got into was how much all my collision and linear algebra experience came into play. The topics were so intertwined. Its because of this that I have already created a list of todo's to re haul how world geometry is created in my game. While this will put my game behind a bit, I am more then certain the new technique will allow for a much better game. The main problem is that right now I am using a uniform grid for spatial partitioning and world geometry that is linked with my tile map. While this is relatively simple it limits objects size (the size of a tile) and also makes for fairly limited world collision. The new approach is going to be researching hierarchical grid structures over break (mostly during down time from all of the weddingness...more on that below). This allows for a grid that has cells of varying sizes that lie in different "levels". Its all a little fresh in my mind but I've outlined a portion in my collision bible (Christopher Erickson's Real-Time Collision ) that'll give me a good start. My plans include to replace the "fill in this tile as collidable" in the map editor to where the user will be able to draw shapes for world geometry. Fortunately the last part should not be that hard since I can port over my drawing tool code from my Animation Editor.

If all the above nonsense can be pulled off, then I am hoping to make levels that will not feel so damn "tiley" (which will result from a separation of the tile map and the collision grid) and take more advantage of all the "advanced" 2d collision I spent over six months researching!

I am simply getting giddy over this stuff I am such a nerd. Sadly this stuff pulls me away from getting on to making a game..but I think this will make the game that much cooler when it finally gets made.

MORE NERD STUFF!

So my new moto has become "Have Data, Will Follow." It is my new practice to try and start with data first in all my designs before getting wrapped up in implementation. If you have a simple way to create data, you can create better implementation.

WEDDING STUFF!

I am extremely psyched about going home Wednesday. My middle brother Praveen (aka Sexual Chocolate...hehehehe) is getting married to Jennie Allen on Thursday then Saturday (Hindu/Catholic weddings respectively). I got bumped up several months ago from an usher like role to a groomsmen. This'll be a first for me and mah family. I am extremely excited to be around so much of my family. They are just that loud and fantastic.

GAMES STUFF!

So Hellgate is here. While I like the core game play, they game has so many bugs that its a real disappointment. Being a fan, I'm willing to stick with the game and watch as they patch it. Flagship is already going nuts working on fixes for the game. I admit that they've already lost a lot of potential fans with the bugs.

On a more positive note, I've gotten really into three odd ball games: Simpsons, Picross DS, and Orcs & Elves DS. First off, Simpsons is just fucking hilarious. The game play is so so, but the humor and simpsons content is so entertaining that its worth going through. Picross DS is just mind-bindingly addictive and next to a cup of coffee, is a great way to get your brain going in the morning. Orcs & Elves is probably one of the most addictive DS games I've ever played. Its amazing combination of turn-based and twitch game play makes for the perfect portable experience. The DS games have come at a perfect time for me since I've decided to take Laura's advice and do something else when my mind hits a problem. The results always come faster that way. Damn that girl is smart. Good thing I'm sticking with her for life.

Thats it! I'm out!

Its so awesome

Hellgate London is here...

Hellgate London is awesome...

The Gates of Hell.....

ALTAMONTE SPRINGS,
FL, US
10/30/2007 9:05 A.M. OUT FOR DELIVERY

10/30/2007 7:25 A.M. ARRIVAL SCAN
ORLANDO,
FL, US
10/30/2007 6:54 A.M. DEPARTURE SCAN

10/30/2007 6:05 A.M. ARRIVAL SCAN
LOUISVILLE,
KY, US
10/30/2007 4:14 A.M. DEPARTURE SCAN

10/30/2007 1:29 A.M. ORIGIN SCAN
US 10/29/2007 11:22 P.M. BILLING INFORMATION RECEIVED

For the last time

Okay I am finally done f'in around with DirectX. This is the last prototype. The next demo will have actually game play (including player health and enemy health as well as 2 weapons).

Updated demo

I created a new version of the DirectX wrapper that we were given. This one uses a 2d quad in screen space to blit the textures rather then using DirectX Sprite class.

Check it out.

Ultimately....

I have a feeling that liking Star Wars is more fun that actually watching Star Wars....especially after 1,2, and 3.

We built this city on updates

Don't fret, I'm still alive and kickin.

Download my prototype here.

Progress on Zombpocolypse has been slow. I've been trying to keep up and have been able to pull off a prototype that for the most part proves all the base technology. I've got some base code up to start setting up the weapon system..but I haven't really put that together yet.

I am not sure what is causing me to be so lazy. I think I've been allowing games to enter my life a little too much and have been playing copious amounts of Hellgate in my free time after school. Hmm..idea: I should post one or two features I am going to implement here as a reminder of what I need to get done.

So whats next? Well I want to get spawner placement / editing into the editor and also get a table up to edit at least one weapon.

Ryan Ellis gave me some good ideas and suggested I focus on enviroment-affecting weapons. So I think with that in mind, the next "features" are going to be the basic pistol(s) and bubble shield drop. It would also help to place actually getting damaged in the game.

Back to the Animation Tool

While working on the first tech demo, I realized I need some new animation data and decided this was the best point to retool the animation editor I had made for my SGP class. The editor fundamentally worked but the code was so garbled up and laid out in a very unfriendly format that I decided to take some of it and move it into a new project. I did some retooling with the buttons and got the basic components working again. It'll take at least 1-2 more days to get it back up and running but the new version is so far a lot friendler then old one to debug!

I've been learning that UI programming can be very tough. There are so many special cases that it can be hard to find a good design that will fit em all and allow you to add more features if you need too. I went with a really basic state system which really breaks down to a few switch statements running behavior in certain spots (Mouse Down events, Mouse Move events, etc). I find that UI stuff can be the most challenging to design since its the most noticeable by the user and they will call you out on everything wrong with it.

A quick note

This is really a note to myself.

I spent the last 2 days trying to implement OpenGL into my Zombie Game and while it worked, there were several bugs under the hood. I was going to go off into r&d thing to fix em all but realized I would only move about an inch forward. I decided to just stick with the DX wrappers we have been given by our school. They are simple and allow me to get to the stuff I care about: gameplay!

While learning about how all that stuff works under the hood (graphics api wise) would be cool, I feel that actually making more games is more important.

So even though OpenGL does provide some nice features, I would get stuck making an "engine" when I really just want to make a freakin game!

Just reverted all the code to a previous version and going to get rolling with Tile Map collision tests.

Chunks and Tools

I've got a new work method which has been going well over that last couple of days. I've been setting myself a few tasks from my goal (in this case the basic demo I mentioned before) and limiting myself to only those tasks in that day. While in some cases I could get more done, I've been forcing myself to quit and just do something else once my tasks are done. I feel this system is gonna be a good fit for a few reasons:

1. Prevent Burnout
2. Keep my mind and time free for school
3. Hellgate London

So I am gonna keep to this. The basic Tile Editor is working in the Map Editor. Right now I have a basic map with a simple navigation graph tied to it saving and loading. The next step in the schedule is to produce a simple tech demo that shows the map and has one moving object using the navigation graph. After that, we go back to the editor and add some more features to place objects such as spawners and items. I'm gonna keep bouncing back and forth between the engine and Map editor. The Animation Editor will be left as it is for the time being but I will need to come and make some definite changes to the interface but I am putting that far down my list for the time being since the editor works in its current form (just not very clean and riddled with bugs). In fact, when I get back to it, I may take certain parts of the code and just rebuild the damn thing but not until the Map Editor is done.

I've been keeping the mantra "one tool, one game" rather then letting myself become overwhelmed with "one tool, any game." The latter thought is my personal enemy and what seriously hampers me a lot of times.

So now for some more promo stuff for Zombpocolypse. I have been getting some test sprites ready to work with. For the SGP game, I made some "circle men" sprites which were so damn simple to draw and animate. Keeping with that tradition, take a look at the basic player and zombie test sprites.



Yeah..thats awesome programmer art.

Warning: Cheezy Post

While my life is filled with several moments that brought or continue to bring me great joy, I have a few very small and very simply moments that when I reflect on them, I can't help but smile.

I just added a new one. Be warned, this very cheezy. I was in my first lecture for Machine Architechture 2 and our instructor was doing his "welcome to the class" slides. Through the slides, he kept showing various movie/tv clips to keep it funny. A lot of the clips were from the Turtles movies. "Some of you may reckognize those clips from the turtles. I grew up with turtles. Now just so you know, I grew up with them through my son since as you can see, I am way above the average viewing age."

Yup thats a keeper.

The Day after the Last Day of the Last Month

The last classes ended on Friday. Things went pretty well. MAR1 (Machine Artchitechture) was pretty challenging and I learned a lot about how low-level stuff works when it comes to computers. OpenGL was a fun class in general. I really like the OpenGL API much better then DirectX. It is just a lot more friendly and you only have to know a few key commands to get around a lot of stuff. We had to put on a project for OpenGL which I ended up liking quit a bit since I tried approaching it with a data-driven design. I also learned a lot about the dangers of DLLs versus static libraries.

I got a good weekend to relax before classes start Monday. I was lucky enough to pre-order Hellgate: London and get into the beta. I can't say a lot since there is a NDA associated with the beta, but I will say it is awesome! So I had a good time with that and spent a lot of time with Laura. She is kind of nervous right now since Animation Mentor is about to start back up and she will be working on her short film again. She has a good attitude regardless of her nerves though and I think she will do well.

So I went ahead and updated my TODO schedule. I need to get back on development with Zombpocolyse. I am going to be working on the tile editor this week. The objective is that once the editor is done, I am going to start building a working demo with just a basic survival mode. This will be a tech test to see if I can use the nav graph and tile editor. I'll also be working on the basics of combat and trying out some new approaches. I am excited to get working on the gameplay after what I coded for my SGP project. I didn't think I was much of a gameplay guy, but after using the system we devised for SGP, I found myself reallying getting into it.

So, by the end of the week: Map Editor with Navigation Graph Editor and Tile Editor.

Till next time,
Excelsior!

Lazy

First off, sorry the demo is not working. I'm still trying to figure out how to fix it.

So onto today's topics: I am being lazy. After I got back from vacation, I was getting into my new project (the map editor for Zombpocolypse). At first, it was back to my old self: staying up late, not paying attention during class and working on my stuff instead. Eventually we were assigned a project for OpenGL to make a code-modeled 3d scene. While I'm not to crazy into doing it, it has dettered me from working on my stuff since I know that if I start working on the map editor or 3d collision, I simply will not work on my open gl. Anyhoos, I spent Monday fixing my desktop rather then working on my project. Good news: My desktop is running games that it previously could not!

And a little ditty: Two Worlds, while flawed in so many ways, is okay when you can play it with a 360 controller and have the graphics cranked up.

3d collision

I've been scared of it but yesterday a great blow was struck! 3D SAT collision worked with OBBs!

Check out the demo here.

Doh! Sorry if it didn't work. I need to check in with a teacher of mine on setting up a open-gl based program for distrubution! I'll post a correct tonight hopefully.

Look at the Controls.txt file for instructions on how to move

Zombpocolypse

So I've only talked about it in passing in the last couple of posts but I am getting started on a new side project.



Zombpocolypse (working title) is a top-down shooter that has the player take on the role of a traveller who stumbles into the town of Everyplace. Your timing couldn't be worse. It seems a bizzare virus has swept over the town turning many of the locals into flesh-eating ghouls. After crashing your car, you find a crowbar and begin to fight your way through town and attempt to escape. Zombpocolypse takes place over several inter-connected levels (kind of like metroid). Each level is objective based with 3-4 objectives per map. These can range from cleaning out all the monsters to fetching items for NPCs. As players complete objectives, they will earn skill points they can spend on updgrading several weapons they will find and they will need to in order to survive the constantly mutating zombies. The game is intended for short, action-filled sessions ranging from 10-15 minutes.

So thats the pitch. Not exactly super snazzy but it helps to keep me focused. Right now I am actually spending most of my time with the editor. After going through my last class, I realized how useful a good tool is. It can really reduce a lot of the hard-coding that has to be done. I just finished giving the Map Editor the ability to create and save Navigation Graphs for monsters, etc. Next up is getting basic tile mapping working. From that point I am going to have to do some serious R&D on figuring out a good way to come up with objective editor.

A comment on Singletons

Allright time for a little tech talk. The following post is really meant for me and is pretty much entirely about programming. So you've been warned to stop reading and go somewhere else to waste your time.

Singletons are a tricky thing. When first introduced to students, it represents something awesome. You see something that can be accessed anywhere by any object. This seems to open up a world of possibilities. This one amazing place you can stuff just about any piece of information. Singletons are pretty awesome in this regard but all of these powers are also what cause singletons to become super villians of the software patterns.

My experiences has shown me that Singletons cause severe software arch rot. Right in front your eyes, Singletons can cause your supposodly brilliant design to slowly crumble and fall apart. The first major problem is that they get in the way of what an object should be designed to do: complete a task and complete it well. The fact that singletons are super-globals slowly encourages placing data that is not global into them and giving them functionality they do not need.

The next horrid problem with Singletons is that they begin to limit your design. While you may say "there will only be one instance of this object" and set out creating this object following that motto. The moment you realize that you need more then one, you will have to unwind a hideous amount of code. Now what if you had started with the asumption that there could be more then one of these objects? Your code would have to be formed around passing references and becomes much easier to switch from non-singleton to singleton.

My feeling so far is that Singleton should not be implemented until late in its development. This encourages better design both before and as your coding.

The above comments are made by a student and should not be taken as coming from an experienced proffesional.

The Real Post Portem

Okay everyone, I'm sorry about the previous post not being complete. Now it is time for the update!

So SGP was a grueling ordeal. I learned a lot about myself and especially what I like to do when it comes to game programming. The experience also put my relationship through a lot but we are stronger from it. Anyhoos, onto the post-mortem!

What Went Right:
Whiteboards, and Too Many Cooks the Kitchen

Whiteboards
were the glue of meetings. Forcing people to layout their ideas for the rest of team allowed us to tackle problems before they arised.

Too Many Cooks in the Kitchen is usually meant to be a bad thing but in our case worked into one of our greatest strengths. From the beggining, all three of us got very much into each others work. Even though each of us was only responsible for certain systems, we were all invovled in the architechture process. We got lots of crticism from other teams/staff that we were going to slow but we were able to find the connections between systems very early on and shape the architechture of each system on its interface rather then its implementation.


What Went Wrong:
Bad Planning
As a group, we all agree that our biggest mistake was taking on the task of the particle editor and puting our "unit editor" into the second month of production. This foley with this was the unit editor (along with the animation editor and map editor) was a game crucial element. We need the data it produced to test and continue refining our game design. Having this massive part of our project delayed till we only had 1-2 weeks to work with it before the final milestone put a major dent in our game.

In the end, Arena! was a ton of fun to make. Before this project, I was starting to think that Gameplay Programmer was not for me, but after actually working with a team, I realized this is right up my alley. As I coded, I saw the game come to life and that was one of the most rewarding experiences of my life (besides proposing to my fiance).

So what am I up to now? I'm working on a new Zombie Game that is actually a friggin game. Right now I am developing a Map Editor. I'm getting the Navigation Graph Editor portion working then get working on the Tile Editor portion.

Until later,
Good Night and Good Luck

Arena! Postmortem

I shall start this post with what I usually start with; an apology.

I haven't posted regularly in almost two months. SGP (my first team game production class) has taken me through one hell of an emotional experience. This is probably the light-hearted version of jedi training. I went from nervous and excited to despair and tears to being waist deep in warm ocean water and enjoying life. Overall, I learned an insane amount during this project. I'm almost ready to get back up and start working on a full version of Zombpocolypse (versus the tech demo I posted earlier). I am taking some the technology my team developed and going to be remaking some if it to get exactly what I needed.

Damn..time for bed. Got a flight to catch! I'll have to finish this later...

From the Bunker

Fullsail consists of two basic regions: Glass Town and the Bunkers. Glass Town is the front offices of Fullsail and is a rather pretty and modern art museum kind of place. Good for buisness, etc. The Bunkers are a two strip malls that have been converted (well almost converted) into class rooms and lobbies. The second strip mall is the one still being converted. I am currently writing from a unfinished lobby wedged between a grocery store and a pizza place. Its 5:43 am.

The war effort is going well. I am learning a lot about myself and what I like to do. Currently, I am finding much fun in building code tools for my team. Little chunks of code that make their life easier. My team has been responding well to my little gadgets and I am wondering if this kind of development is what I should seek out in the game industry.

Laura is my rock. She has show an incredible unbreakable amount of patience with my horrid hours. She knows this is what I want to do. When I come home, she lets me cuddle next to her like a little kid and remind me about who I am reallying doing this all for. Who am I kidding..I want a career so I can be a good dad and husband. Games are great...but I want to make a living.

My thoughts are getting more random. I should probably stop posting. I'd go to bed but I refuse to leave Nick alone in the bunker. I'll kill some time with Diablo 2. Remind myself about what I got started in this mess in the first place.

Buter-ball-ninja

Being 24 and not having worked a real proffesional job before, I have few experiences where I can actually say that I worked super hard. This is one of those times.

As part of SGP (Structure of Game Production), our team had to generate two documents in about six days. The first one was a Code Architecture Doc that covered our entire system and the next was a detailed Game Doc that covered the rules for the game. My team (and when I refer to them as "my" team its only to make it easier to read this) did a stellar job. We worked ourselves to the bone and refused to take the "easy route" in all our work. The result was scoring a perfect on our first milestone. While this isn't truly an amazing achievement it did give the group a greatly needed burst of support.

We immediately began work on the next phase which is to develop three different tools and get them intergrated into a working build by the 30th. This is a daunting task and we have already got a schedule made that has us pulling 52 hour week. This is just enough time to get some sleep.
Today was the first official production day (the other maddening week being pre-production). I gave a little lesson on constructing and using DLLs in the simplest fashion in c++. We decided to go down this route to seperate the backbone systems as much as possible and allow for us to keep intergration from being a huge copying and pasting session with tons of .h and .cpp files flying around. We spent a good 3-4 hours with each of us writing our own dll that represented a mock-up of the code arch we had created earlier. Then we shoved them together into one intergration and it worked incredibly well. We decided to follow this process.

I have to say I am the luckiest guy in the world. My team is incredible. Dan and Nick are wilingly to put up with my need to push forward and try new things. They are incredibly supportive and realize how the next month and half are not going to be a picnic but a true excercise in giving it all you got. Being students, I could not have asked for anything better. We are not trying to be the best team in class, we are simply trying to be the best that we can.

Ambitions are high and tommorow is going to be another big day. I am responsible for setting up the Serialization system. Good thing I practiced.

The board and me

I love whiteboards. I am obsessed with them. They really are my pensieve. I eye the boards in my classroom and I can't wait to get my hands on them when I try to work out problems.

On that note, I wanted to post about my Structure of Game Production group. We are known as Butterball Ninja (or as I like to say "Team Butterball Ninja" Try saying it three times fast). My fellow members are Dan Krotov and Nick Ness. Both are extremely hard-working and willing to put up with my "lets not go with whats easy" approach. We've had some arguments so far about different system designs, but they have ended up being constructive. Once again the white board has come to the rescue since it helps me transfer my thoughts out to show people what the hell I am thinking!

With that in mind..I am going to start searching around for a bigger white board with a wooden trim....that'll be niiiice.

Death Ship

Remember that scene in that episode where the Captain demands for the crew to repeat the survey of the world over and over again? Sometimes Fullsail can feel like that. With classes going so fast and essentially being brutal as all hell on your synapses and when you finally feel the rush of finishing one, you have to get the ship ready to land on the damn planet all over again.

Eh. I complain but I enjoy this. Don't get me wrong, I do not want to keep this up (being a student) for much longer but I do ultimately feel a rush from all the hard work.

So yet again, classes are going to start tommorow (or I should say a few hours from now). The two new courses will be Rules of the Game (ROG) and Structure of Game Production (SGP). From what I've seen, ROG will be more of a design class that focuses on mechanics while SGP will be our first true experience developing a game with a team. SGP has me fairly nervous but I do take some solace in that fact that my class seems to be made of honest hardworkers. There are a few bad apples and I can only hope to avoid them. I do want to make sure to take some time and analyze everything I learned from the old project. I think the most important was focusing on a data driven design from the get-go and making it a bottom-line rule that any data that does not need to be hardcoded shouldn't be. While I was in Wisconsin with Laura, I took some time to take a few notes on my project and that was the biggest note. The extra work put in early on to keep a data driven game can pay off in spades. I think if my team will permit, I'll try to put in my little structure that reads arguments in a generic fashion. I used to read in various lines from a script without having to change how the object read the line.

I spent some time today working on the ol' Sucker Punch pre-interview problem. I keep this one circulating in the back of my mind and when I feel I've learned some new techniques I come back to it and try it again. After doing my research in Memory Management over break, I found some nice new ways to approach it by applying essentially the same technique as the memory pool. I haven't been able to get all the requirments (I am essentially 240 bytes short of the avg needed).

Well fortunatly tommorow is ROG so it'll be a nice way of getting back into classes. Also as a huge perk, classes are M-F 9-5 for the whole month. SGP is two months but I think it will maintain the same schedule even though ROG will be over after a month. Yeah! Back to normalcy!

Anyhoos...time to get to bed and then get up and land the ship...again.

Still Pumping

Been getting lots of good stuff done while in Wisconsin. In between gorging myself on delicious home-cooked meals, I've been doing a lot of research into Memory Management and come up with some useful stuff. First off is a heap tracker for recoring all dynamic allocations which is simple but comes in handy. The second is my favorite and is a Memory Pool manager. This thing is pretty swanky and I am fairly proud of it (but I want to note that the design came from Noel Llopis's C++ for Game Programmers). It allows you to allocate one big block of memory and break it into several slices which are then given out and returned to the block. This allows for fast allocation and releasing with no fragmentation. While I probably shouldn't be too concerened with this in my current program since its not super advanced, it was really nice to learn so much about what goes behind new and delete. I setup a pool for allocating messages in my game. So far the new zombie game demo allocates about 64k for messages at the start and lets it be for the remainder of the game. I haven't really noticed a perfomance increase but it is very reassuring to know where your memory is and how much is being used during runtime.

Been getting some good comments on the zombie game demo from Raj and Ryan Ellis. Once again, you can get the demo at :
http://www.naveennattam.com/nnattam/files/Zombpocalypse_0.0.zip



Lemony Crappit

I was about to shut down my school laptop and pack it up when I accidently spilled a less then a handful amount of water on the touchpad. Within less than a new-york minute, the laptop shut off and is now a state of defunct non-usage. Crappit. Fortunately I learned a while back that I have to not become computer specific on my work. If my enviroment can't be replicated, then there is some problems with how I have it setup.

I unpacked my old shoddy laptop from before school and got VS 2005 up and running on it. I cleared out a bunch of old junk and attempted to get the computer into a better condition. While it stinks to have been set back, It is nice that even in the face of a crash, I am able to keep working. The shoddy-top will be usable on the trip and I still plan to do my memory management research in-between world-class meals at the Maleckis (Laura's Grandparents).

I hate how fragile our work enviroments can be. This little disaster has taught me that you have to be prepared to switch comps and keep at it.

Would you believe it...

So for those of you who have been keeping tabs on me, you may have noticed that I have not been absent from my blog for a few weeks. For those select few, I apologize. My Structure of Game Design class decided to drag me out to a field and literally beat my to a bloody pulp with a hammer. The class was the first time we actually had to put together a full blown game. A large amount of the technology was provided for us but I took the challenge and wrote my own systems (however I did not make my own DX interface code). The class overall was extremely challenging and forced me to generate designs at a rapid pace and implement them just as fast. While I've been building a small code base for a while, I had to implement tons of new features in order to get the game logic working. I consider this project a good experiment in what I will need to make a more stable game "engine." I am proud that the collision code, despite spatial partitioning, worked awesome. I was able to get collision-game logic code connected in an extremely short time. I regrettably had to pull all the physics out and use a much simpler "game physics" with some light weight response code but this is proving to be much simpler to work with.

I did find a weakness in myself while working on this project. I am horrible at design. When people gave me suggestions on what I should implement, I was able to solve them and allow for potential new ideas. If anything, my code base provides backbones for lots of game ideas, I just stink at coming up with any! My game demo came out as more of a tech demo showing what could be done or at least proof that the core game play could be created with the code base. I'll need to work on this and try to merge my love of problem solving with an ability to study games "designs." Oy, my engineer side is really taking over.

I am currently taking a break from coding. After turning the project in, I took a day or two off then came back to solve 2 major bugs that were driving me nuts. Now that those are hammered down, I am going to start working on some Memory management research. I want to get to know how new and delete work and find better ways to track one pre-allocated block of memory rather then let it all go hog wild :). This is going to be my "side project" over our Full Sail Summer break which is only a week. I am going with Laura up to her Grandparents for the week. It is going to be a relaxing time and hopefully in those down moments, it will be productive. That reminds me..I need a new notebook!

Now I am wondering if a few of you want to play my "tech demo". Well feel free to download it here.
The game itself is a simply top-down shooter with zombie coming at you from all angles. There is an extra enemy type that chases you and uses the same weapons you have ( a rifle and grenade launcher).

Please drop me a line with what you think.

Awesome

Yes damn hell yes!

The bridge is working swimmingly well. I've just implemented rendering for my bounding volumes (well honestly the dx rendering commands were done by the SGD wrapper, I just provied the routine).

Basic camera control is now up. I had this working with allegro and now it is working with the DX wrapper. Oh this is a good feeling!

Bridge Jobs

While I'm not working on a bridge..well not literally..I did recieve some good news today: I am becoming a peer tutor for Software Architecture! My teacher Nick Penney sent me an email earlier today and asked me to join up. While the pay is decent but the hours are very flimsy, being tutor is worth its weight in gold by helping reinforce concepts and being on my resume. So I'll post more on that as it develops.

As for the Bridge...while being a rather complicated design pattern, I think I just built my first incarnation of it for my side project. In our Structure of Game Design (SGD) class, we recieved a nice set of wrappers for DirectX for basic sprite operations. Its pretty solid and will make our project in class go much faster. On my side of things, I have been working on a Collision/Physics system which I dubbed the Simple Game Engine (SGE). A while back, I read that it was a good idea that your game code is as API independent as possible. I went back and redid the SGE to be that way and so far it has served me well going between Allegro, Win32, and DX. However, the wrappers presented a problem that I ran into when I moved the SGE between different APIs...the code developed for the API inevitably became linked in some fashion with API so the code written (that is code developed outside of the SGE) was not usable in another project.

If your still following, I found a solution to the problem. I developed a series of interfaces that are fairly generic that cover Rendering, Resources, Sound, and Input. These interfaces are very basic and are the only things that SGE objects will use. However, a new class in the SGE (CEngine) now maintains ptrs to the implementations which are specified at runtime. I created a few implementations that are derived from the interfaces. Each one is specific to using the SGD code provided.

So now I have broken my game code into three parts: The SGE dll, the Game dll, and the DX exe.

The DX exe brings the other dlls and create an instance of the game from the Game dll. The DX exe also intializes the CEngine with the specific implementations. The Game dll then uses those implementations to render/get input/ etc. So now I have three projects that can be modified independently and the game code built for this project will not be linked to the DX code.

I initially did not intend to create the middle layer of the Game dll but it evolved naturally and I now thrilled that it worked! When I started the SGE, I began to use it as an excuse to try out different programming techniques and with this recent development, I am extremely thrilled. This is going to be a good month.

The Everlasting Whiteboard

So the title of this post has two distinct parts:

After seeing Knocked Up with Laura today (which by the way was pretty good), we did some shopping and I finally picked up a decent sized whiteboard. I became obsessed with whiteboards while at Purdue and found them to essentially be my pensieve. Problems become so much easier to solve in front of a white board then endless meaningless scribbles in a notebook. This is also coming at a great time of need, since I need to push my engine efforts faster to meet up with this class's project. So thats the whiteboard part.

When I was in college, I got knee-deep into Warhammer. The game consumed an incredible amount of my time. I got so into it I would often stop doing homework to break open excel and start making army lists. My love for Warhammer was two-fold. I loved the numbers and I loved the lore. The guys and gals who put together the fiction of Warhammer do an awesome job and Army Books are incredible sources to keep around. My favorite army (after being through a few different ones) became the Dwarves. The art design and the story direction for them captivated me (and the heavy use of the world "ale"). The reason I bring up Warhammer is that as I get more components to my system created, I've been allowing myself moments to let my mind run wild with potential game designs. I've been fairly religiously keeping my thoughts to the ground where they lined up with what I knew how to do. I guess this is a side effect of getting so into the technical aspects of game creation. So I've been trying to indulge myself (as I used to do long before I wanted to be a programmer) with ideas of grandeur.

Part of the Dwarf lore in Warhammer is the huge Underground Kingdom they created that, for the most part, has been taken over by enemies or destroyed by nature. The premise is that the dwarves created several gigantic holds that were connected by a huge underground highway called the Underway. As nature caused several cave-ins, the enemies of the dwarves found new ways to infiltrate and eventually stormed and captured several holds. There are references in the Army books that other terrible creatures came out of the darkness after the quakes and are now roaming in parts of the Underway. Like many of the settings in Warhammer, the location of the Underway and the abadoned holds would make a great place for a game...and that is exactly what I would like to do.

My inital ideas were to have the game be a 2d action-rpg set in this enviroment. The player would create a dwarf explorer who would venture into the underway and explore different enviroments. I thought originally of a large adventure where the player would keep exploring one "metroid" style map but I decided (in my head) to keep the idea scaled back to a series of seperated levels. The idea behind each level is that the player is entering a different section of the Underway and will try to get some kind of key item that is located somewhere in the level while avoiding traps, monsters, and all other kinds of hazards. A key element to the game would be a grappling hook that the player could use in really anyway they chose. They could scale walls or make a quick escape. I guess a "dwarf spider-man" would be the best way to pitch it.

As for the rpg aspects, it would be nice to allow for use of a pool of skills. Off the top of my head, I am thinking a pyro set of skills where explosives are the name of the day or a melee set. These are just some example ideas.

So I think I will keep this idea in my head as I build the next couple of features for my system. I would like my demo to reflect some the navigation aspects of this idea.

Bounding Volume Hiearchies

After some initial research..I'm liking the sound of an AABB tree to sort my static objects. I do some early notes on the subject after going through my Ericsson book on collision detection. Its seems simple enough. I am not sure if there are too many nodes to test in that will cause problems down the road. I do knowI need to implement a circle bounding volume to my other bodies so that even an OBB test can be avoided if possible.

Take a break and call me in the morning

Allright the plan to step away from bsp raycasting worked. I was able to tackle the problem in a new way and succeded. This time, every time I found errors, I quickly went to my notebook and analyzed the problem with drawings and realized elements were missing. If I could not get it, I forced myself to close the computer and sit somewhere else and analyze some more. All of this paid off. While it may seem trivial to intersect a ray into a BSP, I needed certain data from the intersection test that would allow smooth movement of my axis aligned bounding volume across the BSP's surface. This data proved difficult to get at first so that is why it took a lot more analysis then first thought.

Anyhoos, it works and I throughly documented it to understand why (for the most part) it works. There are a few places I had to fudge a bit but I made some notes on those.

So now we have a new problem, the BSP will not support rotating bounding volumes. So I will need to invest in other Spatial partioning structures for static world geometry. This will be used to perform more accurate SAT tests for contact pts, etc. However, the BSP will have it use for fast world-object collision tests.

Classes finished up here and I feel pretty confident on my results. On tuesday I start "Structure of Game Design" where we will make our first real game demo. My plan is to have my collision/physics system intergrated for use in the game we make. So I will need to double my efforts to get it up to snuff. So far the system has a few things I like about it, including a simple memory manager for individual systems. I want to get the Spatial Partioning for static structures and then one for dynamic objects. Paralell to developing that, I am going to start putting together a renderer for my system for DirectX. I am planning on making it 2d/3d so there will be plenty of hot billboarding action. It will be relatively simple, but hopefully it will come together in the end.

As for the demo I keep promising, I've decided to wait on that until the basic DX renderer is working and I have my spatial partionioning structures. Those two elements will be essential for the demo to run properly and be able to flex its muscle.

Now...time to research NON bsp THINGS! YEAAAH!

Humbug

So the BSP loader works and does all it needs to do. Now my raytracing needs to be fixed. I got into a loop for about 4 days of trying to tweak the same block of code and simply never taking enough time to develop a proper algorhitm on paper. This tweak addiction just leads to many horrid results. I finally rewrote my todo list to have a note at the top saying that I wasn't allowed to try fixing raycasting again until at least 2 days. The time off will help A. calm me down and B. give me a fresh perspective on the problem. I've resolved to not attempt coding until a proper algorthim can be developed (at least one that is aware of as many potential problems possible).

Unfortunatly, I've found that the Solid-Leaf BSP does not work well with oriented bounding volumes. From the earlier tests, I've found my OBBs can't go around corners properly until push far enough past. I may be able to resolve this when I approach the raytracing problem on Friday. At this point, I think I will need to find a way to build a spatial partioning structure that will sort my static geometry without breaking it down to segments. That way I can keep using the SAT tests with chunks of geometry. This will probably be a OBB tree of some kind that will keep encapsulating my static geometry. Anyhoos, more on this friday! For now....finals!

The real deal with BSP McNeal

Allright folks....I must admit that how I was doing the BSP was rather stupid. I went back and hit my favorite book of books on game collision : Real-Time Collision Detection. A little reviewing and studying and I went back and recoded my method. This time I adjusted how I was building my Solid-Leaf (which I call Solid Node cause I'm cool like that) and then went on to build a Leaf-Storing bsp. The Leaf-Storing did not solve my problem (in fact it just created more) but I did have some revelations.

My intention with the Solid Node bsp was to create a arbitrary shape that represented the world and then use the BSP to keep objects inside. This resulted in an immense amount of failure. After recoding my BSP technique (and learning of the awesomeness that is Thick Planes) I realized that it is better to create several shapes (with associating bsp trees) that when placed together form the world geometry. So don't keep things "in" a shape...just make several shapes to keep from getting to the void. This worked much better and allowed for me to reimplement my bevel planes with great success. While its not 100% accurate, it is fairly quick and allows me to create concave ground geometry for the objects to move around. Right now the collision data is relatively simple but I need to mod it to add contact pts, etc for linear and rotational dynamics. This shouldn't be to hard since all the methods to find such have already been created (although I do need to go back and clean them up a bit after making some silly ass modifications).

So..that was a mouthful. By the by, for those paying attention, the answer is YES. I have started to turn this blog from emo crip crap to more of a log of what I am working on and how boring it is to everyone else. :).

So I am going to put the bsp down for a bit. The realization that occured about an hour ago has made me much more relaxed and I am simply smiling about the possiblities. So whats next? Well my Software Architecture teacher has asked me to attempt an extra credit project for his class. I was touched (there I go being emo again :)) that he personally asked me to do it simply cause he wanted to see what I could do. I think this stems from the constant string of questions I bring up to him. While I get friendly brown-nosing (lol...think about that) comments from my friends about talking to teachers too much, what I'm really doing is taking advantage of the best asset in this school : the faculty. Many students rely solely on what the teacher says during class. While I think its valid to critique teachers based on their in-front-of-the-class performance, I ultimately judge the teachers here based on what I experience with them one on one. If they are willing to help and share their advice, I'm more then pleased with em. Most of the skills I've picked up here stem from just slamming questions to the teacher during labs and getting extra proffesional advice on what I'm trying to do.

So I'm gonna look up a pattern called Builder to help solve a potential problem I may have with creating objects with multiple types at runtime. If it works or doesn't, it will be another grand reasearch endeavor that will strengthen my skills.

Upwards and onwards!

I may just cry

I just got my first iteration of a 2d solid node bsp working! It does work too well to keep objects (except points) outside but works beautifully to keep them inside! So far I've been taking it through its practices and got my first real floating point math error! Very proud to enter this age of computer number storing problems and work out solutions for them!

So with the Solid-node bsp to represent the world done (well so far I have to build it at run-time and none of it is externally loaded(very bad)...I am going to have to work on that part later) its time work on the object sorting bsp. At least I get the basics of BSP trees now.

That also brings up another point, after going through a bit with my software architecture code I'ev resulted that this code is more or less a prototype. Since this is my first stab at a big small game, some of the code smacks of first attempt. Most of my code is meant more to be a series of notes on how to implement what I did again in new code.

As Ryan Pedela taught me, code is not sacred..and what I added "But the knowledge of what you did and how you did it is!"

Oh btw, Shrek 3 was very funny. Much better "3" then Spider-man 3.

R&D to the rescue

Around my sophmore year of college at Purdue, a series of events and choices started me on to programming. While it was very early on and was primarly different forms of scripting, I got into it very quickly. I would spend too many countless hours researching ceaslessly researching and diving into as many tutorials as I could find. As the years went by, I went from scripting to what you could call "real programming languages." At the end of school, I realized I wanted to be a programmer for games and made the decision to go to Full Sail. Since I got here, I've spent almost all my time outside of class doing more research and looking up various topics. I started a side project (which I am trying to get a demo done but being slowed down by classes) to focus my efforts and have come across all kinds of things in my endevors.

Up until now, most of my r&d has been somewhat useful in class but I found that I could not bring much of the advanced stuff to my class work (teachers asked to keep the code simple) but last night was a good time in a Software Architecture. In one lab, a ton of the research I have been doing paid off. It is truly a kickass feeling.

BSP

Man was I wrong to think I was done with collision :).

I've been doing a lot of research and taking notes on how BSP trees work for collision detection. Right now I've boiled it down to 2 types I'm interested in: Solid-Node (for concave shapes) and a tree that simply stores objects in the leaves. I'm not 100% solid on how the second kind sorts (lots of cases where a good partitioning plane has to be chosen) but I've got a good idea on how Solid-Node trees can be built. I'm gonna try this evening to start busting out the solid one and then with that exp, move on to the object-sorting one (for static objects). I was going to have a demo up where you could thrown some things around (I have one with boxes but I wanted Zombies :)). I'll try to have that up once I can get the world collision working (that is the solid-node tree). This may ultimately lead into quad trees but for now, I'll just work on basic static geometry partitioning with simple bsps.

On other notes, I've been playing a lot of Titan Quest : Immortal Throne recently. I picked up the expansion and have been enjoying it throughly. The new interface features make the game much easier to play and I've been trying a bit of Fire and Dream magic which works quite well (although I need to build up some "nuke" spells).

Classes are going okay. Software Architecture is a very neat course and is providing plenty of challenges, while DirectX is a slam-you-in-the-face course on syntax.

BTW, check out this reel at Animation Mentor. If Laura isn't working with the best, I don't know where the best are.

Z for Zombie

I can't reccomend Max Brook's World War Z enough. It is the best book on zombies ever.

And thats a wrap!

For roughly 6 months, I've been working on a 2D collision library. I arranged this project as my "continious side project" during school that I would keep working on as classes went by and my skills increased. It proved to be a great place to apply new techniques and perform my favorite task that is r&d. The library itself has gone through so many changes. First it was based on the most complex forms and included several small functions that came and went like children in an orphanage. I've finally widdled it down into a form that I am happy to say is fairly complete. Tweaks and changes will come (the golden rule of coding that I've gleamed from pros is that its never set in stone). So far it can support AABB, OBB, Circles, and Convex Hulls with point/plane/ray intersect tests as well as collision amongst those types. I've been developing some lite-weight physics code to go along with the system and I'm going to be putting together a demo that I actually want to put online shortly (aiming for Monday).

This of course is just the beggining. Now that the core is a little more solid, I can start working on some spatial partioning for things like world geometry. This will be a bit involved but is entirely build upon the library. Eventually a hiearachial partioning structure will be needed to help divide where objects are located to minimize tests.

I am very excited. Once the ground system is in, I'm going to put the partioning on the burner and work on a simple prototype showing off 2d navigation and implement a lot of the collision tests I've constructed. Hopefully this will be the demo I want by monday.

School Date #...ummm....

I just realized I have not really posted anything about school and now would actually be a good time to do so!

I just finished my six month of classes here at Full Sail. Classes were Windows Programming 2 and 3D content creation. WP2 was a fun class. We did a lot of c# which I have some background in and found it to be relatively simple. The biggest benfit was talking to our teacher Chuck who was wealth of information and was always willing to look up something if he didn't know the answer. 3D content creation is pretty much a short crash course in what Artists do for games. We learned a bit about rendering pipelines and several different terms. Not an increadible class but I can see where some of its uses come in.

Our project for 3DCC was to create a map in UnrealEd. This proved to be a little more fun then I thought. Instead of making a pretty map, I spent my time working with UnrealScript to create to create a simple train that had two switches that toggle it backwards and forwards on its tracks. The idea behinds its use was that in a CTF game, players would need the train to carry the flag bearer back to their base so this created fights being around getting ahold of the train. The train came out pretty decent and I was able to even get a speed table in there so it knew how fast it was supposed to go on a certain interval of the train. UnrealScript presented a decent challenge of reading through tons of documentation. While I am by no means a master, it was fun to actaully do some real game scripting. Hopefully I can get my 2d game into a good state to start adding some gameplay to it. But first off....getting that collision/physics demo I wanted!

Hellgate, Dumbledore, and Smart Ptrs

Hellgate: London is shaping up to become my new favorite game of all time. I sometimes turn through lots of games trying in vain to look for "my game." I think all gamers ( I really hate that term) have a style of game or rather a collection of gameplay elements that they cherish and probably without thinking about, look for in every game they play. When a game has all those elements...well you might just see the gamer cry. Hellgate has all my favorite elements in it: action, stats, lvlin, item collection, and intense amount of cusomizability. On top of that, it has immense amount of character in its setting and crosses both sci-fi and fantasy at the same time. This game will kick more ass then ass-kicking-ologists have been able to discover.

Now onto my next topic: Dumbledore. I recently watched the new Harry Potter and the Order of the Pheonix Trailer and my brain started stirring upon one of the major flaws with the movie: the dude who plays Dumbledore. I immediately ran to rant to Laura who (sweetheart as she is) attempts to listen to me. After the fourth movie, I was really put off by how the actor chose to portray Dumbledore. The scene in particular that ended it for me was after Harry's name is drawn from the cup. When he goes to the room in the back of the Hall, Dumbledore runs up to him and shakes him demanding to know whether he cheated some how. For a fan of the books, this is an action that Dumbledore would have never done. Even in the Fifth book he threatens someone who even attempts to manhandle a student. While this seems like being picky, it was a huge turnoff towards the actors portrayal. With the rest of the movie, he became less friendly and more of an age-old crotchety wizard who would be more fit in Willow then Harry Potter. In an interview, he remarked that he had not read the books and he probably wouldn't. Damn.

So Smart Pointers. Well I'm not really implementing super pro smart pointers but I did just introduce a pseudo memory management system in my collision/ physics code that allows them to share ptrs to geometry and should enforce there to be no hanging pointers. I am excited to get back to the engine and get my first demo of it up and on my website. Right now the demo is shaping up to be several boxes and odd convex shapes falling and bouncing off each other in a room (in 2d).

How Awesome is your Totally Awesome Game?

Check out this interview with Bill Roper by Garnet Lee

Harry Potter and Double Dispatch for Collision

Before we begin, these two things have very little to do with each other.

I'm a huge fan of Harry Potter. I will make no apologies or hide that fact. The story is simply remarkable and contains all my favorite elements of a good tale. The characters are incredibly human and relatable, the fights are furious, the stakes are high, and the story is simple yet very deep. My love for the Potter story increased even more when I discovered the fantastically put together audio books by Jim Dale. His performance is incredible and their really is no audio book quite like it. If you don't like to read, the audio books serve as a far greater version of the books then the slowly failing movie series. I really hate the movies at this point. 1 and 2 followed fairly well and 3 was entertaining but was very devoid of important elements from the book and the 4th movie was a joke. The ending had been changed and all of the powerful tension that kept me up till four in the mornining was stripped clean. I have very low expectations for the fifth movie. The movies are in my head and they will stay there. Anyhoos, back to the point. The audio books are great way to "reread" the books while working. I've gottten into the habit of coding while listening and found it keeps me in a good mood.

Speaking of coding, I'm working on redoing much of the collision system in my code base. I'm about to start work on implementing AABB, OBB, and Circle based collision (which is odd cause you think I would of done that first :)). Right now my code pretty much supports convex hulls but this can be so much overhead for such a simple task. I am getting excited some at implementing these simpler collision methods and not relying 100% on my convex hulls to do everything. My interests in working on this system were increased when I stumbled upon the concept of Double Dispatch. Its pretty cool once you get a good example to help explain it to ya. One of these days I should post my notes to help anyone else out..but I am not to confident in my abilities as a teacher :). Anyhoos, I am excited to get these implemented into a simple platformer demo and see what happens.

Anyhoos, I would like to throw out some thx to Industry people who have been nice enough to listen to my ranting questions and give some solid guidance:

Raj Nattam
Steve Desilets
Ryan Ellis!
Jameson Dursall

Spoon and the Game of Life

Hello again to those of you so gracious to grace me with your most gracious attention..gracefully.

Things are going at a nice rate here in Orlando. Laura and I are getting settled into our pre-married living together life. Its taken some work from both of us to make things work and I am enjoying it very much. We started a new workout/diet program. Well not really much of a diet, more of a new way of eating. My friend Mike Vittiligio passed me a book called "Body for Life" by Bill Phillips and reccomended his workout/eating plan. We thumbed through it and found his plan pretty pleasing. Seeing as I am a big lover of food, one day out of the week the plan demands you eat whatever you want...thats pretty damn cool by my book. We have also been working out consitently in the mornings for a full week and I feel pretty good. Its only 2o minute aerobic workout but the book has you going through this way of doing it where you try to maximize yourself and keep pushing every visit by a bit more.

On the school front, things are going pretty well. I have a bad habit of making our excercices in programming classes more complicated then they need to be. When asked by some buds why I do this, I always reply "to challenge myself." While this may seem like a good habit for getting better at my craft, I have fears that I may do that in a work enviroment where things need to get done by any means. Will see. I'll just keep on trucking to get better at this. We had an assignment to work on the Game of Life (http://www.bitstorm.org/gameoflife) in class and I though we were supposed to write everything but found out that our teacher provided a ton of the code himself. I ended up writing his part myself and spent most of my lab time on that, not doing the real assignment (thought it is a very easy task). I learned a lot doing it myself (especially for another project I am working on where these lessons will come in handy) but the teachers example is by and far much better. I am going to study it some more to see if I can improve my version....actually I just stopped mid bloggin to check his code out. He has a more elegant solution then mine for the standard game of life. One thing he encouraged was making a flexible solution for different rules and mine more or less supports that but could use some improvement. Oh well. It is, as I always tried to remind myself, useful experience.

My other code base is getting along pretty well and I was able to use it for a simple pong game project. I got a couple of really nice comments from students and a few teachers which was very nice. For the first time, my collision code actually came out as a game..and it was good.

Allright time to get ready to get shopping with Laura for my last minute cruise needs. I'll definelty put some pics once we get back!

Till then, Grindhouse looks pretty frikin sweet!

Fiances, BSP, lua, and Myth

Hello again to anyone who is still reading this. I think in the end, I'm writing this for myself.

So time for some huge news: Laura is moving to Florida! For reasons I won't got fully into here, she has decided to quit her job and focus on Animation Mentor. With this decision, she is also moving down here. I am overly-psyched about this. I miss her so damn much.

Now onto school.

School has been going well. I am in Windows Programming which is our fist introduction to an API and is proving to be a little difficult to remember everything. On the side, I'm still working on my 2d collision project. I've made some progress by linking the pseudo-engine to a lua script so I can change up stuff on the fly. This is a very exciting break through but I now I am having some speed issues with my collision algorhitms. The biggest problem being spatial partioning ie how to divide up the game space so that you know what objects are near you at any given time. I've tried this out before using a massive chained hash table but I am going give a Binary Spatial Partioning (BSP) tree out and see what can be done with it.

So far, I'm fairly into collision detection and physics more then anything else in game programming world. I'm excited about AI, but that class won't be for awhile and I want to sync up my project with the class.

Until next time...

Allo again everyone. Been a while since the last post. I know this. I am aware of this. And that is about that.

Well I've got plenty o' news so I'll just get to it. First off, Laura and I are going to be going on a cruise! My dad won the cruise in a charity auction and is not able to go so Laura and I will be kickin it in april. We are extremely excited as this will be our first major trip with zero objectives besides having a great time. Continuing on, Laura had her 24th Birthday yesterday and from what I've heard, she had a good time and has even more coming.

As for myself, School is going on well. Now in my 4th month down here at Full Sail. Programming 3 is not that hard so far (the class seems to be a bit more of retrospective of the language) while Physics is fairly difficult and complicated to understand. I've been diving pretty hard into physics in my off hours. Right now I'm working on a rather hefty 2d game system that can do collision and several physics effects. Once again, I'll get a demo up as soon as I can (and feel ready). Right now its more a collection of technical demos and not one solid experience.

On another front, my 360 tanked again. I've gotten on MS support and they are sending me a new shipping box. I am really getting tired of this. Every update that comes out breaks my system in twine. What is worse is that it came RIGHT when I got back from break and was about to do xbox live with class mates for the first time. On top of that, the Crackdown demo is coming out tommorow and I'll have to wait to get in on it.

For now, I am quietly obssesed with the world of springs. I'm trying to create a pogo stick effect.