Unreal.js: Javascript runtime built for UnrealEngine 4
Switch branches/tags
Nothing to show
Clone or download
crocuis Merge pull request #219 from keicoon/master
Add lib script 'load npm'
Latest commit 9348b31 Jul 22, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Examples Add lib script 'loadnpm' Jul 16, 2018
doc/images gif updated Apr 10, 2016
.gitattributes initial commit Nov 20, 2015
.gitignore Fix for Engine update (4.17) Aug 25, 2017
.gitmodules new layout Jul 23, 2016
LICENSE Update LICENSE Aug 17, 2017
README.md Update README.md May 18, 2018

README.md

star this repo fork this repo

Unreal.js

Unreal.js is a plug-in which brings V8-powered Javascript into UnrealEngine4.

Installation

  • Search unreal.js on the epic marketplace
  • Manual installation
  1. git clone https://github.com/ncsoft/Unreal.js-core <YourProject>/Plugins/UnrealJS
  2. cd <YourProject>/Plugins/UnrealJS && ./install-v8-libs

Features

  • Powered by latest V8 (ES6)

  • CommonJS modules

  • Full access to the whole UnrealEngine API

  • Free to subclass existing classes including blueprint

  • Live reload

  • Communicate with outer world: REST(http), process(pipe), arraybuffer, ...

  • Bridge API for editor extension

  • Auto-completion for Visual Studio Code (auto-generated *.d.ts)

  • Debugging within Visual Studio, Visual Studio Code, WebStorm and all IDE which supports V8 protocol

  • Profiling supported by V8

  • Dedicated Javascript console on UnrealEditor

  • (Full) access to existing javascript libraries via npm, bower, ...

Dummy demo

Tutorials & documentation

License

  • Licensed under the MIT license
  • see LICENSE for details

Examples

2048

Springy

Editor extension

Create a new actor

let myActor = new Actor(GWorld,{X:10,Y:20,Z:30});
myActor.SetActorLocation({X:40,Y:80,Z:120});

Subclass an existing class

class MyActor extends Actor {
  properties() {
    this.MyProp/*EditAnywhere+Replicated+int*/;
  }
  RPC(x/*int*/) /*Server+Reliable*/ {
    console.log('This function is replicated',this.MyProp++);
  }
}
let MyActor_C = require('uclass')()(global,MyActor);
if (GWorld.IsServer()) { 
  new MyActor_C(GWorld);
}

Node.js like

let _ = require('lodash');
let kick = () => {
  console.log("Hello timer!",_.keys(this));
  setTimeout(kick,1000);
};
kick();