Articles of 加载

快速的资源管理

所以我现在正在做一件我无法解决的事情。 让我说我有我的所有游戏数据压缩到zip档案。 游戏中有一个脚本系统可以让你做一些事情。 例如产卵npcs,装备特定物品等 问题在哪里? 当我加载分隔成块的世界时,很容易在没有任何通知的情况下加载所需的资产和其他数据。 但让我们说,我写了一个脚本,按下button后触发爆炸。 在那个时候,游戏需要加载爆炸纹理等。没有单独的线程,在较慢的系统上,游戏肯定会冻结一段时间。 如果我会使用单独的线程 – 在较慢的系统上可能会导致缺less纹理问题或类似的东西。 所以在加载世界块的时候加载一些资源是很容易的,但是如何预测在脚本执行之后将会看到的对象应该加载哪些资源? 我不知道是否有可能明白我想做什么,但我可以举另一个例子。 在Bethesda的Fallout 3或者TES游戏中,你可以使用spawn命令来显示所有纹理的npc。 任何想法如何快速加载纹理和模型?

Java:通过读取XML文件来创建一个用户定义的类的实例

我正在尝试为游戏编写引擎,特别是基于组件的引擎(在我的方法中,组件包含数据和逻辑)。 所以基本上我有实体,每个实体都有一个组件列表(每个组件都扩展了Component类)。 现在,我想能够在xml文件中为我的实体定义模板,并在运行时加载它们。 模板看起来像这样: <Entity> <Component name="MovementComponent"> <…Variables to be initialized…> </Component> <Component name="RenderComponent"> <…Animations…> </Component> </Entity> “name”属性是相应组件类的名称。 现在,当然组件是游戏特定的,所以我需要一种方法来创建组件的实例,并将其添加到实体的列表中,而不需要知道具体的类。 我想过Class.forName(“…”名称“属性…”)。newInstance(),但是这样我不能将组件添加到列表,因为它是组件的ArrayList和程序不能知道newInstance方法返回的对象实际上是Component的一个子类。 有没有简单的方法来做到这一点?

添加现有的animation

我在GameObject上使用了几个animation。 我切换了他们存储在的文件夹,他们从gameObject分离。 我如何添加现有的animation到我的gameObject而不必重新创建它们? 我不想以编程方式做到这一点。 我只是想撤销我所做的破坏,而不必重新开始。 理想情况下,我想从编辑器的Animator窗口中select一个“Load Animation”选项,但看起来并不存在: – /。

MMO游戏中的水平加载理念

我在项目上工作了很长一段时间,我已经回到关于级别加载的困境。 问题是我相信与它的本地水平加载客户端,当它完成加载它告诉服务器join到服务器机房数据stream和服务器启动发送数据。 我目前的设置 客户端login,在login服务器上发送字符。 客户端select字符并开始在本地加载级别。 当客户端场景完成加载时,请求添加到房间。 客户端收到他需要的数据。 我担心用户可能会破解客户端,并实际加载其他场景,导致玩家和角色穿过道具和模型,也可能是利用隐藏的数据和项目。 相反,在服务器发送选定的字符之后,它可以“等待”用户发送已经完成加载的响应。 之后,服务器将角色join空间并将数据发送给用户。 这样,客户端不知道任何关于房间或它的名字。 有什么建议么?

在Cocos2d-x中加载Cocos Creator场景

我在Cocos2d-x中使用JavaScript,我不知道如何将一个Cocos Creator场景(* .fire 看起来像JSON数据)加载到我想传递给cc.Transition 。 cc.Director.LoadScene加载场景,但立即播放! 我需要得到一个参考,所以我可以通过一个cc.Transition , 然后运行场景。 我正在使用Cocos2d-x v3。 我到处寻找(论坛,谷歌等),但我找不到可用的API调用。

加载几个缩放的位图和增长堆或绘制比例位图和FPS减less?

