Category Archives: Game Development

Post navigation

I’ve mentioned previously that I’m working on the AI for Empires of Steel, and spinning it off into it’s own project. I’m still busy on things. My two main goals right now are:

* Make the AI less integrated with the game itself – i.e. Turning the AI into a separate project (which runs in a dll), removing Empires of Steel-specific code, and making the AI’s communication with the game more straight-forward.

* Creating a user-interface which shows me exactly what the artificial intelligence doing/thinking, which is important for debugging the code. This will help a lot when making improvements to the AI.

Making these changes to the AI has created a few bugs in the code. I’ve been busy fixing those bugs. I’d like to put out an update to the game soon, which includes the new AI, but only if the new AI is better than the old one.

I’ve been working on creating an AI that can play strategy games, lately. I’m taking the Artificial Intelligence that was used in Empires of Steel and making it more generic, so that it can play other strategy games, as well as making it smarter and faster. Here’s a screenshot of the interface so far.

I’ve been dabbling lately in the idea of putting out some tools for game developers since I’ve already traveled that road. One tool I was thinking about was an application updater – to auto-detect when new versions are available and allow the application to download and install the latest version. This is something that I created for EoS and it would be useful for other developers.

The first thing I needed to do, though, is see if there are already some good updaters out there on the internet – either for free/open-source or for sale. I quickly came up with a link to the Google Updater – which is open-source. That’s cool. Google usually makes some pretty good stuff and it’s free/open-source, so, I checked it out. It doesn’t make sense to re-invent the wheel, afterall.

After digging around, it looks like Google has only released the source-code to the client side of the updater. An updater needs both client-side and server-side code. You have to write your own server from scratch. Ugh. Seriously, Google? Why even bother open-sourcing the client side? It’s pretty useless without a server.

Omaha, otherwise known as Google Update, is a program to install requested software and keep it up to date. So far, Omaha supports many Google products for Windows, including Google Chrome and Google Earth, but there is no reason for it to only support Google products.

We know that keeping software updated is both important and hard, and so by open-sourcing this project, our hope is that perhaps we can help others solve this problem. So, if you’d like to get involved, or even use Omaha to support your own software projects, then just follow the instructions in the Getting Started guide below, and you’ll be good to go!

This needs a “by the way — we aren’t actually giving you the server-side, so you’ll have to write it yourself and that’ll probably take months of work, so we aren’t actually being that helpful”.

I have to admit: when I watch videos like this, I can’t help but think about game ideas. Like the video I posted a few weeks ago with the pencil-sketch war tribes, this makes me think of a civilization-style game where people control tribes, each with their own unique personality, culture, and appearance.

This is a pretty impressive tech demo from the Crytek team. I’ll be looking forward to seeing more 3D Engines capable of this kind of thing in the future.

Just recently, the Unreal Engine changed their licensing cost. Now it’s 25% of all revenue after the first $50,000. That seems like a decent deal, especially for small game companies who’d never be able to afford the flat rate of $350,000 or more. (All the good 3D Engines over the past 10 years would cost a flat rate of $350,000 or more, which always put them out of reach of any small company.) Although, I suppose a 25% cut could get pricey for bigger-budget companies that are bringing in millions.

I’ve been working with an open-source 3D engine for work, and it has me itching for a commercial engine that runs fast, has advanced features, and has the glitches worked out.

Back when I started putting together Empires of Steel, I looked around for some middleware that would help me build an AI. One really big problem with AI middleware is that the term “AI” encompasses so many different things. This means that most information about creating “AI” doesn’t apply to what your particular game is doing. I have a copy of “AI Game Programming Wisdom 2”, which is composed of a series of articles by different authors, and the vast majority of it doesn’t apply to the AI I was creating for Empires of Steel. You run into the same problem with middleware: most of the problems being solved by middleware aren’t the problems you need to solve for your game.

Anyway, I couldn’t find any decent middleware that I could use in Empires of Steel. Recently, I decided to take a look around and see if the landscape has improved at all in the past few years. It appears not. Searching for “strategy AI middleware”, I couldn’t find much of anything good. Most AI middleware seems to be pathfinding systems (i.e. given Point A and Point B and a landscape filled with various types of terrain and obstacles, the system will figure out a decent pathway between those two points). There’s some clever stuff being done with pathfinding, including neat stuff like updating the pathways based on changing obstacles, for example, a blocked hallway or a new hole punched through a wall, but there isn’t anything I’ve found that’s anywhere close to a strategy AI. Maybe games are just so unique that it’s difficult/impossible to create a general AI, so maybe attempts to create a general AI just end up pleasing nobody.

One open-source project I found on the first page of google results called itself “Realtime strategy AI game engine” and seems to have been abandoned after four months. It’s had no activity in the past three and a half years. The code that does exist appears to be composed of OpenSteer (a different open-source AI project designed to steer virtual vehicles) and a bunch of primitive stubs that were never turned into anything. (Ah, open-source. It’s filled with good intentions, but mostly abandoned projects. Generally, they die because the creator(s) get bored and disappear within a month.)

It sort of makes me wonder if there’s a market for AI middleware, or maybe it doesn’t exist because of the difficultly of creating it. It seems kind of pointless to put a bunch of extra time into the Empires of Steel AI (if sales were still really strong, I’d be happy to improve it, but considering how badly I got burned on sales). But, if there was a market for strategy AI middleware that I could spin out, that might be an interesting idea. In that case, I’d use EOS as a testbed.

This is just a neat little animation. It’s actually a trailer for a video. The section beginning around 20 seconds into the trailer makes me imagine creating a little wargame with these personality-filled animations. Maybe something small that would play on a smartphone or something. You’d have your own little tribe that would go through history, conquering other pencil-drawn tribes.

I have to admit that it took me a little bit before I was comfortable releasing the financial numbers, mostly because I was embarrassed by them. I was also surprised how much I ended up paying in taxes despite earning so little. I think I’m paying something like 25%-30% of my income in taxes, which is surprising considering how little I earned. Here’s a writeup: