_images/logo_large.png

v2.0.0


v2.0.0 - December 3, 2018

New:

  • FES is now named RetroBlit! See Why Was FES Renamed?
  • Tiled TMX support reworked!
  • TMX files are automatically converted into a RetroBlit binary format for faster access.
  • Added support for TMX map, layer, object, and tile properties.
  • Added support for TMX objects, with support for object templates.
  • Added support for TMX infinite maps, and chunk by chunk loading.
  • All TMX compression formats are now supported.
  • Significant performance improvements, sprite benchmarks are up to 2-3x faster.
  • Allocation garabage generated in RetroBlit from frame to frame is reduced from 500-2000 bytes down to 40 bytes. No Garbage Collection hiccups.
  • Added FastString class, a zero-garbage replacement for strings.
  • Added a set of 30 easing functions for interpolating values, vectors, colors and more!
  • Added ability to render into any sprite sheet, as well as creating blank sprite sheets which now replace offscreen surfaces.
  • Added new Clear(color, rect) method for clearing only a section of the display or sprite sheet
  • Added DrawTriangle and DrawTriangleFill primitives.
  • Added new Wavy and Shaky text effects
  • Added ability to change text font inline
  • Added a flag for ignoring inline text color changes (you can use this to render drop shadows behind text with inline color changes)
  • Added ability to retrieve RetroBlit rendering surface so that you can render it manually, see the new OldDays demo scene!
  • Added OldDays demo
  • RetroBlit can now be reinitialized at any time by subsequent calls to RB.Initialize and should no longer cause trouble if the Scene is reloaded. It’s also possible to switch between different RetroBlit games by calling RB.Initialize for a different game.
  • Removed Indexed Color Mode support and all related APIs. See rationale here: Why Was Indexed Color Mode Removed?
  • Removed Size2i, now Vector2i also has width and height members (which are aliases for x, and y)
  • Removed ColorRGBA, use Color32 or Color instead
  • Removed HelloWorld demo, improved MyGame template instead

Bug Fixes:

  • Fix SpriteSheetSize() returning wrong values
  • Fix sprite sheet not loading if only tilemaps are being rendered
  • Fix rendering of primitives on some old hardware
  • Fix bad default audio compression on audio import

See FES 1.5.0 to RetroBlit 2.0.0 porting guide

v1.5.0 - April 9, 2018

New:

  • Added BrickBust complete brick-breaker demo game!
  • Added FES.Ticks and FES.TicksReset APIs

Bug Fixes:

  • Fix game FES.Effect.Slide not clipping to FES.Display bounds corrects.
  • Fix FES.PaletteSwapGet not return the same value as set by FES.PaletteSwapSet!
  • Fix Tilemap rendering issues when FES.HardwareSettings.MapSize is not a multiple of the internal chunk size (16)

v1.4.3 - March 16, 2018

New:

  • Improve overall performance by significantly reducing the amount of degenerate triangles used under the hood

Bug Fixes:

  • Fix colors of primitives (rectangles/pixels/ellipses/lines) being incorrect in indexed mode if there are no sprites nor fonts being drawn in the same frame
  • Fix a clipping bug when drawing rectangles, filled ellipses, and orthogonal lines

v1.4.2 - March 5, 2018

Bug Fixes:

  • Fix regression in alpha blending where colors get darker as alpha approaches 0, this bug was introduced in v1.4.0.

v1.4.1 - February 22, 2018

New:

  • Added FES.BatchDebugEnable and FES.BatchDebugDisable which shows how many batch/flush operations are being performed and why.

Bug Fixes:

  • Fix tilemap chunks not being clipped at an early stage in the pipeline if they are completely out of clip bounds. This should improve tilemap rendering performance in some scenarios.

v1.4 - February 5, 2018

