Architecture 塔防游戏:他们如何';重新制作?

Architecture 塔防游戏:他们如何';重新制作?,architecture,game-engine,Architecture,Game Engine,我做了一些研究(大约有一个该死的小时),但对于这些塔防游戏是如何制作的却相对空白。一般来说,我认为如果我了解TD游戏中的某些情况是如何处理的,我可以很好地了解其他形式的android游戏。我有几个一般性的问题,希望你们这些聪明的人能给我一些见解,或者至少给我指出一些我可以得到一些信息的地方 如何处理路径?我唯一能做的假设是,实际路径被绘制为背景图像,敌人被绘制为常规图像(可能以较快的速度重新绘制以创建动画?),而他们转向的点只是屏幕上的坐标。。。我相信它一定比那更复杂 考虑到我的假设是在#1的大

我做了一些研究(大约有一个该死的小时),但对于这些塔防游戏是如何制作的却相对空白。一般来说,我认为如果我了解TD游戏中的某些情况是如何处理的,我可以很好地了解其他形式的android游戏。我有几个一般性的问题,希望你们这些聪明的人能给我一些见解,或者至少给我指出一些我可以得到一些信息的地方

  • 如何处理路径?我唯一能做的假设是,实际路径被绘制为背景图像,敌人被绘制为常规图像(可能以较快的速度重新绘制以创建动画?),而他们转向的点只是屏幕上的坐标。。。我相信它一定比那更复杂

  • 考虑到我的假设是在#1的大致范围内,目标是如何处理的?射击动画是如何处理的?例如,发射箭头的塔是否实际创建了一个箭头实体,该箭头实体会移动到预定的目的地,一旦到达该目的地,就会造成伤害或未命中,或者该箭头只是一个动画,并且命中/未命中/伤害是在某个点预定的

  • 考虑到这些问题的模糊性和。。。他们口齿不清,但我不知道如何表达这个问题以得到我想要的答案。基本上:当我创建一个塔防风格的游戏时,我是在创建一个虚拟世界,其中包含实时相互影响的各个实体,还是在创建一个虚拟世界,只是一个背景事件的舞台?学习我可以用来创造这样一个环境的概念的第一步是什么


    我肯定有一些框架或库已经包含了一堆预构建的东西来处理这类东西,但是使用其他人的pre-fab游戏对我来说并不是一个可靠的学习经验。这将教会我如何使用那里的东西,我想知道它为什么在那里,它在哪里,然后自己想办法解决

    我认为你问题的关键在于图形是否在游戏的逻辑/模拟中扮演重要角色。如果不考虑这些游戏的实际实现,我敢打赌它们不会

    您可能希望将路径表示为攻击者可以占据的离散点列表或数组。它很可能是在二维空间中;我还没看过3D塔防游戏。但是,我只玩了几次

    (另一种方法可能是将路径表示为分段函数/曲线系列,但确定下一步的数学运算将更加复杂。我可能更愿意咬紧牙关,按照上述方式绘制路径。)

    塔可以建造的位置也可以用坐标表示

    然后,您将启动一个循环,在每次迭代中(至少)考虑以下内容:

    • 对于每个敌人,下一步是什么?可能它只在循环的每N次迭代中步进一步(对于缓慢的敌人),或者可能它在每一次迭代中步进N步(对于快速的敌人)
    • 每座塔的射程内有哪些敌人?我认为你必须遍历当前敌人的列表,或者你可以维护一个范围内的平铺列表,并检查它们是否存在敌人。如果敌人在射程内,塔可以向其开火吗?(例如,它在每次迭代中拍摄N次镜头,或者在每N次迭代中拍摄一次)。如果它真的射击,你计算伤害,看看敌人是否还活着
    至于如何射出穿越时空的箭的问题,我确实认为这是确定的,但可能有几种方法。然而,这将是决定性的。或者你可以将屏幕上的动画延迟几次,这样你就可以对塔射出箭头时发生的事情进行动画制作,或者,你可以计算箭头从现在起将在哪里拦截N次迭代,实际上,你的箭头是一座自己的塔,它不在固定的点上,而是移动一条预定的路径,并且有一个预定的目标


    只是关于这个问题的一些想法。但要点是,你在屏幕上看到的只是游戏内部状态的表现,而不是“真实世界”。

    我认为你问题的关键在于图形是否在游戏的逻辑/模拟中扮演重要角色。如果不考虑这些游戏的实际实现,我敢打赌它们不会

    您可能希望将路径表示为攻击者可以占据的离散点列表或数组。它很可能是在二维空间中;我还没看过3D塔防游戏。但是,我只玩了几次

    (另一种方法可能是将路径表示为分段函数/曲线系列,但确定下一步的数学运算将更加复杂。我可能更愿意咬紧牙关,按照上述方式绘制路径。)

    塔可以建造的位置也可以用坐标表示

    然后,您将启动一个循环,在每次迭代中(至少)考虑以下内容:

    • 对于每个敌人,下一步是什么?可能它只在循环的每N次迭代中步进一步(对于缓慢的敌人),或者可能它在每一次迭代中步进N步(对于快速的敌人)
    • 每座塔的射程内有哪些敌人?我认为你必须遍历当前敌人的列表,或者你可以维护一个范围内的平铺列表,并检查它们是否存在敌人。如果敌人在射程内,塔可以向其开火吗?(例如,它在每次迭代中拍摄N次镜头,或者在每N次迭代中拍摄一次)。如果它真的射击,你计算伤害,看看敌人是否还活着
    至于如何射出一支穿越时空的箭的问题,我确实认为这是确定的,但是