C# or similar text based scripting in addition to blueprint

Hello,

I’ve been working in games for past 16 years primarily in level design, have worked in Source Engine, CryEngine, Lumberyard, id Tech 5/6, and UE2/3/4. (Note: I’ve never worked in Unity!) Over that time I’ve worked with C++, Lua, Flowgraph, C#, Perl, Python, DoomScript, Unreal 2 UScript, Kismet, and… JavaScript (Shudder).

Of all these scripting languages, I’ll have to say Blueprint is objectively one of my favorites to work with. I love that blueprint is object oriented, you can create your own data types, it has interfaces, it has pointers, replication, rpcs, etc. However, blueprint has a few limitations I really wish could be addressed:

  1. Exclusive Checkout - Almost every unreal 3+ project I’ve worked on has had this problem, but basically when a file is moved into a binary format most game teams typically set that file type to be an exclusive checkout in p4 or similar source control program. I can’t tell you how many times people have had to fight over the main player blueprint on various projects. This isn’t a problem just for logic, a lot of game teams keep logic in c++ and data tuning for actors in blueprint. So someone may want to go in and tune jump height from 1 to 1.2 but can’t for a day or two when someone is doing some major blueprint task or c++ task that requires updating the blueprint.

Plus, locked blueprint files can sometimes break build machines or package build if there’s any automated edits.

  1. **Merging/Diffing **- Similar to the above, in p4/git/beyond compare you can’t merge blueprints… This stinks. And while blueprints can be diff’d in the unreal editor, its much more difficult and less powerful than beyond compare or simply using p4.

  2. **Debugging **- The debugging tools are really neat but just can’t compare to stepping through code in Visual Studio and other IDEs. Plus, as powerful as blueprint is, anything complicated especially if replicated over the network is a bit scary to leave in blueprint code. Imagine heading up to cert and ending up with a crazy bug you have to debug in wirey blueprint. For my current and previous teams, it basically means we don’t ship or plan to ship blueprint code unless its pretty simple.

  3. Code Review - I don’t know of any code review tools that support blueprint, but c# is supported by many of the most popular tools. Blueprint is very powerful, you’re basically coding, and as you write more powerful code you should be reviewing it so you’re not damaging your project or introducing crazy bugs.

  4. **Text Based Editing vs Visual Editing **- This is maybe more of a preference, but doing math in blueprint is just harder & more time consuming than text.

  5. Powerful IDEs - The blueprint editor is pretty awesome, but there’s some even more powerful text IDEs, my preference would be visual studio + visual assist but I’m sure others support c#.

So based on all these problems I’d like to request a text based scripting option in addition to blueprint, ideally C#, and would like to suggest avoiding Lua/Perl/Javascript. My understanding is the reflection layer is already setup in UE4 so adding other scripting languages & supporting both wouldn’t be too difficult? If so please add this!!

You’re also likely to attract new customers from the Unity world who may not be comfortable moving to UE4.

Also I realize a lot of the above problems are solved in C++ but it has its own problems, primarily iteration speed due to compile times & accessibility. Lots of Unity/Game Devs/Gameplay Programmers are comfortable in C#/script languages but not C++. On my current and previous UE4 teams often times engineers still prototype in blueprint knowing things will be moved into C++ since its just much faster to get things working in blueprint.

Also not at all suggesting blueprint is replaced. Blueprint is still very accessible, great tool to attract beginners, and artists/designers who are less technical.

I see a team at microsoft started a c# plugin but being on a smaller game team we try to avoid taking third party plugins which may or may not be supported. Maybe its a jump start if Epic decides to take it on!

As always want to say UE4 is great, love working with it, and glad Epic continues to do great improvements to the engine & tools. After seeing all the amazing updates coming in UE5 was hoping we could see some updates in other parts of the engine too.

There’s plenty topics about this, don’t know why create another.

There’s 5 or more C# plugins for Unreal out there. If you are waiting for “official” C# you are going to wait for a long time because, the internal teams that work on games for Epic, they do not use C# and they don’t want to.

Unreal has a text-based development language: It’s called C++ and it has a dedicated button for “compile and hot reload.” It even comes with a great IDE called Visual Studio. The Visual Studio debugger is the best C++ debugger on the planet, bar none. It also has full browse information and jump-to-definition and everything. (Assuming you install the optional source files and symbol files.)
Use C++ with hot reload. It’s really quite good once you get in the groove of it.

Honestly couldn’t find another thread & figured there was one! Tried searching with google & the search tool here but had issues searching with # character.

It took me 2 minutes to find these:

