Releases: vchelaru/FlatRedBall
November_6_2024
Note - releases no longer include binaries in the release notes.
Download the latest version here: https://docs.flatredball.com/flatredball
Biggest Changes
- Built-in shaders for Saturate, Bloom, and CRT effect. Also added example template which can be used for a starting point for post processing (thanks @treesgobark and @mfigueirido )
- FlatRedBall .NET 4.7 has been retired - to build this you can use the https://github.com/vchelaru/FlatRedBall/tree/permanent/NET4_7 branch
- Screens can now be added to folders
- Dark/Light mode can now sync with user settings (thanks @vicdotexe )
Everything Else
FRB Editor
- Added new example aseprite file (thanks @javiermiguez https://github.com/javiermiguez )
- Error is reported if a variable's source object is missing
- Fixed Variables tab still showing when selecting a file
- Display tab (camera settings) is now hidden when closing a project
- Default values for collision and TileShapeCollections are now properly generated
- Fixed generated code for abstract variants
- FRB Editor now suggests resetting XVelocity, YVelocity, ZVelocity for pooled entities containing AxisAlignedRectangles
- Better error reporting for objects instantiated in both base and derived entities
- More styling fixes, especially in dark mode
- Fixed clicking empty area on menu items (thanks @vicdotexe )
- Folder icons shows on right-click -> View in Explorer (thanks @vicdotexe )
- Added startup screen icon to right-click menu (thanks @vicdotexe )
- Clicking collapse to scope now collapses all internal items (thanks @vicdotexe )
- Right and bottom tabs now have persistent sizing (thanks @vicdotexe )
- Dragging variable to increase/decrease value now runs more smoothly and doesn't refresh the variables tab
- Right-click menu no longer shows when no node is selected (thanks @vicdotexe )
- Reduced the number of warnings in generated code
- Fixed bug which can cause number of tasks to get stuck at 1
- Fixed codegen bug where the wrong CSV can be referenced for variables
- Fixed possible crash when trying to parse .aseprite file
- Added closing of tabs with middle moue click (thanks @vicdotexe )
- Disabled buttons show up better (thanks @vicdotexe )
- Fixed tree node icons not showing up in the Favorites list for older projects
- New synced project now can optionally add engine source
- New synced project now rebuilds content on creation
- Static variables can now also be SetByDerived
- Added support for static events
- Improved Gum font generation, making it faster and reporting errors instead of failing silently. Also, Gum font generation no longer requires XNA runtimes
- Variables on objects now show their summary if it's defined in their Entity type
- Gum button now attempts to launch Gum from prebuilt, reducing the chances of the user seeing a message about missing file association for .gumx extension
- Performance tab only shows if it's been turned on by right-click option.
- Removed remembering of previously-selected tab.
- Objects inside TMX files can now optionally generate fields, similar to if the object were added through live edit
- Saving the .gluj file now tries multiple times, reducing the chances of a stray task holding on to a List and modifying it
- Removed old file types from the new file window such as .scnx
- Synced projects now load much more quickly and sync to main project more quickly
- Fixed build button not running on separate thread - FRB Editor no longer freezes on build
- Added partial BeforeEntityFromTiledCreation for projects which are using field names for objects in TMX files
Edit Mode
- Deselecting all objects now properly removes the Variables tab, avoiding confusion and possible crashes
FRB Engine and Code-related
- Reorganized folders in Glue project ( thanks @vicdotexe )
- All "Core" plugins have been renamed in the FRB editor and fixed associated namespaces
- Added check for both masses being 0 in collision checks, throwing an exception to help spot problems earlier
- Added editorconfig file to help with coding standards (thanks @Lucasharskamp )
- Added suppression of XML warnings for engines, reducing warning count for all projects that link to the engine
- Upgraded auto test project from .NET 4.7 to .NET 6 (and MonoGame 3.7.0 to MonoGAme 3.8.1)
- Removed database clearing when calling LocalizationManager.AddDatabase so behavior matches the naming of the method
- General cleanup removing unused files
- Added more informative error when a 3D camera is looking along its Up vector, which can cause NaN values in the rotation matrix.
- mapTileset now reports better errors when referencing missing files
- TimeManager.DelaySeconds now accepts a cancellation token
- Sprite.PlayAnimationsAsync now accepts a cancellation token.
- Added CameraControllingEntity CustomSnapToPixelZoom value
- Fixed bug related to AudioManager not properly stopping NAudio songs
- Removed old code for Silverlight, UWP, Xbox, Windows Phone, MDX. Also unified all code to remove checks for XNA4 and FRB_XNA
- Added TileNodeNetwork.FillListOfPositionedNodesInsideRectangle (thanks @mfigueirido )
- Added TileNodeNetwork.FillListOfNodesInsideAARectangle (thanks @mfigueirido )
- Added TileNodeNetwork.FillListOfNodesInsidePolygon (thanks @mfigueirido )
- Added TileNodeNetwork.FillListOfNodesInsideCircle (thanks @mfigueirido )
- Upgraded to Aseprite .net 1.9
- Huge refactor to Renderer (thanks @mfigueirido )
- Added Point3D.Zero
- Added new Point3D() - no arg constructor.
- Changed exception type when setting Edge values on camera to more clearly indicate the error
New Project Templates
- New web projects now properly rename their MGCB project to match the project name
- Deleted old unused templates
- FRB FNA now links the same shader file as others, enabling all color operations and removing need for #if's
Full Changelog: September_29_2024...November_6_2024
September 29 2024
Note - releases no longer include binaries in the release notes.
Download the latest version here: https://docs.flatredball.com/flatredball
Biggest Changes
- Entire app has been restyled. The new version has cleaner UI, new icons, accent color, and dark mode. (thaks @vicdotexe )
- FRB Web now supports all color operations for sprites
- Added new GlobalContent async content loading for web, allowing progress to be displayed while loading
- Improved case sensitivity support for Linux and Web projects
- Improved editor selection when the game is technically inactive but the editor is active
- Added StreamByteDictionary for pre-loading and faster WEB project loads
Everything Else
FRB Editor
- Huge refactor of how variable assignment works when reloading screens or entities, fixing tons of edge cases
- Fixed possible crash in live edit when editing levels with hundreds of objects
- Performance tab now properly shows deep collision call count against TileShapeCollections
- Added more informative error when the same plugin is loaded globally and project-specific .plug
- Removing an object now properly regenerates all objects that may have referenced the object
- Fixed FNA projects including XNBs for wav files - it supports from-file
- Swapping between MP3 NAudio and MonoGame songs now handles adding/removing XNBs better
- Better error message when a file is already tracked by the editor
- Big improvements in handling the creation of new variables and states while still in edit mode
- Added support for copy/paste of entire entities while in edit mode
- Renaming entity now deletes old .glej file.* AnimationEditor preview now allows hiding/showing shapes
- Added Close Shape button
- Fixed in correct subcollision being displayed in dropdown for CollisionRelationship
- Screen loading can be done now before global contnt loading
- Reduced unnecessary gum project loading, slightly improving performance
- Synced projects can now be opened in the project dropdown
- Changing GumScale now changes the canvas size on the Gum project
- About tab now refreshes whenever a project is loaded/unloaded
- Rename modification OK button is now selected by default allowing pressing ENTER
- Removed Gum codegen if a project does not have a .gumx project
- Global content gum access is no longer performed on screens which come before global content for improved load times
- .dll versions are now reported in the FRB editor next to the .gluj version
- Better handling of NAudio and XNB files
- Renaming a file now properly updates synced projects
- Added checks to make sure List variables aren't added to States categories
Edit Mode
- Fixed bug where pasting a copied object would sometimes not paste the object at the location of the cursor
- Fixed possible deadlock when restarting screens in edit mode
- Removed punchthrough (on double click) when editing TileShapeCollections
- Point selection in game now highlights the point in the list box
- Point selection in the list box now selects the point in game
- Point addition on polygon can be done with the + key
- New non-tunneled variables no longer restart the game
- Variable aspect ratios are now handled properly when switching between live edit and normal gameplay
- Fixed accumulation of variable assignments, making long edit sessions far more performant
- Setting dynamic states (states created while in edit mode) back to null works better than before.
- Fixed drag+drop deadlock
- Current element is now forced, improving edit mode selection
- Fixed song restart bug caused by incorrect name comparison
FRB Engine and Code-related
- IDrawableBatches can now sort secondary Y, including spine objects.
- Removed IDrawableBatch setters for X,Y,Z from interface since those aren't used
- Generated variants now generate variants for the base type not just derived
- Adding new Sprites keeps sorting stable so that objects with the same sort value will draw in order of being added
- FRB Screens now have a CancellationToken when being destroyed
- Added Point.GetRandomPositionInThisSlow (thanks @profexorgeek )
- Added Cursor.Main
- Added Keyboard.Main
- EditorVisuals.Circle now supports color argument (thanks @profexorgeek )
- Added null check on dominant window add
- Better Mouse and Cursor XML docs (thanks @profexorgeek )
- Double-click time is now configurable (thanks @profexorgeek )
- Added keyboard button tabbing support
- Added ability to override keyboard direction pressables and default 2D input
New Project Templates and Forms
- no changes
New Contributors
- @vicdotexe made their first contribution in #1454
Full Changelog: August_12_2024...September_29_2024
August 12 2024
Note - releases no longer include binaries in the release notes.
Download the latest version here: https://docs.flatredball.com/flatredball
Biggest Changes
- FlatRedBall Web is available. New projects can now target Web and run in a browser.
- WAV files can now load from-file, but in code and in the FRB Editor. This reduces FRB editor open times and build times since it no longer requires using the content pipeline.
- Lots of work on synced projects for the new FlatRedBall Web platform, although these improvements also carry over to all mobile platforms too.
- Added fps display to profiling tab, including the ability to toggle fixed timestep, vsync. Also, whether the game has focus is shown since that affects fps.
Everything Else
FRB Editor
- Fixed possible crash when adding new CSV
- Newly-added CSVs now always default to dictionary
- If Gum is missing a more informative error is displayed to the user
- Added support for checkbox that indicates whether missing shapes in an animated sprite should be created
- FRB editor now supports displaying conditional variable visibility, allowing plugins to hide/show variables depending on the state of other variables
- All songs now restart if they change from the previous song on screen change. This will be customizable in a future commit
- Linking a game to source now also links synced projects
- Recent files now shows main project type
- Adding new and synced project now darkens editor and shows a spinner
- Fixed compile error in ReloadFile if a file has a conditional compilation (#if)
- Added support for populating TileNodeNetwork from a specific tile layer (thanks @mfigueirido )
- Link project to source no longer shows Skai Gum if project is not DesktopGL - this may change in the future if mobile ends up being able to support skia gum rendering.
- Faster content pipeline builds since the editor no longer searches for the pipeline tool on every build.
- AnimationEditor preview can now set background color
- Fixed possible crash on selection after search
- Adding a new entity now shows a dropdown with the target folder. This also includes when inheriting from an entity.
- Fixed crashes when deleting objects
- Fixed bug where renaming an entity would not properly update variant variables
- Added text under Sprite animations setting collision to indicate why generated code won't add the call if the entity is not an ICollidable
- Adding a synced project no longer shows the checkbox for running the wizard
- All files that use the content pipeline now generate file aliases, allowing with-extension loading of all files, and fixing Gum crash when trying to load files that use the content pipeline
Edit Mode
- Fixed possible crash in edit mode
FRB Engine and Code-related
- Added null toleration on resizing to support the unpredictable resizing behavior of browsers
- Smaller Tiled layers now use 16 bit index buffers instead of 32 bit, further reducing the size of data passed to the GPU every frame
- Newly-created shapes from an animated sprite now attach themselves to the top parent (entity) rather than the sprite.
- NAudio_Song now respects forceRestart parameter in AudioManager.PlaySong
- NAudio_Song now raises an event when it loops
- Moving to a new screen now clears key presses
- Lots more XML docs in source
- Added new constructor
FloatRectangle(Point center, float width, float height)
(thanks @mfigueirido ) - Variant GetByName now checks fully qualified name
- "new" syntax in CSVs now properly instantiates derived types
New Project Templates and Forms
- FlatRedBall Web template is now available
Full Changelog: July_9_2024...August_12_2024
July 9 2024
Note - releases no longer include binaries in the release notes.
Download the latest version here: https://docs.flatredball.com/flatredball
Biggest Changes
- TMX files (Tiled) which use isometric views can now be properly loaded even if the tiles use different tile heights per layer, and if the tile heights overlap.
- Sprites now have a "Create new .achx file" button if the sprite is part of an entity with no .achx.
- Added (experimental) command for renaming a project
- Lots of improvements to FlatRedBall.Forms ListBox to make gamepad control better:
- Added ListBox.CanListItemsLoseFocus to keep control in a list box for NES-like selection of items
- ListBox now supports ControllerButtonPushed even when the internal list box items are selected.
- ListBox items no longer stay highlighted if the mouse is hovering over them while the gamepad is used to select an item
Everything Else
FRB Editor
- Tile types in TileNodeNetwork window now sort alphabetically
- Tile types in TileNodeNetwork window now refresh whenever the underlying TSX changes
- TileNodeNetwork window now has a scrollbar to support smaller displays
- AnimationEditor preview window now displays message about it being a preview, and provides a button to open AnimationEditor
- Added
global::
prefix to lots of codegen to resolve ambiguity if a user names their project the same name as existing namespaces - Improved pathfinding, reducing the chances of AI getting stuck trying to navigate to the next node
- Added support for optionally shown variables in the variable window for objects
- Project tab buttons are now disabled when no project is selected
- ShapeCollections which come from internal TMX shape collections are now cloned, allowing the changing of reposition directions.
- Fixed broken reposition directions checkbox with TileShapeCollections
- Fixed possible crash double-clicking .cs file when running FRB Editor in Linux with Wine
- Fixed crash when trying to reference animation names from an AnimationChainList which comes from aseprite file
- Fixed top down animations not updating when adding/removing rows in the UI
- Increased OK and Cancel window in the Sprite texture selection window
- Top down animation rows now have borders around them
- Added spinner that blocks the UI when waiting for wizard to show up
- Adding source to a game now shows toast to indicate what is happening instead of just freezing the UI
- Added suppression of errors if dotnet.exe fails on FRB Editor launch
- Added .achx -> Gum AnimationChainList loading support in the editor
- Fixed platformer entity getting stuck in Z-shaped platforms
- Fixed bug where Aseprite types were lost when reloading a project
- Added code to remove ObjectCreationWindow so old projects compile
- Fixed platformer level A missing tile
Edit Mode
- Lots of fixes improving edit mode freezes and slowdowns
- If the game restarts the screen due to a file copy, the game waits for the file copy to finish before performing the restart. This fixes a bug where changes wouldn't apply until 2 restarts.
- Copying of files is now immediate if the game is running, making restarts faster
- Improved error reporting when attempting to take a performance snapshot without the game running
- Improved the spacing and layout of profiling text
- Fixed null animation chains being set to the game as "null", causing the game to crash
FRB Engine and Code-related
- New XML docs throughout engine
- Bumped AsepriteDotNet to version 1.8.1
- Fixed isClockwiseCache not being updated when calling Polygon.InvertPointOrder
- Added code-only Beefball project to the samples repository
- KeyReference.ToString now returns the key that is being returned
- Screens now have a no-arg constructor to simplify code-only projects that use screens
- IWindow.DragOver (used by .Forms) is no longer obsolete. Added docs to explain why it is needed and when it should be used.
- Screen.MoveToState is marked as obsolete with error true since it doesn't do anything and is confusing to users
- Added check if FRB has been initialized when attempting to interact with shapes that require ShapeManager, such as setting Visible = true
- Fixed ShapeCollection.Clone not cloning max radii (thanks @treesgobark )
- Removed more MDX and Silverlight blocks
- Improved error reporting when MVVM binding is using the wrong type
- ScreenManager now keeps track of StartScreen, useful if skipping screens to initialize
- FRB.Forms ScrollViewer.SmallChange and ScrollViewer.LargeChange can now be set
- Added NaN and Infinity checks to I2DInput and PositionedObjects to catch math errors earlier (thanks @treesgobark )
- Marked IInputReceiver.ReceiveInput as obsolete
- ScreenShakeUntil now returns a Task so it can be awaited
New Project Templates and Forms
- Fixed shader xnb file capitalization to make new projects work on Linux.
- Started work on Kni Beefball code project
Full Changelog: May_27_2024...July_9_2024
May 27 2024
Note - releases no longer include binaries in the release notes.
Download the latest version here: https://docs.flatredball.com/flatredball
Biggest Changes
- Aseprite files can now be added to FRB Editor and loaded as AnimationChainLists. Similarly, Aseprite files can be loaded in code as AnimationChainLists (thanks @AristurtleDev ). Docs: https://docs.flatredball.com/flatredball/aseprite
- Added support for Screen DefaultLayer. When this is set, objects will be automatically added to the default layer when added through the FRB Editor. This simplifies the process of adding post processing.
- Creating a new project using Top Down now creates an animated character. (thanks @treesgobark and @profexorgeek )
- Creating a new platformer project now gives you the option to add level visuals. These levels have artwork for foreground and background including parallax.
- Creating a new top-down project now gives you the option to add level visuals.
- Huge performance improvements in loading project - around 2x faster on larger projects
- Huge performance improvements on basically all kinds of tasks, making large groups of tasks up to 10x (or more) faster
Everything Else
FRB Editor
- Recent project list now updates immediately when creating a new project.
- Fixed a variety of live edit bugs where commands weren't being sent.
- Fixed issues where tasks in the FRB Editor might deadlock or not run. In general live edit runs MUCH faster and more reliably than before.
- Current version is now more reliable, trying multiple times to read version number from FRB.com before giving up
- Fixed bug on iOS and Android new project types not properly handling XNB files
- Adding new TMXs through FRB editor now gives you the option to choose from the types of levels you want - with visuals or without.
- Added right-click option to copy file stripped name and code name in FRB editor
- Shapes are now properly offset when viewing .achx in the preview window in the FRB editor
- Fixed frame length editing not being applied when applying it in the FRB editor
- An editor top window now has scrollbars
- Made it easier to grab and resize the windows in the AnimationEditor
- Added support for changing PNG on a frame in the AnimationEditor
- Added support for CTRL+C, CTRL+V in the AnimationEditor
- Fixed possible crash when right-clicking on files
- Fixed a bunch of bugs related to moving entities from one folder to another
- Fixed a bunch of bugs related to renaming an entity
- Added a new window that shows you the changes that will happen when renaming or moving an Entity to a new folder
- Renaming an entity now properly fixes collision relationships
- Toggling whether an entity is a platformer or top-down properly cleans up variables and CSV files
- Fixed entity variant names not being refactored on entity rename.
- Fixed possible crash on renaming folder
- Removed unnecessary warning when renaming about .Generated.cs files being renamed
- Creating a collision relationship in a Level class (derived from GameScreen) now warns you
- .ACHX parsing is now 3x as fast, making error checking and other ACHX-related operations faster
- Added new button to copy all queued tasks to clipboard for diagnostics
- Added ability to change the max number of lines in the output window
Edit Mode
- Huge improvements in speed and reliability in edit mode (as mentioned above in Biggest Changes section)
- Building/running in edit mode now uses the same output as the .csproj output. This can make file copying faster.
- Fixed possible crash when game disconnects
- Fixed issue where TMX files weren't causing an app restart if this option was set.
FRB Engine and Code-related
- Screens now have
DefaultLayer
to allow codegen to add objects to a layer by default rather than unlayered. - Lots of new XML docs.
- Nuget packages now include XML docs for all .NET6+ project types.
- Fixed Android fullscreen mode not being truly fullscreen
- Added Sprite.ClearTimeRelatedStates (thanks @mfigueirido )
- Fixed Debugger.Write in the BottomRight corner (thanks @timconner )
- Big improvement in calling foreach on PositionedObjectList (lists of entities, sprites, shapes etc) - (thanks @KallDrexx )
- Improvements to behavior for InputDeviceSelector
- Added lots of docs to InputDeviceSelector
- Added GraphicalUiElement.GetCursorOverInfo to help identify why clicks aren't working
- Added ListBox.ScrollIntoView parameter for controlling where the scrolled item will appear
New Project Templates and Forms
- Top down game character now walks more slowly, closer to what you would want in a real SNES-style top down game
New Contributors
- @AristurtleDev made their first contribution in #1387
- @timconner made their first contribution in #1406
Full Changelog: April_6_2024...May_27_2024
April 6 2024
Note - releases no longer include binaries in the release notes.
Download the latest version here: https://docs.flatredball.com/flatredball
Biggest Changes
- FlatRedBall iOS and Android have been updated to .NET 8. This adds support for the latest C# syntax, improves performance, and allows targeting iOS 17.
- The main four templates (FRB MonoGame DesktopGL .NET 6, FRB FNA .NET 7, FRB iOS .NET 8, and FRB Android .NET 8) now use nuget packages for the main FlatRedBall library rather than relying on the embedded .dll.
- FlatRedBall no longer does ToLower when loading any files. This means that all file caching is now case sensitive, although dictionaries still do case insensitive checking. This is a huge improvement and makes Linux builds way more compatible with PC builds.
- Lots of improvements to the embedded AnimationEditor including:
- Horizontal and Vertical flipped sprites
- Separate top and bottom window zoom values
- Added guides support
- Added frame relative X/Y display
- Started adding shapes (circle) rendering in bottom window
- New "Variants" can be used to communicate entity types throughout project, and new variants can even be created dynamically in code! This makes it easier to work with multiple types of entities and lets games work with dynamically-created entity types as if they were code generated.
- Huge improvements to Forms DialogBox including automatic truncation, automatic paging, and styling.
- Top down animation controller which functions similarly to the Platformer animation controller. This makes it much easier to create top-down animated characters, and will be used in future updates with default top down animated characters.
- Big improvements in bitmap font (.fnt) parsing, making large character sets (such as Chinese) much faster to load in-game.
- FRB now (mostly) builds and deploys through Github Actions, making it easier to maintain in the future compared to TeamCity.
Everything Else
FRB Editor
- Significantly reduced the number of tasks running when a file changes.
- Slight improvement in new project wizard speed from file watch improvements
- When creating a custom project through the wizard (as opposed to platformer or top-down), the resolution display text now shows the effective resolution to avoid confusion
- Right-click on file now says "Remove" instead of "Delete" since the file can be removed without being deleted
- Fixed possible crash on TMX renaming
- Fixed bad label on Top Down movement values saying "Speed Up" twice
- Fixed a number of crashes related to right-click menu changes
- Entities are no longer (by default) destroyed when colliding and dealing damage. This solves a variety of confusing behaviors for new users when working with IDamageArea
- Added InvulnerabilityTimeAfterDamage to IDamageables in editor. This is optionally generated
- Fixed bug where new windows can appear off-screen when using multiple monitors of different scale %.
- Fixed drag+drop of file from Global Content Files into subfolder caused by file cache not being cleared.
- Fixed polygon points not showing up inside a TileNodeNetwork when its Visible was set to true
- Added right-click option to copy code name of a file
- Pause ignore of entire Gum file (screen) is now supported, allowing an entire Gum object to suppress pausing
Edit Mode
- Making a change to ODS (used for CSV) no longer fully restarts the scree - it can now be hot-reloaded.
- Fixed crash when viewing an abstract entity
- Fixed crash when adding a new Polygon
- Improved selection so that items inside an entity instance are no longer selectable when doing a rectangle drag
- Lots of unneeded code has been removed for UWP and Windows 8
FRB Engine and Code-related
- Added new InputDeviceSelector - a Forms object similar to input selection on Switch
- Generated code removes top down and platformer entities if they are no longer used by the project
- Disabling live edit now properly removes all files.
- Fixed problems with variants (formerly "Type") including statics, not set by derived, and top-down values.
- Fixed bug where
\n
character was inserted into the PasswordTextBox when pressing the Enter key. - Removed confusing toggle for using content pipeline on right-click
- New XML docs throughout engine
- Automated Test Project updated to work with latest code
- Improved Gum Sprite animations when using .achx so they "just work" in more cases
- Time-related states are reset when changing Sprite animation chains (thanks @mfigueirido )
- Added null check on MoveToScreen to provide more informative errors
- Added custom coloring to nodes in NodeNetwork (thanks @mfigueirido )
- Added FloatRectangle.IsPointInside (thanks @mfigueirido )
- Allow TimeFactor=0 without throwing exception in generated code for double-activity calls (thanks @mfigueirido )
- Fixed possible crash loading .TMX files with null groups.
New Project Templates and Forms
- Added new .NET 8 templates for iOS and Android
- Added new sample project for FlatRedBall.Forms
- Simplified Game1 by removing 30 fps on mobile and code for Windows_8.
February 1 2024
Biggest Changes
- Spine support!!! You can now add Spine to your projects. Full documentation available here: https://docs.flatredball.com/flatredball/spine
- Added AchxToSpineAtlas project for converting .achx files to .atlas files. This includes contributions made by @profexorgeek
- FlatRedBall Engine .dlls now include a syntax version number property. This will be used to compare the .gluj file version for safer upgrading and better diagnostics.
- Content loading and caching at the engine level is now case insensitive - this greatly simplifies loading files on case-sensitive platforms like Linux, and will make cross-platform projects even easier to maintain.
- IDrawableBatches now have their Update methods called earlier in the frame before Update/Activity so that changes to these objects are available on the frame they occur to custom code. This is useful for Spine animations which can update collision.
- IDamageable now has IsDamageReceivingEnabled and InvulnerabilityTimeAfterDamage ( thanks @treesgobark )
- IDamageArea now has IsDamageDealingEnabled ( thanks @treesgobark )
Everything Else
FRB Editor
- Linking a game to FRB source now works correctly if the game is not on the same directory as the FRB/Gum repository
- The Create New Plugin window now appears where the cursor is located
- Variables on objects which come from files now can have hard defaults if the variable is not inherited from the file. For example, scale values on SpineDrawableBatch.
- Fixed possible crash on right click + drag treenode
- Fixed bug with song Set Volume checkbox not being saved to disk
- Re-added alt+arrow on Files to reorder files. This is needed for Spine file loading order
- Improvements to the Add Event window, including appearing at the right location and displaying source objects when drag+droping
- Fixed the auto-generation of event names in the event window to properly consider tunneled object and selected event name
- Added support for .fxb files (compiled shaders for FNA)
- Fixed error output when drag+dropping a file into global content (made it run through a task)
- Output from build tools is now scanned for "warning" to identify if output that was put in the error stream really should be a warning (fxc)
- Removed slashes next to the search bar which explained the use of f, e, s, o, and v for filtering searches
- Refreshing font cache now shows the command line that is called for better diagnostics
- Refreshing font cache now updates font menbership in the project, increasing the chances of the game project staying up to date to font changes
- The default variable display on an object that comes from Gum now properly performs recursion to find the true value if inheritance is involved
- Adding FRB source to a game now handles existing project references better by attempting to remove them from the .sln first
- Adding or removing favorite projects now updates the project menu in realtime
- FRB Editor now warns you if you have the same plugin installed at the project level and globally - this can help diagnose problems when building new plugins
- Added diagnostics about the mgcb version on a machine, useful if MG 3.8.0 is installed instead of 3.8.1
- Pressing ENTER on polygon window now commits the changes
- Fixed "object stripping" bug related to having 3 levels of inheritance. This effectively solves a bug SetByDerived would get reverted
- Fixed "object stripping" bug where HasPublicProperty was ignored when determining what to strip
- Fixed spacing and newlines on popup about removing instances.
- Fixed possible crash when pressing STOP on song playing in the FRB Editor
- Fixed NAudio codegen bug when an NAudio mp3 is marked as LoadedOnlyWhenReferenced = true
- Fixed selection bug when toggling between Variables on an entity and the Entities folder not refreshing the Variables tab
- Fixed codegen bug when copy/pasting an entity and types were generated as doubles instead of floats
- Fixed codegen bug when generating states for colors tunneled on shapes ( thanks @treesgobark )
- Fixed codegen bug when Gum instances referenced states that have been removed from their source component
Edit Mode
- Fixed bug where objects could be incorrectly grabbed+moved in edit mode
- Added more diagnostics when going into edit mode - outputting the exception if there is one
- FRB Editor can now zoom to 7500% and 10000%
FRB Engine and Code-related
- Added support for .fxb in ContentManager.Load
- ShapeCollectionSave.SetValuesOn now updates shapes immediately, useful for diagnosing debugging problems when using animation shapes
- NAudio songs no longer support values less than 0
- Calling Sprite.PlayAnimationsAsync now forcefully sets this.Animate = true if any animations are passed in
- Changing the slider on the Forms SettingView now sets the the entire AudioManager's MasterSongVolume
New Project Templates and Forms
- Default Forms Slider now has Highlighted and HighlightedFocus states
- Default Forms CheckBox HighlightedFocusedOff now properly has the check invisible
Full Changelog: Jan_14_2024...February_1_2024
January 14 2024
Biggest Changes
- Added AudioManager.Play(SoundEffectInstance) which plays using the master volume
- Added PositionedObjectGueWrapper SetSprite and SetCollision, simplifying drawing FRB Sprites from Gum object positions. Also, this simplifies the setting of collision shapes from Gum object positions.
Everything Else
- Platformer entity IsOnGround set before JumpAction is raised so that the action can test if performing a jump on ground or double-jump
- Adding new platformer variables immediately refreshes the dropdown in the Variables tab
- Changing a variable's scope to private now asks whether to remove instances of the variable assignment
- Fixed possible threading issue when updating a TSX file
- Fixed Gum code generator not adjusting which version-specific properties are assigned when switching between projects with different file versions
- Fixed possible crash when editing Polygon points in edit mode
- Value sliding (click on label and slide) now works much better - but there's still more improvements to be made
- Entities which implement IVisible, but have not set their Visible property now show a default of true, matching the value in code
- Copy/paste of entities which are defined by base now supported
- Fixed case where incorrect variable type was assigned on instances of entities
Full Changelog: December_31_2023...January_14_2024
December 31 2023
Biggest Changes
- Added ability to assign animations based on platformer input
- Added support for Gum BBCode text styling
- Added CameraControllingEntity.IsKeepingTargetsInView useful for preventing players from leaving the gameplay area
- When creating a new project, the last location is remembered
- MapDrawableBatch object can now be created from TMX files in Screens
- Added CameraControllingEntity.ShakeUntil
- CameraControllingEntity.ShakeScreen now returns a Task
- Added Alt+Arrow reordering of bookmarks
- Added Sprite.UpdateToAnimationFrame
Everything Else
- Fixed Help->Tutorials link pointing to old docs
- Setting a variables as Private now shows a message box if the variable is SetByDerived
- Removed TopDownValues being generated in a derived Entity's *Type object, causing null reference exceptions on access
- Removed lots of event calls when sorting PositionedObjectLists, improving speed and fixing possible bugs
- Fixed bug where adding a Gum object to non-IScalable entity treated the entity as if it had a width and height of 32
- Game <-> FRB Editor communication only enabled in Debug to make it easier to measure performance in release
- Removed a lot of
foreach
calls on PositionedObjectLists to reduce allocation - Added Forms ListBox.DoListItemsHaveFocus setter
- Fixed polygons created through TMX files not being created as counterclockwise when flipped
- Copy/paste now selects newly-created object
- Fixed possible crash in DoPartitionedYCollision when removing more than one object in a collision method
- Switching between types that can and can't use content pipeline is now handled better in csproj management
- Fixed crash when passing relative path to NAudio Song creation
- Fixed incorrect edit-mode highlighting when in edit mode
- Right click, Add Folder/Entity now have icons
- Removed "Call Activity" checkbox on SpriteList since sprites don't have an activity
- Derived objects can no longer specify different partitioning than their base
- No longer show option of whether to destroy first on damage vs always if second is not IDamageable.
- Clearing a gamepad now clears the vibration motor setting, now stopping vibration when exiting a screen
- Adding a new variable after cancelling a build no longer re-starts the build
- Fixed possible crash accessing user's culture
- Copy/paste instances does better about respecting the copied object's list
- Fixed possible file access error when updating libraries (added try multiple times)
- Setting an object's SetByDerived now sorts it properly in all derived implementations
- Right-click option in the Bookmarks now says "Remove from Favorites" rather than "Delete" to avoid confusion
- Gum Standard object codegen now respects version, re-enabling properties that were previously disabled, such as IgnoredByParentSize
- Increased json.net version added from 12.0.3 to 13.0.3
- Removed options from new project wizard about camera behavior when player and tiled maps aren't added
- Added another error check when performing merging on Tile layers
- EditorVisuals.ColoredRectangle now respects the argument Text object's VerticalAlignment.
- Fixed possible crash when drag+dropping File into Objects folder under an entity
- Added AnimationChain.GetTimeAtFrameIndex
- Fixed possible error in About window
- Added Vector3.FromAngleDegrees
- Fixed codegen error when creating collision relationships between two individual objects (no lists)
- Fixed crash in plugin creation window
- Improved startup speed related to refreshing errors
- Fixed recent file window not refreshing when it should
- Fixed bugs related to switching between two projects while tasks are still going.
- Renamed CameraControllingEntity CurrentZoom with ViewableAreaMultiplier
- Fixed possible crash in the update window when downloading new dlls
- Fixed codegen bug with .Forms
Full Changelog: November_26_2023...December_31_2023
November_26_2023
Biggest Changes
- Added keyboard (CTRL Key) movement to the PNG preview window
- Collision tab when selecting a List object now shows the physics type in the relationship list
- When no projects are loaded, all toolbars along the top are hidden
- Added LocalizationManager.TranslateMulitple forcedLanguage optional parameter for translating multiple rows for a custom column. This is useful for things like setting the speaker on a dialog box
- Added Xbox360GamePad ButtonDown, ButtonPushed, ButtonReleased, ButtonRepeatRate, IgnoreButtonForOneFrame, and GetButton which takes a ButtonPosition.
- Static (shared) variables in entities can now be SetByDerived = true
- FRB now supports Tiled maps with Tiled layers
- Added button in Build tab output for deleting all output
- Added new properties to CameraControllingEntity to control movement type - now it supports ConstantSpeed along with the old Smooth logic.
- Added sequences of animations support to AnimationLayer.
- Added Polygon.KeepThisInsideOf and ShapeCollection.KeepThisInsideOf, useful for keeping objects in screen.
Everything Else
- Various fixes to FNA with live edit
- Added Vector2.AngleDegrees extension methods
- XML documentation added to various Vector2 and Vector3 extension methods
- Removed MonoGame content build task from DesktopGL6 template - we don't use it, and it can cause compile errors
- FRB FNA live edit now properly handles enum assignment
- Numerous fixes in the TreeView not properly selecting items or updating right-click menu
- CameraControllingEntity no longer zooms too close to view - it will not go closer than the default zoom even if the map is too small
- Wizard is no longer "Glue" wizard in the UI.
- Event export file lock no longer produces an error - it's usually not a big deal so we just output info without an error.
- Fixed Gum not properly adding custom code files for Forms objects at times.
- Fixed possible crash when exiting a screen on the same frame as a toast object being removed.
- Fixed Keyboard.IsShiftDown ignoring right shift
- Sprite no longer suppresses the TaskCancellationException on AnimateAsync
- Fixed a number of bugs related to .gluj saving which could result in UI not properly displaying values
- Fixed possible crash when assigning Target (single) on CameraControllingEntity
- Added additional codegen checks on version numbers so that the older multi-player platformer project works.
Huge thanks to @Arcnor for getting Github Actions setup.