Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411273 Posts in 69323 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 12:45:49 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)RetroBlit - A fantasy console inspired game framework
Pages: [1] 2
Print
Author Topic: RetroBlit - A fantasy console inspired game framework  (Read 11122 times)
dafu
Level 0
**



View Profile
« 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.html

If 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.html

RetroBlit 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/j8CFxWb
Live demo feature reel: https://pixeltrollgames.itch.io/retroblit

Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064

TL;DR: Look at the pictures!:)
« Last Edit: November 18, 2019, 04:01:03 PM by dafu » Logged
Sundrop
Level 1
*

Grandma cooks best!


View Profile WWW
« Reply #1 on: December 13, 2017, 10:12:16 PM »

This is amazing Shocked
Logged

bateleur
Level 10
*****



View Profile
« Reply #2 on: December 14, 2017, 06:05:42 AM »

Ooh, looks good! Might have to have a play with this...  TigerHand Thumbs Up Right
Logged

dafu
Level 0
**



View Profile
« Reply #3 on: December 14, 2017, 06:36:26 AM »

Quote
This is amazing
Quote
Ooh, looks good! Might have to have a play with this...

Thank you so much!
Logged
bateleur
Level 10
*****



View Profile
« 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
Level 0
**



View Profile
« Reply #5 on: December 14, 2017, 06:48:17 AM »

Quote
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
Level 0
**



View Profile
« 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
Level 6
*


View Profile WWW
« Reply #7 on: December 26, 2017, 11:13:41 PM »

posting for follow Smiley

could have put this into devlog section too I suppose  Gomez Gomez Gomez
Logged
dafu
Level 0
**



View Profile
« Reply #8 on: December 27, 2017, 08:53:39 AM »

could have put this into devlog section too I suppose  Gomez Gomez Gomez

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
qMopey
Level 6
*


View Profile WWW
« Reply #9 on: December 27, 2017, 03:38:42 PM »

It’s fine either way  Wizard Toast Right
Logged
bateleur
Level 10
*****



View Profile
« 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. Smiley

Spotted another (trivial) error: On the features page in the section "Changing Layer Sprite Sheet" the referenced example appears to be missing.
Logged

dafu
Level 0
**



View Profile
« 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. Smiley
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
Level 10
*****



View Profile
« 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
Level 0
**



View Profile
« Reply #13 on: January 03, 2018, 04:30:47 PM »

Edit: Review added!

I noticed! Thank you so much!
Logged
dafu
Level 0
**



View Profile
« 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
Level 0
**



View Profile
« 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.html

Right now it is only available online through that link, but it will also be packaged with the next release of FES.
Logged
dafu
Level 0
**



View Profile
« 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
Level 0
**



View Profile
« 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
Level 0
**



View Profile
« 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
Level 0
**



View Profile
« 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/brickbust
Or free on Google Play: https://play.google.com/store/apps/details?id=com.mcietwie.brick_bust

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)
Logged
Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic