这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
一名程序员,如何在没有美术的前提下,制作一个游戏Demo,让别人亲身体验以了解游戏机制。
概要
- 3D 游戏中的实体模型、材质与位姿
- 相机、光照、天空盒
- 游戏控制、刚体属性与物理碰撞
- 玩法逻辑与游戏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)管理游戏界面。
总结
体验制作电子游戏原型可以帮我:
- 快速试验、否定或修改游戏机制与规划。
- 探索游戏的动态行为,理解由规则产生的可能结果。
- 确保规则和游戏元素易于被玩家理解。
- 了解玩家对游戏的情绪反应。