Sharplike

From RogueBasin
Revision as of 14:22, 18 June 2010 by Ed Ropple (talk | contribs) (→‎Current Version)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Sharplike
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


Introduction

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.

Links