Skip to content

v4.0.0

Compare
Choose a tag to compare
@chrismaltby chrismaltby released this 19 Jun 11:56
· 742 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.0.0] - 2024-06-19

Added

  • Add ability to launch projectiles at a target actor @patrickmollohan @pau-tomas
  • Add angle selector input showing degrees for GBVM angle values @pau-tomas
  • Add support for atan2 function in math expressions @pau-tomas
  • Add magnitude field to camera shake event @patrickmollohan
  • Add checkbox to toggle if new animation should loop when using Set Actor Animation State event @pau-tomas
  • Add shortcut to search scenes when in world mode by pressing /
  • Add support from adding sound effects to a project by dragging files into project window (to match how this works for other asset types)
  • Add native support for Macs with Apple silicon without needing Rosetta
  • Add support for << and >> operators in math expressions @pau-tomas
  • Add script debugger pane to World view, when game is run while this is open allows inspecting currently running scripts, setting breakpoints and updating live variable values
  • Add 'Color Only' mode. Roughly doubles the amount of tiles available for backgrounds and sprites though game will no longer run on original GB (DMG) hardware
  • Add event "Replace Tile At Position" and "Replace Tile From Sequence" to update background tiles, calling "Replace Tile From Sequence" repeatedly will cycle through animation frames
  • Add new asset folder "Tilesets" for use in "Replace Tile" events
  • Add ability for plugins to define additional scene types by including defined types (e.g. "sceneTypes": [{"key": "RACING", "label": "Racing 2D"}]) in engine.json @pau-tomas
  • Add ability for Actor Move Relative, Actor Set Position Relative and If Actor At Position to use variables as coordinate inputs
  • Add ability for almost every script event input that supports variables to use advanced values, click the button to the left of the value input to select value types, and combine them with math operators
  • Add ability to use variables within Menu and Choice events @pau-tomas
  • Add stack preview mode to debugger
  • Add ability to set common tilesets between scenes, the common tiles will always be loaded in a consistent order between scenes sharing the same common tileset
  • Add ability to set Fade Speed as "Instant" when switching scenes, combine this with use of common tilesets in both scenes to enable seamless scene switching
  • Add ability to use variables, advanced values and expressions for coordinates in Change Scene event
  • Add ability to "Preview as Monochrome" when using mixed color mode by toggling button at bottom left of World view
  • Add ability to provide color PNGs for backgrounds and extract palettes automatically by either clicking "Auto Color" button in brush toolbar or using dropdown on Scene sidebar next to "Background Palettes" label
  • Add ability to override tile data for auto colored backgrounds by providing a matching *.mono.png in your assets/backgrounds folder containing a monochrome version of the background. When provided this file will be used for tiles data and the regular image will be used to extract the color palettes (useful for mixed color mode games when auto palettes isn't creating tile data as you'd like automatically)
  • Add ability to edit waveforms in music editor using keyboard with ability to copy/paste @pau-tomas
  • Add ability to restore scene's default palettes in "Set Background Palettes" (especially useful when using auto palettes)
  • Add ability to set filename when creating a new song in music editor
  • Add context menus when right clicking on list items, or on scenes/actors/triggers in world view, or tiles on sprite editor view allowing renaming/deleting
  • Add ability to multi select scenes by shift click + dragging on world view or shift clicking in scenes list. When multiple scenes are selected they can be moved at the same time
  • Add ability to multi select script events by shift clicking the event's header. When multiple events are selected they can be moved, copied, grouped or deleted at the same time
  • Add ability for scenes, scripts, palettes and image/music assets to be organised into folders by naming them with path separators (/ or \ supported) e.g naming a scene ui/menu/Inventory will place it in a folder ui/menu
  • Generate game_globals.h at compile time allowing access to global variables from C code @pau-tomas
  • Add support for using random numbers in GBVM RPN instructions @untoxa
  • Add Set Camera Position event which can be used before scene fade in to instantly move camera to a new location
  • Add Script Lock and Script Unlock events allowing pausing other scripts and scene updates until the script is completed or unlocked
  • Add Build Options to "Settings" section with option to toggle if "Build Log" should be opened automatically on warnings
  • Add Show Navigator button to World toolbar if navigator is closed
  • Add ability to rename flags in Variable Flags Add/Clear/Set events @pau-tomas
  • Add ability for variables to be used for X/Y coordinates in replace tile events
  • Add Russian localisation. @Alexandr199514
  • Add support for isqrt and rnd functions in math expressions
  • Add support for printf style tokens in text. %D5$Variable in text will output variable value with 5 characters and leading zeros e.g. 00042, %c$Variable will output a character code based on variable value, %t$Variable will set text speed based on variable value, %f$Variable will change font based on variable value.
  • Add ability to change text cursor position in dialogue with "Set Cursor Position To" and "Move Cursor Position By" commands accessible by typing !Cursor

