Documentation
Type System (1.1 and 1.11)
This is what happens if you are in the dev build of the game and type
/help.all then /help.enums( true ) in the console. It dumps the type system
and enum constants for the game to the
console - here I rerouted it to a file using "report filelog generic".
It contains prototypes for all skrit and RPC functions (compressed so it
fits on my tiny web site).
Exported function parameters (1.1 and 1.11)
I threw this together really quickly at the request of the community. It's
a simple scan of all our .h files looking for anything that has been
exported, and includes the name of the function and the parameter list
which includes the param names. Notes:
I filtered out all RC functions, and anything that takes no params to keep
the list short. [RC functions are not supposed to be called from skrit,
it's an internal multiplayer thing that unfortunately gets exposed to
skrit because it shares the same type system.]
My cheapo script didn't put class names on anything, so they're just
function names. It also doesn't pay attention to precompiler directives so
it scanned everything, including debug, test, and disabled functions that
don't exist in public versions of the game. I'll make a better script
later when I get some time to keep that clutter out.
Type System and
Parameters (1.09.2)
Older type system dump - keeping it up here so people can
'diff' against the new stuff to see what's changed.
Type System (pre-1.09b)
I took this snapshot after the 1.0 so it's not
exactly the RTM build, but it's close. Keeping it up here so people can
'diff' against the new stuff to see what's changed.
TankStructure.h
If you can read C code, this file defines the structures you need if
you're wanting to talk to tank files. This file is the same .h file used
to compile the game and our tank tools.
Important: if you are constructing a tank builder of your own, make
sure that it decompresses properly with no memory overrun. Dungeon Siege
decompresses its resources in place, and zlib requires some extra
room to fully extract its data. Make sure to thoroughly read the section
"Decompression of chunked compression formats" in the TankStructure.h
file.
FuBiPersistBinary.h
This is the format used by save game. While it's relatively easy to
parse, the problem you're going to run into is deducing the schema, which
is wired into the game directly. For example, you can't really tell from
the data file which is an integer and which is a float. In a future build
of the game I hope to add an option to output the schema as it writes the
text version. This should make it easier to edit save games.
RapiRawReader.cpp
This is the format of our .raw files for textures. It is a
custom format specific to Dungeon Siege and has no relation to the .raw
files that Photoshop or other image-processing tools may output. If
you're messing with texture formats, you will probably also want to read
this note on the layout of the mipmap images
for all imported (non-raw) formats.
gpstring_std.h
Some people were wondering what the data representation of a gpstring
is in memory. DS uses a hacked up version of the STL that comes with
Visual C++ 6, and here it is. I changed it to substitute heap memory for
stack memory usage - the same thing that MFC's CString does. The
gpstring is derived from this base, but only adds utility functions, so
everything you need for the data layout is here.
PContent Query Grammar
PContent, or "parameterized content" consists of two main parts - the
query language that lets you request a pcontent item, and the inventory
system that chooses what to drop on a higher level.
This grammar I
pulled straight from my comments in the code. It's sort of BNF based,
but you'll get the idea. Also note that it may be out of date. For
example, the "ornate" idea was dropped.
Goids and Scids
This is just a segment of a .h file that contains the definitions of
Goids and Scids, just in case you wondered what they look like inside
the engine. Nothing fancy, but here you go just in case you're curious!
Skrit Manual
A primitive, incomplete doc on skrit, written late at night (in bed,
usually). This doc is now sealed and will not be updated further (far
better materials are already available from the Dungeon Siege online
community).