# OpenGL State-of-the-art 3D engines accessible to .Net developers?

This topic is 2051 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I'm doing everything with .Net. I'm using SharpDX as the basis of my learning right now and worrying about learning OpenGL at a later date. One of my friends criticized my approach saying I should be using an existing 3D engine rather than trying to write this stuff myself from the ground up. Now of course he is right with regards to game programming in general, though I actually want to write 3D engine code as one of my skills.

Let's say I decided I want to jump in and just get going making a really great looking game with a huge amount of flexibility and power? Yeah I guess I could use Unity, though... I wish there were other options. I know there's Axiom? Though I've heard people dismissing it for various reasons.

Those over in C++ land have access to amazing engines like CryEngine 3, Unreal Engine 3 and many others. What choices do I have as a .Net developer? Don't get me wrong, I am continuing my path learning 3D programming with DirectX (and later, OpenGL) but I'd love to know if, as far as existing 3D game engines go, I'm basically restricted to Unity or if there are any other really good, modern, state-of-the-art options I can choose from. They don't need to be free, but they should at least be financially accessible to one-man indie developers.

Edited by axefrog

##### Share on other sites

Well Unity is probably your best option, although one must never forget about p/invoke. Most C++ code can be accessed from .Net with a little extra work but there will also be a slight performance loss. SharpDX uses p/invoke to access the DirectX APIs from .Net, but the performance loss is very minor because it's generated directly from the DirectX SDK header files. C++ CLI might be another option for you, this would allow you to develop your game in C++ and still have the power of .Net framework and the Common Language Infrastructure.

I've asked myself this same question many times. Eventually I ended up developing my own 3D engine for the programming experience. Every 3rd party game engine has it's pros and cons, it's really all about preference. I couldn't find a game engine that suited my needs so I had to write my own.

##### Share on other sites

Not completely sure what you mean by .NET...I assume you mean being able to code mixed cpp, c# and visual basic? I'm not an expert but I would be a performance hit for that kind of freedom. Although it would definitely make it easier for people to collaborate, maintain and re-use code. You pay a price for that.

I tried the game engine route in early college (Torque Game Engine and Terathon C4) but stopped because I didn't have the skills/experience to understand just what the hell the graphics engine code was doing. I realized I would never be able to make anything truly unique or special without understanding how the graphics worked. Hence I have jumped into XNA and OpenGL to try to write my own engine since then. So yeah...I kind of get where you are coming from when you say you want to build it from the ground up.

Anyway check out Terathon C4...it has come a long way. Although you'll have to stick to CPP in that case...but it's still relatively cheap.

Edited by timothyjlaird

##### Share on other sites

If you're a beginner, you don't really need to be pushing the state of the art. That's probably more harmful than helpful...

If you want to have the ability to make graphics engines as a skill, then it's a really good idea to use a lot of them first. You don't want someone who's never driven a car to be designing one, or someone who doesn't drink coffee working as a barista!

Many open source engines written in languages like C/C++ will often have "bindings" to other languages, such as C# (much how SharpDX is a C# binding for C++ D3D), e.g.

http://horde3d.org/wiki/index.php5?title=Language_Bindings

If you've got the money, you certainly could be using CryEngine with C#, BTW

##### Share on other sites

Well Unity is probably your best option, although one must never forget about p/invoke. Most C++ code can be accessed from .Net with a little extra work but there will also be a slight performance loss. SharpDX uses p/invoke to access the DirectX APIs from .Net, but the performance loss is very minor because it's generated directly from the DirectX SDK header files. C++ CLI might be another option for you, this would allow you to develop your game in C++ and still have the power of .Net framework and the Common Language Infrastructure.

I've asked myself this same question many times. Eventually I ended up developing my own 3D engine for the programming experience. Every 3rd party game engine has it's pros and cons, it's really all about preference. I couldn't find a game engine that suited my needs so I had to write my own.

When I understand something deeply, I'm more productive, I enjoy the work more and I'm able to produce the results I actually want a lot more readily than when I'm tied to someone else's framework. Not to mention I enjoy the task of getting the visuals rendering exactly right. So yeah, learning the 3D rendering skills myself is what I'm doing. I understand that P/Invoke is possible with most 3D engines but there's a lot of screwing around and intermediate layering that needs to be developed to bridge the gap between managed and unmanaged code and that's what I was hoping to avoid if I look at any 3D engines.

Not completely sure what you mean by .NET...I assume you mean being able to code mixed cpp, c# and visual basic? I'm not an expert but I would be a performance hit for that kind of freedom. Although it would definitely make it easier for people to collaborate, maintain and re-use code. You pay a price for that.

I tried the game engine route in early college (Torque Game Engine and Terathon C4) but stopped because I didn't have the skills/experience to understand just what the hell the graphics engine code was doing. I realized I would never be able to make anything truly unique or special without understanding how the graphics worked. Hence I have jumped into XNA and OpenGL to try to write my own engine since then. So yeah...I kind of get where you are coming from when you say you want to build it from the ground up.

Anyway check out Terathon C4...it has come a long way. Although you'll have to stick to CPP in that case...but it's still relatively cheap.

Not sure how you don't understand what I mean by .Net? C# also entails using the CLR and related managed libraries which are compiled to the .Net runtime. So when I say .Net, i mean managed code and in my case, with a focus on C#. Visual basic makes me want to puke. Mixing in C++ defeats the point of the exercise which is to stick to managed code (yes, I know I could use managed C++) but also I don't know C++ very well and that's yet another thing I'd need to learn.

If you're a beginner, you don't really need to be pushing the state of the art. That's probably more harmful than helpful...

If you want to have the ability to make graphics engines as a skill, then it's a really good idea to use a lot of them first. You don't want someone who's never driven a car to be designing one, or someone who doesn't drink coffee working as a barista!

Many open source engines written in languages like C/C++ will often have "bindings" to other languages, such as C# (much how SharpDX is a C# binding for C++ D3D), e.g.

http://horde3d.org/wiki/index.php5?title=Language_Bindings

If you've got the money, you certainly could be using CryEngine with C#, BTW

• 16
• 11
• 23
• 42
• 75