"小"游戏开发-理论篇|青训营笔记

161 阅读3分钟

这是我参与

「第四届青训营」笔记创作活动的第13天

游戏定义

最广泛定义: 其活动本质带有目的、规则、挑战和互动的,都能归类为游戏

  • 传统游戏:体育比赛、运动等对于参与者有策略选择或规则要求,双方具有对抗性和互动
  • 电子游戏:具有游戏的特征但是玩家依托电子设备进行交互的
    • 早期街机2D游戏
    • 3D游戏、网络游戏
    • 主机游戏
    • 移动端、小游戏

狭义定义: 通过游戏引擎制作的电子游戏

主要类型划分 image.png

前端场景下的游戏开发

开发团队

一个游戏项目的开发最核心的分工在于:策划、程序、美术

image.png

开发过程

主要的流程:
立项 ->原型(DEMO)->体验阶段(A测、B测)->上线运营

image.png

为什么要使用游戏引擎

游戏引擎如同框架,能够减少重复代码的编写,提高开发效率,游戏引擎能提供最大的好处就是渲染
引擎会提供许多组件,能缩短开发时间,让游戏开发从复杂变得简单;
许多游戏引擎包含 2D/3D图形元素处理、碰撞检测、物理效果、静态资源、控制器支持等功能

游戏引擎

常见的游戏引擎:

  • Unreal 虚幻引擎
  • Unity3D
  • Source 起源引擎

特定类型的游戏引擎:

  • The NVL Maker - 文字游戏制作器
    无需代码,只要有文本和一些配置就能生成
    有个能适用于前端的库(AVG.js Project)- 内核基于PixJS渲染引擎

  • RPG Maker - 角色扮演游戏制作器
    使用少量的代码就能搭建关卡,适合代码能力不强又想实现自己独特想法的开发者

Web游戏引擎

利用Canvas和WebGL为底层技术抽象的图像绘制库

Web游戏引擎通用能力:

  • 预加载:将加载时机、加载过程加以抽象,解决大量静态资源的请求时间和加载问题,解决编码中的效率问题

  • 展示和图层、组合系统:使用底层API需要大量编码编写简单的展示,而且图形间没有组合和图层,很难处理元素组合和图层问题,渲染引擎能够简化关于界面的处理

  • 动画系统:[缓动动画 | 逐帧动画] 动画在原生JS中需要搭配帧渲染进行考量与编写,难度巨大,因此引擎提供动画系统

  • 音效和声音:包含了对音频资源操作方法的集成

功能引擎

一个大型游戏引擎往往都由许多小功能的引擎组成,包含:
渲染引擎、物理引擎、UI系统、动画系统、声音系统、粒子系统等,最重要的是物理引擎渲染引擎

image.png

Web游戏引擎渲染过程

Pixi.js渲染引擎为例:

  • 创建一个Render渲染器,获取view(一个canvas对象),添加到DOM Tree中;或者指定Dom树中的canvas对象

  • 在Mainloop(主循环体,用于界面展示)中调用Render.render()并传入DisplayObject作为根节点开发渲染

  • 从根节点开始,已zIndex为序从小到大进行深度遍历,对每个场景进行渲染,再由后往前把场景绘制

render(displayObject,renderTexture,clear,transform,skipUpdateTransform){
	//应用变换(GPU级别)
	this.projection.transform = transform;
	//渲染纹理绑定
	this.renderTexture.bind(renderTexture);
	//执行元素渲染,将数据添加到BatchRendering中
	this.batch.currentRender.start();
	//执行render绘制方法
	displayObject.render();

	this.batch.currentRender.flush();
	//清空
	this.projection.transform = null;
}