fisk-engine
Version:
Typescript based HTML5 game engine
89 lines (69 loc) • 2.27 kB
Markdown
Fisk-Engine is a Typescript based HTML5 game engine designed to work in all modern browsers that support the Canvas API.
`npm install fisk-engine --save-dev`
For a full example of the usage see the example folder for a fully working browser game that uses the keyboard arrows keys as inputs.
```Typescript
import {FiskGame, GameStage} from "fisk-engine";
const myStage = new GameStage({entities: [...]});
const myGame = new FiskGame({
width: 1280,
height: 720,
selector: '...',
initialStage: myStage
});
```
Basic entity that must be implemented for other game entities and systems to interact with it.
```Typescript
interface GameEntity {
x: number;
y: number;
width: number;
height: number;
hitbox?: {
x: number,
y: number,
width: number,
height: number
}
}
```
Extends GameEntity, must be implemented and have logical boolean set to true to be passed into logic loop in engine.
```Typescript
interface Logical extends GameEntity {
logical: boolean;
logic: (game: FiskGame) => void;
}
```
Extends GameEntity, must be implemented and have renderable boolean set to true to be passed into render loop in engine.
```Typescript
interface Renderable extends GameEntity {
renderable: boolean;
render: (ctx: CanvasRenderingContext2D) => void;
}
```
Extends GameEntity, must be implemented and have collidable boolean set to true to be passed into collisionQueue for give GameStage.
```Typescript
interface Collidable extends GameEntity {
collidable: boolean;
collisionResponse?: (response: any) => void;
}
```
Extends GameEntity, must be implemented and have interactive boolean set to true to have event methods called for given events.
Available events: onClick, onTouch, keyDown and keyUp.
```Typescript
interface Interactable extends GameEntity {
interactive: boolean;
onClick?: (event: MouseEvent, game: FiskGame) => void;
onTouch?: (event: TouchEvent, game: FiskGame) => void;
onKeydown?: (event: KeyboardEvent, game: FiskGame) => void;
onKeyup?: (event: KeyboardEvent, game: FiskGame) => void;
}
```