0.0.1 • Published 6 months ago
kiwiengine v0.0.1
키위엔진
키위엔진은 심플하고 가벼운 웹 게임 엔진입니다.
설치
npm
npm install kiwiengine
yarn
yarn add kiwiengine
사용법
import { AssetManager, GameCanvas, Sprite } from "kiwiengine";
await AssetManager.load({
cat: { type: "image", src: "assets/cat.png" },
});
const container = document.getElementById("game-container")!;
const screen = new GameScreen(container, 800, 600);
screen.add(new Sprite(0, 0, "cat"));
API
GameCanvas
new GameCanvas(container: HTMLElement, width: number, height: number, ...objects: GameObject[]): GameCanvas
add(...objects: GameObject[]): void
- 게임 오브젝트를 추가합니다.remove(): void
- 게임 캔버스를 제거합니다.get width(): number
- 게임 캔버스의 너비를 가져옵니다.get height(): number
- 게임 캔버스의 높이를 가져옵니다.get left(): number
- 게임 캔버스의 왼쪽 좌표를 가져옵니다.get top(): number
- 게임 캔버스의 위쪽 좌표를 가져옵니다.
GameObject
new GameObject(x: number, y: number, ...children: GameObject[]): GameObject
update(deltaTime: number): void
- 개발자가 게임 로직을 구현할 수 있는 메소드입니다.add(...children: GameObject[]): void
- 자식 게임 오브젝트를 추가합니다.remove(): void
- 게임 오브젝트를 제거합니다.get parent(): GameObject | undefined
- 게임 오브젝트의 부모를 가져옵니다.get children(): GameObject[]
- 게임 오브젝트의 자식들을 가져옵니다.get x(): number
- 게임 오브젝트의 x 좌표를 가져옵니다.set x(x: number): void
- 게임 오브젝트의 x 좌표를 설정합니다.get y(): number
- 게임 오브젝트의 y 좌표를 가져옵니다.set y(y: number): void
- 게임 오브젝트의 y 좌표를 설정합니다.get drawingOrder(): number
- 게임 오브젝트의 그리기 순서를 가져옵니다.set drawingOrder(drawingOrder: number): void
- 게임 오브젝트의 그리기 순서를 설정합니다.get scale(): number
- 게임 오브젝트의 크기를 가져옵니다.set scale(scale: number): void
- 게임 오브젝트의 크기를 설정합니다.get scaleX(): number
- 게임 오브젝트의 x 축 크기를 가져옵니다.set scaleX(scaleX: number): void
- 게임 오브젝트의 x 축 크기를 설정합니다.get scaleY(): number
- 게임 오브젝트의 y 축 크기를 가져옵니다.set scaleY(scaleY: number): void
- 게임 오브젝트의 y 축 크기를 설정합니다.get pivotX(): number
- 게임 오브젝트의 x 축 회전 중심점을 가져옵니다.set pivotX(pivotX: number): void
- 게임 오브젝트의 x 축 회전 중심점을 설정합니다.get pivotY(): number
- 게임 오브젝트의 y 축 회전 중심점을 가져옵니다.set pivotY(pivotY: number): void
- 게임 오브젝트의 y 축 회전 중심점을 설정합니다.get rotation(): number
- 게임 오브젝트의 회전 각도를 가져옵니다.set rotation(rotation: number): void
- 게임 오브젝트의 회전 각도를 설정합니다.get alpha(): number
- 게임 오브젝트의 투명도를 가져옵니다.set alpha(alpha: number): void
- 게임 오브젝트의 투명도를 설정합니다.addCollider(...colliders: Collider[]): void
- 게임 오브젝트에 충돌체를 추가합니다.checkCollisionWith(other: GameObject): boolean
- 다른 게임 오브젝트와 충돌했는지 확인합니다.checkCollisionWithPoint(x: number, y: number): boolean
- 지정한 좌표와 충돌했는지 확인합니다.drawColliders(color: number): void
- 게임 오브젝트의 충돌체를 그립니다.
Example: https://kiwiengine.github.io/kiwiengine/collision-test.html
AssetManager
await AssetManager.load(sources: {
[id: string]:
{ type: "image" | "audio", src: string } |
{
type: "spritesheet",
src: string,
atlas: {
frames: {
[frameId: string]: { x: number, y: number, w: number, h: number }
},
animations: {
[animationId: string]: string[]
}
}
} |
{
type: "spine",
atlas: string,
skel?: string,
json?: string,
png: Record<string, string> | string;
}
}, onProgress?: (percent: number) => void)): void
load(sources: { [id: string]: { type: "image" | "audio", src: string } }): void
- 이미지나 오디오를 로드합니다.load(sources: { [id: string]: { type: "spritesheet", src: string, atlas: { frames: { [frameId: string]: { x: number, y: number, w: number, h: number } }, animations: { [animationId: string]: string[] } } } }): void
- 스프라이트 시트를 로드합니다.load(sources: { [id: string]: { type: "spine", atlas: string, skel?: string, json?: string, png: Record<string, string> | string } }): void
- 스파인 애니메이션을 로드합니다.
Sprite
스프라이트는 이미지를 화면에 표시하는 게임 오브젝트입니다.
new Sprite(x: number, y: number, assetId: string): Sprite
remove(): void
- 스프라이트를 화면에서 제거합니다.
Example: https://kiwiengine.github.io/kiwiengine/sprite-test.html
SpriteAnimation
new SpriteAnimation(x: number, y: number, assetId: string, animation: string, fps: number): SpriteAnimation
remove(): void
- 스프라이트 애니메이션을 화면에서 제거합니다.
Example: https://kiwiengine.github.io/kiwiengine/sprite-animation-test.html
SpineAnimation
new SpineAnimation(x: number, y: number, assetId: string, options: {
animation: string,
skins?: string[],
loop?: boolean,
onAnimationEnd?: (animation: string) => void
}): SpineAnimation
set skin(skin: string): void
- 스파인 애니메이션의 스킨을 설정합니다.get skin(): string
- 스파인 애니메이션의 스킨을 가져옵니다.set animation(animation: string): void
- 스파인 애니메이션의 애니메이션을 설정합니다.get animation(): string
- 스파인 애니메이션의 애니메이션을 가져옵니다.remove(): void
- 스파인 애니메이션을 화면에서 제거합니다.
Example: https://kiwiengine.github.io/kiwiengine/spine-test.html
Audio
new Audio(assetId: string, volume: number): Audio
playOnce(): void
- 오디오를 한 번 재생합니다.playLoop(): void
- 오디오를 반복 재생합니다.stop(): void
- 오디오를 정지합니다.pause(): void
- 오디오를 일시 정지합니다.resume(): void
- 오디오를 재개합니다.set volume(volume: number): void
- 오디오의 볼륨을 설정합니다.get volume(): number
- 오디오의 볼륨을 가져옵니다.remove(): void
- 오디오를 제거합니다.
Example: https://kiwiengine.github.io/kiwiengine/audio-test.html
InputManager
InputManager.onKeyDown((key: string) => {
console.log(key);
});
onMouseDown(callback: (x: number, y: number) => void): void
- 마우스 버튼이 눌렸을 때 호출될 콜백을 등록합니다.onMouseMove(callback: (x: number, y: number) => void): void
- 마우스가 움직일 때 호출될 콜백을 등록합니다.onMouseUp(callback: (x: number, y: number) => void): void
- 마우스 버튼이 떼어졌을 때 호출될 콜백을 등록합니다.onTouchStart(callback: (x: number, y: number) => void): void
- 터치가 시작될 때 호출될 콜백을 등록합니다.onTouchMove(callback: (x: number, y: number) => void): void
- 터치가 움직일 때 호출될 콜백을 등록합니다.onTouchEnd(callback: (x: number, y: number) => void): void
- 터치가 끝날 때 호출될 콜백을 등록합니다.onKeyDown(callback: (key: string) => void): void
- 키가 눌렸을 때 호출될 콜백을 등록합니다.onKeyUp(callback: (key: string) => void): void
- 키가 떼어졌을 때 호출될 콜백을 등록합니다.onWindowResize(callback: (width: number, height: number) => void): void
- 창의 크기가 변경될 때 호출될 콜백을 등록합니다.
PhysicsWorld
new PhysicsWorld(x: number, y: number, objects: PhysicsObject[]): PhysicsWorld
Example: https://kiwiengine.github.io/kiwiengine/physics-test.html
PhysicsObject
new PhysicsObject(x: number, y: number, rigidbody: RigidBody, ...children: GameObject[]): PhysicsObject
set isStatic(isStatic: boolean): void
- 물리 오브젝트의 정적 여부를 설정합니다.get isStatic(): boolean
- 물리 오브젝트의 정적 여부를 가져옵니다.applyForce(x: number, y: number): void
- 물리 오브젝트에 힘을 가합니다.
Example: https://kiwiengine.github.io/kiwiengine/physics-test.html
라이센스
0.0.1
6 months ago