小游戏开发 | 青训营笔记

92 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

开发链路和角色

游戏开发的团队分工:

组件一个最小但完整的游戏开发团队只需要3个人:策划、程序、美术。

具体来看,策划包括数值策划和内容策划;美术包括原画、2D/3D和音效/动效;程序包括前端和后端;还有其他支持,例如QA、运营、运维、市场等。

游戏开发的基本链路:

为什么要用游戏引擎?游戏引擎最大的作用:渲染

游戏引擎可以复用所有游戏都会用到的代码,提高开发效率。

游戏引擎通常包含渲染器,2D/3D图形元素,碰撞检测,物理引擎,声音,控制器支持,动画等部分。

以WEB前端开发的视角看2D游戏引擎,无非是一套框架,一套解决方案。但是开发理念上还是有差别的:游戏开发更关注内容。

游戏引擎

市面上常见的游戏引擎:

  • Unreal(虚幻)
  • Source(起源)
  • Frostbite Engine(寒霜)
  • Unity3D

上面的都是大型专业的游戏引擎,还有一些最容易上手的游戏引擎:

  • 特定类型的客户端游戏引擎:The NVL Maker,文字冒险游戏制作器,No Code形式的开发,只需要写文字脚本加上一定的配置就可以生成一个文字冒险游戏。
  • 适用于前端的库AVG.js,制作文字游戏。
  • RPG Maker,以Low Code搭建一个官卡类型的游戏。

Web游戏引擎:利用Canvas和WebGL为底层技术抽象的图像绘制库。

Web游戏引擎的通用能力:

  • 预加载
  • 展示与图层、组合系统
  • 动画系统
  • 音效和声音系统

Web游戏引擎:

  • Cocos
  • Laya
  • Egret
  • CreateJS & Phaser

功能引擎:大型游戏引擎往往是由小的功能引擎组装成的。例如渲染引擎、物理引擎、UI系统、声音系统、动画系统、粒子系统、骨骼系统、网络系统等。功能引擎就是专注于某个方向能力的引擎,特点是体积小,功能完善。

例如:

  • Pixi.js:2D渲染引擎
  • Three.js:3D渲染引擎
  • Box2D.js:2D物理引擎

前端游戏开发技能树:

PixiJS

基本使用:

  • npm安装或script引入
  • 创建Pixi应用和舞台
  • 把canvas添加到DOM Tree中
// 创建应用
const app = new PIXI.Application({
    width: 800, 
    height: 600, 
    backgroundColor: 0x1099bb
});
// 添加到DOM树
document.body.appendChild(app.view);
  • Sprite:精灵,在游戏引擎中Sprite是用于承载图像的对象。PIXI使用纹理缓存来存储和引用Sprite所需要的纹理。
// 将图片素材加载到Pixi中
PIXI.loader.add("images/cat.png").load(res => {
   let sprite = new PIXI.Sprite(
        PIXI.loader.resources["images/cat.png"].texture
   ) 
});
  • 在舞台中显示创建的Sprite
app.stage.addChild(sprite);
  • 可以设置sprite的属性
sprite.width = 80;
sprite.height = 120;
sprite.position.set(20, 20);
sprite.scale.set(2, 2);
sprite.rolation = 0.5;
  • 游戏循环:游戏循环的代码每一帧都会调用一次
app.tiker.add(delta => {
    sprite.x += 1;
});

Cocos Creator

Cocos Creator是一个完整的游戏开发解决方案,包含了轻量高效的跨平台游戏引擎,以及能快速开发游戏所需要的各种图形界面工具。

Cocos工作流: