|
前言
我们在游戏开发中,总会遇到一些问题。那么今天我们就一些常见的问题做出一下解答
对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!
1.Java游戏服务器怎么实现热更新?
服务器的热更新是指在不停服的条件下来实现热更新,把最新的代码更新上去,同时玩家能用最新的代码。这里面有两个方向,一个是假热更新,一个是真热更新。我们分别从两个方向来分析。
(1) 假热更新:
虽然不停服,但实际上我们是做了用户迁移,比如线上运营的服A的代码是1.0的版本, 然后我现在开发了1.1的版本,想不停服的情况下,让服A跑1.1版本,准备一个新的服(配置和服A一模一样),然后新服跑1.1版本,把原来老服A的导流入口导到新的服A这里,老服A里面等玩家结束,然后就不再导新流量进来了。这样老服A里面一段时间后就结束了。就可以停了,玩家都在新服上面玩。而玩家感觉不到。所以像《王者荣耀》这样的就很容易做成这种模式。
(2) 真热更新:
不停服直接更新代码部分,这里要特别的注意Java 一个类包含了类的方法与类的数据成员,最终编译完成以后是函数方法+对象实例数据,而不停服,意味着玩家的游戏数据对象(对象的内存布局在前后更新中不能改变) 前后不能发生变化,这种可以直接热更新回来。
在网关模式下,网关背后的游戏服可以先把所有的内存数据对象先生成到磁盘,然后再重启游戏服的进程,然后从磁盘数据里面重建玩家数据对象与当时的数据,然后在和网关连接起来。这种模式的热更新也可以,就可以同时更新代码+数据,可以选在夜深人静的时候做这个事情,可能大家会卡一下。
上面给大家总结了一些热更新的方式,不只是Java对于其它服务器也是适合的。
2.unity中,shader,材质,和渲染管线有什么区别?
渲染管线: 包含了游戏引擎给GPU传递数据的策略, 游戏引擎在处理光源光照,阴影等策略,并调用shader中的pass来控制渲染。渲染管线基于游戏引擎来定制渲染策略,比如默认的向前渲染管线,为了支持任意多的光源,每个重要光源的光照计算,走要走一次shader的pass, 所以多光源实时光照情况下这个策略很消耗性能,于是有了轻量级渲染管线,多个光源,再一次pass里面完成计算,但是这种缺点就不能支持任意的光源。还有阴影策略等。渲染管线还制定了CPU会在渲染的时候传递哪些数据给GPU,这些数据分别放在哪里,比如摄像机的位置,比如阴影贴图等。这些都属于渲染管线的内容。
Shader: 是给GPU执行的代码程序,在渲染管线的大体策略下,负责具体的渲染效果的算法。不同的渲染管线,shader编写的格式是不一样的。向前渲染管线的shader不能直接用到轻量级渲染管线中去。
材质: 是一个配置文件,选一个shader, 并设置好shader所需要的参数,通过CPU传递给GPU。
3.游戏引擎 Unity 的入门易精通难体现在哪?为什么?
入门容易:拖一个模型进去,加一个光照,做一个地形,场景就出来了。
精通难: 写好代码难,写好稳定的代码更难, 做渲染效果难,做NB的渲染效果更难。
4.unity走图形学好,还是转行做架构?
作为一个程序员开发者,不同的年龄阶段做不同的事情,没有必要是一个选择题。作为一个游戏成业人员来说,要走向管理岗,先学会做架构会更好,因为架构的本质就是组织一帮人一起协同工作。如果你要走向技术岗,把自己绑死在一个坑里,可以走图形学。个人觉得还是先做架构,了解程序成的每个环节和系统工作,做好项目管理,后续再加深某个板块。
5.unity里做多人联网游戏用自带的network组件还是photon?
其实自己写一个TCP Socket或udp Socket就可以了,不用搞那么复杂。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|