Skip to content

Releases: QodotPlugin/qodot-plugin

Qodot 1.7.3

13 Nov 17:05
Compare
Choose a tag to compare

Qodot 1.7.3 is a maintenance release that fixes signal errors in the example maps, caused by a breaking change to the signatures of the body_shape_entered and body_shape_exited functions in the Area API under Godot 3.4.

Qodot 1.7.2

07 Oct 19:01
Compare
Choose a tag to compare

Qodot 1.7.2 is a maintanance release, and fixes the following issues:

  • Failure to build at runtime due to GEN_EDIT_STATE_INSTANCE usage in QodotMap
  • Failure to load textures during runtime build unless their files exist inside the game directory

Qodot 1.7.1

26 Sep 16:24
Compare
Choose a tag to compare

Qodot 1.7.1 is a minor patch release to account for repo migration to the QodotPlugin organization, and fixes the version number being reported incorrectly in the editor.

Qodot 1.7.0

04 May 01:29
Compare
Choose a tag to compare

Qodot 1.7.0 introduces changes to its native library dependencies. Make sure to delete your existing addon folder before upgrading.

Features

  • Folded qodot-example repo into the main plugin
  • New example scenes with inline README nodes for the following functionality:
    • Geometry
    • Textures
    • Materials
    • Automatic PBR Textures
    • Special Textures
    • Baked GI
    • Baked Lightmaps
    • Worldspawn Layers
    • Basic Signal Wiring
    • Advanced Signal Wiring
    • TrenchBroom Group Hierarchy
    • Runtime Map Building

Fixes

  • Proper game name export for TrenchBroom game configuration file
  • Removed GDNativeLibrary and NativeScript resources in favor of generating them at runtime
    • Fixes missing library error on first install
    • Fixes missing library errors when exporting a project for a platform without the requisite libraries
    • Native libraries are now reloaded on every build if the QodotMap script is set to debug mode
  • Fix visual and collision issues when using more than one type of worldspawn layer

Qodot 1.6.4

18 Mar 00:59
Compare
Choose a tag to compare

Qodot 1.6.4 introduces changes to the build system. Make sure to reinstance your QodotMap nodes and rebuild any map files to ensure compatibility.

Features

  • Worldspawn Layers
    • Texture-driven programmable volumes that serve a similar purpose to water, slime and lava in Quake
    • Any brush with a texture marked as a worldspawn layer will be stripped from the worldspawn and added to its own meta-entity
    • Layers can be specified by adding entries to the new Worldspawn Layers array property on QodotMap
  • Signals and slots can now be connected via map editor
    • Two ways to do this:
      • Simple: Use the targetname property to assign an id to an entity in the map editor, then use the target property to point another entity at it. If the targeted entity has a method called use and the targeting entity has a signal called trigger, these will be automatically connected by Qodot during map build
      • Advanced: Use the new signal and slot point entity classes together with target and targetname to connect specific signals between other custom entity types. These will be automatically fixed up during map build if the specified signal and method slot exist in the target objects.
  • New _phong_angle property to control edge splitting for smooth-shaded vertex normals generated by the _phong property
    • Edges will be split in order to flat-shade a given face if the angle between its normal and the normals of all adjacent faces exceeds the provided value, measured in degrees
    • Thanks to @grenappels
  • Added editor plugin-based build UI for QodotMap
    • Builds are now triggered from the menu bar at the top of the 3D viewport, and are accompanied by a progress bar
  • Proper category UI for QodotMap
  • Automatic dependency downloading
    • Qodot will now download platform-appropriate binaries of libqodot and libmap directly from GitHub when enabled in project settings
    • This means users will no longer need to download new Qodot versions directly from the GitHub releases page in order to obtain a working copy complete with dependencies
  • Optimized scene tree structure
    • Brush entity FGD classes can now specify the node class used to represent them in the scene tree
    • Significantly reduces overall node count by avoiding wrapper spatials where possible
  • Entity properties are now automatically converted into their equivalent Godot type during map build
    • Types are inferred based on the type of the default property value specified in the active FGD definition
  • FGD files can now specify a set of 'Base FGD' files to inherit from
    • The contents of these Base FGDs will be prepended to the FGD file on export

Fixes

  • Fixed TrenchBroom group hierarchy building
  • FGD script classes are no longer skipped if an instanced scene is specified
  • func_group entities are stripped from the tree if using nested TrenchBroom groups

Qodot 1.6.3

26 Feb 22:02
Compare
Choose a tag to compare

Fixes

  • Fixed segfault under Arch Linux and Manjaro

Qodot 1.6.2

24 Feb 02:15
Compare
Choose a tag to compare

Fixes

  • Fixed libqodot library path searching on OSX

Features

  • New Quick Build action for QodotMap
    • Builds the map and attaches nodes, but doesn't add to the editor tree
    • Avoids invoking costly editor functions, but generated nodes can't be interacted with
  • New manual_build() function in QodotMap
    • Builds the map, but doesn't attach the resulting nodes to the QodotMap or add them to the editor tree
    • Use TrenchBroom Group Hierarchy has no effect, as tree attachment is skipped
    • Intended for runtime usage
  • New build_complete(entity_nodes) and build_failed() signals for QodotMap
    • Intended for editor scripting and procedural runtime workflows via manual_build()

Qodot 1.6.1

19 Feb 23:15
Compare
Choose a tag to compare

Fixes

  • Fixed libqodot library path searching on Linux
    • Was searching for libmap.so in the system library directories rather than the plugin binary dir
    • Should also fix the issue for Mac OSX users, but still needs testing

Qodot 1.6.0

19 Feb 00:11
Compare
Choose a tag to compare

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

Qodot 1.5.6

06 Feb 20:53
Compare
Choose a tag to compare

Fixes

  • Reverted unstable optimization to brush plane intersection
    • Brushes should no longer have missing faces
  • Fixed links in README.md