- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发像《圣剑传说》和《星海二传》这样的 2D 游戏,而不是基于图 block 的 2D 游戏。
目前,我构建游戏的方式是这样的:
我有几何文件和纹理文件。几何文件存储宽度、高度、XY 位置、要使用的纹理 ID 号和要使用的纹理名称。
我尝试做的方式是:
我将有一个加载“场景”对象的场景管理器对象。每个场景对象存储该场景中所有几何对象的列表以及纹理和声音对象(待实现)。
每个场景都使用顶点数组渲染,场景管理器对象将调用一个方法,如通过场景名称获取场景顶点,该方法返回一个指向 GLFloats (GLfloat *) 数组的指针,这个指向 GLfloat 的指针在 OpenGL 的 glVertexPointer( ) 功能。
当我想更新每个角色的位置时(例如英雄),我的目标是使用当前场景中的“英雄”游戏对象并调用如下函数:
Hero.Move(newXPosition, newYPosition);
这实际上会改变英雄几何对象的顶点数据。所以它会做类似的事情:
for(int i = 0; i < 8; i++)
{
vertexList[i] = vertexList[i] + newXPosition;
vertexList[i+1] = vertexList[i+1] + newYPosition;
...
}
这样,当我在渲染帧中渲染场景时,它会使用更新后的顶点坐标再次渲染整个场景。
游戏中的每个对象都只是一个映射了纹理的四边形。
我在编程和 OpenGL 中使用 Objective C。这是针对 iOS 平台的。
到目前为止,我已经成功地使用此方法渲染了 1 个对象。
我遇到的问题是我使用的是 NSMutableDictionary,它是一种使用键值对在场景对象类中存储几何实例对象的数据结构。每次运行代码时,Objective C 中的字典不会以相同的顺序检索数据。然后以随机顺序检索。
因此,我无法将场景对象中每个几何对象的所有顶点数组数据组合在一起,并将 1 个顶点指针传递给 GLfloats。
每个几何对象存储它自己的 8 个顶点值数组(4 对 X、Y 坐标值)。我希望每个几何对象都管理它自己的顶点(这样我就可以像前面提到的那样使用移动、旋转),同时,我希望我的场景对象能够输出对所有顶点数据的单个指针引用当前场景中的几何对象,用于 OpenGL 的 glVertexArray() 函数。
我试图避免多次调用 OpenGL 的 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)。比如画英雄,画 map ,画AI代理,画BG物体。那不会很有效。尽可能减少 GL 绘制调用的数量(最好是 1 个绘制调用),尤其是在像 iPhone 这样的有限硬件上,这是我在阅读有关 OpenGL 游戏开发的文章时提出的建议。
做我想做的事情的最佳实践方法是什么?
我是否应该使用 SQL 数据库来存储我的游戏数据(例如几何顶点数据)并将 iPhone 磁盘上的 sql 数据库文件中的 1 个场景加载到 iPhone 内存中?
最佳答案
您可以使用列表的列表来跟踪绘制层和顺序,并仅使用字典进行快速查找。
关于ios - 为 Star Ocean Second Story 和 Legend of Mana 等 2D 游戏存储游戏数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7309432/
我想堆叠两个 Font Awesome 图标 fa-star 和 fa-star-half,但我遇到对齐问题。见下图: 这是我的 HTML: ...和我的 CSS: a-s
对于欧几里得最短路径问题,是否有人对 A 星搜索和更一般的整数规划公式之间的联系有很好的引用? 特别是我感兴趣的是如何修改 A-star 以应对额外的(可能是依赖于路径的)约束,如果使用通用 LP/I
如何编写正则表达式来验证此模式? 123456 - correct *1 - correct 1* - correct 124** - correct *1*2 - correct * - corre
我在以下网址的页眉中看到了 Canvas 动画 - http://blogs.msdn.com/b/davrous/archive/2011/07/21/html5-gaming-animating-
我需要将蓝牙模块连接到A-Star 32U4 Prime SV microSD,但无法使其工作。作为背景,我有一个Pololu双G2大功率电机驱动器24v18盾牌Arduino连接到它。。该项目是一个
我需要将蓝牙模块连接到A-Star 32U4 Prime SV microSD,但无法使其工作。作为背景,我有一个Pololu双G2大功率电机驱动器24v18盾牌Arduino连接到它。。该项目是一个
我正在尝试学习 A* 算法(当应用于网格模式时)并且我认为我已经掌握了在找到最短路径之前,您需要计算任何给定方 block 距起点的距离。 我正在按照此处的指南进行操作:https://medium.
我一直在阅读维基百科的 Astar article .在他们的实现中,他们检查每个节点是否在 closed 中。设置,如果是这样,他们会跳过它。如果启发式是可以接受的,但 是否可能?不是 一致,我们可
继 How to speed up least-cost path model at large spatial extents ,我尝试在 Netlogo 中编写 A* 算法,以在较大的空间范围内增
我试图根据维基百科的伪代码实现一个简单的 A* 搜索程序。但是,它对 openset 的解释对我来说有些不清楚。我知道起始节点最初会添加到 openset 中。但是,代码执行在 remove curr
我正尝试在我的 3D 网格中实现 A* 算法来寻路。我一直在学习教程,但没有找到有效的路径。我已经逐步查看我的代码以了解发生了什么,但我不知道如何解决问题。对于最基本的测试,我只使用 2-D 网格(它
我在 GitHub 上有很多 repos,我将它们加星以供以后使用。 是否有任何工具可以为观星者组织收藏,以便他们可以浏览已加星标的内容?例如,找出我为 iOS 动画加注了哪些组件。 最佳答案 这是我
据我了解,对于给定的评估节点,启发式算法的可接受性保持在“距离的实际成本”的范围内。我不得不为状态空间上的 A* 解决方案搜索设计一些启发式方法,并且使用有时可能返回负值的启发式方法获得了很多积极的效
我在有效实现 Eric Lippert 推荐的这个通用方法时遇到了问题。他的博客概述了创建 A 星算法的一种非常简单有效的方法 (found here)。这是快速运行。 实际寻路的代码: class
我试图找到所有可能的方法来将 n block 糖果分发给 k 个 child 。例如,根据星星和酒吧公式,将 96 颗糖果分配给 5 个 child 的方法数为 100!/(96!*4!) = 3 9
已知 A 星算法是完备的。但是,我在网上搜索发现的所有实现似乎只返回第一个(最佳)解决方案。 例如,这个实现: A star algoritthm implementation 由于算法总是扩展具有最
我想扩展这个问题: Why does the A-star algorithm need g(n)? Dijkstra 算法使用代价函数 f(n) = g(n)而 A* 使用成本函数 f(n) = g
我有一个问题。如果可以在我的算法中添加旋转。我的意思是,例如,如果我想从 (0,0) 转到 (0,1),首先我需要旋转然后转到那个字段。我不知道该怎么做。我实现的算法A-start是这样的 impor
让我们考虑一个简单的网格,其中任何点最多与其他 4 个点相连(东北-西-南邻域)。 我必须编写程序,计算从选定的初始点到连接的任何目标点的最小路线(任意两个目标之间有一条由目标点组成的路线)。当然,网
我一整天都在努力让这个算法启动并运行,但我终究做不到。我在网上阅读了很多教程,以及 AS3、javascript 和 C++ 的源代码;但我无法使我所看到的适应我自己的代码。 我创建了一个 AStar
我是一名优秀的程序员,十分优秀!