Skip to content

ArcQ/kf-game-engine

Repository files navigation

#Kf Game Engine

Another JS game engine using pixijs as a rendering enginge. It provides helper utilities to load wasm (rust or c++) as main game logic.

Api Documentation coming soon.

##C++ (recommended) Install emscripten emsdk and em++.

Copy code build into public folder for example if using create react app (refer to create react app docs), and import js file.

em++ ./src/Game.cpp --source-map-base localhost:3000 -O0 -g4 --emit-symbol-map -s WASM=1 -o build/game-wasm.js

##Rust Usage: During the development of the engine, it was hard to incorporate webpack using wasm_bindgen. Therefore, it is recommended to use the browser - no es6 modules build.

###Example Have rust code build into public folder for example if using create react app (refer to create react app docs), and import js file.

wasm-pack build --target no-modules
rm ./pkg/battle_rust.d.ts
rm ./pkg/battle_rust_bg.d.ts
cp -rf ./pkg/* ../js/public/game-wasm/

Load this script after you load the wasm file in index.html

// the `wasm_bindgen` global is set to the exports of the Rust module
// we'll defer our execution until the wasm is ready to go
function run(mod) {
  window.wasm = mod;
  window.wasmLoaded = true;
  const event = new Event('wasm_load');
  document.dispatchEvent(event);
}

window.wasm_bindgen('game-wasm/battle_rust_bg.wasm').then(run);

This will dispatch an event to the game engine, for the game engine to register the correct handlers in wasm.

import engine from @kf/game-engine;
engine.start(config.game, mainGameViewRef, storeFn(store), assetDicts);

##Character Concepts

Sprite: Actual Sprite entity CharType: A type of character that includes sprites and traits A entity shoudl be created using a character factory to create a particular type of char Character: A playable entity that is a character type with sprite and pos attributes

You will need to define a characterdict, use createCharacters(config, charFactoryDict)

For use development use locally in other libraries:

lerna bootstrap --npm -client=yarn lerna link yarn in each package

yarn link package in dependent project

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published