Skip to content

Qodot 1.6.0

Compare
Choose a tag to compare
@Shfty Shfty released this 19 Feb 00:11
· 134 commits to master since this release

Note

Qodot 1.6.0 introduces major changes to the build system and plugin structure, as well as a dependency on native code. Make sure to reinstance your QodotMap node and rebuild any map files to ensure compatibility.

Features

  • Native rewrite of core map building logic in C

    • Faster language and improved system structure resulting in greatly reduced build times
    • Map loading and geometry generation is now handled by a C library called libmap
    • This functionality is bridged into Godot via a GDNative plugin called libqodot
    • Engine-specific functionality like texture loading and tree population lives in GDScript
  • Major build system restructure

    • Built on top of a data-driven FGD pipeline
    • Full control over brush and entity build behavior on a per-classname basis
    • Designed to better match Quake's geometry and entity structure
  • Full FGD Export

    • FGD files and their associated classes are codified as Resource types
      • These contain map editor meta properties, entity properties, and Qodot-specific metadata
    • Scene files can be defined for point entity classes, and instanced in the tree during build
    • Script files can be defined for both point and brush entities, and attached to their respective nodes during build
      • These extend the QodotEntity class, which provides a property dictionary and associated update callback
    • Various build-time properties are now specified on a per-classname basis:
      • Worldspawn merging
      • Visual geometry
      • Physics body type
      • Collision object type
    • Thanks to lordee, DistractedMOSFET and winadam for initial implementation
  • TrenchBroom Game Config Export

    • TrenchBroom game configs are codified as resource types
      • These contain TrenchBroom data such as game name, icon, game configuration and associated FGD files
  • Nested TrenchBroom groups can be used to create a tree hierarchy

    • The first entity in each group will be treated as the group's owner
    • Structural brushes can be used freely inside nested groups
    • Optional for compatibility with Quake's flat structure
  • Real-time build visualization using time-slicing and yield statements

  • Real-time build step updates via QodotMap's node name

    • Qodot 3.2 introduces the ability to rename nodes in the editor from tool scripts
    • Allows QodotMap to display the current build step as a suffix
  • Floating point support for color properties

    • Checks for the presence of a decimal point in the property string
    • Corner case: 1 1 1 in floating-point format will be interpreted as byte-format

Fixes

  • Fix map geometry not being interactible in the 3D viewport until a scene switch occurs

  • Fix WAD textures not being used during map build

  • Prevent duplicate vertices from being generated during collision build

    • A basic cube now only generates the 8 needed vertices, rather than 24 with duplicates
  • Typed GDScript pass

    • Strong typing resulting in clearer, more maintainable code
    • Thanks to fossegutten

Misc

  • Switched back to a single-threaded build structure

    • No longer needed now the business logic lives in C
    • Caused more problems than it solved, introduced a lot of bloat
    • Some linux users were experiencing crashes due to multi-threading
  • Removed custom build steps

    • No longer needed now entity types are data-driven
    • Not used by most users
    • Introduced a lot of structural dependency management
  • Removed atlased mesh functionality

    • Built on top of broken functionality
    • Missing a lot of features
    • Added extra complexity to the build process
    • May consider re-adding once proper texture array support is in place
  • Removed pre-built TrenchBroom game config from the qodot-extras repo

    • Default Qodot FGD now lives inside the plugin, and can be exported from the editor