X Tutup
Skip to content

v4.2.0

Choose a tag to compare

@chrismaltby chrismaltby released this 13 Feb 11:48
· 54 commits to develop since this release

GB Studio is a quick and easy to use drag and drop retro game creator for your favourite handheld video game system.

[4.2.0] - 2026-02-13

Added

  • Add ability to define constant values, compared to variables these don't take any extra memory when used in game
  • Add ability to select all scenes with Ctrl/Cmd + A from Game World view
  • Add plugin manager for installing plugins from the official plugin repository, accessible from the menu at Plugins / Plugin Manager
  • Add support for theme, localization and project template plugins
  • Add ability to right click a scene to "Run From Here" allowing quick preview of a specific scene. Optionally can only include the selected scenes for faster build previews in large projects.
  • Add events "Load Projectile Into Slot" and "Launch Projectile In Slot" to allow more advanced control over setup and launch of projectiles and changing the loaded projectiles at run time
  • Add ability to hover over tiles in debugger VRAM preview to see tile memory address information @pau-tomas
  • Add animation states to generated game_globals.h allowing use from engine code @Mico27
  • Add ability to change collision layer opacity in World view when collision tool is selected @Q-Bert-Reynolds
  • Add ability for engine plugins to define new, per scene, collision tile types in engine.json file [@Q-Bert-Reynolds]
  • Add ability to show the raw collision tile values when editing collisions in world view
  • Add ability to ctrl/cmd + click frames in Sprite Editor to toggle multi select or shift + click to select range
  • Add right click context menu to frames in Sprite Editor allowing copy/paste/clone/delete to be performed on all selected frames
  • Add ability to search and add scripts by name when adding events instead of needing to add a "Call Script" event and selecting the script manually from the dropdown each time @pau-tomas
  • Add ability to quickly create "Comment" events by typing the comment text in the Add Event search field and choosing "Comment" menu item @pau-tomas
  • Add text code !Wait to allow pausing dialogue until an amount of time/frames has elapsed or a selected button has been pressed
  • Add setting to toggle GBC color correction. Disable color correction to closer match how colors will appear on modern hardware
  • Add ability to read camera properties (tile/pixel position, deadzone and offset) within script values @pau-tomas
  • Add ability to mute audio of inbuilt emulator from menu "Window / Play Window / Mute Audio"
  • Add ability to override "Color Only" setting per scene in color projects, allowing "Color Only" scenes in a mixed project or monochrome compatible scenes in a "Color Only" project. Right click on a scene and select "Color Mode Override"
  • Add events "Pause Logic For Scene Type" and "Resume Logic For Scene Type" allowing manual control of if the scene's update function should be running or not. You can use this when running multi-threaded scripts (such as a cutscene with multiple actors moving at once) to prevent player input while the script is running.
  • Add support for characters outside of the basic multilingual plane in font mappings (such as emoji) e.g. "😊": 34
  • Add support for multiple character sequences to be replaced in font mappings e.g. "EURO": 128
  • Add support for font mappings to output multiple character codes for a single input e.g. "X": [72, 69, 76, 76, 79]
  • Add ability to click label to the right of ROM usage bar to toggle between showing ROM usage values as byte values rather than rounding to KiB/MiB
  • Generate file bank_usage.txt when exporting ROM giving a breakdown of which assets were assigned to each memory bank and how many bytes were used
  • Add support for running GB Studio on Linux ARM64 (including Raspberry Pi)
  • Add "globals.i" file when exporting ROM containing all variable addresses. Allows integration with emulators such as GodotBoy for handling achievements and other game/rom interactions
  • Add ability to edit scene type (Platformer/TopDown etc.) global settings from Scene sidebar by clicking Cog button rather than needing to go to Settings page.
  • Add option to prevent backtracking in "Camera Move To Lock On Player" event to stop scroll from following player in selected directions
  • Add event "Set Camera Lock To Player", with same functionality as the move to variant but which will be called before automatic screen fade in event
  • Add new sprite animation types "Horizontal" and "Horizontal + Movement" for creating sprites which can only face left or right
  • Add ability for engine plugins to define constants, accessible from GBVM scripts, to reduce need for magic numbers
  • Added new features to Platformer scene type based on Platformer+ plugin. Functionality like dashing, double jump, coyote time, fall through, wall jumps, knockback are now included in the inbuilt Platformer, each feature is optional and if disabled will not affect your game's performance.
  • Add ability for actors in Platformer scenes to be marked as "Solid" or "Platform" allowing moving platforms. Scene plugins can opt in to this also
  • Add new event "Attach Script To Platformer Event Callback" allowing scripts to be triggered by events occuring within platformer scenes
  • Add support for setting per scene camera bounds, constraining the min/max scrollable area
  • Add a "Set Camera Bounds" event to allow scripts to adjust min/max scroll limits at runtime
  • Add ability to set Sprite Mode, allowing 8x8 tiles to be used (previously only 8x16 were supported). Sprite Mode can be set globally in Settings and overridden per scene or sprite using the sidebar dropdown. Note that all sprites within a scene must use the same mode as the scene itself. @pau-tomas
  • Add ability for Engine Fields to be used anywhere that script values are supported
  • Add zoom level 1600 when viewing assets
  • Add "If Engine Field Compare With Value/Variable" events
  • Add setting in Build Options to determine if build folder should be opened after exporting game @pau-tomas
  • Add ability to reorder actors and triggers within a scene from context menus @Mico27
  • Add ability for event plugins to readText and readJSON files (must be in the same folder as plugin) const api = require("plugin-api"); const data = api.readJSON("./data.json");
  • Add ability to position actors in a scene using pixel coordinates rather than tiles by clicking units type next to "Position" label at top of right hand sidebar for actor @Mico27
  • Add ability to change canvas origin point when editing sprites @Mico27
  • Add support for SGB border overlapping the GB screen. Magenta pixels in border image will be transparent but other colors will display over the top of the game screen. @pau-tomas
  • Add enhanced Adventure scene type with more configurable options
  • Add ability for actors in Adventure scenes to be marked as "Solid"
  • Add support for rounded corner collision tiles in Adventure scenes, allowing players to smoothly slide around corners
  • Add warnings when trying to use "Set Actor Movement Speed" event on player with incompatible scene types (platformer and adventure). Includes button to automatically replace with "Engine Field Update" events @pau-tomas
  • Add ability to extract palettes directly from a color image (available in the Scene sidebar when choosing "Automatic" or "Manual" palettes). This generates the palettes found in the image and auto-paints the tiles, while still allowing tile colors to be edited.
  • Add ability to override UI palette when using automatic background palettes
  • Add "Rate Limit" event allowing portions of scripts to be throttled by time, running at most once per interval.
  • Add "Replace Palette" button to the Sprite Editor. When enabled, changing the palette of a tile updates all tiles that use the same palette
  • Add "Preview as Monochrome" button to Sprite Editor
  • Add ability to duplicate color palettes from right click context menu on palette editor sidebar
  • Add "Scene Types" section to the Settings page for enabling or disabling specific scene types
  • Add "Default Scene Type" setting used when creating new scenes
  • Add ability to display a "Screen Grid" from the "View" menu which can be anchored to any corner of the scene @pau-tomas
  • Add "Automatic Tile Flip" setting to optimize tilesets by reusing horizontally and vertically flipped tiles where possible. Only supported in "Color Only" scenes @Mico27
  • Add support for setting global and per scene monochrome palettes for BGP (background & overlays), OBP0 and OBP1 (sprites) Q-Bert-Reynolds
  • Add font indexes to game_globals.h and game_globals.i for use in custom gbvm scripts and plugins
  • Add _stackPushScriptValue helper for use in plugins @Phidias618
  • Add ability to lock actor direction when using "Actor Move To/Relative" events so the actor does not change direction during movement
  • Add copy (Ctrl/Cmd+C), paste (Ctrl/Cmd+V), paste before (Ctrl/Cmd+Shift+V), comment (Ctrl/Cmd+/) keyboard shortcuts to script event editor can be used when hovering mouse cursor over script event's title or when hoverring the "Add Event" button
  • Add ability to select multiple script events using a checkbox on the right-hand side of each event title. Previously this was only possible using Shift+Click. When multiple events are selected, copy, paste, comment, and group commands apply to all selected events.
  • Add ability to toggle between light and dark background color in sprite editor @pau-tomas
  • Add ability to "Remove Unused" palettes, available from a new dropdown in the top-left of the Palettes page

