Skip to content
On this page

Quick Start 🚀

What will we do?

  • Using your favorite framework, for example: Vue, React, etc., you will create a new application.
  • You will install the npm package using your favorite tool like npm or pnpm.
  • You will create the entry point for your video game and add an entity.
  • The entity will use a color of your choice and will be able to move.

Installation

To install it in your project, use:

npm

bash
npm i -D @cristianrg/game_engine

pnpm

bash
pnpm add -D @cristianrg/game_engine

Creating your web application

Vite

bash
pnpm create vite@latest

When creating your application, it will ask you which framework you want to use. For this example, we will use Vanilla with Typescript.

Creating the video game

In the src folder, create a file named game.ts. Once created, in your game.ts file, do the following:

ts
import 
{ Engine, GlobalState, Entity, Entities, Transform, Renderable, InputKeys } 
from "@cristianrg/game_engine";

export const setupGame = (canvas: HTMLCanvasElement) => {
    // create engine and get the current scene from the global state
    const engine = new Engine(canvas);
    const state = GlobalState.getInstance();
    const scene = state.currentScene!;

    // create player and add the main components
    const player = new Entity().addComponent(new Transform(50, 50, 100, 100))
    .addComponent(new Renderable("red"));
    // add Entities component to scene and add player to it
    scene.addComponent(new Entities())
    scene.getComponent(Entities)!.addEntity(player);

    // create input component and add it to player
    const input = new InputKeys(new Map([
        ["a", { event: () => player.getComponent(Transform)!.x += -5 }],
        ["d", { event: () => player.getComponent(Transform)!.x += 5 }],
        ["w", { event: () => player.getComponent(Transform)!.y += -5 }],
        ["s", { event: () => player.getComponent(Transform)!.y += 5 }],
    ]))
    player.addComponent(input);

    engine.start();
}

In the file named main.ts located in src, replace the main logic with the following:

ts
import './style.css'

import { setupGame } from './game.ts'

document.querySelector<HTMLDivElement>('#app')!.innerHTML = `
  <div style="display: flex; flex-direction: column; align-items: center;">
    <canvas style="background: #1a1a1a; border-radius: 8px;" id="canvas" width="800" height="600"></canvas>
  </div>
`

setupGame(document.querySelector<HTMLCanvasElement>('#canvas')!)

Remember to import setupGame from game.ts.

Result

To move, remember to use the keys "a", "w", "s", and "d".