DTMark

https://pub.dartlang.org/packages/dtmark

This is a basic library to make it simpler to start making a game. It has support for a tick rate independant of framerate, input handling, texture loading, and rendering of basic colored and textured rectangles. It also has a built in font renderer, with an included low res font as well as the ability to generate a font on the fly. It does not handle a lack of webgl support, that must be handled by the game for now.

Do keep in mind that this is a work in progress and not really fit for widespead use. Breaking changes can and will happen, and I'm not documenting anything just yet.

Usage

For a somewhat complex and ugly, but working example, see this port of Prleude of the Chambered from java to dart: https://github.com/unknownloner/potc-dart.

To start, simply make a class that extends BaseGame. Then instantiate it and call launchGame on it. Here is a basic example.

import 'package:dtmark/dtmark.dart' as DTMark;
import 'dart:html';

class Game extends DTMark.BaseGame {

  //Canvas with id game_canvas is in the hypothetical html.
  //frameRate and tickRate are in frames/ticks per second.
  Game(): super(document.getElementById("game_canvas"), frameRate: 60.0, tickRate: 60.0);
  
  @override
  void launchGame() {
    //Initialize game stuff
    
    //Starts the game
    super.launchGame();
  }
  
  @override
  void render() {
    //Render your game. You are NOT guranteed to render as many frames
    //as you specified each second, so don't use this for code anything
    //that relies on a constant rate of being called. Use tick() instead.
  }
  
  @override
  void tick() {
    //Do all calculations here. DTMark will do it's best to have as many
    //calls to tick per second as specified by the tickRate, but if a
    //computer running the game is too slow the tick rate WILL decrease.
  }
  
  //Input listeners are automatically added to the canvas provided
  //to the constructor. They will call these methods so just override them.
  @override
  void keyDown(int key) {
  }
  
  @override
  void keyUp(int key) {
  }
}

void main() {
  new Game().launchGame();
}

Libraries

dtmark