PopEngine
Realtime engine running high-level javascript, native on ios/mac/windows/linux/pi/hololens/magic leap/android/docker and web, all using the same JS code (via modules). With various levels of VR, AR, video encode/decode, camera, serial, i/o, gui, rendering, networking support. Used for XR apps, rich web apps, tools, CLI tools, SAAS, CV tools
Install / Use
/learn @NewChromantics/PopEngineREADME
Build Status
Pop Engine
Features
Not comprehensive, and in no particular order. But things this engine can do
- Build small enough for app-clips (down to 2mb, +2mb for poph264 and +2mb for PopCameraDevice - need to remove these dependencies)
- Swift integration (mac & ios apps now expected to boot from swift
@mainclasses) - Runs on pi's
- Runs on Nvidia Jetsons
- Runs in docker
importandexporthandler (preprocessor) to allow modules in native ios/mac JavascriptCore- Once ran v8, (mac, windows and linux) but currently dropped as it's a nightmare to build v8 and impossible to find static libs for every platform
- Runs chakra-core on windows (& hololens, at one time) for native JS
- Once ran charkracore (from repository) on mac and ios as proof of concept
- Same JS (via
Pop.) for webxr, openxr etc - Abstracted rendering system. Serialised "Render commands" (
SetRenderTarget,Drawetc) to aid network rendering, debugging etc - can even render same commands to metal and GL at the same time) - Heavily async internally (lots of work farmed to c++ threads)
- Uses native GUI apis where possible (interfaces with HTML, swift, win32)
- Websocket servers & clients (bar web which only has WS clients), UDP, TCP sockets, HTTP servers, clients etc
- Explicit native image handling/interfacing for seamless bytes<->canvas<->rendering integrations
Javascript Runtimes
- Windows & Hololens1
- Native JSRT/ChakraCore from windows SDK (NOT in sync with the chakracore github repository)
- IOS
- Native Javascriptcore
- OSX
- Native JavascriptCore (Debuggable in safari via https://developer.apple.com/documentation/security/hardened_runtime )
- v8 build from...
- chakracore from github repository
- JavascriptCore/webkit-jsonly from github repository
- Raspberry PI
- JavascriptCore from
apt-get install webkitgtk-4.0-dev
- JavascriptCore from
- Jetson
- JavascriptCore from
sudo apt-get install libjavascriptcoregtk-4.0-dev
- JavascriptCore from
- Android
- JavascriptCore from https://github.com/react-native-community/jsc-android-buildscripts v236355.1.1
Build Notes
-
Raspberry PI/Linux via visual studio
- https://docs.microsoft.com/en-us/cpp/linux/connect-to-your-remote-linux-computer?view=vs-2019
sudo apt install openssh-serversudo service ssh startsudo systemctl enable ssh- Setup Visual studio via
Tools->Options->Cross Platform->Connections - Magic_enum requires gcc9, jetson (and pi?) have
gcc --version7sudo apt-get install gcc-9doesnt exist yet- https://askubuntu.com/a/1140203
sudo apt-get install software-properties-commonsudo add-apt-repository ppa:jonathonf/gcc-9.0sudo apt-get install gcc-9 g++-9- make gcc/g++ default to new version
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9
-
Osx
- Install engine package dependencies (PopH264, PopCameraDevice, PopVision) via our published packages via npm (with the github repository)
- Modify
PopEngine.Package/.npmrcto changeYOUR_AUTH_TOKENinto your github auth token with access to NewChromantics packages (ask graham@newchromantics.com). - Do not commit this token. Github will spot it and revoke the token for security.
- run
cd PopEngine.Package && npm installto download the packages - run
ln -s node_modules/@newchromantics/ ../Libsto make a symbolic link to the packages in the correct (/Libs/) directory
-
Linux(raspi buster) via VirtualBox + VSCode
- Install
remote-sshinto vscode - Make sure SSH-Server is installed (default installed in raspbi buster) Install
ssh-serveron linux;sudo apt-get install openssh-server - Enable SSH server (default disabled)
sudo raspi-configand enable from interface options - Connect with default
pi@raspberry.localby pressingF1and typingRemote-ssh: connect to host(lovely ux) - Updated GCC if
gcc --versionis less than 9 (See above). (Raspian currently default 8)- gr: the
jonathonfroutine isn't working. sudo apt-install g++-9installs...clang-9but notg++-9. There doesn't seem to begcc-9still.
- gr: the
- Install
GitHub Actions Notes
If you are getting git checkout errors on self hosted runners ssh in and manually delete the repo then restart the workflow
Edit test
Related Skills
openhue
347.0kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
347.0kElevenLabs text-to-speech with mac-style say UX.
weather
347.0kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.6kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
