3D游戏实战开发 | 青训营笔记

142 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

一名程序员,如何在没有美术的前提下,制作一个游戏Demo,让别人亲身体验以了解游戏机制。

概要

  1. 3D 游戏中的实体模型、材质与位姿
  2. 相机、光照、天空盒
  3. 游戏控制、刚体属性与物理碰撞
  4. 玩法逻辑与游戏UI

详细

3D实体搭建

3D游戏由一个个具有形状的实体组成,每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。位置position(x,y,z) 旋转rotation(x,y,z) 缩放scale(x,y,z)都是三维向量坐标。在unity中,绝大部分情况下是先缩放,后旋转,最后平移。创建实体时,美术同学给的maya做好的模型有fbx,gltf,obj等,或者通过组合参数化的基本几何体创建。绘制时,修改材质、纹理、颜色。

游戏开发时基于预制体prefab,预制体存储游戏对象

相机,光照,天空盒

相机是3D空间到2D的降级。选clear flag,背景颜色,culling mask,projection选择投影方式:透视far,near,fov/正交far,fear,size

控制与碰撞

一帧内,需要执行物理计算(含运动学与动力学计算、碰撞检测)、用户输入检测、游戏逻辑执行、渲染画面,如果时间还有富余,停顿到16.67毫秒。

游戏的优化主要是减少物理、逻辑或渲染中的运算量。例如减少无意义的碰撞检测,用更少的计算量达到相同的执行目标,在用户感知不到差异的前提下尽可能裁剪渲染。

玩法逻辑与UI

学习在Unity中创建实体,给实体设置位姿、材质、刚体、脚本。

学会配置相机、光、天空盒。

理解实时游戏update的时序机制。

通过Input.GetAxis()与InputManager监听玩家输入。

用Instantiate()动态生成游戏实体实例。

从Camera.main获得相机参数,设置场景中的物体在画面中的位置。

利用标签、图层管理器区分实体种类并设置物理规则。

通过 Collider 组件与 OnCollision、OnTrigger 函数添加碰撞与触发事件。

通过图形用户界面(GUI)管理游戏界面。

总结

体验制作电子游戏原型可以帮我:

  • 快速试验、否定或修改游戏机制与规划。
  • 探索游戏的动态行为,理解由规则产生的可能结果。
  • 确保规则和游戏元素易于被玩家理解。
  • 了解玩家对游戏的情绪反应。

参考

【前端专场 学习资料六】第五届字节跳动青训营 - 掘金

「3D 游戏实战开发」第五届字节跳动青训营 - 前端专场 回放

第五届青训营 3D 游戏实战开发.pptx