Skip to main content
Version: 0.x.x

Installation

Use the core package directly when you want imperative control from plain JavaScript or TypeScript.

Canvas2D

npm install @canvas-tile-engine/core @canvas-tile-engine/renderer-canvas
<div id="map">
<canvas></canvas>
</div>
import { CanvasTileEngine, type CanvasTileEngineConfig } from "@canvas-tile-engine/core";
import { RendererCanvas } from "@canvas-tile-engine/renderer-canvas";

const wrapper = document.getElementById("map") as HTMLDivElement;

const config: CanvasTileEngineConfig = {
scale: 48,
size: { width: 800, height: 500 },
backgroundColor: "#0f172a",
eventHandlers: { drag: true, zoom: true, click: true },
};

const engine = new CanvasTileEngine(wrapper, config, new RendererCanvas(), { x: 0, y: 0 });

engine.drawGridLines(1, 1, "#1e293b", 0);
engine.drawRect({ x: 0, y: 0, size: 1, style: { fillStyle: "#22c55e" } }, 1);
engine.render();

WebGL

npm install @canvas-tile-engine/core @canvas-tile-engine/renderer-webgl
import { CanvasTileEngine } from "@canvas-tile-engine/core";
import { RendererWebGL } from "@canvas-tile-engine/renderer-webgl";

const engine = new CanvasTileEngine(wrapper, config, new RendererWebGL());

If you need a fallback for browsers without WebGL:

import { RendererCanvas } from "@canvas-tile-engine/renderer-canvas";
import { RendererWebGL } from "@canvas-tile-engine/renderer-webgl";

let engine: CanvasTileEngine;

try {
engine = new CanvasTileEngine(wrapper, config, new RendererWebGL());
} catch {
engine = new CanvasTileEngine(wrapper, config, new RendererCanvas());
}

Constructor

new CanvasTileEngine(wrapper, config, renderer, center?)
ArgumentDescription
wrapperPlatform mount. For DOM renderers this is a wrapper containing a <canvas>.
configCanvasTileEngineConfig.
rendererRenderer instance, such as new RendererCanvas() or new RendererWebGL().
centerOptional initial world center. Defaults to { x: 0, y: 0 }.