你玩的游戏到底是怎么做的?
你玩的游戏到底是怎么做的?
原创
作者:小文
题记:这是一篇简略地介绍游戏开发流程的文章,本文将围绕"从游戏引擎中制作一个简单的小游戏"来粗略地告诉大家我们平常玩的游戏到底是怎么开发的。
目录: 1.策划 2.制作素材 3.开发 4.导出到相应平台 5.游戏测试
1.策划: 策划的意思是说首先我们要很清楚地知道自己做的是什么样的一个游戏,有哪些人物角色,单机还是联网,主角砍一刀怪飙多少血,有多少关卡等等,这些都需要我们在开发前写好开发文档。 文章中展示制作的小游戏是一个“打砖块”的小游戏:按下键盘“W”"S""A""D"控制视角上下左右移动,按下鼠标左键从屏幕上发射一个球向前撞击方块的简单小游戏。(开发文档略)

2.制作素材 利用maya,3dsmax等3D建模工具制作游戏角色。(不懂3D建模软件的同学请自行百度) 在本文的这个游戏中,游戏引擎自带的游戏物体已经能满足我们的开发需求,所以不需要外部工具制作素材。 下图给大家看一下在3dsmax中制作好的简单枪械模型(本游戏中并没有用到)

3.开发 在开发一个游戏的时候,有一个叫“游戏引擎”的东西。市面上的“游戏引擎”有很多,不同的游戏引擎区别在于它们在不同方面(如渲染、性能优化)有各自的优势,普遍使用的游戏引擎是Unity、Unreal Engine4(虚幻4)等。 文章中制作的小游戏使用的是Unity引擎+C#语言。 (1)打开Unity游戏引擎,创建一个地面,并附上预先制作好的黑色“材质球”:

(2)在场景中添加“五行八列”要被撞击的立方体,并给立方体加上“刚体”和"碰撞体":
(“刚体”和"碰撞体"是Unity游戏引擎中的组件)

(3)添加点击鼠标左键发射出去的小球,并添加“刚体”组件

(4)添加C#脚本,设置点击鼠标左键时从屏幕向前发射小球:

//Shoot .cs脚本如下: using UnityEngine; public class Shoot : MonoBehaviour { public GameObject Bullet;//生成的小球 public float speed = 2000.0f;//发射速度 // Update is called once per frame 每一帧都执行的方法 void Update () { if (Input.GetMouseButtonDown(0)) { GameObject b = GameObject.Instantiate(Bullet, transform.position, transform.rotation); Rigidbody rgd = b.GetComponent<Rigidbody>(); //刚体的速度向量 rgd.velocity = transform.forward * speed * Time.deltaTime; } } }
(5)回到unity,给我们的“Main Camera”添加shoot.cs脚本,并把制作的小球拖拽为脚本中的子弹

启动游戏,按下鼠标左键,正确发射子弹:

(6).与(5)相同,创建按下键盘“W”"S""A""D"控制视角上下左右移动的脚本“Movement.cs”,回到unity,给我们的“Main Camera”添加Movement.cs脚本。 //Movement.cs脚本如下: using UnityEngine; public class MoveMent : MonoBehaviour { public float speed = 20.0f; void Update () { float h = Input.GetAxis("Horizontal");//X轴方向上移动 float v = Input.GetAxis("Vertical");//Y轴方向上移动 transform.position += new Vector3(h, v, 0) * Time.deltaTime*speed; } }
(7)最终效果展示:

4.导出到相应平台
游戏引擎普遍都提供导出到不同平台的功能,如下图中,unity为我们提供了导出多个平台的功能,有我们常见的pc端和安卓端等。
5.游戏测试(略)
游戏上线前还需要经过一堆的测试………………
尾话:文章中介绍的内容和做的Demo都略显粗糙,对游戏开发感兴趣的师弟师妹可以更加深入地去学习游戏引擎。
文章中制作的游戏Demo的Unity工程和生成的PC端应用已上传至GitHub仓库:https://github.com/getker/GameDemo.git
我爱学习,学习使我快乐。