WorldForge Editing Tool Suite

(Concept document)

Part 2: Content Creation Tools

This chapter contains descriptions of editing tools that are used for content creation, both initially for a game or game server, and later when adding new content to an existing game.

There are two basic types of content creation tools; those tools that edit types of objects that can be present in the game, and those that edit actual object instances in the game. The latter ones consist mainly of Information Object editors, and many of these can be used by players in-game.

Some of these editors are very similar, but as the edited objects or object types of each editor are logically distinct, and in some cases require some special widgets or solutions not included in a standard item editor, I feel it is motivated to split them into separate tools.

However, they share much of the common functionality, and this should be abstracted into a framework; perhaps one framework for the object type editors and another for the information object editors. Many of the different special widgets are also similar, and covered in the list of special widgets provided elsewhere (it was in an earlier post by zzorn to general@).

Object Type Editors

Some special item types have own editors, such as building blocks, machine parts, body parts, etc. These could use parts of the code of the normal item editor for editing generic properties, and use special custom widgets for editing the special aspects of the item type.

Most of the object type editors will also allow viewing and browsing the list of all object types of the edited type that are present in the game.

Item Editor

The item editor edits the properties of items, and allows the user to select what shape should be used for a given item. The properties can be randomized in various ways when a new item is created, in some cases some kind of factory method/script might be needed.

It is also possible to associate a number of different actions with an item.

Shows a preview of the item, using some default material.

Material Editor

The material editor would allow editing of the various material properties, as well as assigning sets of different textures to use when the material is used in building blocks or items. Preview of some sample items with the material applied could be given.

Also allows editing of reactions that this material can have with other materials, in the right conditions, and what happens when this material is heated or cooled enough. Different phases of a single material could have different sets of parameters, or simply be treated as different materials.

Mesh Editor

This would probably function mostly as an importer and viewer of 3D meshes, optionally having functions for specifying bones, etc. Simple 3D meshes might be possible to create from cubes and other shapes, and by moving vertexes around. This would probably be mostly for testing purposes.

Spell Component Editor

Spells consist of spell components that have different effects and can be combined in various ways to create a very large number of different spells. The spell components can be implemented as scripts that are executed, and take some parameters given at casting time and various environment conditions, and affect the spell in some way. The exact way of how spells will work is yet to be defined (it will probably be defined at least in Sands Of Syllus, as it will include magic).

Spell components should also have some nice names and icons, to make it fun to put together spells in some graphical editor.

Creature Editor

The creature editor allows the user to take the role of a biological Frankenstein, building various creatures using a heap of different body parts, shown in a nice sorted hierarchy, and a selection of different body materials, skin colorings, organ systems, and so on. The creature editor can edit the shape of the creature, by connecting previously defined body parts together into tree-shaped graphs. It also allows the user to configure the internal workings of the organ systems, and specify various default values and random ranges for the attributes and stats of the creature. Also the default behavior and mind of the creature can be configured.

Animations for various actions is a problematic area where the user might potentially have to do a lot of work, automatically generated movement might be added to the tool at some point, using genetic algorithms or some other technique to generate walking and other such animations for the creature.

The creature editor can call up the Body Part Editor as needed to create new body parts or edit old ones.

Body Part Editor

The body part editor can be used to select the 3D mesh to use for a body part, specify the skeleton in it, and specify the various contact points in a body part. It might also be possible to define functions of different body parts, such as sensory organs, manipulator arms, legs, etc.

Building Block Editor

This editor allows the user to edit building block shapes. It is not very different from a normal item editor.

However, when parametrized building blocks are implemented, the allowed parameter ranges and used factories will be specified in this editor.

Machine Part Editor

This editor allows the user to create new and edit existing machine parts. Machine parts can have input and output channels for energy, matter and information, and they can perform various operations on the given inputs, or execute some physical effect on the world, such as opening and closing a door. Some machine parts also react to the environment, such as buttons, sensors, and things like waterwheels or windmill wings.

Most of the functionality of machine parts should probably be hard coded, although part of it might be scripted. The editor might have some way to associate a new machine part with existing functionality, or specify parameters to slightly modify generic functionality provided by different hard coded classes.

Some machine parts might also be available in only certain technology types.

Technology Type Editor

The technology type is used mostly with machine parts. The technology type describes the manufacturing methods and technology level used in producing a machine part. Examples are wooden technology, stone based technology with large machine parts, silver technology with tiny gears and machines, large cast iron industrial revolution type technology, electricity based technology, electronics and modern technology, nanotechnology, biotechnology, magic technology, undead zombie technology, etc.

The technology type determines the appearance (textures/materials used) and size of machine parts, resistance and similar constants, sound effects, needed skills to create machine components, and so on.

Action Editor

An action is something that a character or other entity can do. In some cases it checks a skill to check for success, other actions might always succeed, or depend on the environment. An action can take a number of parameters from the invoker. The meaning of the parameters vary depending on the action. An action will usually have some effect, depending on the parameters, the environment, and the invoking character or entity. An action also has prerequisites that need to be present before it can be performed, for example, it might require that the actor has two manipulator arms.

