Hi there,
during the last months, I was working on my Isometric Coop Rogue-like Game
Rage, which is currently paused because of too less spare time. So I started reworking/refactoring the entier codebase. During this process I found some pieces of code which are solving several problems I faced during development. So I started to isolate those solutions to make them reusable. Finally, I decided to put those solutions on github and call this repository "SfmlExt" - because it seems like an extension - at least to me.
It requires C++11 (which should be wide-spread by now), works with SFML 2.2 and can be found here:
https://github.com/cgloeckner/SfmlExtBriefly, it's a set of functionality which is distinct from the current SFML release as well as from Thor. Currently, there the following "sub-projects" are included:
This list is outdated. View README on github for further details.
- image_atlas: A tool to create a few framesets from a large unmber of single frames. It was already presented at this forum
- resource_cache: A cache implementation holding resources in unique ownership and returning references to the resources. This is not a substitution for Thor's resource caching system - but it is an alternative, because currenlty Thor only provides shared ownership, which is not always the optimal solution.
- resource_archive: In addition to resource caching, this allows to create and load binary resource containers which can currently hold multiple resources of a single type, indexing them by their previous filename.
Additional features are planned but not finished, yet. I don't like publishing semi-completed code
Just as a teaser, here's a possible list:
- tiling: A tool to encapsulate map tiling. It allows iterating a limited area in a renderable order by using range-based loops providing map coordinates. It also provides coordination transformations (e.g. isometric screen coordinates to orthogonal world coordinates). Might also provide hexagonal grids, later
- light_ui: A light-weight GUI framework providing a very limited set of GUIs: Those which can be accessed only by keyboard/gamepad (see: Diablo 1 Title Menu).
- astar: An A*-implementation based on a fix-sized 2d map (not just those who are orthogonal in their model, such as topdown- and isometric maps, but possibly also hexagonal maps). Native C++11 doesn't provide a suitable datastructure, because A* needs to search the openset for a specific node, which is inefficient with std::priority_queue - but there is a way to do so on fix-sized maps.
So, stay tuned for future commits
For updated examples view the GitHub repository!Thanks for reading! I'm looking forward to your feedback.
Kind regards
Glocke
/EDIT: (10.01.15) Major API Update (removed outdated examples from this post)
/EDIT: (21.01.15) Moved outdated feature-list (see spoiler)