用 C++ 编写并暴露给 C# 还是直接用 C# 编写?
在编写自己的 2D(也许还有 3D)游戏引擎之前,我正在做一些研究。我在使用 C# 和 XNA 之前已经制作了一个引擎,但这次我想通过使用 opengl 等在 C++ 中制作我的新引擎来跨平台。
但是...我仍然想要 C# 的快速迭代时间并能够访问游戏引擎那里。
所以我这里有几个选择。
- 用 C++ 编写引擎和 CLI 包装器
- 直接用 C# 编写整个内容,而不是 C++
- 用 C++ 编写并使用 Mono 将 C# 代码/程序集加载到引擎中。
- 没有 C#
- ...可能是我没有想到的东西,
我认为我确实需要剔除、场景图形、矩阵计算、粒子系统等的速度。
优点和缺点是什么? 你有什么建议?
I am doing a bit of research before I am going to write my own 2D (and maybe some 3D) game engine. I have made an engine before using C# and XNA but I want to go cross platform this time by making my new engine in C++ using opengl etc.
But ... I still want the fast iteration times from C# and have access to the game engine there.
So I have a few options here.
- Write the engine and a CLI wrapper in C++
- Write the whole thing directly in C#, no C++
- Write in C++ and use Mono to load C# Code / Assemblies into the engine.
- No C#
- ... Probably something I didnt think of yet
I think I do need the speed for culling, scenegraph stuff, Matrix calculations, particle systems etc.
Wat are the Pros and Cons?
What do you suggest?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果你想要跨平台,你不能使用C++/CLI。除 Windows 之外的任何平台均不支持此功能。
话虽这么说,对于跨平台,我要么使用 C# with Tai,要么使用 C++使引擎成为一个库,并使用 Platform Invoke 从 C# 代码中“使用”该库。这将为您提供核心引擎 (C++) 所需的速度和控制,以及 C# 游戏设计的灵活性。
这提供了一种干净的跨平台方法来开发可以暴露给 C# 的游戏引擎。
If you want cross platform, you can't use C++/CLI. This isn't supported on any platforms other than Windows.
That being said, for cross platform, I'd either use C# with Tao, or use C++ to make the engine a library, and the use Platform Invoke to "use" the library from within your C# code. This will provide you the speed and control you need in the core engine (C++), with the flexibility of game design in C#.
This provides a clean, cross platform means of developing a game engine that can be exposed to C#.
ao 框架已死,请尝试 OpenTK 代替
Tao framework is dead, try OpenTK instead
优化的 C++ 代码将明显更快(在我的例子中,32 位的 ODE 快了 20%,64 位的快了 40%;64 位的 C# 比 32 位的 C# 慢,但那是另一篇文章了)。我会利用 C++ 库中的大量数学(积分、微分方程等)。
Optimized C++ code will be significantly faster (20% in my case for ODE's in 32-bit, and almost 40% in 64-bit; C# is slower in 64-bit than C# in 32-bit, but that's another post). I would take advantage of heavy math in a C++ library (integration, differential equations, etc).