好的,所以我最终编写了基于XNA的自己的游戏引擎,我只是想知道我还需要什么来制作一个完整的引擎.
这就是引擎中的内容:
物理学(Farseer Physics)
粒子引擎(Mercury Project)
2D相机
输入处理
屏幕管理(菜单,暂停屏幕等)
精灵(动画,精灵表)
而XNA就像Sound一样.
我错过了任何可能对游戏引擎至关重要的东西吗?
你是以颠倒的方式接近它.
您的引擎应该包含以下内容:
所有代码在您的第一个和第二个游戏之间变得很普遍.
首先,写一个游戏.不要写引擎,因为,正如您所发现的那样,您不知道应该包含什么,或者它应该如何设计.写一个游戏.
一旦你有了这个游戏,写下另一个游戏.然后,当你这样做时,检查第二个游戏的代码.从第一场比赛中重用了多少?
任何被重用的东西都应该重构成一个单独的项目.那个项目现在是你的游戏引擎.
这并不意味着您不应该计划,或者不应该尝试编写好的代码.但要确保你正在努力实现一些具体的东西,你可以从一个坏的方面讲述一个好的实现.游戏的良好实现,是有效的,有趣的,并且不会崩溃.编写代码以首先实现这些目标.
一个好的引擎实现?那太棘手了.什么是渲染器的良好实现?一个AI框架?粒子系统?最终,确定你是否有一个好引擎的唯一方法是看看它在实际游戏中的效果如何.因此,如果您没有游戏,则无法评估您的引擎.如果您无法评估引擎,则无法判断您编写的代码是否实际有用.
您的引擎的主题或市场.如果您正在做基本图形引擎以外的任何事情,那么您将需要专注于您的引擎市场,如RPG,策略,谜题,平台游戏,动作或FPS(好的,不是FPS).
这将帮助您指明自己需要的方向,以便在不询问我们的情况下进一步增强引擎.像虚幻引擎这样的引擎可以做多件事,但它最常做的就是为FPS游戏制作它.同样,您应该定制引擎以使其适合特定的感兴趣领域,因此可以选择适合该类型的游戏玩法.
你可以把它变得一般,但要意识到你的引擎越普遍,编程越困难,时间和技巧都越明智.如果有更具体的平台可用,其他程序员也不太可能选择通用引擎(除非就是这样).或者只是自己编写,因为修改通用引擎与创建自己的引擎一样困难.
还有一些事情:
路径寻找 - 对AI非常有用
AI - 可能 - 取决于您希望引擎的通用程度.
高分数
重播 - 让高分更有趣,因为你可以真正看到它们.
一些想法:
人工智能(可能只是简单的AI实用程序,如寻路算法)
保存全部或部分游戏状态(以便稍后暂停和重新启动或保存高分).
我认为你已经涵盖了2D引擎的一般要求.我唯一想念的就是:
GUI库
还可以使开发过程更容易:
脚本引擎(LUA,C#脚本,......)
动态刷新资产(参见Nick Gravelyn的博客文章)
您还可以在XNA现有的东西之上添加另一个图层:
一个非常简单的网络/大厅实施
多个控制器的更抽象处理(在游戏会话期间DropIn/DropOut,比如看到Resident Evil 5 Coop) - 可能是基于事件的
最后,您可以添加一些"ready2use"着色器.也许从已停产的FaceWound(来自"Garry的Mod"开发者)中获得灵感.