Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- (Editor) Option to visualize the voxel grid for the selected entity
- (Core) Text component, which can be used to render text at certain positions in the world
[0.1.19] - 2023.05.29
Added
- (Voxel Shapes) Support for sector-based convex decomposition, which can be used to create compounds of convex hulls as collision geometry for shapes and chunks. See the new Max Num Convex Subdivisions property. Defaults to 1 (one single convex hull if convex hulls are enabled via the flags)
- (Scripting)
Random.set_seed(seed [number])
which can be used to initialize the seed of the underlying RNG - (Editor) Tooltip indicating how to return to the editor from game mode
Changed
- (Editor) Sort resources in the resource inspectors alphabetically
- (Editor) Open the first property category header by default
- (Editor) Display properties in the same order as in the property metadata JSON file
Fixed
- (Editor) Jiterring editor UI elements
- (Editor) Label text in flag editors now wraps instead of being cut off
- (Editor) Order property categories deterministically
[0.1.18] - 2023.05.27
Added
- (Voxel Shapes) Support for Voronoi-based fracturing. Set the new Fracture Type property to the desired detail level to enable it for shapes. Fracturing can then be applied using the extended
radius_damage
scripting interface - (Voxel Shapes) New flags to use convex shapes as collision geometry for voxel shapes and/or fractured chunks; disabled by default. See Use Convex Hull and Convex Hull for Chunks
- (Editor) It's now possible to modify and save palettes in the palette inspector, including the new hardness parameter for palette entries
- (Core) New Kill Plane component, which automatically despawns dynamic voxel shapes below it
- (Editor) New editor-specific settings dialog (see
[File] => [Settings]
) - (Editor) Editor settings for configuring camera parameters, including the option to disable the "smoothed" camera handling
- (Sound) Stereo-panning effect to spatial sound effects; the distance at which the effect becomes active can be controlled via the new
spatialSize
parameter in the corresponding*.effect.json
. Defaults to 5 meters
Changed
- (Scripting) The radius damage interface has changed. There are now three variations available:
World.radius_damage(position [Vec3], radius [float])
World.radius_damage(position [Vec3], radius [float], flags [number])
, the currently available flags arekShadeCrater = 1
andkFracture = 2
. Fracturing splits the voxel shapes into regions and does not remove any voxels. Defaults tokShadeCrater
for the other variants of this functionWorld.radius_damage(position [Vec3], radius [float], flags [number], max_hardness [number])
. The maximum hardness parameter defines the upper bounds of which voxels with a particular hardness value are affected. Defaults to zero for the other variations of this function
- (Editor) Save as prefab dialog is now pre-filled with the name of the currently selected entity; instead of being empty
Fixed
- (Scripting) It's now possible to use scripts named
minimal.lua
[0.1.17] - 2023.05.23
Added
- (Sound) Support for spatial sound effects; set to
"spatial": true
in the corresponding*.effect.json
file - (Scripting)
Sound.set_position(handle, position [Vec3])
for spatial audio effects - (Editor) Option to save single resources in resource inspectors via the context menu
- (Editor) Status message when saving resources in resource inspectors
- (Core) Variants now support storing strings; see
Variant.from_string(value [string])
, returningvalue [Variant]
andVariant.get_string(variant [Variant])
, returningvalue [string]
- (Editor) Palette Inspector to inspect the cached color/material palettes
- (Voxel Shapes) Palette color variations now seek similar colors in the palette if running out of free slots
Changed
- (Voxel Shapes) More clever internal caching for palettes
- (Core) Log files are now appended to and only get reset after reaching a threshold of 16 MiB
[0.1.16] - 2023.05.21
Added
- (Core) New Custom Data component supporting the storage of any amount of user-defined properties. E.g., usable for keeping track of the player's hit points or state information of NPCs. Properties can be modified/added/removed via the editor or the scripting interface
- (Scripting) New
CustomData
interface to interact with the new component:
CustomData.get(custom_data [Ref], index [number])
, returningvalue [Variant]
CustomData.set(custom_data [Ref], index [number], value [Variant])
CustomData.add(custom_data [Ref], value [Variant])
CustomData.remove(custom_data [Ref], index [number])
- (Scripting) New
SaveData
interface, supporting the loading and saving of node hierarchies (single nodes, small hierarchies, or whole worlds) to the user data directory. Can be used to, e.g., create savegames, specifically in conjunction with the new Custom Data component:
SaveData.save_to_user_data(filename [string], node [Ref])
SaveData.load_from_user_data(filename [string])
, returningnode [Ref]
- (Samples) The Flappy Bird sample now keeps track of the high score using the Custom Data component and the new
SaveData
scripting interface - (Post Effects) Support for procedural rain puddles
Changed
- (Renderer) Improved latency of occlusion culling
[0.1.15] - 2023.05.20
Added
- (Scripting)
Utils.load(script_name [string])
which always executes the script and returns its result
Changed
- (Scripting)
Utils.require(script_name [string])
now executes once for each script and caches the return value
[0.1.14] - 2023.05.20
Fixed
- (Scripting) Potential crash when globally returning values from Lua scripts
[0.1.13] - 2023.05.19
Added
- (Editor) Notification-like display of status messages (voxelization status, screenshots, etc.)
- (Core) New
Sound
component for placing sound effects in the world - (Post Effects) Option to configure the strength of the "dirt mask". Disabled by default now
- (Scripting)
Physics.set_gravity(gravity [Vec3])
andPhysics.get_gravity()
, returninggravity [Vec3]
Changed
- (Editor) Moved prefab/voxel shape randomization parameters to a separate window (available via the dice icon in the prefab window)
- (Post Effects) Disabled chromatic aberration by default
Fixed
- (Editor) Website links now work correctly on Windows
[0.1.12] - 2023.05.17
Added
- (Character Controller) Support for different controller types, including box-shaped controllers
- (Character Controller) Property to control the slope limit. Works with box controllers
- (Scripting)
Physics.overlap_sphere(position [Vec3], radius [number])
, returninghit [bool]
andentity [Ref]
Changed
- (Scripting)
Physics.raycast
now returnshit [bool]
,distance [number]
,position [Vec3]
, andentity [Ref]
- (Scripting)
Physics.sweep_sphere
now returnshit [bool]
,distance [number]
,position [Vec3]
,normal [Vec3]
, andentity [Ref]
- (Scripting) Overhauled
Settings
interface. The following functions are available now:
get_[type](setting_name [String])
,set_[type](setting_name [String], value [number, boolean])
where[type]
can either bebool
,uint
, orfloat
Fixed
- (Voxel Shapes) Support structures were no longer triggered in combination with radius damage
- (Character Controller) Character controllers behave less error-prone on detailed voxel shapes now
- (Scripting)
VoxelShape.get
function works correctly now - (Scripting) Lua scripts are more fail-safe now (especially on Linux)
[0.1.11] - 2023.05.15
Added
- (Samples) The Spectrum sample now showcases the dynamic modification of voxel shapes
- (Scripting) Support for executing Lua code asynchronously using the new
TickAsync
callback. Great for, e.g., generating terrain chunks using coroutines without affecting the main thread. Use with caution! - (Scripting)
VoxelShape.get(shape [Ref], position [UVec3])
Fixed
- (Core) Detection of enclosed chunks in the height map terrain generator was not conservative enough
- (Core) Potential crash when setting the position of newly created kinematic voxel shapes
- (Core) Logging is now completely thread-safe
- (Editor) Random entries in one of the combo boxes in the sound system debug view
[0.1.10] - 2023.05.13
Added
- (Samples) The new Spectrum sample is available
https://github.com/MissingDeadlines/iolite/tree/main/samples - (Core) Optimized radius damage. Performs a lot better now with many shapes and more enormous radii
- (Core) Overhauled property system and moved all editing-related metadata to the new
property_metadata.json
file. This file can be used to tweak property editor parameters as well as icons for property categories and types - (Core) Global key bindings are now sourced from the new
keybindings_global.json
file - (Core) Packaged data sources are now streamed from disk instead of memory
- (Scripting) Enabled Lua
base
andcoroutine
libs - (Scripting) Functions for modifying voxels, see
set(shape [Ref], position [UVec3])
,set_unsafe(shape [Ref], position [UVec3])
,fill(shape [Ref], min [UVec3], max [UVec3])
,get_dim(shape [Ref])
, andvoxelize()
functions toVoxelShape
component interface - (Scripting)
Input.is_key_clicked(key [number])
helper function - (Scripting) Exposed sound spectrum via
Sound.get_spectrum()
. This function returns a Lua table with 50 frequency bins representing the current state of the master bus. Amplitude and bin spacing are logarithmic - (Editor) Hovering property labels now shows a descriptive tooltip
- (Editor) Overhauled the help menu and added an overview for the global key bindings
- (Editor) Node placement and snapping now fall back to the xz-plane
- (Editor) Setting
editor_ui_scale
, which can be used to scale the UI of the editor when using displays with higher display resolutions - (General) Package generator Python script to the public GitHub repository
- (General) Emissive sphere array prefab to base data source
Changed
- (Particles) Nicer default parameters for effects
- (Post Effects) Color grading now uses an ASC-CDL-based transform
Fixed
- (Scripting) Terrain generation-related functions return a valid node ref now
- (Character Controller) Assert/crash when properties set via the editor are not sane
- (Particles) It's no longer possible to mix particle collision and local space simulations
- (Renderer) GI flickering when using orthographic cameras
- (Renderer) Various Vulkan validation fixes
- (Editor) It's no longer possible to clone the root node of the world
- (Core) UUIDs are now correctly handled for cloned entities/resources
[0.1.9] - 2023.05.05
Added
- (Samples) New Flappy Bird, Minecraft Map, and Heightmap samples are available
https://github.com/MissingDeadlines/iolite/tree/main/samples - (Editor) Resources and entities (with components) created in the editor now get a more meaningful default name ("my_resource" => "post_effect, "my_entity" => "light", etc.)
- (Scripting) Exposed
floor(x [number])
,ceil(x [number])
,round(x [number])
,fract(x [number])
, andtrunc(x [number])
functions via theMath
interface - (Scripting) Setting/getting of the linear and angular velocities of voxel shapes
- (Sound) Sound effects are now sourced from separate JSON files instead of a single JSON file containing all effects
- (Voxel Shapes) Density property, kinematic flag, and angular/linear axis lock flags
Fixed
- Crash when importing scenes from VOX files
[0.1.8] - 2023.05.03
Added
- (Samples) New pathfinding sample
https://github.com/MissingDeadlines/iolite/tree/main/samples - (Pathfinding) General progress and improvements
- (Scripting) General API progress
- (Scripting) Option to import other scripts as modules via
Utils.require(script_name [string])
- (Scripting) Option to execute strings as scripts via
Utils.execute(lua_code [string])
[0.1.7] - 2023.04.27
Added
- Forces can now also be applied to voxel shapes, which have just been spawned
- General Lua API progress
Fixed
- Rare crash when initializing joints
[0.1.6] - 2023.04.27
Added
- Samples are now available in our GitHub repository:
https://github.com/MissingDeadlines/iolite - Various improvements to the diffuse part of the global illumination
- The physics simulation is now ticked with a fixed timestep, and the visual representations of voxel shapes, etc., are interpolated
Fixed
- Default values of linear and angular damping were too high
- (Linux) Water was not rendered correctly
- Various bugs related to physics (and especially joints)
[0.1.5] - 2023.04.25
Added
- Support for Linux (Validated on Ubuntu 22.04.2 LTS and the latest SteamOS on Steam Deck)
- Missing directories are now automatically created when saving files in the editor
Fixed
- Crash when importing from VOX files with less than 256 entries in the color/material palette
- The debug rendering overlay can now be correctly disabled again
[0.1.4] - 2023.04.21
Added
- Exposed more UI, sound, and physics-related functions to scripts
- Support for Ogg Vorbis files to the sound system
- Various new IES profiles
- Exposed linear and angular damping parameters for voxel shapes
- Multiple improvements to the stability of the physics simulation
Removed
- Destruction sample scene (samples will be provided separately via the website at a later date)
Fixed
- A rare random crash during startup
- WAVE files are treated more carefully in the sound system now, and metadata at the end of the files is no longer interpreted as sound/samples
[0.1.3] - 2023.04.14
Added
- Support for spherical, revolute, fixed, and distance joints
- Limit support for all joint types (besides fixed joints)
- Improves joint visualization so it's easier to work with joints hidden inside voxel shapes
- Optimizes how flag properties are handled internally
Fixed
- Some overlays in the editor were rendered with one frame delay
- Cached linear and angular velocities are applied correctly again if a shape is modified
[0.1.2] - 2023.04.13
Added
- Basic prototype for joints
- Voxelization pass optimization/simplification
- Physics actors use the raw voxel shape bounds again (instead of the first LOD)
- After becoming active, the main game state now postpones processing tasks till the initial voxelization of the scene has finished
Changed
- Tweaks "crater shading" palette colors
Fixed
- Fixes a crash occurring when computing connected regions while resizing the memory area backing voxel shapes
- Voxelization for connected region chunks is now prioritized to avoid "plopping" (the base chunk could disappear before the sub-chunks got spawned)
- Fixes a rare issue where voxel shapes apply their previous linear and angular velocities after spawning
- Relaxed voxel shapes when penetrating each other
[0.1.1] - 2023.04.11
Added
- Resources now store their initial data source
- Only resources assigned to the currently active data source get saved
- FPS sample progress
[0.1.0] - 2023.04.11
Added
- The first pre-release-version of IOLITE
© 2023 Missing Deadlines. All rights reserved.