Why is OP getting chided about other forum topics that address C#? The point is to express his particular views of how Unreal Engine could be improved with C# support, not knowing he MIGHT reiterate the points of others. Besides, those other threads could be deleted by OPs or admin for one ‘reason(s)’ or another, or go missing due to a technical issue. I surmise this is one aspect of why Unreal’s forums are not productive in influencing the devs to do something about certain issues, as people may not post their concerns (whether repetitious or not, or somewhere in between) because they see how others get rebuffed with fervor for doing so. Please try to create a more welcoming, and listening-oriented atmosphere in the forums. You aren’t the only one perusing, and if you feel it’s a hazard to click a new thread about something there’s other threads about, then don’t click it, or at least pull punches when attempting to discuss the merits of other threads versus the newly posted one.

/\ You talked and talked and didn’t contribute anything.
The counter made to his request is that EPIC don’t want to use C# on their internal projects (such as Fortnite).

If they don’t want to use it, they won’t add official support…
Please add argument to convince EPIC to embrace C# and use it so everyone can benefit as side effect.

His feedback so far is nothing new, please present proposal to make Epic Games change their mind.

Yep, it’s not ignoring or not listening to people :wink:

We got a request on adding C#, Rust or even JavaScript here almost every few weeks. It’s already well discussed. You can’t just drop .NET and make it work well with the rest of the engine…
Like this thread https://forums.unrealengine.com/unre…ming-languages

It’s extremely easy to suggest adding all possible scripting languages to the engine in 2 sentences. Actually adding C# to the engine properly would take years. Unity projects are based on C# and Unity spent years on actually making in performant, currently rewriting entire gameplay part to ECS/DOTS - which won’t be completed soon :wink:

Obviously, it’s a discussion forum, so we’re discussing it. It’s just weird to expect people to be excited about the new threads and applaud the OP like they discover something new and provide ideas that Epic didn’t think about. Yes, somebody else came and suggested JavaScript to the 3D engine… So what?

Discussing it here won’t influence Epic engineers anyway. Trust them, they do a lot of research and consider all the things that might be added or changed in the engine to improve development. They well know all pros and cons of adding already existing language, custom scripting language or text-based blueprints. Also, they probably got a reason to buy a team behind SkookumScript.
Most likely they work on (or at least research) some form of a scripting language to fill a gap between blueprints and Unreal C++ :wink:

Don’t let it get to you guys, just carry on and keep the suggestions coming. If people don’t voice their opinions then nothing will ever change.

You have a few alternatives but none of them are complete yet. There’s uSharp, which springs from MonoUE. Though uSharp is no longer maintained.

And then there’s the latest one which is called UnrealCLR. It looks promising but I haven’t tried it yet.

I don’t know if the OP was attempting to blast this forum with a new discovery. And I was merely stating that sometimes these types of posts are a target of condescension and quick dismissal. Agreed with [USER=“2626”]Stefan Lundmark[/USER] that suggestions, requests, and feedback need to get seen and listened to rather than eschewed as worthless in spite of other posts already being made. Otherwise, it’s not going to get the attention of the devs it could since it might be perceived as not frequently suggested enough to become a part of Unreal. However, I also see the point about requiring some forethought and consideration of the devs’ potential research and capabilities / knowledge of what’s required to add support for another language.

Trying to find a productive way to +1 to the request. Initially tried searching for a feature request method, I thought there might be a place to up/down vote requests. Closest thing I could find was the bug tracker but that’s for bugs. After searching around it seems like the recommended method is to post here.

Again tried to find another thread first, google yielded some results but none were tagged feature requests or in this sub forum. Tried searching here but I think the ‘#’ character kept resulting in errors. @EvilCleric Of all those threads posted above (much appreciated btw!) none of which were tagged feature request so maybe this might get attention? I’m optimistic but I don’t expect much, but I’ve been pleasantly surprised by Epic on more than one occasion. :slight_smile:

What prompted this was a friends of mine were discussing the issues in my original post and I was told Epic has considered it but not enough of their customers have made the request. Not sure if that is rumor or telephone game but it prompted me to look for similar requests and add to the requests. So yeah… long story short, +1 me!

I hear you but I don’t think Epic needs to be protected like this. They have the knowledge and they probably know how to prioritize. You’re polite about it (thanks man!) at least but some people just lose it…

That said, Tim has said in the past (on Reddit) that the chance for this happening is slim because of performance characteristics when unboxing and marshalling data between C++ and C#. Hopefully another good alternative comes out of this!

I see. I guess I’ll refrain from showing understanding or consideration then.

No need to get dramatic. I’m just saying they probably have the expertise to prioritize themselves.

They bought SkookumScript for a reason. And there is a partial Python implementation for accessing APIs in UE. So whatever new scripting language they are working on it might be based on those. Big software houses working on AAA titles with exclusive access to UE5 probably already can use that if it’s planned for UE5 (obviously they are under NDA so no one will tell anything until Epic Games releases everything to everyone)

No drama. Merely appending a vector to my new direction in how to approach the topic.

Don’t they want to for only pure ideological reasons ? :slight_smile:

Mhm, no? :wink:

The main reason is humanitarian if unreal had C # there would be no reason to use Unity and all unity people would be fired.