|Developer||Large Russian Games: Sean Edwards, Alex Karantza, and Ed Ropple|
|Released||June 10, 2010 (0.2.0)|
|Updated||June 18, 2010 (0.4.0)|
|Licensing||Common Public Attribution License, Version 1.0|
|Platforms||Windows, Mac OS X (Mono 2.4 and newer), Linux (Mono 2.2 and newer)|
|Dependencies||.NET Framework 2.0 or Mono Framework|
|Official site of Sharplike|
Sharplike is an open source roguelike library written in C# for the .NET Framework and Mono Framework, licensed under the CPAL 1.0 (a derivative of the Mozilla Public License). It is developed in an attempt to provide a best-practices framework within which developers can concentrate on just making an awesome game, instead of spending a lot of time reinventing the wheel. Development of Sharplike focuses on two separate concerns:
- An easily usable, extensible core library, and
- A clean, powerful library of additional features for developers who want to get a head start on realizing their game.
The current version of Sharplike is 0.4.0, released on June 18, 2010. Features include (0.4.0 in bold):
- Modular core system for audio, graphics, input, and scripting (scripting currently disabled) using a provider model for all core systems.
- OpenGL audio and video system, using OpenTK.
- Keyboard and mouse input using WinForms. Command-based input mechanism; games don't have to care about specific key bindings outside of an .ini file, the framework handles it for you.
- Blocking or non-blocking game flow.
- Stack based state machine for control flow. Integrates with the game loop automatically, without any special configuration.
- Preliminary noise generation systems in Sharplike.Noise.
- Mapping system is (mostly) finished, using Pages (uniformly sized blocks) of Squares (tiles). Other features build on top of Mapping, including the following:
- Entity system implemented (usable for both mobiles and items). Predominantly event-driven to enable fine-grained control.
- Messaging system implemented, to send messages between entities and pages in a thread-safe manner (that works effectively with the multi-threaded schedulers).
- A game caching system. Currently only "cold" caching (to-disk) is implemented; future plans include a "warm" caching system for saving on CPU time while keeping the page and its entities in memory.
- An actor scheduling system, with a number of scheduler types. The SingleThreadedScheduler is recommended for simpler games, such as Hacks and Bands, while the multithreaded schedulers (included primarily for advanced use) are more useful for large-scale, Dwarf Fortress-style games.
- Control-based UI, named Regions, for use in graphical displays. A Region is somewhat similar to a Windows Form control, in that it may be arbitrarily placed within the display window. They may be subclassed for your specific needs. (The map display is a Region, and can be manipulated as such.)
- Built using the .NET Framework 2.0 and tested with Mono 2.4.4 to ensure cross-platform operation on Linux and Mac OS X.
- http://dev.largerussiangames.com/projects/show/sharplike - the Redmine project on the primary developers' tracker. Primary source for documentation and updates on development.
- http://dev.largerussiangames.com/projects/sharplike/boards - the Sharplike forum.
- http://dev.largerussiangames.com/projects/list_files/sharplike - the Sharplike release list.
- http://opensource.edropple.com/svn/Sharplike/trunk - SVN trunk for project's source repository.