Godot Plugin: FuncGodot

Initial Setup

  • Initial setup .

    • I used this methodology to set the explanations below, since I considered the order used by that author better than the order adopted by the official documentation.

Generic 'FuncGodotLocalConfig.tres'
  • Documentation .

  • The generic one can be used inside the Addons , since it is only used to create a config file in the path: C:\Users\caior\AppData\Roaming\Godot\app_userdata\Expediรงรฃo na Neve .

  • ~I believe this file is only to indicate the path of TrenchBroom on the system.

New and unique 'TrenchBroomGameConfig.tres'
  • Documentation .

  • It is used to create a new 'Game' in TrenchBroom's games folder.

  • A new one should be created for the project; I like to name it 'trenchbroom_gameconfig.tres'.

  • The Game Name  is the name of the 'Game' in TrenchBroom's games folder.

  • The Fgd File  will be the created 'master_fgdfile.tres'.

TrenchBroom Preferences
  • Documentation .

  • The pathing  in preferences is the same path used by Map Editor Game Path  in FuncGodotLocalConfig.tres .

New and unique 'func_godot_fgd.tres'
  • Documentation .

  • It is used to store entity information (aka, all objects, enemies, terrain, etc).

  • You should create a new func_godot_fgd.tres , which will be the map's "master_fgdfile"; I like to name it 'master_fgdfile.tres'.

  • In this 'master_fgdfile', the following will be added:

    • Base Fgd Files :

      • Will be the generic func_godot_fgd.tres  from the Addons folder.

    • Entity Definitions :

      • Will be the new Entities created manually in the future.

  • ~From what I understand, it's just a generic "fgd that loads other fgds", being considered the "master_fgd".

Creating entities

FuncGodotFGDPointClass.tres
  • Script Class :

    • Create a script that inherits from the node type defined in Node Class .

    • The script must be of type @tool  to be able to read the functions:

      • func _func_godot_apply_properties(entity_properties: Dictionary) -> void:

      • func _func_godot_build_complete(entity_properties: Dictionary) -> void:

    • *Note:

      • To access information from the entity_properties : Dictionary , you can use entity_properties["property_name"] .

Compiling the map in Godot

Node 'FuncGodotMap'
  • Create any node and add a FuncGodotMap  as a child of that node.

    • Considering that every time you rebuild, all children of that node are deleted, you should therefore avoid making that node the root of the Scene to prevent unintentional deletions.

  • Local Map File :

    • .

  • Global Map File :

    • Overrides the Local Map File .

  • Map Settings :

    • Stores a FuncGodotMapSettings.tres .

    • "it's possible to get clever and use different Map Settings resources on the same map file and get completely different results like referencing completely different textures or completely different entities utilizing common relative texture paths or class names."

    • I preferred to create my own FuncGodotMapSettings.tres , to store my information without risk of deletion.

New and unique 'FuncGodotMapSettings.tres'
  • Documentation .

  • Inverse Scale Factor

    • "How many pixels does a meter equal out to".

    • The default is 32.

    • *My choice:

      • I chose to set it to 16, since I want to use a Texel Density of 16px per meter.

  • Skip :

    • Path to the Skip texture.

  • Clip :

    • Path to the Clip texture.

  • Uv Unwrap Texel Size

    • Apparently only for UV2.

    • *On testing:

      • Changing the value does absolutely nothing to the texture applied to an object.

  • Use TrenchBroom Groups Hierarchy

    • "If true, will organize Scene Tree using Trenchbroom Layers and Groups. Layers and Groups will be generated as Node3Ds . All structural brushes will be moved out of the Layers and Groups and merged into the Worldspawn entity. Additionally, any Layers toggled to be omitted from export in TrenchBroom will be freed on map build before the Layers' children can apply func_godot_properties  or call _func_godot_apply_properties()  and _func_godot_build_complete() ."

Built-in Entities

Clip
  • *From tests:

    • It's just a Collision Shape, no visual.

  • *From Quake videos:

    • It's just a Collision Shape, no visual.

Skip
  • *From tests:

    • It's just a Collision Shape, no visual.

  • *From Quake videos:

    • ~I don't remember.

func_ilusionary
  • ~Visual without collision.

  • ~Completely removes the face. No collision or visual.