Actions can require different body parts, for example, if a creature has manipulator arms then it can tie knots, and if it has some sensors it can look around. The tying knots action might also require that the character succeeds with a knot skill (or the quality of the knot might depend on the skill).

Actions can be always available to a character (provided the required conditions are met), or actions can be associated with item types. For example, if you have a bow you can use it to shoot arrows, or if you have a hammer or a suitable stone or other heavy item you can use it with varying success for hammering nails.

The Action Editor allows the user to create new actions and bind them to existing skills and methods provided by various rims. An action might contain a short script specifying what happens when it is executed.

The item editor allow actions to be tied to specific item types, (TODO: or categories of items? perhaps that should be done in the Action Editor after all.). The items that can be used to perform an action can also be viewed and changed from the Action Editor.

Skill Editor

A skill has a number of parameters, such as the cost of the skill, the function used to decide the success value (gaussian, linear, poisson, etc) other skills that affects it, and so on. Each skill also has a name and a short and a long description, and possibly also an icon and a place in a skill hierarchy or categorization.

The skill editor allows editing all these properties, and also allows management of the whole skill tree easily, supporting things like mass editing parameters for all skills.

Skills don't invoke any action, rather, they are checked by actions and in situations that require it (for example when shooting with a bow or when walking past a concealed door).

Profession Editor

A profession is a collection of skills suitable for a specific area of work.

The Profession Editor allows creation of new professions, by collecting a suitable set of skills, and weighting them in some manner. In addition each profession has a name, and a short and long description. In addition some illustration could be provided to visualize a character practicing the profession.

Like most of the other editors, the profession editor also allows browsing through and organizing the collection of all the professions in the game.

Object Instance Editors

These are mainly Information Object editors that can be used in-game. They should be programmed in such a way as to allow easy integration into clients. Or clients might invoke them as separate programs.

Document Editor

This editor allows the user to create some type of document that contains other information objects. It might create slide show like presentations, or books, or a hierarchical collection of documents.

I'm not sure exactly what it will look like, and what it will need to do, as for example the text editor already can embed other information objects, to create web page like documents. The role of the document editor seems to be mostly to organize information objects.. Perhaps the part of the mind of a character that stores information objects could be treated as a document, and could thus be edited and accessed with the document editor?

Blueprint Editor

The Buleprint editor allows the user to create designs for structures assembled from building blocks, machine parts, and also individual items. It might also need to store information about the order that different parts should be assembled, and to allow temporary support constructions that are removed in later stages of the building process.

The Gaudi UI document contains a more detailed description of the UI:

Text Editor

The text editor allows users to write simple marked up text (HTML compatible markup). Other information objects could be embedded into the text too.

Painting Editor

This is a small paint program, that allows the user to edit a raster image. It has different brushes, different inks, and different shapes. It could also optionally support layers. It also includes various filters, including color adjustment, etc. The brushes define the size, shape, and strength of the applied paint. The ink defines the color, translucency, pattern, and special filtering effects (such as soften, or color replace, etc) of the applied paint. The shape includes freehand drawing, lines, curves, filled shapes, splattered spray, etc.

Drawing Editor

The drawing editor allows the user to create vector based graphics, such as diagrams, maps, etc. In contrast to paintings, they are easier to scale, and also take less storage. Drawings can contain lines, curves, free-hand lines (converted to approximating curve segments), geometric shapes, text, and also perhaps embed other types of information objects. The lines and areas can have different styles, including thickness, color, translucency, etc.

Music Editor

This editor should allow the user to create 'sheets' with instrument based music, along with lyrics. The user can specify what instruments should be used for different tracks (TODO: What is the musical term equal to a track in a tracker?), insert comments at any place, and also perhaps insert optional custom commands or intervals at specific points, that could be used to trigger various special effects (lights, cannon shots, etc) when processed mechanically, or with a custom designed playing script.

Script Editor

This editor can be used to create scripts for computers and minds. The script in a mind can access different information and control streams and interfaces to other parts of the mind, such as memory, world model, goals, tasks, connected minds, etc., as dictated by access rights given to it. A script running on a computer will have a very similar environment, with perception and control streams, interfaces to memory, tasks, networks, etc.

The script editor could support a few different complexity levels, to give a low learning curve for non-programmers, and also support complex scripting and object oriented programming. Each macro, or 'action', should have some pre-, postconditions, and invariants, so that they can be used by an artificial planner / goal solver too.

Character Editor

This editor is used to set up new characters or configure existing characters. It allows editing name, race, appearance, stats, profession, skills, etc. of new characters, and modifying descriptions, behavior, etc, of existing and new characters. A rule module on the server can be used to make sure that the values are allowed, and that points are distributed or stats rolled according to rules. It is used both for creating new player characters and editing existing player characters, and for creating and editing NPCs, both online and offline.

Spell Editor

Allows a character to put together a spell using spell components that s/he knows, or an admin to create spells for books or to give to characters. The spell components have icons and names, and are organized in a logical hierarchy. The spell contains a number of components that can be combined in different ways, taking various target and other inputs from the caster or from other spell components, and perhaps also featuring some logical branches etc. A spell is probably tree or graph shaped. The exact mechanics of spells and spell creation will be defined later.