dafu
|
|
« on: December 13, 2017, 08:16:17 PM » |
|
Hello all, I've been hard at work on a new retro pixel-perfect framework called RetroBlit. It is now available on the Unity Asset Store for your kind consideration! Update: RetroBlit 2.3 now available!RetroBlit was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games! So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with RetroBlit. Some RetroBlit features:- Pixel perfect rendering
- Primitive shape rendering, lines, rectangles, triangles, ellipses, pixels
- Multi-layered tilemaps with extensive TMX file support which includes support for infinite maps, objects, and custom properties
- Rendering to and from sprite sheets
- Unicode text rendering, with text alignment, overflow settings, and custom pixel font support
- Sprite packing support
- A set of 30 tweening/interpolation functions
- Clipping
- Custom shader support
- Sound and music APIs
- Simplified input handling
- Optional wide and tall pixel support (think 1980s computer games)
- Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more
- Garbage Collection aware code, for smooth play without hiccups!
I've put in lots of hours into a very detailed documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/RetroBlit/docs/index.htmlIf you've never used Unity have no fear! To use RetroBlit you only need an extremely basic knowledge of how to create a Unity project. I've got your back covered with this simple Unity guide: http://www.pixeltrollgames.com/RetroBlit/docs/unity.htmlRetroBlit is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, garbage collection, and tries to be smart about any heavy operations. Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions! I hope I've tickled your retro feels! More images at: https://imgur.com/a/j8CFxWbLive demo feature reel: https://pixeltrollgames.itch.io/retroblitUnity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064TL;DR: Look at the pictures!:)
|
|
« Last Edit: November 18, 2019, 04:01:03 PM by dafu »
|
Logged
|
|
|
|
Sundrop
Level 1
Grandma cooks best!
|
|
« Reply #1 on: December 13, 2017, 10:12:16 PM » |
|
This is amazing
|
|
|
Logged
|
|
|
|
|
dafu
|
|
« Reply #3 on: December 14, 2017, 06:36:26 AM » |
|
This is amazing Ooh, looks good! Might have to have a play with this... Thank you so much!
|
|
|
Logged
|
|
|
|
bateleur
|
|
« Reply #4 on: December 14, 2017, 06:45:53 AM » |
|
Have been reading the API. FontSetup says "If monospaced is true then FES will automatically trim any horizontal empty space on either side of the glyph. If monospaced is false then the empty space is retained." ...isn't that the wrong way around?
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #5 on: December 14, 2017, 06:48:17 AM » |
|
Have been reading the API. FontSetup says "If monospaced is true then FES will automatically trim any horizontal empty space on either side of the glyph. If monospaced is false then the empty space is retained." ...isn't that the wrong way around? /facepalm. Noted for next release! Thank you. Sometimes it doesn't matter how many times you read over a thing I guess! [Edit: Fixed in online docs, will fix in offline docs for next release]
|
|
« Last Edit: December 14, 2017, 07:03:45 AM by dafu »
|
Logged
|
|
|
|
dafu
|
|
« Reply #6 on: December 26, 2017, 07:15:23 PM » |
|
Version 1.2.1 is now out. This is mostly a bug fix release. 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
|
|
|
Logged
|
|
|
|
qMopey
|
|
« Reply #7 on: December 26, 2017, 11:13:41 PM » |
|
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #8 on: December 27, 2017, 08:53:39 AM » |
|
Is that a more appropriate forum? It feels like devlog is more about things still under development. FES is done and released. Further work on it is post-release improvements. Also it's not a game, unlike all posts under devlogs.
|
|
|
Logged
|
|
|
|
|
bateleur
|
|
« Reply #10 on: December 31, 2017, 06:20:49 AM » |
|
Have been playing around with this a bit. It's fun, and very easy to use so far. Spotted another (trivial) error: On the features page in the section "Changing Layer Sprite Sheet" the referenced example appears to be missing.
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #11 on: December 31, 2017, 08:20:26 AM » |
|
Have been playing around with this a bit. It's fun, and very easy to use so far. That's amazing to hear! Thank you! If you have a minute to spare a simple honest review on the Asset Store would be very appreciated, I seem to be stuck in a review rut :/ Spotted another (trivial) error: On the features page in the section "Changing Layer Sprite Sheet" the referenced example appears to be missing.
Turns out the example was the in doc source files, but the the "source" tags were formatted incorrectly and it was skipped. Fixed now in online docs, will be fixed in next FES release.
|
|
|
Logged
|
|
|
|
bateleur
|
|
« Reply #12 on: December 31, 2017, 09:14:01 AM » |
|
That's amazing to hear! Thank you! If you have a minute to spare a simple honest review on the Asset Store would be very appreciated, I seem to be stuck in a review rut :/ Will definitely do this at some point, but would like to get a bit further through my test project first. Edit: Review added!
|
|
« Last Edit: January 02, 2018, 06:42:18 AM by bateleur »
|
Logged
|
|
|
|
dafu
|
|
« Reply #13 on: January 03, 2018, 04:30:47 PM » |
|
Edit: Review added!
I noticed! Thank you so much!
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #14 on: January 05, 2018, 08:41:26 AM » |
|
Version 1.3 is now out, featuring rewritten and improved offscreen support. 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 SoundDelete, MusicDelete and SpriteSheetDelete APIs for explicitly releasing resources
- Added more error logs for Tilemap and Font operations which were previously failing silently
Bug Fixes:----------- - DrawCopyOffscreen was flushing too much, causing too many draw calls
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #15 on: January 11, 2018, 08:21:08 PM » |
|
Based on some feedback I realized that some folks could use a quick guide on the bare minimum Unity knowledge required to get a FES project going. With that in mind I added this Unity guide to the documentation: http://www.pixeltrollgames.com/fes/docs/unity.htmlRight now it is only available online through that link, but it will also be packaged with the next release of FES.
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #16 on: February 05, 2018, 03:28:44 PM » |
|
v1.4 is now out, featuring custom shader support, and ability to specify when and which post-processing effects are applied. 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
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #17 on: February 22, 2018, 07:29:48 PM » |
|
v1.4.1 is now out. This is a small bug fix release. 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 -------- Check out FES at: https://pixeltrollgames.itch.io/fes Have a look at a FES game in the works, Merl: https://pixeltrollgames.itch.io/merl
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #18 on: March 06, 2018, 10:03:24 AM » |
|
FES is now at v1.4.2. It has seen a whole slew of improvements since the original release, but not as many adoptions as I would like to see! Today I'm putting it on a 100% sale (free) for a week only, in hopes of spurring some new interest! I hope you give it a try and find something in it to love! Check out FES at: https://pixeltrollgames.itch.io/fes Have a look at a FES game in the works, Merl: https://pixeltrollgames.itch.io/merl
|
|
|
Logged
|
|
|
|
dafu
|
|
« Reply #19 on: April 09, 2018, 07:25:16 PM » |
|
FES 1.5.0 is out now. This release includes full commented source code to a new demo game, BrickBust: Try BrickBust out at: https://pixeltrollgames.itch.io/brickbustOr free on Google Play: https://play.google.com/store/apps/details?id=com.mcietwie.brick_bustNew:-------------------- - 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)
|
|
|
Logged
|
|
|
|
|