好的,所以我最终编写了基于XNA的自己的游戏引擎,我只是想知道我还需要什么来制作一个完整的引擎。
这就是引擎中的内容:
我是否遗漏了对游戏引擎至关重要的任何内容?
答案 0 :(得分:58)
你正以颠倒的方式接近它。
您的引擎应该包含以下内容:
所有代码在您的第一个和第二个游戏之间变得很常见。
首先,写一个游戏。不要写引擎,因为,正如您所发现的那样,您不知道应该包含什么,或者它应该如何设计。改为写游戏。
一旦你有了这个游戏,写下另一个游戏。然后,当你这样做时,检查第二个游戏的代码。从第一场比赛中重用了多少?
任何被重用的东西都应该重构成一个单独的项目。该项目现在是您的游戏引擎。
这并不意味着您不应该计划,或者不应该尝试编写好的代码。但要确保你正在努力实现一些具体的东西,你可以从一个坏的方面讲述一个好的实现。游戏的良好实现,是有效的,有趣的,并且不会崩溃。编写代码以首先实现这些目标。
引擎的良好实现?那太棘手了。什么是渲染器的良好实现?一个AI框架?粒子系统?最终,确定你是否拥有一个好引擎的唯一方法是看看它在实际游戏中的效果 。因此,如果您没有游戏,则无法评估您的引擎。如果您无法评估引擎,则无法判断您编写的代码是否真正有用。
答案 1 :(得分:19)
引擎的主题或市场。如果您正在做基本图形引擎以外的任何事情,您将需要专注于您的引擎市场,如RPG,策略,拼图,平台游戏,动作或FPS(好的,不是FPS)。
这将帮助您指明自己需要的方向,以便在不询问我们的情况下进一步增强引擎。像虚幻引擎这样的引擎可以做多件事,但它最常做的就是为FPS游戏制作它。同样,您应该定制引擎以使其适合特定的感兴趣领域,因此可以选择适合该类型的游戏玩法。
你可以把它变得一般,但是要意识到你的引擎越普遍,编程就越难,时间和技巧都是明智的。如果有更具体的平台可用,其他程序员也不太可能选择通用引擎(除非就是这样)。或者只是编写自己的,因为修改通用引擎与创建自己的引擎一样困难。
答案 2 :(得分:12)
还有一些事情:
答案 3 :(得分:6)
一些想法:
答案 4 :(得分:5)
我认为你已经涵盖了2D引擎的一般要求。我唯一想念的就是:
还可以简化开发过程:
您可能还会在XNA的现有内容之上添加另一个图层:
最后,您可以添加一些“ready2use”着色器。也许从已停产的FaceWound(来自“Garry's Mod”开发者)中获得灵感。
答案 5 :(得分:2)
这取决于游戏,但通常需要的另一件事是良好的网络框架。
许多现代游戏,包括2D游戏,似乎都有某种形式的网络。
答案 6 :(得分:1)
3D加速应该在2D引擎中。
使用目前大多数人拥有的3D硬件是获得2D游戏惊人性能的最佳方式......
答案 7 :(得分:1)
同样好的一点是制作一些游戏,然后你会快速看到你为每个游戏重复做的事情,然后研究如何将它带入引擎。
答案 8 :(得分:1)
良好的碰撞检测非常有帮助。如果你有效地实现它,它确实减少了每帧所需的时间。除此之外,在我的引擎中(对于Pygame)我有一种方法可以将主屏幕分成许多子屏幕,我觉得这很有用。
答案 9 :(得分:1)
简单像素完美碰撞检测。不是物理学家。简单的绘图程序,如drawline,drawcircle等。
答案 10 :(得分:1)
答案 11 :(得分:1)
很好的工作, 我们(我和我的一些朋友)实际上也在研究游戏引擎, 我们已经得到了你提到的所有内容,但我们还有以下内容。
祝你好运:)
答案 12 :(得分:0)
瓷砖重复工具。允许用户添加/创建图块并操纵边缘以获得平滑重复图案的东西。
答案 13 :(得分:0)
根据目标游戏类型,包括带有节点和边注释的导航图。 (适用于许多游戏,但对于使用2D图形引擎制作的令牌侧滚动器而言并非如此)
这样做的缺陷是你必须定义引擎的“地图”,这可能会限制引擎的用户。
相关事项:
答案 14 :(得分:0)
最重要的是,最重要的是包含轻松使用引擎的工具。也许使用你的引擎来创建工具。我相信你会发现很多这样的缺陷。
答案 15 :(得分:0)
庵。此列表是“内部”列表。制作伟大的引擎是为了制作出色的“外部”列表。 以UE3为例 - 它就在这里,因为有很棒的工具。您需要创建世界的工具,创建最佳资源包(它也应该在内部列表中;-)),用于碰撞对象规范等。 另外,要添加到Organiccat answer,您应该决定技术水平。您可以选择简单的精灵,或者您可以想要花哨的效果(因此需要着色器,并且需要基础设施)