Changed

  • Optimised performance of "Show Connections" calculations by moving most of the effort to a thottled Worker thread. This also improves script editing performance when Connections are visible.
  • "Switch" event updated to allow use of constant values for each branch condition
  • Optimised compilation of backgrounds by reusing tileset data where possible if common tilesets are used @Mico27
  • Moved .gbsres files for assets to the same folder as the asset files. Allows asset plugins to include .gbsres e.g sprite asset pack plugins can include animations
  • Optimised script editor by throttling the processing that was occuring on every key press
  • Update to latest GBVM
  • Improved collision handling for ladders and one-way platforms in the Platformer scene type. Ladders now use the player's bottom edge for anchoring, and one-way platforms no longer snap the player to the platform when colliding from below @Steinbeuge
  • Ladder collision tile now only visible on Platform scenes by default, edit engine.json to add per scene collision tile types
  • New instances of prefabs use prefab's name by default
  • Update "Wait" event to support using variable values for wait time @pau-tomas)
  • Toggle multi selection of scenes action changed to ctrl/cmd + click to be more consistent with OS level defaults + new sprite editor frame selection
  • Font PNGs that are 128px tall (16 tile rows) now map tiles starting from ASCII code 0 instead of 32, enabling support for drawing control characters (ASCII 0–31). To draw characters with codes less than 32 they must be escaped with \005 e.g. to draw character code 7 use \005\007 (note: this is octal so code 19 would be \005\023)
  • Optimised code generation when using properties (actor tileX, camera deadzone etc.) in values
  • Optimised Actor Move Relative code generation
  • Updated "Actor Move To" and "Actor Move Relative" to allow specifying if Walls, Actors, or none or both should be used for collisions
  • Change disabled event styling to use a red background, distinguishing them from comment events
  • Category group name now included when searching for script events @Pomdap
  • ROM usage monitor in Build Log is now hidden by default, restore this by checking "Show ROM Usage After Build" in Settings @pau-tomas
  • ROM filename is now based on your project's name instead of always being game.gb. You can also override the filename in Settings / ROM Filename
  • Updated Polish localisation. @ReptiIe
  • Updated Japanese localisation. @tomo666
  • Updated Spanish localisation. @JimScope
  • Updated German localisation. @gonzoMD @Sencaid
  • Updated French localisation. @Pomdap
  • Updated Italian localisation. @r3vit
  • Updated Brazilian Portuguese localisation. @KosmusSoares @Italo-Soares-Tradutor
  • Updated to latest GBDK-2020
  • Changed plugin code evaluation from using vm2 (which has been discontinued) to using quickjs-emscripten
  • Add ability for engine constants (defined in engine.json) to be used anywhere that constant values are supported
  • Updated app icon to support macOS 26 liquid glass
  • Expose engineFieldValues for use within event plugins @Mico27
  • Improved shoot em up scene type to allow configuring free/locked movement and setting trigger activation conditions
  • Updated "Set Actor Collision Bounding Box" event to allow using variables and expressions in new bounds values
  • When using automatic background palettes the generated palettes are now displayed in the scene editor sidebar
  • When provided, a ".mono.png" file is now always preferred for tile data, even when Automatic Coloring is disabled. This ensures that the extract palette feature matches the automatic palette when a ".mono.png" is present.
  • Updated "Store Actor Direction In Variable" event description to document how its values are encoded @mxashlynn
  • Hovering over an event's title in the script editor now shows its documentation in a tooltip (also visible when hovering in the Add Event menu)
  • Pasting a sprite frame into a selected empty frame now reuses the empty frame instead of creating a new one after it
  • Add ability to lock player direction in Adventure scenes to only face horizontal directions @Mico27
  • "Add Event" button now includes a Paste button when script events can be pasted
  • Sprite Animation State select dropdowns now group states that are only used by a single sprite. States shared by multiple sprites appear ungrouped, and you can hover over them to see which sprites use them
  • Improved GBVM performance during native calls @untoxa and integer square root calculations @Phidias618
  • Improved GBVM actor and projectile render performance @michel-iwaniec
  • Optimized GBVM Bank 0 usage by removing unnecessary global variable initializations @Phidias618
  • Extracting palettes from color images now automatically generates a matching .mono.png tiles image

