游戏开发

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

4
套接字服务器和游戏服务器是否应该是独立的进程?
假设一个简单的标准客户端/服务器游戏。对于服务器,是否值得拥有一个单独的进程来侦听客户端的连接和消息,并通过本地套接字或stdin将数据发送到运行实际游戏服务器的另一个进程? 另一种选择是使这两项都在一个过程中完成。对传入的消息进行排队并以正确的顺序执行它们,这不会造成停顿问题。 我想知道将两个“活动”分开的额外资源是否真的值得。我应该如何决定?我想听听任何利弊。



3
半正确行星系统的程序生成
因此,您可以通过Google找到大量资源,也可以在此处使用有关如何程序生成整个星系的搜索资源。但是我找不到关于如何遵循这些标准的行星系统的任何有用资源: 该系统不必精确地模拟轨道,但应接近合理的轨道。我不在乎任何关心系统在20万年后的外观的仿真,轨道可能是坚如磐石。我面临的主要问题是如何随机生成一个看似合理的系统。当您的系统具有双星系统时,这变得特别有趣。 只是随机地创建轨道并不能构成一个合理的系统,最终您将得到明显无效的轨道。是的,我知道N体问题:),但这至少对我没有帮助,无法解决生成合理的系统程序的问题? 我认为您可以在行星的轨道上随机产生行星并给它们一个质量,然后使用N体数学来计算它们是否有效,如果不重新开始,并随机生成新的轨道,直到获得与之匹配的东西,但这将是非常低效的。

2
场景之间的平滑加载屏幕
我创建了一个加载屏幕,以在下一个场景加载时显示加载动画。我异步加载下一个场景: yield return SceneManager.LoadSceneAsync(scene,LoadSceneMode.Additive); 并且也设置了Application.backgroundLoadingPriority = ThreadPriority.Low;,但是其行为仍然与常规级别加载相同。 我想念什么吗? 预期的行为: 退出关卡,然后淡出。 出现载入画面。 加载完成后,淡出加载屏幕。 淡入下一场景。 怎么了: 退出关卡,然后淡出。 出现载入画面,冻结 突然,新景象渐渐消失了。 一旦开始加载,游戏就会像常规的场景加载一样疯狂。 我读到您必须设置allowSceneActivation = false,因此您可以淡出加载屏幕,然后将其设置true为让unity完成加载,但这完全冻结了我的游戏,就像异步操作永远不会完成加载一样。

1
多次下采样有好处吗?
所以我遇到了这个站点,您可以在第一和第二段中看到以下几行: 为了获得粗略而简单的效果,请将场景的明亮部分(例如光源)绘制到FBO中,然后使用GL_LINEAR缩小几次对其进行下采样。对于最终渲染,只需将原始场景与降采样的FBO结合即可。 在下面的示例中,原始场景为128 x 128,并被下采样3次。这需要4个framebuffer对象。原始场景显示在左上方,最终渲染显示在右上方。 有什么原因我应该多次降采样(128-> 64-> 32-> 16)而不是一次降采样(128-> 16)? 如果您向下滚动更多,他们甚至将其下采样9次。(128-> ...-> 16-> 128-> ...-> 16->依此类推)。为什么不这样做(128-> 16-> 128-> 16->等等)?
14 opengl  graphics  bloom 

