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