New:

  • Added custom shader support! Shaders can now be applied in pixel-perfect space when drawing sprites/primitives/fonts, and also at post-process effect time. See FES.ShaderSetup(), FES.ShaderSet(), FES.EffectShader()
  • Added FES.EffectApplyNow() API which specifies when post-processing effects should be applied. This is very useful if you want some drawing (eg GUI) to be affected by different post-processing effects (or none at all)
  • Added FES.PaletteColorSet() overload that allows for setting colors directly from another palette file, rather than manually one at a time
  • Added FES.SpriteIndex() overload that takes sprite sheet index as a parameter, previously FES.SpriteIndex() only worked for current sprite sheet
  • Added Unity Crash Course to the Documentation to help new Unity developers get started with FES

Bug Fixes:

  • Fix incorrect clipping region on Offscreen surface of different size than FES.DisplaySize
  • Fix Tilemap cell not updating when only the Tint Color or Flags are changed
  • Fix some Tilemap chunks becoming invalid and unsuable if all tiles set manually set to empty/invalid with FES.MapSpriteSet()
  • Fix some Tilemap chunks not rendering on Offscreen surface of different size than FES.DisplaySize
  • Fix Tilemap rendering when using the Offset parameter, some chunks were not rendered
  • Fix Tilemaps leaking Meshes
  • Fix built-in font not rendering properly if there is no sprite sheets loaded

v1.3 - January 4, 2018

New:

  • Add support for multiple offscreens with custom sizes. New APIs OffscreenSetup(index, size), Offscreen(index), OffscreenDelete(index). There is no longer a default offscreen created, an equivalent one can be created with OffscreenSetup(0, FES.DisplaySize)
  • Optimized DrawCopyOffscreen
  • Added more error logs for Tilemap and Font operations which were previously failing silently
  • Added SoundDelete, MusicDelete and SpriteSheetDelete APIs for explicitly releasing resources

Bug Fixes:

  • DrawCopyOffscreen was flushing too much, causing too many draw calls

v1.2.1 - December 21, 2017

New:

  • Add Stress Test app
  • Add FES.SpriteSheetGet() for retrieving current sprite sheet index
  • ColorMode.RGB is now the default ColorMode if one is not specified
  • Added NineSlice struct to define the pieces of a nine-slice image more conveniently
  • Added FES.ClipDebugEnable and FES.ClipDebugDisable to visualize clip regions and assist in debugging clipping related issues

Bug Fixes:

  • Fix music not restarting when FES.MusicStop() & FES.MusicPlay() is called
  • Fix crash when sound is played inside of IFESGame.Initialize()
  • Fix occasional crash with FES.MapClear() when clearing all layers
  • Don’t set targetFrameRate in WebGL builds to prevent emscripten warning
  • Fix clipping region on some older hardware
  • Fix inverted ellipse rendering on some older hardware
  • Fix nine-slice rendering

v1.2 - December 7, 2017

New:

  • Added FES.DisplayModeSet() API for changing the pixel resolution of FES at any time
  • Added support for wide pixel (2x1) and tall pixel (1x2) modes which can be set in QueryHardware or in FES.DisplayModeSet()
  • Allow Update FPS to be configured in QueryHardware, defaults to 60fps
  • Added API FES.FPS() and FES.UpdateInterval() to query update FPS, and time between update frames in milliseconds
  • FES.SpriteSize() and FES.SpriteSheetSize() now take optional sprite sheet index parameter to specify which sprite sheet should be queried
  • Replaced ColorRGB with ColorRGBA. The alpha component is compounded with the global alpha set by AlphaSet()
  • New Rect2i apis Center() and Intersect()
  • Added some predefined basic colors to ColorRGBA

Bug Fixes:

  • Palette pixels in multi-row palette files should now be read in top-left to bottom-right order, instead of bottom-left to top-right

v1.1 - November 20, 2017

New:

  • Add support for multiple spritesheets. See SpriteSheetSetup(), SpriteSheetSet(), and MapLayerSpriteSheetSet()
  • Add new Print() APIs that allow for specifying the text area, and text alignment within it, as well as text overflow handling strategy (overflow, clip, or word wrap).
  • Greatly improved performance when rendering primitives, in particular lines, and ellipses.

Bug Fixes:

  • Fix “false” return value when loading a TMX map from a CSV formatted file
  • Fix exception when using MapDataGet() on a null data element

v1.0 - October 19, 2017

Initial release.