@zylem/game-lib
v0.6.4
Published
A powerful and easy-to-use framework for creating simple 3D digital interactive applications using TypeScript.
Maintainers
Readme
Zylem Game Library
A powerful and easy-to-use framework for creating simple 3D digital interactive applications using TypeScript.
Why Zylem?
I wanted to build something easy to jump into and deploy while still only writing code (no complex game IDEs).
Who should use Zylem?
This library is intended for hobbyist developers who want to play with 3D web technologies to build a game.
What does Zylem do?
The goal is to give you tools to build simple 3D games. It's basically comprised of:
- Rendering via ThreeJS with some capability to handle postprocessing built-in. ThreeJS
- Collision handling, triggers, and rigid body physics via RapierRS RapierRS
- Game state management with Valtio Valtio
- Simplified input handling (gamepad, keyboard, mouse)
Note: This project is still in alpha. There are unfinished features and some APIs that may change.
Installation
npm install @zylem/game-libGetting started with a basic game
/**
* @author: Tim Cool
*
* @description: basic ball movement
* the ball can be controlled with the arrow keys or gamepad
* the ball cannot go outside the boundaries
*/
import { createGame, createSphere, WorldBoundary2DBehavior } from '@zylem/game-lib';
// Creates a sphere (movement capabilities are built-in)
const ball = createSphere();
// attach boundary behavior
ball.use(WorldBoundary2DBehavior, {
boundaries: { top: 3, bottom: -3, left: -6, right: 6 },
});
// when the ball is updated, move it based on the inputs
ball.onUpdate(({ me, inputs, delta }) => {
// get the horizontal and vertical inputs from player one's controller
const { Horizontal, Vertical } = inputs.p1.axes;
// set the speed of the ball based on the delta time for smoother movement
const speed = 600 * delta;
// move the ball based on the inputs and the speed
me.moveXY(Horizontal.value * speed, -Vertical.value * speed);
});
// start the game with the ball
createGame(ball);Development
This package is part of the Zylem monorepo. See the main repository README for development setup.