在我的游戏中,我使用surfaceview和Canvas在屏幕上绘制精灵,以便在所有屏幕大小中进行拼图 :我testing两种方式: 第一 :当canvas想要在屏幕上绘制Framebuffer(最终位图)时,通过使用缩放这个framebuffer canvas.drawBitmap(framebuffer, null, dstRect, paint); 但每秒帧数(fps)减less和游戏不运行平滑(更小的屏幕=更stream畅的游戏运行) 二 :如果我加载并缩放游戏开始时的所有照片到屏幕大小 – >这样增加堆使用这个: canvas.drawBitmap(framebuffer, 0, 0, paint); 所有的图像是最大480×800像素 (****没有规模的图像,分配1.5 MB和一个1080 * 1920的设备规模分配约10MB *****) 让我的游戏使用 kilobolt框架

Android加载屏幕:如何使用堆栈来加载元素?

我在确定函数中应该放置什么值时遇到一些问题: int value_needed_to_figure_out = X; ProgressBar.incrementProgressBy(value_needed_to_figure_out); 我一直在研究加载屏幕以及如何使用它们。 我见过的一些例子在Handler.post(new Runnable())函数中实现了Thread.sleep() 。 对我来说,我大部分都是使用Handler来更新ProgressBar的概念,并假装做一些繁重的工作。 所以,我一直在寻找。 我在这里读过这个线程: 如何在加载屏幕中加载一个assert manager的数据块? 它说,我可以尝试使用它需要加载的堆栈,并添加一个大小计数器,因为我添加元素到堆栈。 这是什么意思? 这是我完全难倒的部分。 如果有人提供一些提示,我会很乐意欣赏它。 提前致谢。

如何将这个wavefront .obj数据放到平截头体上?

我终于想出了如何从.obj文件获取数据,并将顶点位置x,y,z存储到名为Points的结构中,其成员types为float 。 我想知道如何将这些数据放到屏幕上。 这是我的尝试: //make a fileobject and store list and the index of that list in ac string ifstream file (list[index].c_str() ); std::vector<int>faces; std::vector<Point>points; points.push_back(Point()); Point p; int face[4]; while ( !file.eof() ) { char modelbuffer[10000]; //Get lines and store it in line string file.getline(modelbuffer, 10000); switch(modelbuffer[0]) { case 'v' : sscanf(modelbuffer, "v %f […]

DevIL图像库不加载我的图像

这是我第一次有这个问题,我的代码只是不会加载我需要的图像。 这是我第一个加载图像到数据的函数: void C_Resource_Loader::v_Create_Image(std::string filename,int nID) { //create image and bind to it ilGenImages(1, &image[nID]); ilBindImage(image[nID]); //check if DevIL successfully loads the image success = ilLoadImage(filename.c_str()); if(success) { success = ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE); if (!success) SDL_Quit(); //create texture and bind to it glGenTextures(nID,&texture[nID]); glBindTexture(GL_TEXTURE_2D,texture[nID]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); […]

逻辑/渲染阶段与单个线程

我的问题可能会产生来自不同开发人员的不同意见,但我仍然希望得到一个答案。 关于游戏循环的更新和渲染步骤,以及它们在multithreading和单线程环境下的使用。 目前,有一个线程正在运行,它负责依次执行事件,逻辑和呈现。 有时,逻辑部分可能希望将游戏状态更改为其他内容,并在两者之间进行一些文件加载​​。 结果是游戏在加载时完全挂起,然后继续正常渲染新状态。 为了解决这个问题,我可以创建另一个线程,在主线程呈现平滑的加载animation的同时进行加载,然后正常进行。 真正的问题是关于如果我不创建另一个线程。 我可以从逻辑线程中刷新屏幕,并提供一些基本的加载屏幕,在加载文件时可能不会如此平稳地更新。 事实上,这种方法并不是很多开发人员所喜欢的,因为它在逻辑步骤中乱码渲染代码,这可能会导致不同types的问题。 希望它清楚!