5
为什么整合过度积累?
我开始学习如何进行DIY物理学,并且我有一个关于在最基本的层面上实现集成的问题(即,这不是 Euler vs. RK4问题)。 我遇到的几乎每个示例都具有一些integrate()功能,该功能获取自上次更新以来的时间步长,并自上次更新以来更新加速度(和/或速度和/或位置)。 最简单的形式: position += velocity * deltaTime 但是,我不明白为什么通过更改功能就可以很容易地获得这样的积累。例如:getPosition = makeNewFunction()可以返回带有签名的东西Time -> Position,并且该函数的内部工作是通过适当的数学公式生成的。 这样,就没有积累……只要需要获取位置,它就会在当前时间调用该函数。 我的新手理解是,这样做还可以避免由于累积而产生的错误……那为什么不起作用,我还缺少什么? (之前我确实整理了这个想法的基本概念证明,尽管它同时也在测试其他一些东西,所以它不是最干净的例子:https : //github.com/dakom/ball-bounce-frp) 编辑1:如评论中所述,可能很重要的一点是要指出,我还没有学会改变加速度,或者处理急动和其他需要比恒定加速度更高阶积分的事情。 编辑2:这是该思想的一些基本示例代码,以及伪javascript语法-注意,getKinematicPosition由于部分应用,因此它返回的只是时间->位置的新功能: 我会坚持在这里工作,但可能还有其他原因,例如getVelocity,我想... getKinematicPosition = initialVelocity => acceleration => time => ((.5 *acceleration) * (time * time)) + (initialVelocity * time); getPosition = getKinematicPosition ([0,0,0]) (GRAVITY); onTick = totalTime …

1
如何在Linux中将Kinect用作麦克风?
我正在使用Ubuntu 14.04 LTS,并且Kinect摄像机的类型为Microsoft_Xbox_NUI_Sensor_043367545147-02-Sensor。 我可以从正在编写的Linux程序中访问Kinect的摄像头,但我也想使用其麦克风进行语音通信。我怎样才能做到这一点?
14 linux  kinect  voice 

4
是否可以将受版权保护的资产用于教育目的?
我和一个朋友想在移动开发课程中创建一个口袋妖怪战斗模拟器作为我们的最终项目,但我担心出于教育目的在“合理使用”下是否允许使用它。上课后和我们展示应用程序之后,我们没有打算对游戏做任何事情,我们只是想尝试将其一些非常基本的部分克隆到Android上。 编辑:我位于美国。



3
寻找有关游戏中攻击和攻击类型的编程设计的一些见解
因此,我开始向我们的2D空间RTS引入攻击(这是在Unity中进行的,因此它是组件驱动的)。最初,它很简单,例如“范围内的敌人,造成的伤害”。但是,将有多种“类型”的武器/攻击与其特定的船只或结构相关联。以及其他仅涉及原始损坏的因素,例如损坏类型,以及将来可能的惯性。 你们每个单位和结构类型都有自己的攻击类型吗?意思是您为每个单元/结构制作一个脚本,以定义其攻击类型,伤害,效果,射程,粒子,精灵...等,并将其作为组件附加? 或制作一个定义攻击类型的脚本,一个与该攻击类型关联的弹丸类型的脚本...等等,然后扩展它们并为每个单位修改它们,将每个脚本附加到单位/结构上。 我希望我有一定的道理,我已经考虑了很长时间了,我不确定是要解决问题,还是只是自己解决问题并陷入困境。 如果您的游戏可能具有多种攻击类型,并且可能不受限于特定的单元/结构,那么您如何设计在组件驱动的设计环境中将框架与特定的单元/结构绑定在一起的框架? 如果还不清楚,请告诉我。 编辑:很好的答案,谢谢。 扩展问题: 答案似乎有所不同,从“每个对象都可以拥有自己的攻击脚本”到“将攻击类型作为自己的脚本并将其分配给每个对象以提供更可重用的解决方案”。可以说我有一次“冲击波”攻击,它以一定速度射击红色弹丸。它的伤害,射速和弹丸大小取决于发射它的单位。只是为该部队制作攻击脚本,还是尝试修改“爆炸攻击”以适合每个想要使用它的部队的目的,这更好吗?
14 c#  unity  game-design 

1
在没有Greenlight的情况下将游戏上传到Steam吗?
我一直在做一个小游戏(还远远没有完成),我想知道,当我完成游戏后,是否能够将它发布到Steam上而不必获得Greenlit。 之所以这样,是因为我已经为制作我的游戏支付了工具和编辑器的费用,并且不想为了发布我的游戏而另外支付100美元。 这可能吗?
14 game-maker  steam 

4
Unity中Update方法和FixedUpdate之间的区别?
我开始学习Unity3d,而我得到的困惑之一是Update()和之间的区别FixedUpdate()。 我在那儿遵循Lynda Unity 2D游戏开发教程,讲师使用Update方法,播放器具有RigidBody2D组件和Box collider,他使用该Update方法来翻译播放器,但是当我在Update播放器中执行相同操作时,它不会移动,但是当我执行时在中FixedUpdate,一切正常。他正在从Unity 4.3提供教程,而我正在Unity 4.6中学习课程。 我应该在哪里使用Update和FixedUpdate?

6
如何以不引人注目的方式创建重复的大空间背景
如何创建一个大型空间背景,可以重复进行rts游戏。我也想拥有复杂的星云和尘埃场,但是由于这些单位将有很大的探索空间,所以我不能拥有120000px x 1200000px jpeg的像素,因此我想重复图像,但不要在片段之间使用变化线。 我将它与Microsoft的Babylon框架一起用于Web GL画布
14 image 

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.