This combines ideas from pntr_app_starter with wamr to make null0 game-engine (native runtime & libretro core.)
Read the docs to find out more.
# build native-host
npm run build:native
# build example carts
npm run build:carts
# run local watching web-server with web host
npm start
# build web, native, and carts in parallel
npm run build
# delete all built files
npm run clean
# generate shared header for web/native host
npm run gen:host
# generate cart-header for C carts
npm run gen:cart_c
# generate cart-header for javascript carts
npm run gen:cart_js
# generate cart-header for nelua carts
npm run gen:cart_nelua
# generate API.md
npm run gen:api_docsTo distribute your game, you can either save your cart as main.null0, alongside the native runtime (and name that whatever you want) or you can embed it all in one executable:
# linux or mac
cat build/host/null0 build/carts/input_c.null0 > tester
# windows
copy /b build/host/null0.exe+build/carts/input_c.null0 tester.exe- ui
- tiled map/sprite support
- physics
- share wasm interpretors: all js carts should not have to include quickjs, for example
I'd like to support a lot of cart-languages. For these to be considered "complete", they should have a header that exposes all the functions/types in an ergonomic format, at least 1 example, and maybe a template-project.
compiled
- C
- assemblyscript
- nelua
- rust
- nim
- python
- go
- zig
- walt
- COBOL
- onyx
- grain
- never
- lisp
- Kotlin
- dart
- D
- R
- julia
- Haskell
- WAT
- Ada
interpreted
config graph
These can sort of define functions, as a kind of graph. Think of it as an interpretor.
- KDL
- YAML
- JSON
See THANKS for acknowledgement and thanks for all the great help & code I received to make this.
See LICENSE for licensing information.