UE4 + VXGI + Unreal.js + (Haxe or Typescript)

When looking at Armory3d from the 10,000 foot view… it’s about blender integration, quick click-and-run, a clean typesafe script language, and hitting lots of targets.

Another way to skin this cat, with a well polished engine, is UE4 + VXGI + Unreal.js + (Haxe or Typescript).

Obviously UE4 lacks Armory3d’s direct Blender scene loading, but Armory3d also lacks mountains of things UE4 has. I argue it is probably easier to add Armory3d’s Blender direct scene loading to UE4 than it is to add UE4’s capabilities to Armory3d.

Even without direct Blender scene loading, UE4 is pretty usable with Blender today. There are some Blender addons to help get content from Blender into UE4, (like UE4 Tools) and Blender for Unreal.

UE4 is obviously very polished, and the NVidia VXGI 2.0 branch is arguably the best VXGI out there… and Unreal is (as of June 2019) the only engine with shippable DXR real-time raytracing support.

Unreal.js supports anything that transpiles to Javascript, so that means both Haxe and Typescript are viable typed scripting languages… and Unreal.js already comes with a typescript definition file and bindings for all of the Unreal API.

While Unreal.js / V8 is single-threaded, UE4 is not, so the heavy lifting in the engine is already multi-threaded and optimized.

Here is an Unreal.js + Typescript setup procedure that explains how to get live hot-reloading.

Worth looking into…

It sounds like that is a good fit for your project. If the question is between TypeScript and Haxe then these are my thoughts:

  1. Typescript is more like JavaScript and is easier to skip typing certain objects if you don’t want to. You can still do dynamic typing in Haxe, but it makes you be more verbose about it, which is a good thing from a safety perspective.
  2. If there are already TypeScript definitions that would make that a bit easier, but there are a couple of projects on GitHub for converting TypeScript definitions to Haxe externs so that might not make a big difference between the two.
  3. Haxe is much more robust than TypeScript as far as I understand, and has very nice features like algebraic data types, abstract types, and macros that can come in really handy at times.
  4. I’ve heard some people say that Haxe compiles faster than TypeScript, but that is probably for large projects, and the TypeScript CLI’s watch command is rather convenient and does incremental compilation.