Fixed

  • Fix issue where errors in watched files could cause application to crash
  • Fix issue where quickly clicking "Create Project" button during project creation could prevent new project from opening
  • Fix issue where CLI tool was ignoring project's debugger enabled setting causing debugger comments to always be included in generated gbvm code
  • Fix tileset preview in dropdowns for 16px tiles
  • Fix issue where instanced prefabs were showing incorrect icons in actor select inputs
  • Fix issue preventing engine plugins stored in subfolders from being included in project
  • Fix bottom margins when using GB Printer @untoxa
  • Fix variable uses list which wasn't including variable "0"'s uses in text fields
  • Fix issue where "Set Animation Frame" event wouldn't allow frame values greater than 25
  • Fix issue causing "Dialogue Multiple Choice" event to cut off menu items early
  • Fix issue where changing the dimensions of a sprite png image could cause the sprite editor's tile palette to display incorrectly
  • Fix line numbers in code editor for GBVM scripts with more than 999 lines
  • Fix issue preventing projects being created with the name "project"
  • Fix issue without-of-bounds memory writes on 8-bit values in engine field initialisation @michel-iwaniec
  • Fix issue preventing checkbox type working in engine fields @pau-tomas
  • Fix UI palette text control code. Palette indices now go from 1 to 8, because zero byte is a string terminator @untoxa
  • Fix issue where migrating old projects could cause gbvm symbols to become empty, preventing build from completing (opening a broken project will now automatically fix this issue)
  • Fix issue where sprites could end up with empty state id values
  • Fix issue where script labels could may not match script behaviour when referring to deleted actors (dropdown would say Self, label would say Player, game would use Self)
  • Fix issue where migrating older projects to the latest version would sometimes cause auto generated gbvm symbols to change
  • Fix issue where project migrations were not being applied to prefab script overrides
  • Fix issue where scene change and projectile load events within a scene init script couldn't occur before the auto fade in event
  • Fix default template PNG assets to only contain valid colors as defined in the GB Studio documentation @mxashlynn
  • Fix "spawn cmd.exe" issue on Windows when "%SystemRoot%\system32" is missing from Path environment variable
  • Fix issue where changing the size of a background image would cause the collision and color tiles to be reset
  • Fix issue where clicking "Show Navigator" toolbar button would not cause "Show Navigator" option in menu to be checked
  • Fix issue where font mappings were not being displayed in app text previews
  • Fix overflow warning when using "Fixed Position" parallax layers
  • Fix issue where referenced tilesets from event plugins were not always being included in the built project @Mico27
  • Fix issue where mask values were not being used correctly while painting collisions tiles @Mico27
  • Fix issue where sprites with a canvas size of 8px wide would have first four pixels set as transparent
  • Fix issue where input text in dropdown search fields was unreadable in dark themes
  • Fix issue causing scroll bounds to be ignored for scenes with width of 20 or height of 18 tiles @pau-tomas
  • Fix noise preview in the music editor so it now matches the sound during playback @eduardoProggt
  • Fix ROM color compatibility flag when making Mono + Color compatible games @pau-tomas
  • Fix issue where deleting a sprite could cause the application to crash
  • Fix issue where renaming current file in music editor would cause unsaved changes to be lost
  • Fix issue where tile priority could not be erased after assigning a color palette to a tile
  • Fix issue in topdown scene type where player speed set to non-whole numbers would often cause player to clip through collisions
  • Fix issue in emulator where holding shift key would cause some inputs not to register
  • Fix issue in emulator where holding inputs while window lost focus could cause buttons to remain stuck
  • Fix issue where text sound effects were not being included in game if they were not referenced by any other events @pau-tomas
  • Fix issue where game may not compile if both Color and Super GB modes are enabled
  • Fix issue where 'Actor Move To' would not always detect one way tile collisions
  • Fix issue where collision slope tool was accessible in scene types that didn't support it
  • Fix bounding box logic which was off by a few subpixels on right and bottom edges
  • Fix VRAM allocation when using 8x8 sprites in color only mode @Mico27
  • Fix inconsistent speeds between "Display Dialogue", "Overlay Move To" and "Close Non-Modal Dialogue" events @pau-tomas
  • Fix issue where mute icon in game window title bar could appear multiple times
  • Fix issue where magic brush would use old tile data if backgrounds we resized while editing
  • Fix issue where overlay move events were causing background scripts to pause
  • Fix flipped tile preview for sprites on 8px canvas
  • Fix sprite "Flip 'Right' To Create 'Left' Facing Frames" feature when sprite canvas is 8px wide
  • Fix issue where engine fields belonging to unused or disabled scene types could prevent the project from compiling
  • Fix issue where text selection during rename of a script event would cause event to be dragged
  • Fix broken values in EVENT_ENGINE_FIELD_SET carried over from 2.0.0 projects
  • Fix issue where variables passed by reference in expressions within custom scripts would use incorrect values
  • Fix issue where using actor properties in custom scripts would always return player properties
  • Fix issue preventing storing presets for "Launch Projectile in Slot" events
  • Fix issue where clicking on effect row in music editor in some cases could cause application to crash
  • Fix issue where Actor Move To/Relative events would cause actors to teleport during actor/actor collisions
  • Fix issue where Actor Move To/Relative events would show flash of movement animation when path was blocked by another actor
  • Fix issue where offscreen actors could appear onscreen while script is locked
  • Fix issue where copy/pasting hex colors in the palette editor could result in colors being remapped incorrectly when color correction was enabled
  • Fix issue where newly added scenes could default to using .mono.png tile images as the background image
  • Fix crash when selecting a scene with a deleted background image
  • Fix jitter in shoot em up scene when moving from an horizontal direction into a vertical direction without stopping moving @Mico27
  • Fix issue in platformer scene type where run state was using air deceleration value
  • Fix issue where selecting some collision tiles while slope tiles are hidden selects the wrong tile
X Tutup