IMPORTANT: I'm looking for people who want to use this framework, please contact me if you're interested. I'll keep improving the framework as I create more games but will give it more attention if others are using it too.

Frolic: What's in a name?

The concept for the Frolic Game Framework is inspired by the Allegro Game Framework originally created by Shawn Hargreaves who is a former lead developer on the XNA team at Microsoft. The derivation of the name Frolic comes from taking the Italian word allegro and translating it to German which becomes fröhlich which is a cognate (linguistic term for a close relative) of frolic. The similarities between the Allegro and Frolic frameworks are only in concept and intent, and Frolic is not meant to be a derivative of Allegro and in fact I haven't looked at Allego's APIs yet so that I could do a fresh take for modern C# but I plan on looking at Allegro in the future to get ideas about what features to add.

Project Description
Free now and forever retained mode game framework for Windows Phone, Windows 8, and others in the future. All game code is straight C# to be highly portable.

By removing all graphics related code from the code required to write a game, the game can be written in pure C# and as long as a renderer has been implemented for the target framework the game should run the same on all. This started as a way for me to have a higher level and more productive API on top of Silverlight and XNA that I could use to write games faster, but I felt it might be useful to others too.

Along with being useful for making cross-platform games another potential use would be to create a web-based or windows-based editor for your game using Silverlight or (in the future) WPF and mixing your game code seamlessly with a XAML based UI, reusing your game code to implement the rendering for the editor.

Retained vs. Immediate mode graphics engines

While working on SilverSprite it became clear that it's much easier to implement retained mode type functionality in an immediate mode engine than the other way around. Retained mode (for example in Silverlight 4) is where you add things to a collection for them to be displayed and until you modify its values or remove it, it will always be displayed there. In immediate mode (for example in XNA) you need to draw everything every frame. If you don't draw something in a particular frame it won't be displayed.

Immediate mode is generally a better fit for high performance games since it's tailored to scenarios where a lot is going on. It is, however, harder to manage and developers will often build their own retained mode type functionality on top of it.

Why not build once on top of XNA and SilverSprite?

SilverSprite makes Silverlight act like an immediate mode graphics engine. Putting a retained mode on top of that would hurt performance, and Silverlight currently needs all the performance help it can get for games. Writing a Silverlight native renderer for Frolic removes 2 layers of unnecessary code.

  • Built in powerful and simple to use animation libraries to animate simple properties like position, color, opacity, and scale as well as frame-based (cartoon cel style) animations of sprite sheets.
  • Extensible sprite classes
  • Easily support Silverlight for Windows Phone and Desktop and XNA for Windows Phone (Windows 8 coming soon, Xbox if there is interest)
  • Significant performance tuning for XAML rendering including bitmap caching, GPU acceleration, and modifying underlying properties only when changed.

In Development
  • Windows 8 XAML Rendering
  • Improved troubleshooting (debug logging)

Future Plans
  • Windows 8 MonoGame rendering
  • Integrate Farseer Physics Engine
  • A significant amount of Sprite functionality requires explicit setting of Width and Height, plan on investigating how to reduce this requirement cross platform
  • Windows Phone 8 (MonoGame?)
  • Unity3D renderer
  • Nuget packages?

Last edited Aug 22, 2012 at 1:01 PM by billreiss, version 29