Golem Studio

From Oldunreal-Wiki
Revision as of 21:50, 9 June 2012 by GreatEmerald (talk | contribs) (More expansion)
Jump to navigation Jump to search

Golem Studio is a mesh and animation editor that came with Unreal II (specifically, version 1.01). It was created by Legend Entertainment and was used as a companion program to UnrealEd for setting up the meshes and animations of all animated objects in Unreal II, including characters, creatures, some decorations and most weapons. It can be launched by running GlmEd.exe found in the Unreal2/System directory.

Program logic

Workspaces

Golem Studio works with files called Golem workspaces (extension .gws). Golem workspaces are a kind of master files that contain references to and control the structure of a Root folder. Golem workspaces can only hold references (they don't have the actual files in them), and only to two types of data - folders and GEM files. Changing anything in the workspace changes the way files are situated on the Root folder, for instance, adding a subfolder to a workspace in the Goldem Studio will also physically add a subfolder into the Root folder. Same thing with GEM files.

GEM files

While Golem workspaces contain references to files, GEM files contain objects (physically, not just references to them, except for a few types of objects). These objects can be of different categories:

Category Type Description
Bone Frames GemBoneFrames These objects contain a set of frames with bone transform information based on a particular bone hierarchy, used for skeletal animation.
Bone Hierarchy GemBoneHierarchy These objects contain a collection of bones organized in a hierarchy, used by bone points and frames objects for skeletal animation.
Bone Weighted Points GemBonePoints These objects contain a set of points and their normals, which are weighted to the bones of a bone hierarchy for smooth skinning. These weighted points are necessary in order to generate point positions from skeletal animation data.
Color/Alpha Frames GemColorFrames These objects contain a set of frames with 32-bit ARGB values capable of being animated on vertices for color & alpha effects.
Entity Blueprint GemBlueprint These objects are blueprints used to create entities at runtime. They contain a reference to a Model object describing the entity's structure, and a set of attachments used to connect other entities to this one.
Entity Script Agent GemAgent These objects contain a rule tree used to determine a set of entity script processes to use based on a small set of input values. The agent acts as an intermediary between a client application and an entity's script processes, translating only a few pieces of input data into choices within a potentially large set of usable entity scripts.
Entity Scripts GemScripts These objects contain command scripts for manipulating entities at runtime, using static animation frame sequences and/or dynamic animation effects.
Level-of-Detail Information GemLodInfo These objects contain triangle Level-of-Detail (LOD) reduction information in the form of a "progressive mesh" capable of choosing its triangle count at will. This data is constructed from the vertices and triangles used by a Model object. Once the data is present, the LOD information can be used to reorder the vertices for LOD compatibility, and then create new reduced triangle sets for lower detail levels.
Lipsync Curve GemLipsyncCurve These objects contain a function curve applied to a set of viseme frames at runtime, for lip-syncing.
Materials GemMaterials These objects contain a set of materials composed of various rendering settings, potentially using multiple texture stages. Each triangle in a model has a single material index which refers to one of the materials within these objects.
Model GemModel These objects describe the structure of a polygonal model used by Entity objects. Models are a combination of various other object types including triangle, vertex, and bone information.
Physical Ragdoll GemRagdoll These objects define a physical "ragdoll" composed of primitive solids and constrained joints. The volumes are associated with hierarchy bones, allowing physics-related abilities to operate on the hierarchy.
Point Normal Frames GemNormalFrames These objects contain a set of frames with uncompressed point normals, used for lighting information during vertex animation.
Point Position Frames GemPointFrames These objects contain a set of frames with uncompressed point positions, used for vertex animation.
Quantized Point Normal Frames GemQuantNormalFrames These objects contain a set of frames with quantized (compressed) point normals, used for lighting information during vertex animation.
Quantized Point Position Frames GemQuantPointFrames These objects contain a set of frames with quantized (compressed) point positions, used for vertex animation.
Triangle Adjacency Links GemTriLinks Marked with OBSOLETE / DELETE IF INDICATED. These objects contain triangle adjacency information for a variety of uses. The adjacency information identifies which vertices are connected to which triangles via shared edges, and so forth. This information is typically generated from the raw triangles of a Triangles object, along with the point indices used by the vertices in a Vertices object.
Triangle Rendering Primitives GemTriPrims Marked with OBSOLETE / DELETE IF INDICATED. These objects contain triangle primitives sorted into material batches for optimized rendering. This information is typically generated from the raw triangles of a Triangles object.
Triangles GemTriangles These objects contain raw triangles which refer to a given material index and three vertex indices.
Vertices GemVertices These objects contain model vertices which refer to a given point index, normal index, color index, and multiple texture UV indices.

To have a working (visible) model, it must have at least Bone Weighted Points, Entity Blueprint, Materials, Model, Triangles and Vertices defined.

A GEM file can contain multiple objects in the same category.

Object attributes

Each object has a set of attributes. Golem Studio allows you to view and add attributes to each object freely. Attributes must have a name, array index, type and value. The attribute name is what gives the Golem Studio information about which attribute you intend to modify (unfortunately, you need to enter the name manually for most object types, and there is no documentation about what names are valid for what types). The array index is an integer (its function is unknown, possibly attribute ordering). Valid attribute types are integer value, floating-point value, text string and object reference. The value is, of course, the value of the attribute, limited by the attribute type.

Most objects have pre-defined attributes, most in the form of statistics. Those attributes are read-only as they are auto-generated. Some of them, such as the attributes of the Triangles category objects, are not set as read-only, but changing them (or even deleting them) does not have any effect.

Interface

The Golem Studio window

The Golem Studio interface consists of four independent windows. The main window has a menu bar and, when maximised, contains the other three windows inside it. The Workspace window provides a list of folders, files, categories and objects referenced in the open workspace and allows to manipulate them. The Render window shows a rendered preview of a selected entity. The Entity window controls what entity is displayed in the Render window and allows you to change the parameters of the entity render.

Main window

The main window has a single element that can be interacted with - the menu bar. It has three menus - File, View and Help.

File menu

The File menu allows you to create a new workspace (if no workspace is open), to open an existing workspace (again, only if no workspace is open) and to close a workspace (if one is open). You are not allowed to open more than one workspace at a time. The File menu also has a Preferences option and an Exit button.

While opening and closing a workspace, as well as the program itself, is self-explanatory, more should be said about creating a new workspace. First the program asks you where to put the workspace file (by default in the same directory as the program itself, Unreal2/System). Then a new window, titled New Workspace, opens. Here you need to enter the title of your workspace and the location of the Root folder (the directory in which all the GEM files and folders created within the workspace are stored, by default again Unreal2/System, although Legend Entertainment themselves used Unreal2/Meshes instead). You can also define a custom Textures root folder (the directory where external textures will be kept), although by default it is set to match the workspace Root folder. Lastly, you can select Visual SourceSafe integration options (path to the VSS database, username and password), although it is of low practical use these days as Visual SourceSafe is a rather antiquated version control system, whose job is better left to modern systems, such as Git, which do not require special integration in the first place.

The Preferences window

The Preferences option brings up the Preferences window with three sections. The first section, titled General Preferences, allows you to choose whether the last used workspace should be automatically loaded at program startup (useful when working on a single workspace) and whether to update the Render window when the Golem Studio main window is not on focus (this is usually a bad idea, as the Render window doesn't have a framerate limit and therefore takes up all of the resources of the graphics card that it can spare). The second section is titled Rendering Preferences, and the single option here is the background colour of the Render window. It is set to black by default, but it is recommended to set it to grey or white in order to see untextured entities in the Render window. Note that this setting is only applied after restarting the Golem Studio. The last section is titled Crash Dump Email Preferences (Developer Build Only) and was used for sending crash reports to the developers, but it is of no use these days.

View menu

The View menu has five options: Workspace Window, Entity Window, Render Window, Log Window and Memory Usage. The first three options toggle visibility of the other three windows. It is recommended to keep the Render window disabled until it's necessary in order to keep your GPU cool and using less power. The Log Window option produces a small window with a read-only textbox in it. It appears to have been unused, as no text ever appears there. The Memory Usage option creates a dialog window that shows how much memory the program uses (although it doesn't seem to be accurate, according to the Resource Monitor).

Help menu

The Help menu unfortunately has a single option - About Golem Studio, which produces a dialog window titled About that reads nothing more than Golem Studio - Version 1.01.