New Features/Changes:
- Added base implementation (v0.1) of the new free movement system, enabled per map from Map Properties (most gameplay will not work yet, use at your own risk!)
- Added "Character Collides" trigger event for object scripts to the Entity Properties tab in the Map Editor (for both grid-based and free movement)
- Added "Pitch Control" camera setting to the Game Configuration dialog for allowing the player to control the pitch, with min/max settings
- Added "Focal Offset" camera setting to the Game Configuration dialog for vertically offsetting the camera's focal point in third-person views
- Added "Locked Axes" camera settings to the Game Configuration dialog for locking the X, Y, and/or Z-axis (e.g. lock the Y-axis for a sidescroller effect)
- Added "Top-Down Camera" as an option for the Map Editor's default camera (available from the Editor Settings dialog)
- Added "jump" as an option to the list of predefined animation names when defining a character animation in the Voxel Editor
- Added debug console command for adjusting the player's jump height in free movement maps (e.g. "jump X", where X is from 0 to 10)
- Added "Spotlight" as a light source option to the Voxel Editor, with initial settings for range (in voxels) and angle of the spotlight
- Added "Hostility" behavior setting for NPCs to determine how they behave when attackable (always hostile, hostile if attacked, or never hostile)
- Added ability to apply noise to existing voxels in the Voxel Editor (all or selection), with option to save presets and set the seed value
- Added ability to select all voxels of a specific color in the Voxel Editor via Alt + Left Click while the selection tool is active
- Added ability to use the "Capture Image to File" feature while in "Mesh Preview" mode in the Voxel Editor (useful with Marching Cubes, etc.)
- Added ability to set a custom position for a character's HP bar by defining an attach point named "hp_bar" in the first frame (or others to override)
- Added ability to retrieve the tool items currently held in a character's inventory (e.g. "player.tools", returned as an array of codices)
- Added ability to get and set a character's active tool (e.g. player.active_tool = "ITEM_0001", when retrieving the active tool the item codex will be returned)
- Added ability to retrieve and modify the current view model for the camera using "camera.view_model" (e.g. camera.view_model = "cam_mech")
- Added ability to retrieve the current camera type via script using "camera.type" (value will be either STANDARD, ISOMETRIC, or FIRST_PERSON)
- Added ability to retrieve the configured gameplay settings as a codex via the "global.gameplay" syntax (values are read-only for now)
- Added gameplay setting to the Game Configuration dialog to allow loading/continuing from the game menus when saving is disabled (e.g. for checkpoint systems)
- Added "Typing Effect" setting to the Game Configuration dialog for disabling the dialogue typing effect (i.e. any spoken text will instantly display)
- Added "Codex" as an option to the expression builder in the Script Editor, with a wizard for adding key/value pairs to the codex
- Added icons for each option in the expression builder in the Script Editor to provide more visual distinction between each expression type
- Added description box to the bottom area of the expression builder in the Script Editor for displaying helpful information about the selected type
- Added support for directional animations when the attack animation override setting is used for a weapon item (e.g. "sword_swing_east")
- Added "Stop Sound" scripting function for stopping a sound using its ID returned from the "Play Sound" function, with optional fade out (e.g. stop_sound(0, 2))
- Added "Stop Music" scripting function for stopping any music that's currently playing, with optional fade out (e.g. stop_music(2))
- Added "Clear Log" scripting function for clearing all text from the message log (i.e. any text displayed via the "Log Message" function)
- Added ability to retrieve and modify an object's XYZ offset via script (e.g. self.offset = array[1, 2, 5], self.offset_x = 3, etc.)
- Added ability to retrieve and modify an object's XYZ rotation via script (e.g. self.rotation = array[10, 0, 45], self.rotation_z = 25, etc.)
- Added ability to manually set the current value and maximum value of a progress bar via script using "value" and "max_value" syntax (e.g. $my_element.value = 10)
- Added ability to retrieve or change an object's display name via script using the built-in "name" property (e.g. entity["book01"].name = "New Name")
- Added four new effect presets to the Effect Editor: fountain, portal, rain, and snow (available when creating a new effect)
- Added "Preprocessing Time" setting to the Effect Editor, which processes the particles in advance by the specified number of seconds
- Added "Explosiveness" setting to the Effect Editor, which determines how many of the particles emit at once (at max, all emit simultaneously)
- Added "Fixed FPS" setting to the Effect Editor, which can be used to limit the framerate of the effect's particles
- Added "Randomness" setting to the Effect Editor for applying randomness to the scale of the generated particles
- Added "Local Space" setting to the Effect Editor, which when enabled will lock particle movement to the parent object's local space
- Added ability to press the ESC key to cancel out of the capture when capturing an image or character portrait in the Voxel Editor
- Added options to the "Import Resources" dialog for selecting all, selecting none, and changing the model type for all selected models
- Added several assets from Stumpy the Squirrel's "How to Make a Game" tutorial series to the built-in Asset Library
- Updated in-game widget system to significantly improve performance when using placeholder expressions in text labels and text fields
- Updated "Play Sound" scripting function to include support for looping the sound and setting a play interval (e.g. play_sound("sound.wav", true, 1))
- Updated "Play Sound" scripting function to return a unique sound ID for later referencing the sound (e.g. to stop via "Stop Sound")
- Updated "Play Music" scripting function to include two new optional parameters, fade in (in seconds) and loop mode (true = loop, false = play once)
- Updated "Missing Dependencies" dialog in the Map Editor to auto-select resources whenever there's a single match on the name (e.g. in a subfolder)
- Updated Voxel Editor to only generate meshes for frames that have applicable changes instead of every frame when saving a model
- Updated attach points dropdown in the Voxel Editor so it will attempt to keep the same one selected when switching between animation frames
- Updated Effect Editor to properly support transparent colors for effects using cubes, spheres, or billboards without an image assigned
- Updated limit for the camera zoom's minimum value in the Game Configuration dialog to 10 instead of the previous limit of 30
- Updated "Offset" camera setting in the Game Configuration dialog so it's available for the perspective camera type even when rotation is disabled
- Updated Map Editor to support copying and pasting of entity properties between two different maps instead of only within the same map
- Updated light attenuation setting in the Voxel Editor to have a minimum value of 0.01 to prevent potential lighting issues in maps
- Updated game cursor to automatically refresh whenever the "Set Entity Script" function is called (in case the cursor is hovering over that entity)
- Updated Game Explorer to allow the creation of a new effect from the context menu when right-clicking the "Effects" folder
- Updated Script Editor to display a confirmation dialog when attempting to close the script when there are pending changes to the Bauxite source code
- Updated About dialog to include credit for the default game UI font (PixelMplus) on the "Resources" tab with a link to the creator's website
- Updated expression builder in the Script Editor to automatically select the corresponding expression type and values when an expression is manually entered
- Changed name of the variable expression builder in the Script Editor to "Expression Builder" to better represent what the dialog is used for
- Changed name of the "Variable" option in the variable expression builder to "Local Variable" to help clarify its scope and usage
- Removed "None" from the "Navigation Type" dropdown of the "Replace Navigation" visual scripting node since it's not applicable for that parameter
Bug Fixes:
- Fixed issue where "party.member["player"]" syntax would return null instead of the main player character after saving and loading a game
- Fixed issue where the player's quests would be missing after saving and loading a game (i.e. "player.quests" would return an empty array)
- Fixed issue where the player was no longer able to right-click consumable items to use them after saving and loading a game
- Fixed issue where objects and characters added and then removed prior to saving a game would still be present after loading (at center of map)
- Fixed issue where "nonexistent signal: storage_slot_item_changed" error message would sometimes display when loading a saved game
- Fixed issue with positioning of objects in the Map Editor when rotating one with an offset assigned or using Alt + Click to pick it in place mode
- Fixed issue where null was being returned instead of the skill ID when attempting to access a skill slot via script
- Fixed issue where mouse interaction on an entity would stop working after using the "frame" property to change its current frame
- Fixed issue where using the group scripting syntax on the left side of a contains expression would not evaluate as true even if the entity was in the group
- Fixed issue where the "substr" scripting function would not work properly if the third length parameter was omitted
- Fixed issue where custom functions were not yielding when called unless storing a return value into a variable via assignment
- Fixed issue where appending a value to an array using a binary "+" operation would incorrectly result in the original array's data being modified
- Fixed issue where global properties were being reset to null after a game was restarted (e.g. via player defeat or the "Restart Game" function)
- Fixed issue where calling the "Give Item" function from a widget button's script would fail if item icon popups were enabled
- Fixed issue where a character's level, MP, Max MP, and custom stats were not being carried over when using "Set Entity Model" to change their appearance
- Fixed issue where the "Character is Damaged" global event script wasn't being triggered when the player dealt melee damage to an enemy in real-time
- Fixed issue where "initiator" always referred to the player character instead of the attacking character when an enemy used a ranged weapon in real-time
- Fixed issue where calling "Give Item" or "Remove Item" function with the character specified and storing the return value was not being accepted as valid
- Fixed issue where attempting to call "Reset Entity Rotation" without having first called "Rotate Entity Towards" wasn't being properly caught and logged
- Fixed issue where the "Put Player" scripting function was not triggering a visibility update for any groups auto-hidden via the "-hide" suffix
- Fixed issue where the "Configure Attached Objects/Effects" dialog was not remembering any attached objects residing in subfolders when returning to the dialog
- Fixed issue where any effects that resided in subfolders were not being listed properly in dropdown boxes (e.g. "Attach Effect" visual script node, etc.)
- Fixed issue where the "Permanent" setting for Fog of War would not display until the Game Configuration dialog was closed and opened again
- Fixed issue where changing the Y and Z scale values for attach points in the Voxel Editor would sometimes fail to update the attached object's scale
- Fixed issue where the Y and Z scale values for attach points would be switched when using the "Copy Settings" and "Paste Settings" buttons
- Fixed issue where an undo action would trigger in the Voxel Editor when attempting to press the "Accept" button during an image/portrait capture
- Fixed issue where the "F4" and "4" Voxel Editor shortcut keys were not switching to the fill tool while in texturing mode
- Fixed issue on the Model Properties panel where enabling the "Light Source" setting would not properly scroll the light settings panel fully into view
- Fixed issue where the Effect Editor was sometimes being incorrectly marked as having changes when first opening an effect
- Fixed issue where a text label's alignment in the Widget Editor would reset to "Left" after changing the font size of the text
- Fixed issue where widget buttons could be inadvertently activated via space bar after being pressed once (as a result of capturing keyboard focus)
- Fixed issue where widgets would potentially not have updated values immediately after loading a map (e.g. a character's coordinate)
- Fixed issue where enemy spawn timers would be started again every time the player returned to a map with spawns (resulting in the enemy limit being exceeded)
- Fixed issue where a map could fail to load if an enemy spawn assigned to a group in that map had been removed from the Combat Editor
- Fixed issue with the shake effect applied to characters not bumping the damaged character in the correct direction when hit
- Fixed issue where setting an attack animation override for a weapon in the Item Editor would cause tactical turn-based battles to become stuck
- Fixed issue where the built-in player HP bar would stop working properly when using the "Player Override" map setting to change the character model
- Fixed issue where the player character model was not reverting back to the default player character when travelling to a map with no override assigned
- Fixed issue where dragging a nested player node onto its parent player choice node could result in a dialogue with broken connections
- Fixed several issues in the Dialogue Editor related to modifying and saving values for the "Go To" node while in compact mode
- Fixed issue where dialogues added as favorites were not being displayed on the "Favorites" tab (only highlighted in the Game Explorer)
- Fixed issue where the "Projectile Object Model" field in the Item Editor wouldn't initially display after switching a weapon's type to "Ranged"
- Fixed issue with the attack animation of the "goblin" character from the built-in Asset Library not being configured properly
- Fixed issue with the "sk_bush_02" object model failing to open in the Voxel Editor after being imported from the Asset Library
- Fixed issue where the incorrect editor would sometimes be displayed when clicking on the main editor tabs along the top of the application
- Fixed incorrect date for the v1.0.6.5 release in the "What's New in RPG in a Box!" dialog (year shown was 2022 instead of 2023)
Documentation:
- Added initial version of "2D Games" tutorial that walks through setting up a 2D project similar to the Kenney Tiny Dungeon template
- Added initial version of built-in docs for "Free Movement" with details about current functionality, issues, and planned features
- Updated "Vehicles" built-in docs to remove the known issue listed at the bottom now that the issue has been fixed
- Updated "Tile" built-in docs to include properties that return connected tiles (e.g. $my_tile.north_tile is tile to the north)
- Updated "Character" built-in docs to include info about the "skills" and "quests" properties for getting a character's skills and quests
- Updated "Map Properties" built-in docs to include info about the "Player Override" setting only changing the visual appearance
- Updated "Entity Properties" built-in docs to include info about $object variable that's available to the pushing-related tile scripts
- Updated "Data Files" built-in docs to include .json file extensions in Bauxite examples since an extension is now required
- Updated "Scripting Reference" built-in docs to include info about referencing main player character via "party.member["player"]"
- Updated "Scripting Reference" built-in docs to include "Stop Music" function and updated signatures for "Play Music" and "Play Sound"
- Updated "Scripting Reference" built-in docs to include info about retrieving gameplay settings as a codex via "global.gameplay"
- Updated "Script Syntax" built-in docs to include info about the "Duplicate" function along with some Bauxite code examples
- Updated "Stop Player" built-in docs to include a more clear description of how the function affects the player's movement
- Updated "Groups" built-in docs to include a note that auto-hiding does not trigger if the Fog of War setting is enabled
- Updated "Import Resources" and "Sound" built-in docs to include info about video file support (WEBM and OGV) and OGG support for sound effects
- Updated "Widget Editor" built-in docs to indicate that custom widgets are now added to the management screen from the UI Editor's "Screens" tab