# monarch-engine

> concept game engine

Latest version **0.4.0-dev.72** (published 2018-12-26) · ISC license · 0 weekly downloads

## Install

```sh
npm install monarch-engine
pnpm add monarch-engine
yarn add monarch-engine
bun add monarch-engine
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.0-dev.72 |
| Published | 2018-12-26 |
| First published | 2017-07-08 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 14 |
| Unpacked size | 6 MB |
| Known vulnerabilities | 0 (+3 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Chase Moskal |
| Maintainers | chasemoskal |

## Links

- npm: https://www.npmjs.com/package/monarch-engine
- Repository: https://github.com/monarch-games/engine
- Homepage: https://github.com/monarch-games/engine#readme
- Issues: https://github.com/monarch-games/engine/issues
- npm.io page: https://npm.io/package/monarch-engine

## Dependencies (14)

- [jest](https://npm.io/package/jest.md) 23.6.0
- [mobx](https://npm.io/package/mobx.md) 5.8.0
- [oimo](https://npm.io/package/oimo.md) 1.0.9
- [uuid](https://npm.io/package/uuid.md) 3.3.2
- [cannon](https://npm.io/package/cannon.md) 0.6.2
- [earcut](https://npm.io/package/earcut.md) 2.1.4
- [preact](https://npm.io/package/preact.md) 8.4.2
- [shortid](https://npm.io/package/shortid.md) 2.2.14
- [nipplejs](https://npm.io/package/nipplejs.md) 0.8.0
- [babylonjs](https://npm.io/package/babylonjs.md) 4.0.0-alpha.16
- [@types/jest](https://npm.io/package/@types/jest.md) 23.3.10
- [deep-freeze](https://npm.io/package/deep-freeze.md) 0.0.1
- [mobx-preact](https://npm.io/package/mobx-preact.md) 3.0.0
- [jsondiffpatch](https://npm.io/package/jsondiffpatch.md) 0.3.11

## Recent versions

- 0.4.0-dev.72 (latest) — 2018-12-26
- 0.4.0-dev.54 — 2018-09-03
- 0.4.0-dev.53 — 2018-09-03
- 0.4.0-dev.52 — 2018-09-03
- 0.4.0-dev.35 — 2018-06-17
- 0.4.0-dev.34 — 2018-06-17
- 0.4.0-dev.32 — 2018-06-17
- 0.4.0-dev.29 — 2018-06-10
- 0.4.0-dev.28 — 2018-06-09
- 0.4.0-dev.27 — 2018-06-09
- 0.4.0-dev.26 — 2018-06-09
- 0.4.0-dev.24 — 2018-05-28
- 0.4.0-dev.23 — 2018-05-28
- 0.4.0-dev.22 — 2018-05-28
- 0.4.0-dev.21 — 2018-05-28
- … 7 more at https://npm.io/package/monarch-engine/versions

## README

# monarch-engine [![build status](https://travis-ci.org/monarch-games/engine.svg?branch=master)](https://travis-ci.org/monarch-games/engine)

### 🔧 web game engine of chase moskal's dreams

- [x] open source game engine
- [x] mobile first
- [x] built on [babylonjs](https://github.com/BabylonJS/Babylon.js)
- [x] json game state system
- [x] entity class instancing system
- [x] basic fps control for flying editor
- [ ] achieve satisfaction with architecture fundamentals
- [ ] multiplayer
- [ ] collaborative map editor

### [**🎮 play engine demo now**](https://monarch-games.github.io/engine/)

- wasd and the mouse to fly around
- shift to sprint, c and space to sink and rise
- hold e key and click to place cubes
- remove them by looking at them and pressing x

### [**🔫 nanoshooter will be the first monarch game**](https://github.com/monarch-games/nanoshooter)

- we're making this 3d tank game to demonstrate the engine's capabilities
- this game is open source

### [**📦 npm install monarch-engine**](https://www.npmjs.com/package/monarch-engine)

- build your own games on monarch-engine
- written in typescript
- can work with any other engine (monarch supports [babylonjs](https://github.com/BabylonJS/Babylon.js) out of the box)

## engine development instructions

these are instructions for working on monarch engine itself —  
if instead you want to build your own game using monarch engine, you want to fork [nanoshooter](https://github.com/monarch-games/nanoshooter)

- install prerequisites
	- [git](https://git-scm.com/)
	- [node 10](https://nodejs.org/en/)
	- [vs code](https://code.visualstudio.com/)
- remember to set up your github account [ssh keys](https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/)
- clone and build the engine project
	- `git clone git@github.com:monarch-games/engine.git`
	- `npm install`
- start local dev server and launch the demo
	- `npm start`
	- launch [http://localhost:8080/](http://localhost:8080/)
- install the [babylon blender exporter](https://github.com/BabylonJS/Exporters/tree/master/Blender) to create 3d assets

### command line routines

- `npm install`  
	*"production build"*  
	optimal production build and a test run  
	also installs any missing project dependencies  
	*available as task in vs code*

- `npm run build-debug`  
	*"debug build"*  
	produces fat debuggable bundle (source maps included)  
	*available as task in vs code (ctrl+shift+b)*

### technical goals, future features, notes

- **asset preview system**  
	load engine demo page with `#preview="assets/powercube.babylon"`  
	and it will load the asset into a preview scene  
	should be easy to implement in downstream games like nanoshooter

- **user-interface system**  
	2d overlay ui, slideout panel  
	for settings menus, map editor functionality, and more  
	powered by preact components and mobx stores

- **universal game settings**  
	game settings like mouse sensitivity, volume, resolution, anything like that

- **basic prop editing**  
	mobile-friendly interface for adding and deleting various props  
	ui work involves selection from a listing of available props  
	and organizing their proposal meshes

- **enhance state entry definitions**  
	use observable mobx store classes and [mobx serializr](https://github.com/mobxjs/serializr)

- **manager method to add an entity** to the game world  
	returns a promise which resolves with the replicated entity instance

- **webrtc datachannel multiplayer collaborative editing**  
	rig up a shared multiplayer game state  
	allow multiple editors to fly around and see each other  
	represented by a flying cone or something  
	no work on data optimization yet, just sending large json chunks

- **draw up an 'engine theory' diagram**  
	to make clear how monarch is lean, flexible, extensible

---
_Source: https://npm.io/package/monarch-engine · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
