文/LPY
参与过游戏蛮牛的专家在线活动,几十位网友提出了他们的问题,其中有些问题较为普遍,于是决定把这些问题整理出来,加以完善,希望能够帮助到更多人。
作为程序员,如何规划职业成长路线
790899892 问:
接触游戏开发也有一年多,感觉这一年基本上没学到什么东西。在机构学习的时候就常常听老师们说,框架,面向对象等,可是到做项目的时候基本都没用到过,每次做项目就是实现功能。到最后代码就乱得一塌糊涂。因为没有一套明确的方向,也不知道该去学那些。
答:
其中的一条可能的学习途径可以参考下面的三个阶段。
第一年:能够做功能。
尽量接触公司内比较完善的游戏项目,在参与编写逻辑的同时,不断完善自己的编码水平。同时了解该项目的设计思想、用到了哪些技术、用到了哪些第三方库,这些第三方库又是怎样使用的。
第二年:用得起现有框架。
经过第一年的学习,应该对游戏项目很熟悉了。此时要熟悉这一套框架的各部分功能,假如要让你做一款新的游戏,你能够在这套框架的基础上把游戏做出来。同时也多了解几套可用的框架,积累自己能够“撬得动”的代码资源。
第三年:深入底层。
深入底层了解这些源码,能够修改它们,或者能够重新写一个。同时再次学习计算机原理、图形学、数据库实现等课程,能够有不同的体会
客户端、服务端具体的方向可能会有所不同,但大致的路径都是一样的。就是先能够使用、再能够使用某个现有资源重新搭建,再到深入底层。经过这3个阶段,相信便能够独当一面了。
想做游戏服务端,应该学些什么
年少不懂事 问:
如果走服务器需要会那些技能
答:
其实看看各大公司招聘基本就能够知道所需的技能了,大概有如下几点
1、熟悉掌握一门主要编程语言,如c++或java
2、熟悉掌握某一门脚本语言,如lua或python
3、了解网络编程知识,了解TCP/UDP/IP协议的使用和实现细节。了解并能够使用一些现成的网络库,如libevent
4、熟悉linux操作系统,能够操作它,并知道它的实现原理
5、熟悉数据库,及其实现原理
目前服务端相关的资料很少,推荐书籍的话首先当然是推荐我自己的书《Unity3D网络游戏实战》啦,里面第6和7章有实现一套简易的服务端程序,还有下面几本书对能够让读者对服务端有更好的了解
《Linux多线程服务端编程 使用muduo C++网络库》 陈硕
《Redis源码涉及与实现(第二版)》 黄健宏
《TCP/IP详解:卷一》 看前面几章就行
C++是必学的吗?能不能只用c#
18865558970 问:
做游戏开发,lua和c++是必学的吗,我只用c#,unity不可以吗
答:
游戏开发分前端和后端,使用到不同的技术。如果是后端,c++和lua是其中一种方案,如果是unity前端,c#是必须的,lua也有可能涉及,c++几乎不会用到。
然而一些面试中,会以c++水平去代表编程水平,一般c++水平高的话,c#、lua都不在话下。但无论如何,数据结构和算法肯定是要很扎实的。
大学生想学游戏开发,该怎样规划
FlyingFishF 问:
作为一名有部分java编程语言基础的大学生请问应当如何规划自己的unity3d学习路线
答:
学习路线大概分为下面几个步骤
1、先入门,能做小demo。这个阶段可以参考《Unity3D\2D手机游戏开发》等书籍
2、实战做一款稍有规模的游戏,这里就推荐我的《Unity3D网络游戏实战》,哈哈。
3、解析别人的做法,在蛮牛上下载一些较大型的游戏源码,尝试改动他们、然后能够使用相应的框架去修改
4、行为树、热更新、MVC等应用
5、学习图形学和shader
6、学习物理引擎
AR/VR的前景如何?
Obarong问:
《Oculus:VR杀手级应用应会是PC端大型社交网游》这个帖子说到,“杀手级应用自然而然地会成为杀手级应用,它们不是被设定是这样的。开发者从未想着开发杀手级应用,只想开发自己力所能及的最好的游戏,最终反应很好。”我认为在VR这个新领域,开发者应该着眼于自己最想玩的应用,不是为了跟房地产之类的热门行业沾上边,而强行转移关注点。老师,您认为呢?
答:
看看股票也许能说明ARVR的现状,目前vr概念股已经不火了,杀手级应用迟迟未出现。没人知道杀手级应用会是什么样的,但如果做出来的东西自己都觉得不好,估计别人也肯定觉得不好。所以,还是要做自己认为好玩的、或者能够给大家带来便利的应用
VRAR前几年的概念炒得火爆,但一直没有核心产品出现,今年有所降温。个人觉得短期内比较难有“改变世界”那样的ARVR产品出现,未来几年,大概会作为游戏、教育、房产、游乐园等领域的一种新运用。
客户端服务端运算的区别
Chenyici 问:
请问服务端寻路和客户端自动寻路区别在哪里
答:
最主要的区别在于客户端寻路因为算法暴露在客户端,而客户端在用户手中,用户可以通过破解等手段修改程序,从而实现作弊。如果是服务端寻路就无法作弊了。因为每个客户端只处理自己的寻路,计算量小,而如果放到服务端,它需要计算所有角色的寻路,计算量就大很多,从技术实现上看,客户端寻路要比服务端寻路简单。
战斗回放功能的实现方法
Donot001 问:
我们游戏为3d回合制游戏,客户端用unity开发,目前要做战斗的回放,请问您有什么高效简单的办法么
答:
回放功能一般是记录状态,如果是服务端运算,只需要将服务端发送的协议全部记录下来,客户端一定可以根据这些协议恢复战斗现场的。也就是说,把战斗中的每一个状态或者状态切换都记录下来,后面客户端再恢复现场,即是按照时间轴记录玩家行为。
怎样实现多人pvp对战?
Sislcb问:
请问《Unity3D网络游戏实战》有涉及多人PVP战斗,客户端跟服务器同步的详细交互过程吗?如果有的话,对于多人及时PVP战斗,都是用帧同步吗?有比较成熟的开源实现吗?有一些坑的经验吗?比如,多少人一个房间,不会卡?或者同步的周期如何?当网络卡的时候,如何进行帧补偿?如果没有,考虑为了版本增加这方面的知识吗?
答:
书中会实现多人pvp的战斗,使用客户端计算服务端转发的方式,描述应该还算是非常详细的。同步方式使用客户端计算、服务端转发(以及一些简单的校验)、其他客户端使用预测算法计算轨迹的方式,例子中同步周期约0.2秒,6个人一个房间。可以很简单的修改为10+个人同房间,服务端应该也还行。
网络卡会影响到自己的显示,但不会影响他人,帧同步会拖慢所有人的操作,并不适合实时性很高的游戏。