游戏开发

专业和独立游戏开发人员的问答

3
英国独立工作室注册
我来自英国,已经完成了独立游戏的制作,并且对多家销售游戏的在线零售商产生了兴趣。这需要我填写一份基本合同。 我只是一个在家工作的人,我为自己的游戏取一个工作室名称,完全是因为这是常态。 我需要进一步注册我的“公司”名称吗? 编辑:我已经从以前在不同领域的工作中注册为自雇人士
10 business 

1
一个简单的飞行模拟器
在具有逼真的深红色水平的3D飞行模拟器中(例如,在街机水平而不是现实水平),您如何确定每个游戏时钟滴答声中飞机的运动? (深红色的天空是一个类似街机的飞行模拟器:http: //youtu.be/OWmYt0LZDnU?t=3m) 我假定游戏以固定的步伐前进,每一步中,每个移动的对象以恒定的速度从当前位置一直移动到下一位置。 您需要什么基本参数来确定质量,速度,油门等。另外,您将如何结合它们?

4
分配任务
在RTS中,要负责工人的任务(例如建造墙),工人如何确定要建造的墙? 玩家决定要在哪里建造哪些墙,但是他们不会将单个工人分配给各个墙角。在许多RTS游戏中,工作人员只是在做靠近他们的任务,但是在我的RTS中,我想使用在特定广场上明确执行任务的策略作为主要策略,因此,我不想让笨拙的工作人员聚集在某个地方并将任务进一步放置离开不做。 我使用示例建筑墙;它可能是开采石头,修路,收集木材等。关键是用户选择哪里,而不是谁。 工人只能在与可进入的正方形相邻的正方形上工作;在工作完成之前,他们自己做的正方形可能无法通行。 告诉工人1和2开采A,B,C和D广场。 他们可以每游戏滴答移动一个方块,而挖掘一个方块需要10个滴答。 您如何确定哪个工人开采哪个广场? 似乎不言而喻,1应该开采A,2应该开采C。 1距A 4平方,因此将在14滴答中完成挖掘。1接下来应该去哪里,为什么? 而且如果在B的正上方还有另一个正方形-E-怎么办? 工人用来决定下一步工作的逻辑是什么?
10 ai 

1
(实时)全局照明起点[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 进入实时全局照明(对于动态照明场景)时,应该考虑哪些技术? 在不了解任何主题的情况下,很难真正掌握所提到的各种技术。如果我想将GI整合到我的图形引擎中,应该从哪里开始阅读?哪些算法可以在某个合理的时间范围内由新人实施(即,不是一种高度专业化的算法,在几个月的工作中不会获得出色的性能),哪些算法现在尚未完全过时(即,直接用更漂亮,更快的方法代替)? 光子映射似乎出现了很多,并且我已经阅读了有关体素锥描迹和更特定算法(例如CryEngine 3中使用的这项技术)的知识。但是,几乎不了解该领域,因此很难决定从哪里开始。 哪些常规技术值得研究?

1
一个人如何在实体组件系统中存储全局上下文数据?
我的问题是这样的: 一个将如何存储全局上下文数据,即。实体组件系统中的世界数据信息,当前世界时间等? 我正在考虑使用C ++构建矮人要塞风格的开放式世界模拟游戏。我只是出于娱乐目的而建立了一个实体组件样式的游戏引擎,而我目前正在试图弄清楚如何在所有想要的功能中工作。除了标准的游戏玩法(渲染,物理,特定于实体的组件数据等)之外,我还希望获得一些所有相关系统都可以访问的全局上下文数据(即世界数据,例如当前的年份) ,全球变暖是否正在发生,与模拟世界有关的任何事物)。我最初曾想过要制作一个“世界”组件,但是如果许多不同的系统需要访问这个逻辑上的“全局”数据,这似乎毫无意义且困难。 拥有“世界”组件是否有意义,还是应该以其他方式存储此数据? 我还考虑过将这些数据简单地全局化,从而可以访问任何想要使用它的系统。这似乎总体上违反了实体组件原则,并且由于其他原因可能有些混乱,但是我认为这可能确实有效。 我想到的另一件事是将相关的世界上下文数据直接直接嵌入系统本身。例如,如果我有一个AgeSystem“老化”的具有getsWeakerAsTimePasses组件之类的所有实体,那么也许该系统可以直接将世界的相关时间数据存储为成员数据,以用于计算时间的流逝以及需要多少时间。年龄和弱化人们等。这是我最不喜欢的第三种选择,但是在头脑风暴中发生了一些事情。 有人可以建议吗?

1
多人平台游戏-服务器上的单个客户端通常是否需要服务器更正?
我目前正在开发一个相当简单的多人平台游戏。我阅读了很多有关隐藏延迟的技术的文章,但是仍然无法理解某些概念。我觉得这个话题非常有趣,喜欢自己尝试一些想法,但我认为询问gamedev stackexchange对于我的问题会更有效。我将尽力描述我的当前状况以及在此过程中出现了什么问题。 现在,我只想让一个播放器与服务器同步。从理论上讲,我假设一个具有客户端预测功能的玩家不需要服务器修正,因为没有外部因素会影响他的动作。因此,我的原型目前只有一个播放器与服务器同步,而没有发送服务器更正。 如果您熟悉游戏网络,我认为您可能会跳过上下文部分,尽管在此过程中我也可能做错了什么。 客户端循环(每帧一次,每〜16.67ms一次) 简化的客户端循环如下所示: 检查本地输入(WASD)并将其打包为操作(例如Type=MoveLeft, Time=132.0902, ID=15)。我们保留打包的操作,以便最终在以后发送它们。此外,我们将所需的动作直接应用于游戏的本地物理模拟。例如,如果我们有一个MoveLeft动作,我们会向玩家的速度向左施加一个力。 检查发送动作。为了防止滥用客户端的带宽,请仅按特定间隔(例如30ms)发送打包的操作。 应用服务器修改。在某个时候,这将处理服务器接收到的增量和更正,并将其应用于游戏的本地模拟。对于此特定问题,不使用。 更新本地物理。在主播放器上运行物理循环。基本上,这是客户端对玩家运动的预测。这会增加玩家的速度引力,将玩家的速度应用到他的位置,修复沿途的碰撞等。我应该指定物理模拟始终以固定的增量秒执行(根据实际增量秒多次调用) 。 我跳过了有关物理学和其他部分的一些特定详细信息,因为我认为这些不是问题所必需的,但是请随时让我知道它们是否与问题相关。 服务器循环(每15ms) 简化的服务器循环如下所示: 处理动作。检查从客户端收到的操作包,并将其应用于服务器物理仿真。例如,我们可以收到5个MoveLeft动作,然后将力施加到速度5次。重要的是要注意,整个动作包是在一个“框架”上执行的,与客户端在动作发生后立即应用它相反。 更新游戏逻辑。我们会更新游戏物理性,移动玩家并修复碰撞等。我们还会打包以后碰巧发送给玩家的所有重要事件(例如,玩家的健康状况下降,玩家死亡等)。 发送更正。如果他们最近改变了,我们会定期(例如,每35毫秒发送一次)将差值发送给其他玩家(例如,玩家的位置,健康状况等)。该部分目前尚未实现,因为我希望单个播放器的模拟在客户端和服务器上给出相同的结果而无需更正,以确保客户端的预测工作正常。 问题 当前的系统在简单的情况下仍然可以正常工作,而令我惊讶的是它在简单的水平移动下给出了非常相似的结果(我相信,这种误差是由于浮点精度误差引起的): 请忽略原型图形。白色矩形=播放器,红色矩形=障碍物,蓝色=背景 但是,在进行时间敏感的动作(例如跳跃和移动到孤立的障碍物附近)之后,出现同步错误: 从理论上讲,我希望两者总是能得到相同的结果,因为没有任何外部因素影响客户的立场。不过,在实践中,我认为我理解问题所在。 由于围绕这样的障碍物跳跃非常取决于玩家的时机,因此将速度应用于位置时的微小变化将对结果产生影响(例如,客户可以及时移开以避免与障碍物,而服务器会在稍后接收到整个动作包时执行该操作,并停留在障碍物上一小段时间,从而更改最终结果)。客户端和服务器处理方式之间的区别主要在于,客户端在发生所有操作时都会执行所有操作,而服务器在接收到它们时会批量执行所有操作。 问题 如此长的语境最终引发了我的问题(感谢您阅读到目前为止):即使只有一个播放器与服务器同步,要求服务器更正是否正常,还是应该在某些对时间敏感的情况下使用某些技术来避免不同步? ? 我已经想到了某些可能的解决方案,其中一些我不太满意: 实施服务器校正。只需假设这是正常行为并纠正错误即可。无论如何,我都想实现它,但是我只是想确保到目前为止所做的事情是可以接受的。 使用提供的客户端时间来应用所需的操作。我想这与滞后补偿类似,需要“及时返回”并检查运动。有点像应用服务器更正,回到过去,然后重新应用下一个操作。我真的不喜欢这个主意。它看起来很复杂,资源昂贵,并且需要信任客户的给定时间(尽管我确实打算真正检查时间是否相对合法)。 向GameDevelopment StackExchange提出一个很棒的新想法,它将解决我的所有问题。 我才刚刚进入游戏网络世界,所以请随时纠正/批评/侮辱上述任何概念,或者提供一些想法/资源,这些资源可以帮助我在“网络奇妙世界”中发展。如果可以在其他地方找到答案,请原谅我,但我失败了。 非常感谢您的宝贵时间。

2
git在一个统一项目上的问题
我试图使用git对项目文件夹进行版本控制。但是,当从存储库中拉出项目时,出现了问题:显然缺少脚本,预制件和所有图形元素都显得有些粉红色。有人知道如何解决此问题吗? 这是我目前正在使用的.gitignore: Temp/ Obj/ UnityGenerated/ Library/ ExportedObj/ *.svd *.userprefs *.csproj *.pidb *.suo *.sln *.user *.unityproj *.booproj .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes Icon? ehthumbs.db Thumbs.db 提前致谢。
10 unity  git 

4
检测“按下任何按钮”
我正在尝试允许播放器按任意按钮以从主页继续。我可以通过创建按钮列表并循环浏览这些按钮并检查其中一个按钮是否关闭来做到这一点。但是,我觉得这段代码很难看,想知道是否有一种我没有想到的简单方法? 这是我的代码现在的样子: if (GamePad.GetState(PlayerIndex.One).IsConnected) { var buttonList = new List<Buttons>() { {Buttons.A}, {Buttons.B}, {Buttons.Y}, {Buttons.X}, {Buttons.Start}, {Buttons.Back}, {Buttons.RightShoulder}, {Buttons.LeftShoulder}, {Buttons.RightTrigger}, {Buttons.LeftTrigger} }; foreach (var button in buttonList) { if (GamePad.GetState(PlayerIndex.One).IsButtonDown(button)) ExitMainMenu= true; } }
10 xna  monogame 


1
如何实现图层之间投射的2D阴影?
如何实现由不同层中的对象投射的2D阴影? 不喜欢Catalin Zima著名教程中的动态照明: 但是就像这段视频中管道的阴影一样: 就像这个视频中平台的影子和角色一样: 我想在具有多个图层和许多不同颜色的灯光的场景中使用相同类型的照明。 我可以想象通过在该图层后面的图层上绘制该图层的黑色副本,然后根据要在其上投射阴影的图层中的孔进行调整来进行此操作。但是我希望有一种更便宜的基于像素着色器的方法。

2
什么是物理上正确的照明?
使用Google我找不到任何全面的东西。我想知道物理上正确的照明的核心概念是什么,以及在哪里可以阅读。什么是物理上正确的照明?Phong照明通常在物理上不正确吗?
10 lighting  pbr 

2
如何展平游戏对象下的地形?
我有一个脚本,可以创建地形对象并用纹理对其进行绘制,但是我遇到了问题。当我尝试放置游戏对象(例如unity提供的简单水对象)时,我使用了射线投射来确定放置游戏对象的正确高度,但这只是确保将其正确放置在该特定点上。 我该如何平整游戏对象下方的地形,以使其在山丘的情况下不会进入地形或挂在稀薄的空气中?
10 unity 

1
引擎渲染管道:使着色器通用
我正在尝试使用OpenGL ES 2.0(目前为iOS)制作2D游戏引擎。我已经在Objective C中编写了Application层,并在C ++中编写了一个独立的RendererGLES20。在渲染器外部不会进行GL特定的调用。运行良好。 但是在使用着色器时,我有一些设计问题。每个着色器都有自己的唯一属性和统一体,需要在主绘制调用之前进行设置(在本例中为glDrawArrays)。例如,为了绘制一些几何图形,我要做: void RendererGLES20::render(Model * model) { // Set a bunch of uniforms glUniformMatrix4fv(.......); // Enable specific attributes, can be many glEnableVertexAttribArray(......); // Set a bunch of vertex attribute pointers: glVertexAttribPointer(positionSlot, 2, GL_FLOAT, GL_FALSE, stride, m->pCoords); // Now actually Draw the geometry glDrawArrays(GL_TRIANGLES, 0, m->vertexCount); // …

2
OpenGL获取多个重叠对象的轮廓
我只是对使用c ++的opengl进行的游戏有一个想法:当玩家赢得某些东西时,我希望在多个重叠的物体上有一个大轮廓(5-6像素)。 我以为最好的方法是使用模板缓冲区,但是尝试在屏幕外渲染模板缓冲区需要几个小时,而且我无法获得任何结果。还有其他一些技巧! 这就是我想要得到的: 有任何想法吗?
10 opengl  outline 

1
如何确保游戏可以完成
我不确定要描述的正确术语是什么,所以如果这是一个重复的问题,我们深表歉意。但是是否有术语/算法来确保游戏相对于无限滚动条而言是“可完成的”。我所说的可完成的意思是,如果我有一个游戏,当屏幕试图追赶他们时,用户必须不断跳出障碍物,那么我将如何确保用户始终可以找到一个新的障碍物理论跳到? 我知道从理论上讲,我会检查用户可以跳多高,并确保该范围内有障碍物,但是还有其他东西吗?即在放置新块时避免昂贵的检查,以确保它们不重叠等? 我正在专门查看html5 / js,但我想知道是否有针对此的术语或我可以调查的特定类型的算法? 谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.