Jump to content

  • Log In with Google      Sign In   
  • Create Account

How to finish a game in less than ten years

Games! Games! Games!

Posted by , 13 October 2008 - - - - - - · 413 views

I've been quite busy. My entry for Dream-Build-Play turned out okay, although we had to dash like mad to put actual gameplay levels together during the last week, having worked on art path and technology up until then.

Ko-Ado the Cloud

After handing in, I worked a bit on a 2D game, just to get the entire game development process, beginning to end, done in a span of two weeks. While it works, it's so much fun to work on that I'll keep adding to it. It's a multi-player space-based RTS, but I'm now deep into a desire/plan based AI implementation that will make it work single-player, too.

Both of these are developed in C# using the XNA Framework. The main limitation of that set-up is the limited CPU performance that C# programs get on the Xbox because of limitations in the Compact CLR it uses to run them. You'll just have to bite down and accept it, though.

More information on the early screenshots page.

I'm experimenting a bit with the UI. The four buttons in the center are the four controller buttons, where the buttons you can actually use are highlighted in color. The four buttons also double as cross-hairs. To select a specific unit, put the cross-hair buttons over the unit. Green will highlight. Press green to select. That kind of thing. And, yes, there are better ways of ordering multiple units around than just selecting them one by one -- one of the biggest problems for RTS games on consoles is the control sceme.

Have I been remiss in posting?

Posted by , 24 September 2008 - - - - - - · 383 views

Well, yes. But I've actually been working on gamesey stuff! I'm helping an artist with an entry to the Dream-Build-Play XNA game competition hosted by Microsoft.

You can check out some screen shots and a video here: http://www.the-cloud-game.com/

Also, I recently wrote a rather long rant on some application performance sins that contribute to a simple reboot of a system taking 20 minutes these days. It's a bit Windows centric, but the central concepts actually hold for Linux and MacOS X, too. http://www.enchantedage.com/node/40

Oh, and some music

Posted by , 17 June 2008 - - - - - - · 443 views

On Father's Day, I decided to stay creative all day. I locked myself upstairs with my CuBase and my Xboard, and out came an entry for the monthly KVR song competition. You might like it. You need an OGG player, though.


I've written some XNA code again

Posted by , 14 June 2008 - - - - - - · 326 views

You can see a screen shot of the editor (which uses COM / .NET interop) and more musings about being a toolsmith versus being a game developer over at http://www.enchantedage.com/cargame.

Suffice to say: I may yet move beyond the tech demo stage of one of my hacks, and make a real game of my own one day.

Yes, one day!

Oh, and by the way: GTA IV on the Xbox is pretty good. I'd say 8.5 out of 10. It loses 0.5 because the controls seem to kill me once each mission. It loses 0.5 because of glitchy graphics -- especially a telephone I was supposed to read the number on, and the texture was too blurry! It loses 0.5 on general principle.

Project Gotham Racing 4: It Sucks!

Posted by , 02 May 2008 - - - - - - · 598 views

I'm way too busy at work to do much development at home :-(

What free time I have, I typically spend playing games or watching anime, rather than developing on the game.

Speaking of games, I've been trying Project Gotham Racing 4 for the last week (I bought it together with a wireless steering wheel a while back). The sound track is awesome. The graphics are really nice. The car physics are good. But!

The AI cheats. You'll be driving full speed ahead on a straightway, and it will suddenly decide to zoom past you going 300 miles per hour. And once the AI is ahead of you, there's no catching up, no matter how well you take the corners. This makes for some very frustrating racing.

The controls are sluggish. I haven't used it with the wheel (turns out, I don't like the ergonomics of the Xbox wheel controller); I've used it with the controller, and there is a sluggishness in the controller that is really annoying. To get the vehicle to respond, you have to slam the stick one way or the other. And the dead zone is really big, so fine adjustments really don't work. This means that, when you break in front of a corner, you either will suddenly turn into the guardrail, or overshoot the corner by a fair amount, depending on how the stick chose to respond to your controls. This makes for some very frustrating racing.

