Starsiege Instant AI (IAI)

IAI automatically fills multiplayer teams with AI (artificially intelligent) players. It's customizable settings produce games with a wide range of flavors. You can use it for solo play, or to help balance teams on your servers.

The AI are about as talented as they come and drive over 40 classic multiplayer vehicle configs. You can specify which configs play. Create your own configs. Use special vehicle modes like all-Prometheus. Turn on AI artillery support and allow players to spot with an LTADS. And to really stir things up, auto-scramble your drop points.

All these features can be turned on and off independently. Different maps, different teams, and different combinations of parameter settings make for an almost endless number of combinations.

Map Compatibility

IAI works on any ordinary TDM/CTF* map with no modifications, but there are a few limitations. IAI probably won't work with maps using other game rules, especially those that already have AI, like WAR or OV. It has so far been tested with up to four players and a total of 32 AI; but most often with 2-team TDM, 1 or 2 players, and 20-24 AI. The default settings are for this sort of "solo" mode. It also works for three or four team TDM. DM has not been tested - maybe it works, likely it doesn't. Four teams with scrambled drop points plays a bit like DM.

All the stock DM/TDM maps have been tested and work wonderfully. The SLA Starsiege League Games Maps (SSL) have also been tested and work well. Campaign terrain is required for many of these maps, and sometimes the AI get stuck in crevices or against objects, but it's generally not a problem. The SSL maps can only be used with Red and Blue teams, and drop point scrambling doesn't work very well on them. Some of my TDM maps also work well. Borrego and TitanDusk are especially cool. I'm interested to hear reports, good or bad, concerning other maps.

The number of players and AI are limited only by the server's CPU and bandwidth. Each AI consumes more CPU than a human player, but less bandwidth. Even for solo play you should probably run a dedicated server alone on its own machine. You can run the client and server on the same machine, but will not be able to use nearly as many AI before your system is brought to its knees. Who knows though, the best I have right now is a 400MHz K6III. On a 2GHz P4 I'm sure much more is possible. At any rate keep in mind that as the number of players and AI grows low-powered clients (like my lowly K6 TNT) will likely experience CPU/graphics lag regardless of the capabilities of the server.

The AI

The AI have good aim and seem to enjoy shooting weapons off. This is an intended feature of skilled AI. The AI will not use ramps and don't really understand teleports, though they may stumble into them occasionally. They have a tendency to get stuck when either the terrain is extremely uneven or when objects are unusally or very densely arranged. The AI often ignore weaponless opponents, but for some reason will attack even inactive enemy turrets.

* The AI don't work very well in CTF. They will not run flags and they don't know how to capture or disable turrets (like in CTF_Circular_Logic). They make poor defenders and do not adapt to runner configs, although in large numbers they can be difficult to get past.

The AI won't use SMOD, SCAP, or LTADS. Their vehicle configurations often include ECM and Thermal Jammers.

No score is kept for AI.

Installation

IAI is a server-side script. Clients can join without downloading or installing anything. The skin pack is for clients but it is optional. Unzip its contents into your skins folder.

For solo players or server operators you need to unpack the contents of the zip file into your top-level Starsiege folder. This will create a folder called iai containing several files and folders. To activate IAI you must copy the file Starsiege/iai/stdlib.cs to the Starsiege folder. Once activated IAI be active on all servers you run. To deactivate IAI either delete stdlib.cs or rename it to something like stdlib_DISABLED.cs.

If you already use a modded stdlib.cs then instead of replacing it you can just add the following line to the end of loadMission():

    exec("iai\\iai.cs");

Parameters

Default values for all game parameters are set in Starsiege/iai/param.cs. Feel free to edit this file. Comments explain what each parameter does. These are THE settings for non-dedicated servers. For dedicated servers you should use Server_IAI.cs. If you already have a server file and you want to use IAI with it the only line you really need to add is:

  exec("iai\\param.cs");

