【it168 评论】说起游戏开发,最头疼同时又最幸福的怕是王者荣耀团队了吧!据悉,仅2017年第一季度,这款游戏就让马化腾赚了120亿!去年底,王者荣耀团队30人瓜分了1亿奖金,最低分红60万,这让同行们好生羡慕啊!王者荣耀的火爆瞬间引燃了无数程序员想做游戏开发的心,这里正好有一份程序员面试游戏开发相关岗位可能被问到的基础面试题和答案,快来看看你离成为一名游戏开发工程师还有多远距离吧!
(1) 开发一个游戏的基本结构是什么?
开发游戏的基本结构为:
(a) 游戏接口
(b) 界面实现
(c) 游戏源代码
(2) 用java开发游戏时,你可能会遇到的问题是什么?
(a) 垃圾回收器:非确定性内存管理可能成为一个问题
(b) 缺少第三方库:大多数可用的库并不支持java。java有很多内置的库,但与游戏开发不相关。
(c) 游戏控制台不支持:常用的游戏控制台并不支持java
(d) 更小型的社区:大多数游戏开发的程序员都用c++,所以如果你用java开发程序,就很少可以从其他程序员那里获取帮助
(3) 在游戏开发中用什么模型来赚取收益?
(a) 每次拷贝付费
(b) 订阅付费
(c) 微交易
(d) 按次付费
(e) 广告收费
(f) 供应商
(g) 销售
(h) 代码许可
(i) 赞助
(4) 为什么c++语言在游戏开发中更受欢迎?
(a) 由于c++已经被使用多年,游戏开发商用起来更顺手
(b) 不同平台的sdk是以c++为中心的
(c) 比起c语言和java,c++给予更多控制权
(5) 什么是“pixel art”?
pixel art是一种通过绘制单个像素来创造图像,而不是建立3d模型的数码艺术。
(6) 什么叫做“延时(lag)”?
在线游戏中,玩家操作与服务器反应时间的间隔称作延时。
(7) 如何减少游戏延时?
为了减少游戏延时,你可以降低游戏运行设置或者升级电脑的特定部分。
(8) 什么是云游戏?
在云游戏中,游戏通过云端数据中心的游戏服务器运行,用户只运行本地客户端,将游戏控制操作传送至游戏服务器。
(9) 说出几个html5框架的游戏引擎
以下几个为html5框架的游戏引擎:
(a) construct2
(b) turbulence
(c) caat
(d) phaser
(10) bitbucket、github对游戏开发有多少优势?
bitbucket是一个编码主机服务,而不是文件共享服务。它和小型游戏开发兼容,但如果你想要处理非常大的文件或者经常变化的二进制文件,bitbucket就没那么好用了,bitbucket不能呈现二进制的区别。github为开发者创造了一个非常不错的交流环境。
(11) 什么是punkbuster?它如何工作?
为了预防和探测针对在线游戏的诈骗软件,诞生了电脑程序“punkbuster”。它扫描本地机器的记忆内存,预防其他软件进行恶意攻击。在大多数现代游戏中,punkbuster用来抵挡黑客和网络诈骗。
(12) 在java游戏开发中,animation thread类起什么作用?
animation thread类为游戏逻辑更新drawablepanel,并使控制板进行重塑。它为drawablepanel提供了参考。
(13) 用于游戏开发的安卓工具有哪些?
以下是用于游戏开发的不同工具:
(a) eclispse:整合开发环境(ide)
(b) adt——安卓elipse插件
(c)包含adb的 安卓sdk
(d) hudson——自动化建造工具
(14) 在安卓中,如何运用加载texture方法来加载图像?
加载texture 方法会读入图像指针,然后将图像加载到一个流当中。这个流会被作为texture加载到opengl中。
(15) 什么是vertex buffer object?
vertex buffer object是一个上传vertex数据到非即时模式视频设备的方法,是opengl的功能之一。
(16) 列出创建vertex buffer object的步骤
你可以通过三个简单步骤来创建vertex buffer object:
(a) 通过glgenbuffers()来生成一个新的缓冲对象
(b) 通过glbindbuffer()来绑定缓冲对象
(c) 复制vertex数据到缓冲对象
(17) 说明利用打包缓冲的优点与缺点
利用打包缓冲的优点在于它可以更有效的被gpu使用,因为所有需要的信息被放置在同一个内存区块。打包缓冲的缺点在于如果你使用的是动态数据,更新会变得困难和更缓慢。
(18) 列出安卓中存储的不同方法
安卓的存储方法如下:
(a) 共享偏好:在键值对中储存个人原始数据
(b)内部存储:在设备内存中存储个人数据
(c) 外部存储:在共享的外部存储中存储公开数据
(d) 网络连接:通过自己的网络服务器,在网络上存储数据
(e) sqlite数据库:在个人数据库中存储有结构的数据
(19) 什么是游戏循环?
对于任何游戏开发,循环都是一个中心元素。循环对于进行必要的更新以及检查游戏中的变化很有用。图表、动态、变化等都要依靠于游戏循环。
(20) 什么是fps?
fps意为每秒的帧数(frames per second),表示了用来储存和展示动态视频的信息量。每一帧是一张静态图片,通过快速连续展示这些帧来表现动态的画面。
(21) 安卓游戏开发中的“onsurfacecreated”是什么意思?
“onsurfacecreated”每次绘制表面时都会被调用,在应用程序启动、关闭至背景后再启动或者源改变时会发生。当背景环境丢失后,这些事件会被触发,每个资产会丢失,需要被重新创建。所有资产和应用程序对象需要在此处被重新创建。
(22)“onsurfacecreated”什么时候会出现?
当设备源改变时,屏幕尺寸会发生变化,从而出现“onsurfacecreated”。
(23) 程序员编程时的常见错误有哪些?
程序员编程时的常见错误有:
(a) 未声明的变量
(b) 未初始化的变量
(c) 将未初始化的值赋给变量
(d) 用单个相等标志来检查相等
(e) 未声明的函数
(f) 多余的分号
(g) 超出数组的界限
(h) 误用运算符&&和||
(24) 你可以用哪些游戏引擎来开发游戏?
以下是可以用来开发游戏的不同游戏引擎:
(1) andengine
(2) rokon
(3) libgdx
(4) android-2d-engine
(5) jmonkey engine
(6) cocos2d-android
(25) andengine的主要功能有哪些?
andengine的主要功能包括:
(a) 安卓最优化
(b) 安卓1.6兼容
(c) 屏幕分割
(d) 网络多重播放器
(e) 多点触摸
(f) 物理引擎
(26) 解释blender中的对象
blender是一个3d计算机图像软件程序,用于开发视觉效果、3d游戏、动画电影和软件,是一个开源程序。
在blender中操作对象,当你按空格键时会打开菜单块,在这里你可以选择任意尺寸的对象来创建球体、立方体等。选中对象之后,你可以进行很多操作,例如添加、删除、移动、扩展以及旋转对象。
在blender中合并两个对象,你需要进行以下几步:
·在对象模式下选中两个对象
·按ctrl+j来将两个对象合并成一个
·进入编辑模式,将其更改为表面操作模式
·按x来移除互相重合的表面或者面
·换回vertex操作模式
·选中每个对象的公共边来合并对象,按f来创建新的面
·按f后,两个对象会合二为一
你还可以用属性面板来转换对象,如果你的需求很具体,就可以利用这个方法。为了编辑你的对象的属性,你需要:
·打开属性面板
·点击对象图标
你可以通过在旋转、位置和尺寸面板中改变属性来转换对象。
你需要进入对象模式来复制对象,然后:
·右键点击想要复制的对象
·按shift+d来将其复制
·右键点击对象来退出抓取模式,不改变其位置
·然后,按m来调取层移动菜单
·点击你想移动到的层的按钮
(27) blender游戏引擎(bge)与unity3d的区别
bge与unity3d的区别在于: