|
Site Navigation Main News Forums
Games Games Database Top 100 Release List Support Files
Features Reviews Previews Interviews Editorials Diaries Misc
Download Gallery Music Screenshots Videos
Miscellaneous Staff Members Privacy Statement
|
|
It Isn't a typo :-). Skit is the name of a subsystem in Dungeon Siege. It comes from the word Sanskrit and has no particular meaning. The act of writing skrit code is sometimes known as “shoveling skrit”. Scott Bilas from Gas Powered Games has written a documentation for it an put it online at his site. It is still incomplete (about 10% done), but it will be a valuable source of information for those willing to dig into it for making their own mods for Dungeon Siege. Here's something about the design goal of skrit:
Before we go any further, let’s examine some of the design goals of skrit. This is important to help understand why certain features are implemented a certain way, or perhaps were left out completely. Hopefully this will answer in advance many of the “why doesn’t skrit have feature x” types of questions. It’s also important to note that these design goals were meant for the prerelease development process. After the game is finished, the goals will change to accommodate the mod community.
The most important design goal of skrit is that it is not meant to be used as a general purpose language. As a result, it’s missing many features of GP languages such as for-loops, switch/case statements, inheritance trees, structure definition, arrays, lists, memory allocation, etc. Many of these features, such as for-loops, were left out on purpose to discourage use of skrit as a GP language, and save development and test time for more relevant features, such as the state system. Skrit was deliberately designed to prevent our scripters from trying to build engine features in the language. Not only does this potentially destabilize the game, suck up cpu and memory, and increase maintenance cost, but it also potentially duplicates engineering efforts. Instead, when an advanced feature is required, an engineer will implement it so that all systems in the game can use it, and then skrit can call into that.
Skrit is meant to be a duct tape language. It is designed to tie fast and powerful C++ engine systems together quickly and easily. Skrit has custom grammar intended to make it easier to naturally express solutions to the problems of a real-time event-driven game. If you’ve ever tried to create a state machine in C++ without using a bunch of inflexible, ugly, hard to read macros that only an engineer armed with a compiler can do anything with, you’ll know what I mean. Because it’s duct tape, skrit is useless by itself. It can’t do anything interesting without calling engine features, and so understanding how the engine works is vital to understanding how skrit may be used to create interactive content. Documentation for other systems in the game is beyond the scope of this document, however.
Another important design goal of skrit is that it should be very difficult to take the game down with skrit. If you try to do it, you certainly can, but during normal development a bad skrit should almost never cause a crash of the game. It is generally able to report the error, shut down the offending skrit, and continue. One thing to notice about skrit is that, like all other Dungeon Siege systems, it has strayed from its original design to handle the needs of our rapidly and ever changing project. Some features may have gotten stale from not being used in a while. Other features may be tuned to a particular need we had at one time and look kind of gnarly.
To support the mod community, some features will be added over time. Once native interfaces are in, any remaining missing features can be filled in via external DLL’s built by other languages such as C++ or Delphi. |
|
|