Finally, the front end UI sucks. If I select a color scheme for my car, that color scheme is not remembered the next time I start the game. Selecting to re-try a race, versus re-trying at a different difficulty level, versus re-trying a previous or later race, are three different paths through the menu system. And, worst of all, the car selection list is totally unintuitive.
First, there's some wording above the list with an icon of the trigger beside it. It will say something like "(RT) Sorted by performance". Initially, I thought this meant that I should press RT to get the list sorted by performance, but now I think it means that the list is sorted by performance, and I should press RT to switch the list. (Why not the D-pad, like any normal UI?)
Second, in the list sorted by performance, there are initially four cars unlocked, and below them, some locked cars. You would then assume that the list is sorted from least to most performance (putting the locked, higher-performing cars at the bottom). But, no, that's not how it's actually sorted -- it's sorted with the highest performing car at the top. And while there are some metters for "speed" and "acceleration" and whatnot, those don't give enough information to understand how the car will perform -- what's wrong with real numbers?
This makes for some pretty frustrating racing.

So, all in all, not a great game.

Yesterday, I got a copy of GTA IV, which so far is very nice. Although the whole Serbs-as-bad-guys theme is a little tired, given how their regime acted in Europe, it's not particularly surprising. This game, too, has some problems, though. The handling of the default car ("Roman's taxi") sucks -- get a new car ASAP :-) (Although the missions will re-set the car to the taxi every so often). The game will hang my newly replaced Xbox 360 every once in a while, which means I lose progress. And the only way of saving will also advance time in the game, which is idiotic, because I can't dedicate very long times in a row to gaming, and need to do it in sessions.
But, all in all, GTA IV a great implementation. Liberty City is amazing in its detail, extent and variety. The character animation is also very well done, not very stilted or stiff at all (which is rare!)

More XNA stuff

Posted by , 24 March 2008 - - - - - - · 156 views

XNA is fun, because you can run your stuff on the Xbox. Although the floating-point performance of the compact CLR (which they use on the Xbox) is really quite poor.

Anyway, you might want to read my screenshot comments on my current XNA experiment.

Help! I'm trapped in the body of a toolsmith!

Posted by , 29 January 2008 - - - - - - · 294 views

Dammit! I had a witty post with all kinds of image and hyperlinks going, and IE 64 just crashed on me again. It tends to do that a lot. Blech!

Anyway, I was trying to texture some terrain to make something happen with the C4 engine I've had a copy of forever, and tried the Insane Terrain Texture Generator, but it crashed on Vista. Blech!

So i started writing my own. As good a reason as any to check out Visual Studio 2008 and .NET framework 3.5 that's been laying around.
OK, so installing those took forever, and I had to use a registry cleaner and separate download of the 3.5 framework just to be able to install Visual Studio Pro. Blech!

Anyway, yet another week-end wasted on hacking on tools instead of making stuff. I should probably just attempt to make Generic Sci-Fi Shooter #8624 so I can actually build something complete. Just to feel what it feels like. That'd be good!
But boring.

About projects petering out

Posted by , 27 December 2007 - - - - - - · 291 views

So... my at-home project has petered out again. It's not dead, it's just sleeping. Really :-)

What killed it? Well, I usually blame a lack of art, but I'm not sure that's it. I think it's the point where I can start adding art, but I realize that to get anything actually useful, I have to add more art than I'm able to make myself. And I'm not independently wealthy, so I can't pay others to do my bidding for me. And I don't think my project is sexy enough to find an artist willing to work with me.

Meanwhile, I've been brushing up my l33t Java skilz. Last i did it, it was version 1.1, back in 1996 or so. I was lead for the team building one of the first true-threaded Java VMs back then (for BeOS). However, the Java environment has come a good way since then. It even has nice IDEs, like NetBeans or Eclipse. I've done some simple J2ME stuff for my cell phone in NetBeans before, but I prefer Eclipse after having used it for a while now.