Changed

  • Updated to latest GBVM
  • Updated code generation to reduce access to stack @pau-tomas
  • Update Variable Uses sidebar to include any uses within Scripts @pau-tomas
  • Improved organisation of "Add Event" menu by grouping related event types
  • Updated German localisation. @gonzoMD
  • Add Event Menu highlights matching text when searching
  • Updated to latest GBDK-2020
  • Dragging scenes now snaps to an 8px grid allowing easier alignment of scenes
  • Camera speed events updated to use pixels per frame values like actor movement, allowing more precise speed control and speeds faster than 1px per frame
  • Build information and warnings moved to "Build Log" section of Debugger
  • Updated Japanese localisation. @tomo666
  • Allow event plugins to require("shared/lib/scriptValue/helpers") to access script value helpers
  • Update sidebar layout to prioritise giving scripts full sidebar width
  • Update sidebar to preserve scroll position when switching between scenes/actors/triggers/scripts
  • Update music editor to display compressed version of channel mute/visibility controls when not enough room to display fully
  • Keep preference for using Piano Roll or Tracker view when switching between songs in music editor rather than switching to Piano Roll view
  • Button events renamed to be more consistent
  • "Add Event" search updated to also include events that match group name when searching e.g. Searching 'Joypad' will include all Button events
  • Darkened conditional event header colours in dark theme
  • Patron list in credits now fetches most up to date list of members from GitHub if an internet connection is available
  • Previous "Name in Credits" tier members on Patreon are now still shown even after their membership has finished (your support is still very much appreciated!)
  • Update GBVM script view in debugger to show human readable labels
  • Updated Spanish localisation. @doomer6699
  • Updated Polish localisation. @ReptiIe
  • Update script branch labels to include the condition logic if there is enough vertical space
  • Update script branch labels to stay on screen when scrolling through long scripts
  • Sprite editor updated to allow canvas min width of 8px with 8px width increments
  • When in collision tile drawing mode, actor sprite collision bounding boxes are now also visible
  • Sprite editor frames list now shows frame number
  • Improve layout of asset dropdowns when using folders
  • Dialogue event titles now show names of used variables in preview
  • Updated to GBDK version 4.3.0
  • When using "Color Only" mode, GB rom file extension changed to ".gbc"
  • Sprite editor frame numbers updated to start from frame "0" to match values used in "Set Animation Frame" event

Fixed

  • Fix localisation for default names of scenes, actors and triggers, new entities no longer hard coded to use English names
  • Fix issue where clicking on a scene would sometimes not cause it to become selected
  • Fix issue where dragging World using middle mouse button and releasing button with cursor outside of window would cause scrolling to still be enabled
  • Fix issue where double clicking scene search input would cause window to become maximised on macOS
  • Fix issue where pasting a "Call Script" event could sometimes incorrectly say script has been modified if project hadn't been saved and reloaded first
  • Fix issue where creating a new pattern in music editor would sometimes cause the other patterns in the song to play at a lower octave
  • Fix issue where variables in Dialogue and Math inputs could appear above script tabs
  • Fix calculation of last parallax layer height in editor input @pau-tomas
  • Fix compiler warning when using some unary operators in While loop @pau-tomas
  • Fix issue where fonts referenced from plugins were not always being included in compiled game
  • Fix issue where navigator split sizes would update every time a project was opened, causing unnecessary changes when project stored in version control system
  • Fix issue where some slower camera speeds weren't actually slower
  • Fix issue where setting "Show Connections" to "None" would prevent Player start position from being visible/draggable
  • Fix issue where note lengths for wave instruments in .uge files were not being stored according to file specification. This may cause some .uge files created with older builds of GB Studio to not sound correct. If you need to fix any .uge files, you can use this migrator tool
  • Fix issue where navigator sidebar could sometimes not be wide enough to show Add and Search buttons in section headers
  • Fix issue where document wasn't being flagged as modified until first change after migrating a project
  • Fix issue migrating "Engine Field Update" events
  • Fix issue where shift key no longer allowed line drawing for collisions and tile painting modes
  • Fix issue where using recursive scripts could cause UI to lock up while calculating scene sprite tile count and when building game.
  • Fix issue where custom scripts parameters were not always updating as parameters were updated
  • Fix issue where "If Variable Has Flag" was always false @pau-tomas
  • Fix issue where selecting effect column in music editor tracker would cause application to freeze @pau-tomas
  • Fix issue preventing documentation being accessed from splash window
  • Fix "Add Flags" event tooltips localisation.
  • Fix issue where some sidebar inputs would appear above script tabs when scrolled
  • Fix rumble support when using MBC5 cartridge @pau-tomas
  • Fix issue where empty project message would be positioned incorrectly if World view was scrolled or zoomed
  • Fix issue where World view minimum size wasn't taking into account navigator sidebar or debugger pane causing unnecessary scroll bars
  • Fix issue where Math Expression editor would incorrectly show spellcheck errors in function names
  • Fix issue building game when Super GB Mode was enabled before setting Color Mode to "Color Only"
  • Fix issue where using a plugin for a newer version of GB Studio would give an error saying the plugin was for an older version
  • Fix title for "Call Script" events when no script has been selected
  • Fix issue where remapping '\' or 'n' in font would prevent line breaks from working
  • Fix issue where dragging frames in sprite editor would swap frame positions rather than shift them
  • Fix issue where searching through menus would use very low contrast text colours when using Dark theme
  • Fix issue preventing palette names from being over 25 characters long
  • Fix issue where sceneTypes in engine.json for plugins could cause duplicate scene types to appear
  • Fix issue using using non-English named variables and text codes in dialogue.
  • Fix issue where long branch labels would cause gaps in script editor
  • Fix issue where right click context menu would appear when trying to right click to remove collisions. Context menu now only appears when using select tool
  • Fix issue where text focus could get stuck in Build Log or GBVM script preview in debugger, preventing copy/paste from working
  • Fix issue where restoring scene from stack after using camera move events would cause previous scene to load without being locked to player
  • Fix issue where calling scripts to change sprites for multiple actors in a scene would only reserve tile memory for the first actor
  • Fix issue where too many tiles were being reserved for sprite changes in "Color Only" mode causing sprite VRAM to overflow
  • Fix issue where fonts referenced from GBVM scripts weren't being included in project
  • Correct gbvm VM_IF and VM_IF_CONST docs for param N
  • Fixed font alignment in asset dropdowns when using folders
  • Remove videos from New Project templates in splash screen as they cause Windows to crash

Removed

  • Removed "Build & Run" section, all previous functionality is now available in "Build Log" section of Debugger