Become a SupporterRoadmapChangelogDocumentationDevBlogVideo SeriesSupporters Area

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 are kShadeCrater = 1 and kFracture = 2. Fracturing splits the voxel shapes into regions and does not remove any voxels. Defaults to kShadeCrater for the other variants of this function
    • World.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]), returning value [Variant] and Variant.get_string(variant [Variant]), returning value [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]), returning value [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]), returning node [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]) and Physics.get_gravity(), returning gravity [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]), returning hit [bool] and entity [Ref]

Changed

  • (Scripting) Physics.raycast now returns hit [bool], distance [number], position [Vec3], and entity [Ref]
  • (Scripting) Physics.sweep_sphere now returns hit [bool], distance [number], position [Vec3], normal [Vec3], and entity [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 be bool, uint, or float

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 and coroutine 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]), and voxelize() functions to VoxelShape 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]), and trunc(x [number]) functions via the Math 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

  Join us on Discord


Discord

Join our brand-new public Discord community and become one of the first 50 members!

By joining our community, you'll have the opportunity to give early feedback, connect with other developers, and be the first to know about new features and enhancements.

Get IOLITE

Become a Supporter
Supporters Area

Get in Touch

Public Relations

Press Kit

News and Blog

Development Blog
© 2023 Missing Deadlines. All rights reserved.