Skip to content
This repository was archived by the owner on Oct 19, 2020. It is now read-only.

USharp History

pixeltris edited this page Dec 5, 2018 · 3 revisions

This is unimportant but someone may find it interesting

The USharp github repo was created on 28 Sep 2018. I have worked on a few C# related UE4 projects (on / off) prior to USharp which have existed in various forms.

CSharpPlugin

Created Oct 3 2014. This project was somewhat similar to USharp but it only exposed a small subset of UObject related functions and didn't have a functional code generator. It was useful for accessing the UObject reflection system but not a lot beyond that.

CSharpPlugin.zip

NativeSharp

Created Oct 6 2014. This was an attempt to create a C++ parser good enough to parse UE4 header files. I forget what the original goal of NativeSharp was but I imagine it was something like SWIG. The parser wasn't very good and at some point I stopped working on it after realising it wasn't really feasible to wrap most classes/structs in the way I intended.

NativeSharp.zip

BlueSharp

Created ??? (2016/2017?). I'm not sure when I made this project (I moved the files around and the dates got trashed). This project was going to use Roslyn to parse C# and generate blueprint node graphs.

  • I spent some time creating a parser for the text version of node graphs but realised there were various limitations when working with node graphs in a text based form.
  • After trying the text based approach I decided to interop with the C++ blueprint graph functions instead.
  • I wrote a C# code generator in C++ to expose UE4 functions / properties to C#.
  • After creating the code generator and exposing a few blueprint graph functions I (for whatever reason) decided to go in the direction of USharp instead. I took the C++ code generator and ported it over to C# to start making USharp.

BlueSharp.zip

USharp

Created ???. I renamed CSharpPlugin to USharp at some point between 2014 and 2016. I have a UE 4.12 version of USharp which means USharp existed around June 2016 - Sept 2016 (at least). I remember porting the code generator over to C# shortly after I finished the C++ code generator in BlueSharp (the 4.12 version has the C# code generator) so 4.12 is probably roughly around when I stopped working on BlueSharp and started working on USharp.

  • I worked on USharp on / off for a while, adding features like AssemblyRewriter (based on MonoUE's MonoAssemblyProcess tool)
  • Somewhen late 2017 I had AssemblyRewriter working and code set up so that I could expose C# types to unreal
  • Somewhen early 2018 I worked on hotreload (this ended up taking quite some time as I tried getting hotreload to play nicely with blueprints. I ended up switching between using UClass / UBlueprintGeneratedClass a couple of times and eventually settled with UClass due to limitations in UBlueprintGeneratedClass). Originally it was going to be designed so that C# could inherit from Blueprint which could inherit from C# and so on, but after moving away from UBlueprintGeneratedClass that is no longer possible.
  • I stopped working on USharp for whatever reason on May 22 2018 and didn't touch it again until Sep 27 2018.
  • After not working on it for a long time I decided to put it on github in a broken state (I had finished up hotreload but the code generator got broken some-when along the way).

UnrealEngine.Runtime (unknown version, maybe 4.12).zip
USharp 4.12.zip
USharp 4.18.zip
USharpBackup_12_02_2018.zip
USharpBackup_13_03_2018.zip
USharpBackup_19_04_2018.zip
USharpBackup_22_05_2018.zip

UE4PluginCompiler.zip

If you compare USharp and CSharpPlugin they aren't that different. I should have persisted with the original version but at the time I knew little about UE4 and created CSharpPlugin to explore the reflection system.

Clone this wiki locally