https://github.com/blackglory/extra-game-loop
🌳
https://github.com/blackglory/extra-game-loop
browser library npm-package typescript
Last synced: 4 months ago
JSON representation
🌳
- Host: GitHub
- URL: https://github.com/blackglory/extra-game-loop
- Owner: BlackGlory
- License: mit
- Created: 2022-08-27T04:23:35.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-24T02:18:53.000Z (almost 2 years ago)
- Last Synced: 2024-12-11T18:57:42.246Z (over 1 year ago)
- Topics: browser, library, npm-package, typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/extra-game-loop
- Size: 501 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# extra-game-loop
## Install
```sh
npm install --save extra-game-loop
# or
yarn add extra-game-loop
```
## Usage
```ts
import { GameLoop } from 'extra-game-loop'
const gameLoop = new GameLoop({
fixedDeltaTime: 1000 / 50
, maximumDeltaTime: (1000 / 50) * 30
, update(deltaTime: number): void {
// ...
}
, fixedUpdate(deltaTime: number): void {
// ...
}
, lateUpdate(deltaTime: number, alpha: number): void {
// ...
}
, render(alpha: number): void {
// ...
}
})
gameLoop.start()
```
## API
### GameLoop
```ts
class GameLoop {
constructor(options: {
fixedDeltaTime: FixedDeltaTime /* ms */
maximumDeltaTime: number /* ms */
update?: (deltaTime: number /* ms */) => void
fixedUpdate?: (deltaTime: FixedDeltaTime /* ms */) => void
lateUpdate?: (deltaTime: number /* ms */, alpha: number) => void
render?: (alpha: number /* [0, 1) */) => void
})
start(): void
stop(): void
getFramesOfSecond(): number
/**
* This method allows you to manually advance to the next frame.
*/
nextFrame(deltaTime: number): void
}
```
### GameLoopLite
```ts
class GameLoopLite {
constructor(options: {
update?: (deltaTime: number /* ms */) => void
render?: () => void
})
start(): void
stop(): void
getFramesOfSecond(): number
/**
* This method allows you to manually advance to the next frame.
*/
nextFrame(deltaTime: number): void
}
```
The lite version of `GameLoop` for situations where the physics system is not needed.
Basically, it can be seen as an OOP wrapper for `requestAnimationFrame`,
so it can be used for non-game projects as well.