This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
gamedev:deigde:editors:gamedefinition [2020/04/01 18:26] – [Object Classes] dragonlord | gamedev:deigde:editors:gamedefinition [2024/03/14 16:32] (current) – dragonlord | ||
---|---|---|---|
Line 8: | Line 8: | ||
The game definition editor allows to edit **game definition** files (*.degd). These are used for development and stores information about **object classes** and certain resources like **skin resources** or **sky resources**. For each game project a game definition file is created and stored in the project directory. | The game definition editor allows to edit **game definition** files (*.degd). These are used for development and stores information about **object classes** and certain resources like **skin resources** or **sky resources**. For each game project a game definition file is created and stored in the project directory. | ||
- | {{ : | + | <WRAP group> |
+ | <WRAP column> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
This editor is usually used to edit the game definition of the current project (**Game-Definition -> Open Project** menu entry) but can be also used to edit any game definition file. This works since in contrary to other editors this editor is allowed to edit files outside the game virtual file system. By default the project game definition is not loaded to reduce loading times. | This editor is usually used to edit the game definition of the current project (**Game-Definition -> Open Project** menu entry) but can be also used to edit any game definition file. This works since in contrary to other editors this editor is allowed to edit files outside the game virtual file system. By default the project game definition is not loaded to reduce loading times. | ||
Line 52: | Line 56: | ||
Resources are assigned to categories using a //Category Path String//. The category path string is similar to Unix file path. For example a child category " | Resources are assigned to categories using a //Category Path String//. The category path string is similar to Unix file path. For example a child category " | ||
- | Use the context menu to add and remove categories. | + | Use < |
The **Hidden** parameters hides the category from **Browsers**. Elements inside hidden categories can be still used unless they are hidden themselves. | The **Hidden** parameters hides the category from **Browsers**. Elements inside hidden categories can be still used unless they are hidden themselves. | ||
Line 106: | Line 110: | ||
{{ : | {{ : | ||
- | An object | + | Sub Objects have to be added to object |
- | The mapper defines how the object | + | The parameters in the **Object Class Component** (sub object |
+ | ^ Type ^ DragonScript Class ^ Drag[en]gine Class ^ | ||
+ | | Billboard | ||
+ | | Camera | ||
+ | | Component | ||
+ | | Environment Map Probe | # | ||
+ | | Light | # | ||
+ | | Navigation Space | # | ||
+ | | Navigation Blocker | ||
+ | | Particle Emitter | ||
+ | | Force Field | # | ||
+ | | Speaker | ||
- | The **Object Class** panel contains general parameters of the object class like name or description shown to the mapper. | + | The **Snap Point** type is different. This type is only for IGDE use by the mapper and has no game engine counter part. As the name suggests snap points define spots on the object class other object classes can snap to. If objects have no snap points their origin is used for snapping. If objects have snap points all of them can snap to each other. Furthermore snap points can be //Aligned// or not. Aligned snap points snap position and orientation while not aligned snap points only snap position. |
- | The **Scale Mode** indicates how the mapper can scale the object. **Fixed** prevents | + | The **Properties** sub panel links the content of sub object |
- | The **Def Inherit Prop Pref** defines the default property prefix to use for inheriting if the user adds this object class as inherit. | ||
- | |||
- | The **Ghost** parameter defines if the object is considered a ghost during editing. Ghost objects are ignored during certain interactions like dropping objects to the ground. This is typically used for triggers, lights and other objects which the mapper does not want to get in the way of editing. | ||
- | |||
- | The **Can Instantiate** parameter defines if the object class is shown in **Browsers**. Disable this for helper object classes used only to provide content for inheriting but otherwise not existing in the game. This prevents the mapper from adding them to the game world. | ||
- | |||
- | The **Properties** panel contains object class properties the mapper can use when adding objects to the game world. Properties are a list of unique named keys storing a string value. This design choice completely decouples game logic from editing allowing coders to focus designing their script classes to best suite the game needs not needing to deal with editing compatibility all the time. For the mapper it allows to focus on what is important for him to work efficient not having to worry about his setup having negative influence on the game afterwards. | ||
- | |||
- | <WRAP center round tip 60%> | ||
- | The IGDE visualizes certain links between objects to help the mapper spot relationships. The IGDE shows links for objects **parented** to other objects and for properties of type **Identifier** with matching group name. For all object classes properties you want to link assign the same group name in the **Properties Parameters** sub panel. For all object class properties that act as the **Source** enable the **Defines Identifier** check box. The IGDE keeps track of defined identifiers per group so the mapper can select them on target properties from a drop-down list. | ||
- | </ | ||
- | |||
- | The **Property Values** panel allows to set default values for inherited properties. For regular properties the default value can be defined in the properties panel above. Using property values is typically required for game object classes changing base class properties upon constructing. Using **Set from Sub Objects** from the context menu you can let the editor scan sub objects for linked properties having different values than the object classes inherited from declares as default value. This usually provides a good starting ground. | ||
- | |||
- | The **Texture Properties** panel define properties the mapper can assign to individual textures. They work similar to object class properties. | ||
- | |||
- | The **Inherits** panel allows to include the content of other object classes with optional property prefixes. This feature allows to model typical coding scenarios like // | ||
- | |||
- | The **Hide Tags** panel allows to define a set of tags the mapper can use to dynamically hide object classes. A typical example is the **Editing** tag which allows to quickly hide all objects like lights or triggers to better evaluate the content. | ||
- | |||
- | The **Partial Hide Tags** panel defines another set of tags the mapper can use to // | ||
<WRAP clear/> | <WRAP clear/> | ||