pragmagic / nimue4

Nim language integration for Unreal Engine 4
Other
104 stars 6 forks source link

Plans on maintainance #30

Open HugoP707 opened 4 years ago

HugoP707 commented 4 years ago

I know this project has been abandoned since 2017, but i think it would be cool if you maintained at least for major updates, (even though not that much people may use it, it would be nice for nim to grow) if you are not willing to do so, could we get in contact so you could teach me how could i do it by myself?

Also, did you finish the game, i would love to see what nim is capable of.

Thank you

zetashift commented 4 years ago

I think they switched the engine for their game from UE4 to Godot, as it was better suited for 2D games. As for tips on how to update the bindings, @endragor might now more about this

endragor commented 4 years ago

We actually make 3D games. Godot was better suited for mobile at that point, not sure where UE4 stands now in that regard.

I'm afraid I don't have the time to update the bindings. Getting them up to date with latest version of the engine was mostly about updating the wrapped APIs in case there were breaking changes.

Also, the bindings are quite hacky in general, because UE4 doesn't provide built-in ways to integrate other native languages. So internally these binding rely on .emitting C++ code compatible with UE4. But it did work to some extent, the main problem is that you had to manually create wrappers for all the engine APIs you wanted to use.

HugoP707 commented 4 years ago

hmm, shame on me, at least some references for creating cpp wrappers or to your game?

TheWitheredStriker commented 3 years ago

Also, the bindings are quite hacky in general, because UE4 doesn't provide built-in ways to integrate other native languages. So internally these binding rely on .emitting C++ code compatible with UE4. But it did work to some extent, the main problem is that you had to manually create wrappers for all the engine APIs you wanted to use.

Sorry for the huge necropost, but could you elaborate a bit more on this? Does Nimue4, as it stands now, cover the whole UE4 API, or is this not the case and do I, as a user, have to create additional wrappers? If so, how do I do that? This looks like a very interesting project (even if it's abandoned), hence why I'd like to ask for some pointers.

endragor commented 3 years ago

It didn't cover the whole UE4 API. We gradually updated it to include the parts we needed.

You can inspect wrappers in the "modules" folder. For example, this is how wrappers for the classes within PlayerInput.h look like: https://github.com/pragmagic/nimue4/blob/master/modules/core/playerinput.nim

I used a modified version of c2nim to generate them, but it still required some manual cleanup (which probably could've been further reduced). Also, the wclass macro helped remove most of the boilerplate.

TheWitheredStriker commented 3 years ago

Alright, thank you for the clarification. I'll probably fork the project at some point in the future, once my skill in coding is sufficient in my experience, and continue development using your pointers. Glad to have heard from you.

jmgomez commented 1 year ago

Just in case someone else gets here, now this exists: https://github.com/jmgomez/NimForUE