Releases: QodotPlugin/qodot-plugin
Qodot 1.7.3
Qodot 1.7.2
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
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
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
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 onQodotMap
- 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 thetarget
property to point another entity at it. If the targeted entity has a method calleduse
and the targeting entity has a signal calledtrigger
, these will be automatically connected by Qodot during map build - Advanced: Use the new
signal
andslot
point entity classes together withtarget
andtargetname
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.
- Simple: Use the
- Two ways to do this:
- 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
andlibmap
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
- Qodot will now download platform-appropriate binaries of
- 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
Fixes
- Fixed segfault under Arch Linux and Manjaro
Qodot 1.6.2
Fixes
- Fixed
libqodot
library path searching on OSX
Features
- New
Quick Build
action forQodotMap
- 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 inQodotMap
- 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)
andbuild_failed()
signals for QodotMap- Intended for editor scripting and procedural runtime workflows via
manual_build()
- Intended for editor scripting and procedural runtime workflows via
Qodot 1.6.1
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
- Was searching for
Qodot 1.6.0
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
- FGD files and their associated classes are codified as Resource types
-
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
- TrenchBroom game configs are codified as resource types
-
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
Fixes
- Reverted unstable optimization to brush plane intersection
- Brushes should no longer have missing faces
- Fixed links in README.md
- Thanks to SunkPer