FAQ:Content

From Spring
Revision as of 18:45, 16 February 2010 by Sinbadev (talk | contribs) (→How I Mod?!)
Jump to navigationJump to search

Spring Content Developement FAQ + Basics

Stuff Everyone Should Know

Spring is an Engine designed to allow people to play real-time strategy games... It is not a game in itself. Unfortunately this has lead to a lot of very complex and bitter arguments on semantics, the results of which can be summarized as follows:


"Content" can be developed for Spring and distributed in "Content Packages" (namely SDZ and SD7 Files and SDD folders) or dumped into your Spring directory structure directly (a bad idea in many cases, as except for certain notable exceptions it will cause you to be unable to synchronize with other players). Content can take the form of Units, Textures, Models (3DO or S30), Game Types and Maps... (Lua and COB Scripts also may count as content in certain contexts...)

This leads to a bunch of quazi-defined meta-terminology:

General Terminology

TA-ist/TA-isms: Spring was initially designed to play a Port of XTA, a Mod of Total Annihilation build for the original Total Annihilation engine. As such there are a number of things, like the resource structure, the general interface, unit tags (and to be honest nearly everything that isn't Lua) that are essentially extensions of this concept.

"Game Type" Terminology

Mods, Total Conversions, Ports, Games and Mutators are all essentially synonyms for "A Content Package Containing At Least One Game Type". Colloquially speaking: Mods are modifications of existing games, in almost all cases these are based on content or at least units from Total Annihilation. Total Conversions are new games created for the Spring engine but based on existing commercially held IP (like Warhammer 40K, Dune or Star Wars). Ports are conversions of games for another engine that are modified to work with the Spring Engine with little other alteration (Early Versions of Star Wars Spring or Final Frontier). Games are games containing primarily new content. Mutators are new game types meant to be used in conjunction with the content developed for an existing Game Type (for example adding a new set of units to an existing Game Type or special rules like Chickens variants).

Modders and Game Designers are interchangeable terms for the people who create or modify the content necessary for a "A Content Package Containing At Least One Game Type". Typically someone who is working with existing content developed by someone else falls into the "Modders" category and and those who are creating all new content are called "Game Designers", but most content developers tend to both create new content and modify existing content so the terms are really more a matter of preference.

Units are entity templates defined in text files that reference Model, Other Text Files, Script and Texture files (sometimes this reference is inferred). Like most RTS Games, a Game Type in Spring will typically define one or more kind of starting unit which will be able to be given orders to do things like move, attack and build new other units. The term.

Features and Wreckage are special types of Units that are not owned by any player. These include things like rocks and trees as well as the corpses of fallen units.

Map Terminology

A map in Spring is composed of a number of files and is typically released as a "Content Package" containing the Map Data Files (SMD), Tiles File (SMT), Everything Else Files (SMF), any Models, Textures and Feature or Unit Definitions that are needed for the map and sometimes Lua files defining special Map scripts or Options.

Scripting Terminology

Synchronized Code Lua Gadgets and Unit Scripts (Lua or COB) are what is refereed to as synchronized code. They define much of the behavior of all Games of a given Game Type and as such must act the same on all players computers. Because Unit animation is used for things like aiming speed, how long it takes a unit to open and close, or when it is able to shoot a specific weapon, all of the code for this behavior is synchronized.

Gadgets are Lua scripts that are inherent to a "Game Type", they can define pretty much anything from which units are available to custom resources to unit animations to GUI elements. If you ask a question like "Is it possible for the game I'm building to do X" the answer is most-probably, "Yes, with enough Lua". You could, for example, use Lua in conjunction with the Spring Engine to, build a first person shooter or turn based strategy game... though it would take an awful lot of creative Lua to do so.

Lua Unit Definitions and Scripts Lua can also be used within the traditional TA-ist framework to set the values of a Unit's tags and define the Unit's animation scripts.

'Widgets are Lua scripts that are not inherent to the a "Game Type" (though they might be included along with a Game Type in a Content Package). They define things like custom GUI elements, macro-equivalent short-cut commands or pretty much anything that is specific to your individual client session and not the game simulation. Widgets are one of the few things you can drop relatively safely into your Spring directory structure without interfering with sync.

COB is a compiled script that is a derived form of the unit script files in Total Annihilation. Many Game Types still use COB to define how their units behave.

General Content Developing FAQ

This covers the basic concepts of Spring Content creation that are common to all Game Types, Maps or Content in general.

How I Mod?!

In general, the first thing you'll want to do is crack open an existing content package for the type of thing you want to modify.

Content Packages Will contain some or all of the following Files: Data Files (Plain Text files with the extension .TDF for "Total Annihilation Data File) Textures Models (in 3DO or S3O format) Scripts (in Lua or compiled COB format) Map Tiles (Compiled SMT files (not human readable)) Map Data (Plain Text Files) Map "Everything Else" Files (Compiled SMT files (not human readable))

These are all stored in either ZIP or 7zip Format and can both be opened with 7zip

So Really, How do I Mod the Spring Engine?

You Don't, see next section.

Okay... How do I Modify and/or Develop Content For the Spring Engine?

That depends, do you want to: Make a New Unit Modify an Existing Game Type Make a Map Script a Widget