Are there other scripting languages in between C++ and Blueprints? Any thoughts on existing ones?

I did this research years ago, and I was curious to see how things are today.

Currently, I’ve “discovered” these projects:
SkookumScript: https://www.unrealengine.com/marketp…/skookumscript
UnrealEnginePython: GitHub - 20tab/UnrealEnginePython: Embed Python in Unreal Engine 4
UnrealJS: https://www.unrealengine.com/marketp…oduct/unrealjs

But as far as I can see, none of them are really suitable for real game development.

**SkookumScript **seems almost abandoned, there is not even a UE 4.25 version.
Pretty much the same for UnrealEnginePython, which was kind of abandoned when Epic Games decided to implement they’re own Python “thing”, but sadly it only works for in-editor stuff.
**UnrealJS **seems actually promesing, but it doesn’t have 4.25 support neither.

What are your thoughts in this regard? Do you actually know of any developer that uses any of these? Do you know any other plugins or solutions for the mid-layer language problem?

I truly think that the main thing that Unreal Engine is missing is a mid-layer scripting language. It would speed up development A LOT!

That’s a very interesting topic. One year ago Tim Sweeney himself responded on a Reddit thread about that: https://www.reddit.com/r/unrealengin…dering_adding/

There is also a studio who made animpressive AngelScript plugin for UE4, there seems to be a good documentation available, but the devs themselves recommend to be careful before using it in production, as they cannot guarantee future support.

About those you list, if I had to choose I would be more inclined toward UnrealJS, as it’s NCSoft behind it. So, serious company, using the engine for its own projects…should be maintained well enough.

Thanks a lot for your input! I’ve just read the anwsers from Tim, that’s really interesting. I’m sure that a scripting language will be introduced eventually, but I’m also sure that it will take some time (I’m betting we’ll have to wait for UE 5). Having something to work on right know would be awesome.

Also, I’ve read that the developers of the SookumScript have been acquired by Epic Games roughly the same month that Tim Sweeney started to talk about the scripting language in between. Coincidence? :smiley:

That’s awesome, didn’t know about this one. I’ve just skimmed a bit through their website and documentation, which is actually pretty good! But the actual donwload page from GitHub seems to be removed somehow, or at least I didn’t find a clear way to download it all. Plus, having to compile the Editor from source is not something I would be willing to do (probably)… still very nice, I’ll look into it more!

Yeah, that’s what I was thinking. But I do hate javascript (and Tim Sweeney agrees)! :smiley:

I seem to remember seeing where the **SkookumScript **guys were absorbed(hired) by Epic.

If you want a lightweight runtime that doens’t have a bunch of “dangerous” external I/O, yet looks like Python, then Starlark might be an option.
It wouldn’t be exceptionally hard to build a binding between Starlark and UE reflection (basically, using the Blueprint interface.)
Starlark is also nice because it looks like Python, it has wide-ish support (Bazel, Buck, Delve, and other tools use it,) and it’s designed for embedding, rather than designed to do everything itself. It’s even thread capable, within reason, which is more than you can say about Python proper.

That being said, I think that a text representation of blueprint graphs that is diff-able, would be a bigger help. Worst case, just edit the text directly. XML with good linebreaks would be a start, but perhaps something even better could be done.

Yeah exactly, who knows if we’ll be seeing a custom version of the SkookumScript officially inside UE?

I’ve actually never thought of implementing the middle layer myself. I don’t know this Starlark, I’ll look into it, but I don’t know if I’m brave enough to go that path :smiley:

But yeah, the idea of Blueprint is nice and all, but I really can’t think of using them for a “real” project. Too hard to maintain graphs!

That said, I’ve found 2 other plugins that implement a scripting language, Lua in this case. Both are frequently updated, it seems.

This one is LuaMachine: GitHub - rdeioris/LuaMachine: Unreal Engine Plugin for Lua APIs implementation
It’s (by choice) not really integrated with Unreal system. It kind of works with a “need-to-know” basis, meaning that you have to pass things from Unreal that the Lua script can use, and you can do the opposite.

Then there is *slua-unreal: ***GitHub - Tencent/sluaunreal: lua dev plugin for unreal engine 4 or 5
This one has a less clear documentation, but seems powerful.

I didn’t have the time to look into them much yet, but if you know them share what you think! :smiley:

Interesting topic. I look at this from time to time. I really want to make a game where you can program objects. UnrealJS is where I’m currently heading.

Is there a particular problem you’re trying to solve?

Back in the UE3 days Unrealscript was great until you had to go digging through the middle layer and back into the engine. It’s not this amazing panacea everyone dreams of.

I think Tim is experimenting with it again though - https://twitter.com/TimSweeneyEpic/s…43671877341184

Many studios implement Lua.
It’s very easy to work with Lua in C++;

There’s a few things that I don’t like in Lua tho, so I have been working on my own compiler for a custom language I will design for my personal game project.

I want players in my game to code their own logic scripts, so I want a syntax easy to understand and specifically built for the Unreal Engine with both in-editor static compiler and optional runtime script compiler (for the game);

My goal is to implement something that feels like BlitzBasic for players and/or Blueprint scripting (with the “Magic Nodes” thingy):

And of course EPIC is working on something for us as well, so who knows, maybe something great is announced for Unreal 5! :smiley:

This sounds really interesting Bruno. How is the progressing going? I thought it using the UnrealJS plugin but with Typescript as the exposed language.

I am not rushing, have no clue when or IF it’s going to be usable. I’m doing it for the learning experience.

Wow, that’s real magic! :smiley: I didn’t know about that, it seems actually awesome. Not truly scripting, but can be really useful for faster iteration.

In particular, I can see myself using this for managing UMG widgets, which I find particulary tedious to work with in C++ and they’re complexity level is suited for Blueprints.

Not really, at the moment I’m actually developing something that requires C++ anyway, but I’m planning ahead for future additions.

Seeing that you’re the creator of Magic Nodes (congrats by the way!), I’m very curious to see what you’ll come up with!

For me, I can live with difficult syntax, but the language has to be strongly typed, otherwise I get crazy (who said javascript?).

There is also GitHub - jmgomez/NimForUE: Nim plugin for UE5 with native performance, hot reloading and full interop that sits between C++ and Blueprints. This allows you to do common UE workflows like for example to extend any UE class in Nim and extending it again in Blueprint if you wish so without restarting the editor. The final aim is to be able to do in Nim what you can do in C++

With a WIP for supporting virtual functions which allows to really extend UE.