Whichever server file you use it can also set any of the game parameters. The values in param.cs will only be used as a default if you don't specify them in the server file.

Some parameters are on/off controls. These are set to 1 for on or 0 for off. Some parameters are controlled by deleting or adding a double slash (//) at the beginning of the line.

In Server_IAI.cs you'll also see statements like:

  if (0) {
    ...
  }

Again by changing just one character whole blocks of code between the curly braces can be activated or deactivated; just make it say if (1) or if (0).

AI Vehicle Configurations

If you don't like the combination of vehicles when $IAI::VehicleFile is "All" or "Limited" then you can define your own. Replace the file Starsiege/iai/v/ListLimited.cs with a copy of ListAll.cs. Then edit the file with Notepad and delete the lines for whatever configs you don't like. Now when you select "Limited" it will be your limits. Unfortunately it's only this simple if you want to use a subset of "All".

You can also add your own AI vehicle configs, but this is a little more complicated. It works by copying human player configs, so you show it what to use by building configs in the herc bay and then dropping into the game with them. To start turn on clone mode by editing Starsiege/iai/param.cs and setting $IAI::CloneConfigs to 1. Note: clone mode is not intended for use during general play. Now copy your Starsiege/iai/v/ListAll.cs file to your Starsiege folder. Next, start a non-dedicated server (run Starsiege, click Multiplayer and then Create Server), select a map (any will do) and join the game. Now whenever you drop into the map with a configuration that doesn't already precisely match something in ListAll.cs it will be added to the list and a new .dat file will be created.

When you're done defining new configs exit the game and edit param.cs to set $IAI::CloneConfigs back to 0. To make IAI use these new configs you have to move the new ListAll.cs back to Starsiege/iai/v (replace the old one) and move the new .dat files to Starsiege/iai/obj.

Warning: If you ever edit a vehicle list (like ListLimited.cs) MAKE SURE every config in the list ACTUALLY EXISTS in your Starsiege/iai/obj folder. If you ever delete a file from the obj folder make sure you delete the corresponding line from ListAll.cs.

Credits

IAI was written by me, [OF]Pincushion. It took weeks of my spare time so I hope you enjoy it. My son Captain Eiche urged me on and helped playtest. Several key features were made possible by the kind contributions of others. Developer Louis McCrady (Tyranny) wrote Starsiege's internal AI logic. He gave us the first example of multiplayer AI scripting: Extras/Miscellaneous/TDM_TO_YOUR_KNEES.cs on Disc 1. A long time ago Orogogus built an AI TDM prototype called Orogogan Deathmath (ODM). This was the main inspiration for IAI. More recently Orogogus shared the essentials of vehicle cloning, which together with GotLag's description of loadObject() finally made it possible to use different AI vehicle configurations. clone.cs is a large hunk of mostly O's code. M1A2K first demonstrated a working multiplayer LTADS in his CTF_City_of_Snipers map. IAI's LTADS.cs is based on his code, especially the chats which should be familiar to anyone who's played his map. IAI is generalized to work for any number of AI artillery on any team. The skins in the AI skinpack were originally created for Orion Faction's elite Aggressor Squadron by [OF]CatzCradle and are presented here in their full unadulterated glory. They were also included in Kamosa's Skin Pack #5 so some people may already have them.

Support

During testing there were quite a few crashes of clients and servers. Most of these crashes were caused by bugs since fixed, but it still not uncommon for the server to crash, usually after a few map cycles. Sometimes clients time out when a new map starts. The truth is the game wasn't designed or tested for what IAI does with it so it's amazing it works as well as it does. Personally I think the fun is worth it - if you don't agree then by golly don't use IAI. If you spot a bug and know how to fix it then let me know and I'll make the change. Otherwise don't bother me.

Please reread this document again closely before you ask for any help. Post feedback to the Starsiege Editing and Scripting forum. Visit http://www.geocities.com/SoHo/Nook/9351/maps/ for maps and other stuff.

History

14 September 2001 - Initial public release, version 1.0.