游戏引擎介绍,架构,设计及实现

本文的灵感来自于《Android应用开发揭秘》的游戏引擎的那一章。

关于Game Engine,我能想到的几个问题:

1、游戏引擎是什么?

2、Game Engine是为了解决什么问题?

3、Game Engine的架构是什么?

4、如何设计一款游戏引擎?

5、游戏引擎包含哪些模块?

下面就来探讨几个问题:

 1. Game Engine是什么?

游戏产业在全球来看是一个很大的产业,一款游戏大作包含了非常多的元素。游戏涉及到剧情、人物、任务、关卡、地图、画质、美术、音乐、网络等多种元素。开发一款游戏实际上需要耗费非常多的资源,据说North Star的《GTA V》耗资几亿美元。正因为如此,在开发项目过程中,尽可能复用之前项目成功的东西就非常重要。

一款游戏中,Game Engine直接控制着剧情、关卡、美工、音乐、操作等内容,将游戏的所有元素捆绑在一起。

一般来说,一款Game Engine需要包含以下模块:

1、基本框架(渲染、逻辑、物理 等等各部分如何组装)

2、资源管理

3、渲染

4、基本逻辑(网游还要解决逻辑的同步问题)

5、物理(有时候和逻辑合并)

6、UI

7、音乐音效

8、网络

9、脚本(有些类型的游戏引擎需要脚本和逻辑的关联性非常强,有些脚本则比较独立)

   2. Game Engine为了解决什么问题?

Game Engine实际上有效的减少开发者编写程序时的冗余劳动,同时增强游戏的可移植性。

Engine就是游戏的框架,我们需要往框架中填充内容就可以形成一个游戏。

引擎,就是一系列的工具和生产链,像Unreal 3,Unity这样的成熟引擎,用起来非常方便,就是因为它的关卡/场景编辑器十分宜用,支持多种脚本语言。这类引擎运用恰当的话,理论上能将关卡调试和物件流水线的大部分工作从程序员那里完全移出。

 3. Game Engine的架构

游戏 = 引擎(程序) + 资源(图像、声音、动画等)

目前的Game Engine的架构都是Model-View-Controller架构,逻辑和显示分开,由一个逻辑控制流来协调Client的请求和Server的行动。

1、View: 负责界面回执

2、Controller:处理工作流程的创建和种植,用户输入,各种事件的处理

3、Model: 模型、逻辑,程序的功能实现

消息循环->更新数据->绘制各节点 这是绘制的基本结构基本不会有大的改变。

各种引擎的变种很大部分是在游戏逻辑上的封装。脚本也好,直接写代码也好。比如较为古老的数据与函数分离,以C语言为代表。大行其道的类结构。以c++为代表。以及现在光环日耀的CBSE,基于组件的架构

  4. 如何设计一款游戏引擎?

<1>. 结构设计及功能设计

Game Engine的设计包括结构设计、功能设计及注意事项。

Game Engine包括图形引擎、脚本引擎、物理引擎、工具模块、音效引擎、网络组件、事件组件等。

Android游戏主要包括一个Activity类、流程控制类、游戏线程类和游戏对象类。Activity类是游戏的执行单元,负责游戏生命周期的控制。

流程控制:提供在游戏中多个界面之间切换方法;

游戏线程:不断监测可能发生的各种事件,计算游戏状态,刷新屏幕。

<2>. 注意事项:

手机游戏的主要问题是 硬件限制 及 电池瓶颈。CPU及内存不足,屏幕大小,音效等多方面限制,在设计时需要注意这些方面。

  5. 实现一款游戏引擎

游戏引擎只是一款炒菜的炒菜锅,但有了好的炒菜锅不一定能保证炒出好的菜。

游戏引擎的实现就很复杂了,需要按照上一节的架构及功能设计去编码实现,目前绝大部分都是面向对象编程,设计好各种类。比如人物、NPC、道具、动画、动植物等等。有余力的同学可以去研究研究。

最近流行的一些游戏,其实也并不需要多么NB的游戏引擎,充分发掘用户的痛点才能设计出一款好的游戏。

目前有很多开源的Game Engine可供大家研究,比如Unity3D, Box2D等,大家可以去网上搜索并研究。

      6. 对手机游戏的展望

这两年玩过的手机游戏也不少,一款好的手机游戏应该具备哪些特征:

1、上手容易,精通不易,且玩且珍惜。手游面向的是大众,所以上手难的游戏就一律pass,必须保证游戏具有简单性,让玩家一安装就可以玩的;

2、可中断,时间短。一般玩游戏,都是在公交地铁上等碎片时间里,所以提供的是短时间的娱乐效果,允许在游戏和工作模式之间顺利切换;

3、必须加入SNS元素:一款好的手游应该具有社交元素,可以加入LBS寻找周围的玩家,或和好友一起玩游戏及互动,抑或者认识新的好友。因为手游都很简单,所以要留住玩家,加入SNS可以留住玩家;

4、充分利用手机的各项优点:手机的优点比如便携性,私密性,即使抵达。手机是我们身体的延伸,所以一款好的游戏应该充分利用手机的一些传感器、摄像头、网络、蓝牙,找出特点,以便设计出一款优秀的游戏。

另外,对于安全这块,Android应用安全系数低就不用数了,Android游戏开发也是屡遭游戏外挂、游戏封包、加速器、内购破解及内存修改等众多风险的威胁。因此,要讨好最终用户,还得给自己开发的游戏穿一层保护衣,可以利用移动应用安全平台的加密技术,在这方面,爱加密有专门的解决方案,无论强联网、弱联网还是单机游戏,都有相应的完整的解决方案http://www.ijiami.cn/appprotect_mobile_games

