FuncGodot FGD Resources

FuncGodotFGDFile

Resource file used to express a set of FuncGodotFGDEntity definitions. Can be exported as an FGD file for use with a Quake map editor. Used in conjunction with a FuncGodotMapSettings resource to generate nodes in a FuncGodotMap node.


Property Type Description
Export File Bool Used as a button to build and export the FGD file. Automatically sets to off after exporting.
Map Editor
Model Key Word Supported Bool Some map editors do not support the "model" key word and require the "studio" key word instead. If you get errors in your map editor, try changing this setting. This setting is overridden when the FGD is built via the Game Config resource.
FGD
Fgd Name String FGD output filename without the extension.
Base Fgd Files Array[Resource] Array of FuncGodotFGDFile resources to include in FGD file output. All of the entities included with these FuncGodotFGDFile resources will be prepended to the outputted FGD file.
Entity Definitions Array[Resource] Array of resources that inherit from FuncGodotFGDEntityClass. This array defines the entities that will be added to the exported FGD file and the nodes that will be generated in a FuncGodotMap.


FuncGodotFGDEntityClass

Base entity definition class. Not to be used directly, use FuncGodotFGDBaseClass, FuncGodotFGDSolidClass, or FuncGodotFGDPointClass instead.


Property Type Description
Entity Definition
Classname String Entity classname. This is a required field in all entity types as it is parsed by both the map editor and by FuncGodot on map build.
Description String Entity description that appears in the map editor. Not required.
Func Godot Internal Bool Entity does not get written to the exported FGD. Entity is only used for FuncGodotMap build process.
Base Classes Array[Resource] Array of FuncGodotFGDBaseClass resources to inherit Class Properties and Class Descriptions from.
Class Properties Dictionary Key value pair properties that will appear in the map editor. After building the FuncGodotMap in Godot, these properties will be added to a func_godot_properties Dictionary that gets applied to the generated node, as long as that node is a @tool script with an exported func_godot_properties Dictionary. See Entity Key Value Pairs for more information.
Class Property Descriptions Dictionary Map editor descriptions for the previously defined key value pair properties. Not required for added properties but recommended.
Meta Properties Dictionary Appearance properties for the map editor, eg: size, color, studio, model, etc...
See the Valve Developer FGD and TrenchBroom documentation for more information.
Node Generation
Node Class String Node to generate on map build. This can be a built-in Godot class or a GDExtension class.

For GDScript classes use the built-in Godot class they extend from (eg: MyCustom2 > MyCustom1 > Node3D would be "Node3D"). Use the Script Class property found in Solid Class and Point Class to apply your custom GDScript classes to generated nodes.

For Point Class entities that use Scene File instantiation leave this blank.

There is no restriction on what Node Classes can be generated.
Name Property String Optional. Specifies a class property belonging to this entity that will be used to name the generated node upon map build. The node is renamed to "entity" + name_property prior to being added to the SceneTree and applying func_godot_properties.
Overrides the Entity Name Property setting in FuncGodotMapSettings.

NOTE: Node names should be unique, otherwise you may run into unexpected behavior!


FuncGodotFGDBaseClass

Special inheritance class for Solid Class and Point Class entity definitions. Useful for adding shared or common properties and descriptions. Does not have any unique properties on its own but is defined separately to facilitate FGD building and lookup.



FuncGodotFGDSolidClass

FGD SolidClass entity definition, used to define brush entities. A MeshInstance3D will be generated by FuncGodotMap according to this definition's Visual Build settings. If FuncGodotFGDSolidClass Node Class inherits CollisionObject3D then one or more CollisionShape3D nodes will be generated according to Collision Build settings.


Property Type Description
Spawn Type SpawnType Determines how FuncGodot generates both the mesh and the collision in regards to vertice positioning and combining.
  • WORLDSPAWN : Builds the geometry of this entity without regard to its center position. Upon build completion all geometry will be offset by this entity's true position. Recommend only use with worldspawn entity.
  • MERGE WORLDSPAWN : This entity's geometry is merged with the worldspawn entity and this entity is removed. Behavior mimics func_group in modern Quake compilers.
  • ENTITY : This entity is built as its own object. It finds the center of the entity by averaging the positions of all vertices, using the global result of this as its position.
    NOTE: This is not always the center of the mesh's AABB.
