|
|
If you look at the Entity window, you'll see a variety of terms used like "Entity", "Satellite", "Processes", "Agent". In addition, if you expand a GEM file in the workspace window (such as Aida.gem), you'll see a bunch of other labels like "Bone Hierarchy" and "Entity Blueprint".
Many of these terms will almost certainly be confusing at first, but don't worry, you'll get the hang of things soon enough. Before diving in to what these things mean though, it'd be good to have a basic understanding of how Golem works with meshes, since it may be a bit different than other systems you're accustomed to.
This section may read a bit thick, but it's important, so bear with me.
Most games internally have some kind of concept of "game object", representing things or people within the game world. These game objects might be called anything from "actors" to "entities" to "GOs" to who-knows-what, depending on the game in question.
In addition, many games involving animated meshes have a concept of a "mesh" or "model", which is a distinct thing representing the geometry and animation data for one or more of these game objects. For example, a "chicken" mesh would hold the geometry and animation data for a chicken (exported from a modeling/animation package like 3DS MAX, Maya, SoftImage, Lightwave, etc), and all of the various "chicken" game objects would use this same mesh (it's a one-to-many relationship of mesh-to-gameobject).
The vast majority of mesh-related editing tools for games focus on creating or editing individual isolated meshes (like chickens, people, weapons, etc), which can then be applied directly to some kind of game object property. If you've done any mesh-related modding for other games, none of this should be news to you.
What's important to understand at this point, is that Golem doesn't work this way.
Unlike these other systems, Golem puts the game object itself at the forefront, and Golem's parallel to a game object is called an entity. Many mesh/animation systems for games deal solely with maintaining the common mesh data, and leave the management of individual "mesh instances" (one per game object) to the game code. In contrast, since Golem is based around the concept of these instantiated "entities", it does the legwork for the individuals as well. This may seem like a small implementation detail that doesn't have any bearing on users, but in reality it's a very important point, because it demonstrates that in Golem, individual entities are more important than the meshes that they share... and in fact in Golem there aren't any "meshes".
When a game object is created (in this case, an actor within Unreal 2), Golem creates an entity to match, based on a gem object called an Entity Blueprint. Entity blueprints are the closest parallel to what other systems would call a "mesh", and infact these are exactly what programs like UnrealEd use when listing mesh objects that can be assigned to an actor's Mesh property (the Unreal "mesh" object stubs are generated directly from the list of Entity Blueprints available to the game... more on this later).
Entity Blueprints, while very important logically speaking (being the high-level equivalent of an entire "mesh"), really don't have very much inside of them at all. In fact, they are extremely small gem objects, containing nothing but a few references to other gem objects like a model and some scripts, plus a few other optional attributes for things like attachments.
Entity Blueprints are one of many types of gem objects, visible within the Workspace Window (the name "gem object" simply means "object stored in a GEM file"). GEM files are entirely composed of these objects; they're a fundamental building block of Golem's physical organization.
Golem relies heavily on a "building block" way of looking at data. Instead of having some single enormous "mesh" structure, Golem allows the various kinds of objects used in its mesh files to exist independently as their own gem objects, which can then be assembled in building block fashion to describe a mesh as a whole.
(This tutorial is still under construction)