
"SpringRTS: Now With More Spring!" by Troy H. Cheek on Jun 22, 2009
Spring is a powerful free RTS engine developed for Windows and Linux...
My number one killer of free time is once again Total
Annihilation: Spring TASpring The Spring
Project, though I've taken to calling it SpringRTS simply because that's the
website. And just to prove how hardcore they are, if you put a "www"
in front of the website address, it won't load. That's right!
SpringRTS is too tough for the World Wide Web! Check out the link or
do a search for more details, as I've tried to explain it before and
failed miserably.
Spring is a full 3D free/open source RTS game engine originally created by the Swedish Yankspankers, intended to bring the gameplay experience of Total Annihilation (TA) into three dimensions. Well, that was the original intention, as well as being what Wikipedia still said the last time I checked. Nowadays, Spring is a project aiming to create a new and versatile RTS Engine. The fact that some of the Real Time Strategy games you can play on this RTS Engine resemble Total Annihilation is, of course, completely coincidental.
That's one of my pet peeves, by the way. I'll hear about some company or group or even individual bursting out on the scene saying they're going to shake the foundations of Heaven by release a modern version of an old classic game. The next I hear, they're going to release a modern game which was inspired by an old classic game. The next I hear, they're going to deny they'd ever seen the old classic game and that everything in this new game is totally original. The next I hear after that is usually a little email asking me politely to remove any mention of how their new game was promised to be a modern version of that old game. I understand where they're coming from, intellectual property laws and legal expenses being what they are, but it still irks me.
Anyway, as I write this, the Spring Engine (yet another name!) is up to version 0.79.1.1, though I've reverted back to version 0.79.1 becayse the new .1, while fixing some bugs I've never really noticed, introduces a big bug in that my computer-controlled AI opponents don't work right anymore. They're supposed to fix this for the next release. Most people don't care, because the appeal of playing against other people over the Internet is the main draw of the game. However, since I hate people and prefer to play against the computer, I reverted back.
I'd revert one version further, but that one doesn't seem to work for me anymore. Possibly there's a conflict with the later versions, or a problem that I'm trying to install two or three versions at once, or maybe some of the add-ons I've installed don't work with the old versions, or something like that.
Why do I want to revert one version further? Well, Spring used to have something called Group AI or Helper AI. Basically, these were little programs that did some of the tedious effects of the gameplay for you. One Group AI, Metal Maker, could monitor your metal makers so they converted your excess energy into metal, but automatically shut them off if you started running out of energy. Another, Economy, could send one Builder out to an area and automatically build units that generated more energy or metal, depending on which you needed more at the time. Finally, Central Build works like a "Common non-hierarchical permanent queue" for all the units in that CBAI. This is, unlike the "normal" queue you are used in the default system, it does NOT have a queue "order", there is no 1st 2nd 3rd, just.. orders.. and any unit able to perform that build order will start to serve the request nearer to it. Adding things to the queue doesnt mean it will be perfomed after or before any other order.
I really liked Central Build. I thought it was one of the great things about Spring. In fact, I tended to overlook Spring games that didn't include/allow it. Why? Well, you see, without Central Build, you have to tell each individual builder which buildings to build and in what order. Send Builder 1 off to build Building A, Builder 2 off over here for Building B, Builder 3 off over there to start Building C, and so on. If Builder 1 was finished with Building A, he just sat there doing nothing while Builder 2 and Builder 3 continued. With Central Build, you selected the three Builders, told them as a group where to put the three Buildings, and the Helper AI would decide which Builder to send off to build which Building. If one Builder finished early, Central Build would send him off to help another Builder or even start a new Building. It was great!
Unfortunately, the Group AI concept was a tad flawed. They were hard to create, had to be recompiled for every new version of Spring, and I think I once heard that they could only run under the Operating System for which they were compiled, while Spring itself can run under several Operating Systems. The Group AI was depreciated and emphasis was put on this new Lua thing which I had heard nothing about. Still, the Group AI was still around, and while some of them (like Economy) had stopped working as Spring had changed but they had not been updated and recompiled, Central Build was still going strong.
Then the next version of Spring came out. "The old group-AIs where removed altogether, because they had already been replaced by lua-scripts." You could read this to mean that if you had a Group AI you liked, it had been replaced by a new Lua version of the same AI. You could read it that way, but you'd be wrong. Instead, apparently what is meant that the new Lua scripts had the ability to do the same kinds of things as the old Group AI did. If AIs were cars, what basically happened was that they hauled away my Chevy because a Ford could drive the same roads, but then told me no Fords were available.
It's not that I really blame them. The old AI interface was a cobbled together mess of code that should have been replaced a long time ago, I'm told. The Lua interface let the same script (program) run under any Operating System that Spring worked with. Judging by the complete and total lack of hue and cry on the Spring forums, nobody but me even noticed the Group AI functionality had been removed. Economy hadn't worked for some time (not that it ever worked that well to begin with), Metal Maker had a Lua widget that did more or less the same thing, and apparently I'm the only one who ever used Central Build.
So, after trolling the Spring forums and determining that no Central Build widget existed, I set out to write one myself. "Widget" is apparently Spring's name for a Lua script (Lua's name for a program) which runs inside Spring on your computer and can only affect game units you directly control. I found widgets that did certain things and altered them to do other certain things. I even created a couple of widgets of my own that actually worked, though I'll be the first to admit that most of the best code was borrowed from other widgets by other authors. At the rate I'm going, I expect to have a working Central Build widget in as little as a few months.
Just in time for Spring to release a new version.