Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 2D游戏引擎应该是什么?_C#_Xna - Fatal编程技术网

C# 2D游戏引擎应该是什么?

C# 2D游戏引擎应该是什么?,c#,xna,C#,Xna,好的,所以我在XNA的基础上写了我自己的游戏引擎,我只是想知道我还需要什么来制作一个完整的引擎 这是发动机中的内容: 物理学(法希尔物理学) 粒子引擎(水星项目) 二维摄像机 输入处理 屏幕管理(菜单、暂停屏幕等) 精灵(动画、精灵图纸) 还有XNA之类的声音 我是否遗漏了任何可能对游戏引擎至关重要的东西?3d加速应该在2D引擎中 使用当今大多数人拥有的3d硬件是为2D游戏获得惊人性能的最佳方式…以下是一些想法: 人工智能(可能只是简单的人工智能实用程序,比如) 保存全部或部分游戏状态(用

好的,所以我在XNA的基础上写了我自己的游戏引擎,我只是想知道我还需要什么来制作一个完整的引擎

这是发动机中的内容:

  • 物理学(法希尔物理学)
  • 粒子引擎(水星项目)
  • 二维摄像机
  • 输入处理
  • 屏幕管理(菜单、暂停屏幕等)
  • 精灵(动画、精灵图纸)
  • 还有XNA之类的声音

我是否遗漏了任何可能对游戏引擎至关重要的东西?3d加速应该在2D引擎中

使用当今大多数人拥有的3d硬件是为2D游戏获得惊人性能的最佳方式…

以下是一些想法:

  • 人工智能(可能只是简单的人工智能实用程序,比如)
  • 保存全部或部分游戏状态(用于稍后暂停和重新启动或保存高分)
    • 还有几件事:

      • 路径查找-对人工智能非常有用
      • AI-可能-取决于您希望引擎的通用性
      • 高分
      • 重播-让高分更有趣,因为你可以观看高分
          • 动画框架,这样你就可以说:拿着这个精灵,朝这个方向移动,用这个速度,加速度等等沿着这个路径移动
          • 基本图形用户界面系统。不要实现一个完整的窗口,但是一些基本的东西,比如指针和按钮,等等——保持它的基本性
          • 用于显示FPS、精灵数量等的调试组件

          还有一件好事是制作一些游戏,然后你会很快看到你在每一场游戏中重复做的事情,然后研究如何将这些事情输入引擎

          发动机的主题或市场。如果你在做一些基本图形引擎之外的事情,你会希望专注于你的引擎的市场,比如RPG、战略、拼图、平台、动作或FPS(好的,不是FPS)

          这将有助于您在不询问我们的情况下为发动机进一步改进指明您需要走的方向。一个引擎,比如说,虚幻引擎,可以做很多事情,但它最擅长的是它的FPS游戏。同样地,你应该调整你的引擎,使之适合特定的兴趣领域,因此适合这种类型的游戏


          您可以将其概括到一定程度,但要意识到,您的引擎越通用,编程就越困难,无论是时间方面还是技能方面。如果有一个更具体的平台可用,其他程序员也不太可能选择通用引擎(除非这就是全部)。或者自己编写,因为修改通用引擎与创建自己的引擎一样困难。

          平铺重复工具。允许用户添加/创建平铺,并操纵边缘以形成平滑的重复模式。

          这取决于游戏,但另一件经常需要的事情是一个良好的网络框架


          许多现代游戏,包括2D游戏,似乎都有某种形式的网络。我想您已经介绍了2D引擎的一般要求。在这个列表中,我唯一遗漏的是:

          • 图形用户界面库
          此外,为了简化开发过程,请执行以下操作:

          • 脚本引擎(LUA、C#脚本,…)
          • 动态刷新的资产(请参阅)
          您还可以在XNA现有内容的基础上添加另一层:

          • 一个相当简单的网络/大厅实现
          • 对多个控制器的更抽象的处理(在游戏过程中退出/退出,如see Resident Evil 5 Coop)-可能基于事件

          最后,您可以添加一些“ready2use”着色器。也许可以从停产的“Garry's Mod”开发者那里得到一些启发。

          良好的碰撞检测非常有用。如果您有效地实现它,它将真正减少每帧所需的时间。除此之外,在我的引擎(Pygame)中,我有一种方法可以将主屏幕分为若干子屏幕,我发现这很有用。

          根据目标游戏类型,包括带有节点和边缘注释的导航图。(适用于许多游戏,但不适用于使用2D图形引擎制作的令牌侧滚动条)

          • 用于生成它们的组件(通过泛洪填充算法)
          • 确保包含所有主要的路径查找/规划算法(A*/Dijkstra/等)来遍历这些图
          这样做的陷阱是,您必须定义引擎的“映射”是什么,这可能会限制引擎的用户

          相关事项:

          • 基于位置的触发器(玩家进入一个看不见的圆圈,然后发生了一些事情——排队剪切场景、开始伏击等)。我想说的是为触发器提供一个基类,并实现一些基本类来展示它是如何完成的(例如,武器拾取等)
          • 一些游戏引擎实现联网(尽管这是“xna”的一部分)

          最有用的东西是可以轻松使用引擎的工具。也许可以使用你的引擎来创建工具。我相信这样你会发现很多缺陷。

          简单的像素完美的碰撞检测。不是法瑟物理学。简单的绘图例程,如绘图线、绘图圈等。

          嗯。此列表是一个“内部”列表。打造卓越的引擎就是打造卓越的“外部”列表。 以UE3为例——它之所以出现,是因为它有很好的工具。您需要工具来创建世界,创建最佳的资源包(它也应该在内部列表中;-)、冲突对象规范等。
          另外,要增加你应该决定技术水平。您可以选择简单的精灵,也可以想要奇特的效果(因此需要着色器,并且需要基础设施)

          您正在以颠倒的方式接近它

          你的英语应该是什么