Skip to content
Unreal.js: Javascript runtime built for UnrealEngine 4
C++ JavaScript C Other
Branch: master
Clone or download
This branch is 218 commits behind ncsoft:master.

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Build
Examples
Plugins/UnrealJS
doc/images
.gitattributes
.gitignore
LICENSE
README.md

README.md

Unreal.js

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

Features

  • Powered by latest V8 (ES6)

  • CommonJS modules

  • Full access to the whole UnrealEngine API

  • Free to subclass existing classes including blueprint

  • Web-dev like UMG (Jade, pseudo-css, pseudo-angular.js)

  • Live reload

  • Communicate with outer world: REST, 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, ...

Wiki

Install and play

  • Make sure you have UnrealEngine 4.10.2 canonical build.
  • Install git-lfs first to download *.umap, *.uasset properly. (https://git-lfs.github.com/)
  • After installing git-lfs, git clone https://github.com/ncsoft/Unreal.js
  • Download prebuilt UnrealJS plugin and unzip into Examples/Plugins/UnrealJS.
  • cd Examples/Content/Scripts && npm i to install node.js packages which are required to run examples.
  • Open Examples/JavascriptPlayground.uproject
  • Activate JavascriptConsole by clicking Windows - Developer Tools - JavascriptConsole.

Build

  • Download prebuilt V8 and unzip into .../Plugins/UnrealJS. (files are located in releases)
  • mklink /d /j Build/Plugins Plugins
  • mklink /d /j Examples/Plugins Plugins

License

Apache2

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();

Web-dev like

div
	span.full
		Button.full
			text {{text}}
		div.full
			Button.full(fn.on-clicked="inc()")
				text {{count}}
			Button.full(fn.on-clicked="add()")
				text Click button above!
	span
		text.yellow >
		EditableText(Binding.Text='text',
			fn.on-text-changed='text = ^arguments[0]',
			HintText="Your secret goes here")
		
	list.full(repeat='item in items',on-click="discard(item)") 
		HorizontalBox.small
			text.full {{item.key}}
			text.full {{item.value}}
You can’t perform that action at this time.