我正在考虑为我的课程最后一年项目制作一个简单的游戏引擎.我希望它是模块化和可扩展的,这样如果我有时间,我可以添加新的部件.例如,我将制作一个完全独立于其他系统的图形引擎,一旦完成,我可以添加一个物理引擎等.我还想制作一个工具集来配合这个引擎.对于我想使用C#的工具,但我不确定库.我的问题是,如果我想要一个C#GUI程序,我可以引用一个用C++编写的库吗?如果我在C#中创建了一些库但想在C++游戏中使用它们,那么也会有任何性能问题.
我想尽可能地避免使用C++,我的经验表明,对于一个项目而言,使用C#或Java等开发时间要高得多.我的图形开发将在OpenGL中,这就是我所教的全部内容.我们只用C++完成了这个,但我已经看到像SharpGL这样的项目允许使用C#进行开发.这有什么性能问题吗?我不是在寻找一款速度极快的顶级图形游戏.显示我的引擎工作很可能很简单.我的引擎可能不会那么好,因为我只有一年而且我自己工作.
对此有任何建议将不胜感激.我仍然处于计划阶段,所以彻底改变我想做的事情并不会太多.我想要预先解决我可能遇到的任何重大问题.
谢谢
如果你能在一套轻松的目标下完成这项任务,你就可以参加一个伟大的项目.首先,您需要掌握范围:
你有多长时间在这个项目上工作?
有多少人正在从事该项目?
如果你自己只能制作一块"馅饼",你会挑选哪一块?使用它来建立一个工作计划,以确保如果你没有达到你想要的程度,你仍然有足够的工作能够使工作展示为一个伟大的项目.
游戏引擎是一项重大的开发任务.带有工具链的游戏引擎是一项巨大的开发任务.在很多方面,选择一个更小但更具挑战性的任务是更可取的,因为它显示了解决问题的更高层次的思考,这是学术界非常喜欢的 - 如果你是CS而不是[工程领域]那么两倍.由于您使用的是托管语言,因此您可能需要考虑的事项是:
以干净的方式表达游戏逻辑(游戏规则),以便从设计师 - >开发人员 - >测试人员提供有效且可靠的路径.如果你愿意,这绝对可以包括你描述规则的方式(自定义编辑器?代码API?DSL?)
游戏AI不缺少极具挑战性的问题.
物理和图形很有趣,我相信托管语言最终将用于这些领域,但你可能会发现自己在解决这些问题方面的能力有限.如果我现在要在这个领域工作,我会试着回答:"如果我可以使用托管语言来编写[graphics | physics]代码而不会损害性能,那么[语言|运行时]特性是什么样的改善所得节目的表现力,正确性,可维护性和可靠性的差异." 这已经过去了简单的垃圾收集和指针安全.