时间: 2024-08-27 13:21:50

游戏引擎介绍,架构,设计及实现的相关文章

第1部分: 游戏引擎介绍, 渲染和构造3D世界

原文作者:Jake Simpson译者: 向海Email:[email protected] ------------------------------------------------------------第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了很远. DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎". 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和

阿里游戏高可用架构设计实践

今天读了李云华老师写的<阿里游戏高可用架构设计实践 >,有一些感受想分享一下. 印象很深的一句话那就是他最开始说的“把韵味的锅让研发去背!”也就是说,高可用的系统是设计出来的,不是靠运维保障出来的! 他提到出现问题人们的思考顺序为:首先想到的是不是运维太LOW了,比如说硬件质量太差,为什么这个月机柜也坏.交换机也坏,是不是到电脑城买个二手货放里面了?第二想到的是不是运气不好,之前一个月.两个月才遇到一次,这个月遇到了4次,是不是你们没有在机房烧香?第三个是不是测试不足,为什么这些Bug测试阶段

游戏引擎/GUI的设计与实现-序

几年前写<嵌入式GUI FTK设计与实现>,没写几篇就停止更新了.当时自己研究过MicroWindows, X Window, DirectFB, GTK+和Android的GUI,又写过嵌入式GUI FTK,以为自己对GUI还算熟悉,但是真正写起来还是有些力不从心.另外硬件的飞速发展,我感觉FTK的实用价值不大了,自己的精力转向了CANTK的开发,所以没有再写下去. 这几年我又实现了两个GUI,一个是CANTK,它是基于HTML5的CANVAS元素实现的,针对移动设备的GUI,它已经开源了.

【总结】游戏框架与架构设计(Unity为例)

使用框架开发游戏 优点:耦合性低,重用性高,部署快,可维护性高,方便管理.提高开发效率,降低开发难度 缺点:增加了系统结构和实现的复杂性,需要额外花费精力维护,不适合小型程序,易影响运行效率   常见框架 MVC  表现层(View):游戏画面.UI 逻辑层(Controller):数据接口,操作控制,AI 数据层(Model):数据保存,图片.声音等资源 我的SFramework中,View层是单独的,Model我放在基类中,Controller则在派生类,实现了MVC的分离(如果要重构的话我

Cocos2d-android游戏引擎-介绍

一.游戏引擎概念 什么是游戏引擎 游戏引擎是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件.这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能easy和高速地做出游戏程式而不用由零開始. Cocos2d家族 cocos2d是一个开源的游戏开发框架,利用它能够很easy的开发2D游戏. 包含下面成员 Cocos2d-x Cocos2d-iphone Cocos2d-android 本质差别:开发的语言不一样:Cocos2d-x使用c++.Cocos

1.Phaser游戏引擎介绍

国外免费开源的2D游戏引擎 支持平台 IE9+ 火狐 谷歌 safari 移动端IOS5+ Android2.2+ 可以用cocoonJS打包 支持WEBGL和canvas(两者自动切换) 简单易用的加载系统 完善的动画系统 丰富的用户交互事件(最多10个点的数控) 支持HTML5 audio 和web audio两种声音模式 内置3个物理引擎 也支持typescript 开发准备 phaser.js文件 phaser的文档和示例 前两者都可在GitHub上找到 顺手的编辑器(sublime.w

游戏引擎/GUI的设计与实现-常见GUI架构

以X Window为代表的客户/服务器架构. X Window通常是指X服务器及封装了通信协议的客户端库.服务器端主要负责输入事件的分发,窗口层次的管理,以及显示输出的处理,其它功能基本上都是在客户端实现了.我们看到的各种界面元素都是在客户端绘制的,这一部分通常称为ToolKit,应用程序开发者只需要关注ToolKit就行了.以前的ToolKit非常多,经过多年的进化和淘汰,常用的ToolKit主要是GTK+和QT两个了.X Window是非常复杂和晦涩的,以前我花了不少时间去研究用于嵌入式系统

游戏引擎/GUI的设计与实现-主题

GUI的主题与中心思想没有什么关系,纯粹是一种控制GUI外观的配置方案.几乎所有的视觉效果都由主题是控制的,一个设计良好的主题模块,可以通过配置文件模拟不同的系统.主题的设计可繁可简,能满足自己的需要就可以了.这里以我写得几个GUI,FTK,CANTK和WTK为例,介绍一下主题得设计. 主题的内容 一般来说每种控件都有一种或多种状态,常见的状态有正常状态.鼠标按下状态.鼠标OVER状态.只读状态,选中状态和禁用状态等.比如文本只用正常状态,按钮有正常状态.鼠标按下状态.鼠标OVER状态和禁用状态

VC++实战《星际传奇》网游课程第一部分网络游戏开发基础篇(游戏引擎设计)

本系列课程基于最新的DirectX11接口进行深入细致的讲解,内容涉及D3D11原理与应用.DirectInput.DirectSound等: 教程中专门针对新兴的D3D11接口展开深入的讲解,详细讲解了D3D11渲染管线.DirectComputer(参看<VC++游戏开发系列之Directcomputer并行计算原理与实践--DX11游戏实战开发>).Tessellation.多线程渲染.Shader动态链接等新内容.新知识.并且基于这些内容的基础,更进一步讲解了光照模型原理及实现.高级的