From RogueBasin
Jump to navigation Jump to search
Library project
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)
Status Alpha
Licensing Common Public Attribution License, Version 1.0
P. Language C#
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.

Current Version

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.