I started using the jMonkeyEngine, as a way to jump in and get something done. However, I've reached the classic impasse that I get to with most of the free or cheap game/graphics engines I look at: the art path isn't very robust. In fact, the only way to get skinned animated characters out of 3ds Max and into jME is to use a Collada converter, that only understands a dialect of Collada that is exported by a MaxScript that is written and available only to NCSoft people.

I did my part: I wrote a new ASE file importer, that supports multiple meshes/nodes, and multiple materials, and animation -- neither of those options were supported by the ASE importer that comes with jME. You can find it on code.google.com if you want. I also looked at a number of other packages, including jmephysics2/odejava, and ran into various roadblocks. However, I'd like to stay for a little moment longer on jMonkeyEngine.

I found some code in the jME that I, honestly, feel was so bad it should go on www.thedailywtf.org. It was a matrix transpose routine, that didn't do a transpose at all; it created an identity matrix with a few (but not many) of the original matrix elements moved over. Finding this bug took me two full evenings of debugging, where I thought my ASE exporter was doing something wrong (it wasn't). However, apparently the community didn't agree that the code was so bad that it deserved to be laughed at by others, and in the end I had to realize I'd overstepped what's acceptable for the community, and apologize.

However, that brings me to another pet peeve of mine. The first is "art paths in low-cost game engines." The second, which I'll refer to here, is "amateurs and programming." There are people who may have spent three or four years doing programming, and maybe even graduated college, who believe that they are worthy programmers. In fact, that kind of people, I find, are most of the people contributing to open source projects. The problem with that, is that it takes at least 10 years of programming to make a grown-up professional programmer. Most of the code you find in open source projects ranges from "atrocious" to "cutsey." A great article about this phenomenon is Pounding a Nail: Old Shoe or Glass Bottle? by Alex Papadimoulis. I realize I'll probably sound elitist to some people, but then, so does anyone rejecting sub-par candidates at a job interview.

There are, of course, some great counter-examples, like the Linux kernel, or the Apache web server, or the GCC compiler. Those projects have managed to attract people with real experience, real talent, and managed to keep the code up to standards. I think a large part of it is that those projects have had strong supervision, where patches to the code have not been accepted until vetted by someone who actually has both experience, and a vision for the project. Most open source projects (and I mean 99% here) lack at least one of those four things (leader, with experience, and vision, and contributors submitting patches).

So, jME is one of the best supported Java open source 3D game engines. I'll agree with that. The other contenders might be Xith.org, and java3d, and the folks over at Multiverse (who are wrapping the C++ Ogre3D engine). However, it has a number of design defects that, in my opinion, would make it very hard to work with. In no particular order:

  • No working animated skinned character art path from 3ds Max

  • No support for interleaved vertex arrays

  • No support for multiple batches/materials out of the same vertex array

  • Special "shared mesh" delegating object needed to avoid duplicating vertex array data

  • Physics mesh objects duplicate the mesh data per object instance

  • Colors are stored as 4 floats per vertex

  • Inherits material state through the spatial transformation graph

  • No Matrix4f getters and setters for transforms

  • Un-thread-safe "StandardGame" base class, with no clear termination mechanism

These are the most annoying design problems I've found. There were (and are) also numerous bugs, some of which I've found, fixed, and submitted patches for. However, taken together, I don't think this is a great game engine, Java or no, free or no. C4, for example, would be a better engine. Ogre3D as well, except it's only/mostly rendering.

Can you deliver a game on top of jME? I believe you can. Especially if you don't worry too much about corner cases, or performance. The people doing Bang! Howdy seems to have delivered on jME. However, the fact that they succeeded may have more to do with those people, than with jME itself.

Alright, end griping. There exist people who think jME is a fine engine, and there exist people who think that beggars can't be choosers. Time for me to shut up for now.