SZ神庙

从此开始,遁入幻想

2016年12月12日

THEngine>

THEngine 手册(一):THEngine简介

写在前面的话

一直以来,THEngine都是为了我的《东方星雨夜》服务的一款引擎。然而考虑到这个引擎也可以用来开发别的游戏,现在是时候为这个引擎写一些文档了。

THEngine的github地址:https://github.com/SZSilence06/THEngine_Empty

THEngine的整体结构

THEngine总共由Game、Application、Scene Management、Asset Management、Math、UI System、Input等几个大的模块组成。各个模块间的关系大概是这样的:

  • Game : 有点类似于cocos2d-x里面的ccDirector,是一个全局大总管的角色。它拥有THEngine其他所有模块的指针,例如Application,Input等等。
  • Application:这是用来处理和windows平台相关的事情的类,具体来说,就是创建窗口、初始化DirectX环境,以及处理一些绘图相关的事情。
  • Scene Management:这是一个大模块,其实是以下的一族类:
    • Scene:场景类。整个游戏只能同时存在一个。
    • Layer:图层。屏幕上的一块绘图区域。Layer拥有独自的camera。它同时还是GameObject的容器,类似于cocos2d-x中的cclayer。
    • GameObject:基本的游戏元素。它是一个抽象基类。它还可以拥有别的GameObject作为它的孩子,从而构成一个树状结构。类似于cocos2d-x中的ccnode。
    • RenderObject:继承自GameObject,是将会被绘制到游戏中的元素。也是一个抽象基类。
    • Sprite:继承自RenderObject,是2d游戏中最基本的元素。
    • Particle3D:继承自RenderObject,其实就是一个会3d旋转的sprite,可以用来做一些粒子效果。
    • Mesh:继承自RenderObject,是3D游戏最基本的元素。不过现在还很不完善。。。
  • Input:处理鼠标键盘输入。目前只实现了键盘输入。
  • Asset Management:这是一族用来创建和管理游戏资源的类:
    • AssetManager:工厂类,所有资源都由它创建并管理。
    • Image:图像。底层采用的是libjpeg和libpng,所以只支持jpg和png格式。
    • Texture:纹理。内部采用Image类读取图像数据。
    • Shader:着色器。引擎内部实现了三种着色器。目前暂不支持自定义着色器。
  • Audio:音频管理类。底层采用XAudio2音频引擎。
  • Sound: 基本音效。
  • Renderer:渲染器。目前针对Sprite、Particle3D和Mesh三种RenderObject分别设计了不同的渲染器。
  • Tween:这是一个动画组件。可以用来实现一些简单的动画效果,比如淡入淡出等。
  • UI && Event System :EventSystem封装了一些Windows窗口消息。目前只封装了键盘按键消息。而UI系统目前只实现了一个基于键盘响应的菜单系统。

罗里吧嗦了这么一大顿,相信你一定看晕了有没有?不过这篇只是大概介绍一下THEngine的结构。从下一篇开始,我将介绍THEngine各个组件的具体使用方法。今天就先到这里了,晚安,世界。