Added "Positional Sound" setting to the Voxel Editor for specifying that an animation's sound effect should be played positionally in 3D space
Added "Apply Status Effect" scripting function for applying a status effect to a character for a duration of time (e.g. apply_status_effect("STATUS_0001", player, 5))
Added "Remove Status Effect" scripting function for removing a status effect from a character (e.g. remove_status_effect("STATUS_0001", player))
Added "Clear Status Effects" scripting function for clearing all status effects from a character (e.g. clear_status_effects(player))
Fixed issue with particle effects configured to be automatically attached to models not displaying for entities that were already placed into a map (model resave needed)
Fixed issue with the Bauxite code missing commas between parameters for the "Display Image" function when placed into a visual script
Fixed issue with the color picker button not properly setting the alpha value when manually coding the "Display Image" function into a script
Fixed issue with not being able to assign a widget to the "Toggle Widget" action when setting up a key binding in the Game Configuration dialog
Fixed issue where the lock icon was showing for all widgets instead of only the built-in widgets when choosing one to assign to a key binding
Release Notes for v1.0.6
New Features/Changes:
Added initial implementation of the Effect Editor for creating particle effects (e.g. flames, fountains, weather, environmental effects, visual status indicators, etc.)
Added "Attach Effect" scripting function for attaching a particle effect to an entity's attach point (e.g. attach_effect("flame", entity["xyz"], "attach_id"))
Added "Detach Effect" scripting function for detaching a particle effect from an entity (e.g. detach_effect(entity["xyz"], "attach_id"))
Added "Add Effect" scripting function for adding a particle effect at a coordinate, with optional entity ID (e.g. add_effect("rain", coord[0, 0, 100], "rain_id"))
Added "Disable Effect" scripting function for disabling the emission of particles for an effect (e.g. disable_effect(entity["rain"]))
Added "Enable Effect" scripting function for enabling the emission of particles for an effect (e.g. enable_effect(entity["rain"]))
Added "Add Item To Tile" visual script node to the Script Editor for placing an item drop onto a tile that the player can pick up
Added "Delete Data" visual script node to the Script Editor for deleting a custom data file that was previously saved to disk via the "Save Data" function
Added "Delete Save" visual script node to the Script Editor for deleting a saved game ("savegame01" if no filename is specified)
Added "Give Loot" visual script node to the Script Editor for generating items for a loot drop then giving them to a specified character
Added "Give Skill" visual script node to the Script Editor for giving a skill to a character (defaults to the main player character)
Added "Remove Skill" visual script node to the Script Editor for removing a skill from a character (defaults to the main player character)
Added "Use Skill" visual script node to the Script Editor for triggering the usage of a skill for a character (defaults to the main player character)
Added "Cooldown (Roguelike)" to the Stats Editor for configuring the cooldown of a skill when used in roguelike mode (measured in actions)
Added two new status effect types to the Stats Editor, "Healing Over Time" and "Damage Over Time" for applying healing/damage at intervals
Added ability to specify both real-time and roguelike interval for status effects in the Stats Editor (measured on seconds and actions, respectively)
Added support for global functions that can be called from any script (configured from the "Global Functions" tab in the Game Configuration dialog)
Added "Footstep Sound" and "Footstep Rate" settings to the Voxel Editor for characters (sounds are played positionally, rate is in footsteps per second)
Added ability to freely rotate objects in the Map Editor from the Entity Properties panel (instead of being locked to 90-degree increments)
Added "Display Image" scripting function for displaying an image to the player (usage: display_image(, , , ))
Added image stretch mode constants for scripting (STRETCH_X, where X is either SCALE, TILE, KEEP, KEEP_CENTERED, KEEP_ASPECT, KEEP_ASPECT_CENTERED, or KEEP_ASPECT_COVERED)
Added "Play Video" scripting function for playing video files (supported formats are WEBM and OGV, can be imported by dragging and dropping onto application)
Added "Open Container" scripting function for manually triggering the opening of an item container within the current map
Added "quests" syntax to the Bauxite language for getting an array of quest IDs for a character (e.g. player.quests)
Added "global.theme" scripting variable for changing the current UI theme (e.g. global.theme = "My Theme")
Added "system.time" scripting variable for getting current time from the OS (returns a codex with "hour", "minute", and "second" values)
Added Bauxite scripting syntax for getting an effect attached to an attach point (e.g. entity["xyz"].effect["attach_id"])
Added "EFFECT" scripting constant for checking if an entity is an effect (similar to TILE, OBJECT, and CHARACTER, e.g. if entity["xyz"] == EFFECT)
Added "substr" scripting function for getting part of a string (usage: substr(, , ) - length parameter is optional)
Added "len" scripting function for getting the length of a string, size of an array, or number of keys in a codex (e.g. len($my_array))
Added "quest[$quest_id]" syntax for getting quest properties based on ID (specifically name, description, or tags, e.g. quest["QUEST_0001"].name)
Added "portrait" property for characters to Bauxite scripting syntax (e.g. player.portrait to get or change the portrait, null will clear the portrait)
Added "Two-Dimensional" setting for objects in the Voxel Editor in order to prevent the rotation of vehicle objects when needed
Added entity script setting to disable the automatic playing of the initiating character's "interact" animation
Added "default" and "move" directional animation names for use by vehicles with the "Two-Dimensional" setting enabled (e.g. "default_west" or "move_north")
Added Effect Editor as a "Default Tab" option on the Editor Settings dialog to have it active by default on application startup
Added two new project templates to the Game Manager, "Mini Caves of ZZT" and "Kenney Tiny Dungeon (2D)", and added their associated assets to the Asset Library
Added assets previously exclusive to the Patreon to the built-in Asset Library (147 tiles, 55 objects, and 8 characters)
Added several music tracks by Aleix Ramon to the Asset Library, including "The Adventure Begins" (official RPG in a Box theme song)
Added "shore_corners" (water with shore at two opposite corners) to the Asset Library for use in the default example game
Added Italian translations for the editor interface and in-game text (selected from the "General" section of the Editor Settings dialog)
Updated roguelike mode to also consider interacting with objects and characters as an action (e.g. opening a door, pulling a lever, etc.)
Updated "Controls" section in the Game Configuration dialog to split out the movement and interaction options
Updated description field in the Quest Editor to be a multi-line text field instead of being limited to one line
Updated color data type to support optional alpha value (e.g. color[0, 255, 0, 128] is green with 50% transparency level)
Updated error message for the "Equip Item" scripting function to be more descriptive (e.g. character needs item in inventory, slot doesn't exist, etc.)
Update "Enable Container" and "Disable Container" functions to allow direct entity references instead of only an entity ID
Updated coordinate values in visual scripts nodes (e.g. the "Move Camera" function) to allow decimals for more precise positioning
Updated "str" scripting function to return "null" when the value is null instead of throwing an error to the debug console
Updated "Request Coordinate" and "Request Entity" functionality to disable mouse input for widgets while requesting a value
Updated Bauxite scripting syntax to support Korean characters when used inside of text strings
Updated "Default Example Game" project template to include an auto-tile configuration for the grass and water tiles
Updated filtering functionality in the Asset Library to no longer be case-sensitive when searching for tags
Updated Patreon credits in the About dialog to only reflect the patrons who are currently active for each tier
Bug Fixes:
Fixed issue with transparent surfaces of models showing through billboard sprite characters and objects
Fixed issue with death animations not properly triggering for billboard sprite characters when defeated
Fixed issue with camera positioning that could occur when loading a map and the camera had been previously locked
Fixed issue with setting a image element's image on a widget to null not properly clearing the image
Fixed issue that could occur when adding quest-related visual script nodes to a script without having any quests defined
Fixed issue with $item_id in item's script being null when using a consumable item from a quick slot via number hotkey
Fixed issue with the "Pass Mouse Input" widget setting not properly passing mouse input through the widget in some cases
Fixed issue with the positioning of objects when attached to other objects that were themselves also attached to an entity
Fixed issue where "interact" animations would keep playing even if a character started walking after interaction
Fixed issue with character's level not being saved when saving a game (only XP value was saved, not level itself)
Fixed issue with the player's party members not being properly restored when saving then loading a game
Fixed issue with scale not being applied to an object in the Map Editor if selecting another entity without focusing on another field first
Fixed issue where cursor was not being automatically updated if over an item container while a script enabled or disabled it
Fixed issue with duplicate play buttons showing next to music items in the Game Explorer after importing songs from the Asset Library
Fixed issue where attach point cubes were displaying after capturing a thumbnail for a model even if they weren't previously enabled
Fixed issue where the skill bar widget was incorrectly showing in the viewport of the Screen Editor
Fixed issue with Themes tab in the UI Editor incorrectly showing as "Theme" instead of "Themes" in some scenarios
Fixed issue with Item Editor and Quest Editor incorrectly showing the item/quest details area before a project was opened when set as the default tab
Fixed issue with "Recent Files" box not displaying dialogues when "All Types" was checked
Fixed issue where semi-transparent colors in PNGs were being ignored when importing them into the Voxel Editor
Fixed error that could occur when using "Capture Portrait" tool in the Voxel Editor multiple times in a row
Fixed issue with control variable in the "For Loop" visual script node not being validated correctly
Fixed console errors when giving a quest to the player then subsequently moving the player character
Fixed crash that can occur when using "return" without a return value in the Script Editor and Quick Script Builder
Fixed issue with some of the default example tiles in the Asset Library causing clipping when walked over by a billboard sprite character
Fixed some errors that that would display in the external console window when opening the Asset Library dialog
Fixed issue with "Enter name to filter by" placeholder text on the asset tabs not being properly translated to the current language
Fixed issue with missing localization for "LOOT_DROP_ALREADY_EXISTS" text when attempting to create a loot drop with a name that already existed
Documentation:
Updated "Tutorials" built-in-docs to include YouTube links for Stumpy's "How to Make a Game" series and Sarah's tutorial series
Updated "Character" built-in docs to include convenience variables which get tiles relative to a character ("front_tile", "north_tile", etc.)
Updated "Codex" built-in docs to include an example of how to modify an existing value within a codex
Updated "Climbing" built-in docs to fix an issue with the "Known Issue" text being cut off
How to Make a Game (Episode 6: Interactive Objects)
Hello! I'm Stumpy the Squirrel. Let's make a game with RPG in a Box! In this tutorial, we'll create a sign that the player can interact with. As part of this, you'll get some more practice with voxel modelling and scripting!
Release Notes for v1.0.5
New Features/Changes:
Added top-down orthogonal camera mode to the Map Editor for easier 2D/overhead map creation (located next to the isometric camera button)
Added "Panorama Sky" background option to the Map Properties panel of the Map Editor (image needs to be an equirectangular sky map)
Added new option to the "Reaction to Obstacle" NPC behavior setting for running a custom script upon encountering an obstacle
Added ability to control pushable objects using the mouse by clicking on a valid tile in front of the object or behind the player character
Added ability to release a pushable object currently held by the player character by clicking on it (in addition to the G key)
Added "Object is Grabbed" and "Object is Released" global event scripts ("self" contains object, "initiator" contains character)
Added "Object is Pushed" global event script ("self" contains object, "initiator" contains character, tiles are stored in $previous_tile and $target_tile variables)
Added ability to scale objects and characters being placed into a map (Shift + Scroll Wheel scales by 0.05, Ctrl + Scroll Wheel scales by 0.1)
Added "Copy Settings" and "Paste Settings" buttons to the Model Properties panel for copying the offset/scale/rotation values between attach points
Added ability to separately scale the X, Y, and Z values of attach points in the Voxel Editor from the Model Properties panel
Added setting to the Widget Properties panel which, when enabled, will pass mouse input through areas of the widget not occupied by elements
Added "on close" script setting to the Widget Properties panel that gets triggered when the widget's "X" close button is pressed ("self" contains widget)
Added "UI Scale" option to the Editor Settings dialog so that the interface can be scaled for high DPI displays
Added "Free Movement" experimental setting to the Game Configuration dialog (only basic movement/interaction supported, full gameplay not yet possible)
Increased maximum in-game zoom distance to 300 (adjustable from the Gameplay section of the Game Configuration dialog)
Updated eyedropper tool in the Map Editor (Alt + Left-Click) to also get the scale of the selected object or character
Updated "Predefined Animation Names" dialog in the Voxel Editor to include directional animation names ("idle_north", "walk_north", etc.)
Updated character animation functionality to auto-trigger corresponding walk/idle/attack animations on any attached objects when played
Updated About dialog to include credit to andysphinx for the "Box of Colors" default Voxel Editor palette
Bug Fixes:
Fixed several in-game issues with the pushable object functionality when used with the first-person camera
Fixed issue with the player being able to release a pushable object in the middle of two tiles while pushing it
Fixed issue with default scale not being properly applied when the player character was configured as a billboard sprite
Fixed issue with characters configured as "Two-Dimensional" being incorrectly rotated upon reacting to an obstacle (via behavior setting)
Fixed issue with holding Ctrl + Middle Mouse Button and dragging up/down to zoom not working properly in the Map Editor when isometric camera was enabled
Fixed issue with Voxel Editor being marked as having changes when pressing ESC to deselect all selected voxels
Fixed issue where "Request Coordinate" and "Request Entity" scripting functions could be triggered even when one was already being requested
Fixed issue where the "type" built-in property was not being accepted as valid syntax when used with a variable (e.g. $my_entity.type)
Fixed issue with using compound operators (+=, -=, etc.) to modify stat values via scripts not working correctly (literal value would be assigned to the stat)
Fixed error that could occur when using "Capture to Image" in the Voxel Editor then later switching to the "Mesh Preview" mode
Documentation:
Updated "Map Editor" built-in docs to include info about additional camera controls (holding C and moving mouse to edge of view)
How to Make a Game (Episode 5: Startup Script and Quick Play)
Hello! I'm Stumpy the Squirrel. Let's make a game with RPG in a Box! In this tutorial, we'll create a startup script, and then test our game with Quick Play. A great opportunity to get your feet wet with scripting!
đ đšī¸ đ đ đšī¸ đ
How to Make a Game (Episode 4: Tile and Map Creation)
Hello! I'm Stumpy the Squirrel. Let's make a game with RPG in a Box! In this tutorial, we'll create a grass tile, and then make a map with it in the Map Editor. Let's get started! đ ī¸đŋī¸đšī¸
How to Make a Game (Episode 3: Walk Animation)
Hello! I'm Stumpy the Squirrel. Let's make a game with RPG in a Box! In this tutorial, we'll create a walk animation for me in the Voxel Editor. It's simple to create a walk animation using only 3 frames. And believe it or not, we only need to design one new frame, which will have my arms and legs in a walking stance. The other 2 frames will consist of a copy of the first idle frame and a mirrored version of the newly drawn frame. Let's get started! đ ī¸đŋī¸đšī¸
How to Make a Game (Episode 2)
Hello! I'm Stumpy the Squirrel. Let's make a game with RPG in a Box! In this tutorial, we'll create an idle animation for me in the Voxel Editor. Let's get started! đ ī¸đŋī¸đšī¸
How to Make a Game (Episode 1)
Hello! I'm Stumpy the Squirrel. Let's make a game with RPG in a Box! In this first tutorial, we'll set up our project and learn how to create me in the Voxel Editor. Let's get started! đ ī¸đŋī¸đšī¸
Release Notes for v1.0.4
New Features/Changes:
Added "Box of Colors" palette to the Voxel Editor (the new default/official palette of RPG in a Box, created by community member andysphinx)
Added cooldown setting for specifying a skill's real-time cooldown in seconds (zero if none), updated skill slot to darken and show timer when cooldown is active
Added mouse sensitivity setting to the in-game options menu for adjusting the mouse sensitivity when looking around in first-person mode
Added ability to directly reference a character's behavior via script (e.g. entity["some_npc"].behavior returns a codex of their behavior properties)
Added ability to modify individual behavior settings for a character via script (e.g. entity["some_npc"].behavior["move_direction"] = NORTH)
Added ability to modify or remove a storage/quick slot's item via script (e.g. widget["my_widget"].element["0001"].item = "ITEM_0001")
Added ability to modify the stack size of a storage slot's item via script (e.g. widget["my_widget"].element["0001"].count += 1)
Added ability to modify the scale of billboard sprites in the Map Editor (X/Y/Z values will be locked together)
Added ability to stop the currently playing animation in the Voxel Editor by pressing the ESC key
Increased maximum widget size in the Widget Editor to 64 columns by 36 rows (will allow a widget to cover the entire screen at 1920x1080)
Updated Bauxite syntax to allow direct references to a character's inventory, which returns an array of codexes or null if a slot is empty (e.g. player.inventory)
Bug Fixes:
Fixed issue in the default example game where console errors would display after taking the coins then returning to the chest to open/close it again
Fixed issue with "Go To" dialogue node not jumping to the correct node in some cases when using the "Go To Node" option
Fixed issue where null was being returned when getting the entity ID of an entity when stored in a variable (e.g. $my_entity.id)
Fixed issue with accessing properties of "front_tile" and other related references not being accepted as valid syntax (e.g. player.front_tile.id)
Fixed issue with the height of the default inventory widget being one row too large when displayed in the Widget Editor