Origin Type OriginType Determines how this Solid Class utilizes the "origin" key value pair to find its position. Only valid if Spawn Type is set to ENTITY.
  • IGNORE : Ignore origin property and only use averaged brush vertices for positioning. Standard Quake 1 / Half-Life behavior.
  • ABSOLUTE : Use origin property for position center, ignoring brush vertice positions.
  • RELATIVE : Use origin relative to averaged brush vertice positions. Use this setting if brush entity vertices have coordinates local to the origin.
Visual Build
Build Visuals Bool Controls whether a MeshInstance3D is built for this Solid Class.
Use In Baked Light Bool Sets generated MeshInstance3D to be available for UV2 unwrapping after FuncGodotMap build. Utilized in baked lightmapping.
Shadow Casting Setting ShadowCastingSetting Shadow casting setting allows for further lightmapping customization. See the Godot documentation for more information.
Build Occlusion Bool Automatically build OccluderInstance3D nodes for this entity. See the Godot documentation on Occlusion Culling for more information.
Render Layers Int, 3D Render Flags This Solid Class' MeshInstance3D will only be visible for Camera3Ds whose cull mask includes any of these render layers.
Collision Build
Collision Shape Type CollisionShapeType Controls how collisions are built for this Solid Class.
  • None : No collision shape is built. Useful for decorative geometry like vines, hanging wires, grass, etc...
  • Convex : Will build a Convex CollisionShape3D for each brush used to make this Solid Class. Required for non-StaticBody3D nodes like Area3D and RigidBody3D.
  • Concave : Will build a single Concave CollisionShape3D from the entire set of brushes. Skips brush faces textured with the FuncGodotMapSettings' Skip Texture.

Will build a single Concave CollisionShape3D from the entire set of brushes. Skips brush faces textured with the See the Godot documentation to make an informed decision on what collision type would work best for this entity for your game's needs.
Collision Layer Int, 3D Physics Flags The physics layers this Solid Class can be detected in.
Collision Mask Int, 3D Physics Flags The physics layers this Solid Class scans.
Collision Priority Float The priority used to solve colliding when penetration occurs. The higher the priority is, the lower the penetration into the SolidClass will be. This can for example be used to prevent the player from breaking through the boundaries of a level.
Collision Shape Margin Float The collision margin for the Solid Class' collision shapes. Not used in Godot Physics. See Shape3D documentation for details.
Scripting
Script Class Script An optional script file to attach to the node generated on map build.


FuncGodotFGDPointClass

FGD Point Class entity definition, used to define point entities. PointClass entities can use either the Node Class or the Scene File property to tell a FuncGodotMap what to generate on map build.


Property Type Description
Scene
Scene File PackedScene An optional scene file to instantiate on map build. Overrides Node Class and Script Class.
Scripting
Script Class Script An optional script file to attach to the node generated on map build.
Build
Apply Rotation On Map Build Bool Toggles whether entity will use angles, mangle, or angle to determine rotations on FuncGodotMap build, prioritizing the key value pairs in that order. Set to false if you would like to define how the generated node is rotated yourself.


FuncGodotFGDModelPointClass

A special type of FuncGodotFGDPointClass entity that can automatically generate a special simplified, scaled, and reoriented GLB model file for the map editor display. Not supported by editors without GLB / GLTF support.


Property Type Description
Target Map Editor TargetMapEditor Modifies whether the entity definition uses the studio or model keyword, and how it applies display model scaling. Options are GENERIC or TRENCHBROOM.
Models Sub Folder String Optional display model export sub folder relative to the game path and models folder set in FuncGodotLocalConfig.
Scale Expression String Scale expression applied to model. Only used by TrenchBroom. See the TrenchBroom Documentation for more information.
To set the scale for other editors, set the Default Inverse Scale setting in FuncGodotLocalConfig.
Generate Size Property Bool Model Point Class can override the size meta property by auto-generating a value from the meshes' AABB. Proper generation requires scale_expression set to a float or Vector3.
WARNING: Generated size property unlikely to align cleanly to grid!
Generate GD Ignore File Bool Creates a .gdignore file in the model export folder to prevent Godot importing the display models. Only needs to be generated once.