好的,所以我最终基于XNA写了自己的游戏引擎,现在我想知道还需要什么才能使它成为一个完整的引擎。
以下是引擎中包含的内容:
- 物理引擎(Farseer Physics)
- 粒子引擎(Mercury Project)
- 2D相机
- 输入处理
- 屏幕管理(菜单,暂停屏幕等)
- 精灵(动画,精灵表等)
- 还有XNA相关的声音。
我是否遗漏了对游戏引擎至关重要的任何内容?
好的,所以我最终基于XNA写了自己的游戏引擎,现在我想知道还需要什么才能使它成为一个完整的引擎。
以下是引擎中包含的内容:
我是否遗漏了对游戏引擎至关重要的任何内容?
你的做法有些本末倒置。
你的引擎中应该包含以下内容:
所有在你的第一个和第二个游戏中都出现了的代码。
首先,写一个游戏。不要写引擎,因为正如你所发现的,你不知道它应该包含什么或者如何设计。相反,先写一个游戏。
当你有了这个游戏之后,再写另一个游戏。然后,当你完成了那个游戏后,检查第二个游戏的代码。其中多少是从第一个游戏中重用的?
任何被重用的代码都应该被重构到一个单独的项目中。这个项目现在就是你的游戏引擎。
这并不意味着你不应该做规划,也不应该尽力写好的代码。但确保你正在朝着具体的目标努力,可以区分出好的实现和坏的实现。游戏的好的实现是指它能够正常运行、有趣且不会崩溃,所以你应该先写出这样的代码来实现这些目标。
作为引擎的好的实现?这就有些棘手了。渲染器的好的实现是什么?AI框架的好的实现又是什么?粒子系统的好的实现呢?最终,判断你是否有一个好的引擎的唯一方法是看它在实际游戏中工作得如何。因此,如果你没有游戏,就无法评估你的引擎。而如果你没有办法评估你的引擎,你也就无法判断你正在编写的任何代码是否真正有用。
为你的引擎选择一个主题或市场。如果你想做更多超越基本图形引擎的东西,你需要专注于引擎的市场,比如RPG、策略、益智、平台、动作或FPS(好吧,不是FPS)。
这将帮助你确定自己需要朝哪个方向发展,以便在不询问我们的情况下进一步增强引擎的功能。就像虚幻引擎可以做很多事情,但它最擅长的还是FPS游戏一样。同样地,你应该使你的引擎适合某个特定的兴趣领域,从而被用于那种类型的游戏玩法。
你可以让它比较通用,但要意识到,引擎越通用,编程的难度就越大,无论是时间上还是技能上。如果有更专门的平台可用,其他程序员也不太可能使用一款通用引擎(除非只有这款引擎可用)。或者他们会写自己的引擎,因为修改一个通用引擎和创建一个新的引擎的难度差不多。
还有几件事情:
以下是一些想法:
我认为您已经涵盖了2D引擎的一般要求。唯一我会在列表中遗漏的是:
此外,为了使开发过程更加简便:
您还可以在XNA现有内容的基础上添加另一层:
最后,您可以添加一些“即用型”着色器。也许可以从已停止开发的FaceWound(来自“Garry's Mod”开发者)中获取一些灵感。
这取决于游戏的类型,但通常需要一个良好的网络框架。
现代许多游戏,包括2D游戏,似乎都有某种形式的网络功能。
另一个好方法是制作一些游戏,然后您很快就会发现每个游戏都需要重复做哪些事情,然后再研究如何将其纳入引擎中。
3D加速应该在2D引擎中实现。
利用大多数人现在拥有的3D硬件,是获得2D游戏惊人性能的最佳方式...