想学习游戏引擎架构用哪个开源引擎好

游戏引擎学习笔记:介绍、架构、设计及实现 - 文章 - 伯乐在线
& 游戏引擎学习笔记:介绍、架构、设计及实现
从小到大,虽然玩过的游戏不少,但是从写程序开始,目前为此仅仅写过2个游戏。其一是2011年在MTK平台下写的贪食蛇,其二是2010年在嵌入式开发板上写过一个迷宫的游戏。第一个代码量大概有3000行左右,第二个有2000行左右。
这2个游戏都很简单,而且网上有很多现成的例子可供参考,因此难度也比较低。
这2天把拖延了好久的《》的游戏引擎的那一章看完了,收获还是很大,在此写一篇读书笔记。
关于Game Engine,我能想到的几个问题:
游戏引擎是什么?
Game Engine是为了解决什么问题?
Game Engine的架构是什么?
如何设计一款游戏引擎?
游戏引擎包含哪些模块?
下面就来探讨几个问题:
1. Game Engine是什么?
游戏产业在全球来看是一个很大的产业,一款游戏大作包含了非常多的元素。游戏涉及到剧情、人物、任务、关卡、地图、画质、美术、音乐、网络等多种元素。开发一款游戏实际上需要耗费非常多的资源,据说North Star的《GTA V》耗资几亿美元。正因为如此,在开发项目过程中,尽可能复用之前项目成功的东西就非常重要。
一款游戏中,Game Engine直接控制着剧情、关卡、美工、音乐、操作等内容,将游戏的所有元素捆绑在一起。
一般来说,一款Game Engine需要包含以下模块:
基本框架(渲染、逻辑、物理 等等各部分如何组装)
基本逻辑(网游还要解决逻辑的同步问题)
物理(有时候和逻辑合并)
—————-分割线,以下是重要但较为独立的部分——————–
7. 音乐音效
9. 脚本(有些类型的游戏引擎需要脚本和逻辑的关联性非常强,有些脚本则比较独立)
2. Game Engine为了解决什么问题?
Game Engine实际上有效的减少开发者编写程序时的冗余劳动,同时增强游戏的可移植性。
Engine就是游戏的框架,我们需要往框架中填充内容就可以形成一个游戏。
引擎,就是一系列的工具和生产链,像Unreal 3,Unity这样的成熟引擎,用起来非常方便,就是因为它的关卡/场景编辑器十分宜用,支持多种脚本语言。这类引擎运用恰当的话,理论上能将关卡调试和物件流水线的大部分工作从程序员那里完全移出。
3. Game Engine的架构
游戏 = 引擎(程序) + 资源(图像、声音、动画等)
目前的Game Engine的架构都是Model-View-Controller架构,逻辑和显示分开,由一个逻辑控制流来协调Client的请求和Server的行动。
View: 负责界面回执
Controller:处理工作流程的创建和种植,用户输入,各种事件的处理
Model: 模型、逻辑,程序的功能实现
消息循环-&更新数据-&绘制各节点 这是绘制的基本结构基本不会有大的改变。
各种引擎的变种很大部分是在游戏逻辑上的封装。脚本也好,直接写代码也好。比如较为古老的数据与函数分离,以C语言为代表。大行其道的类结构。以c++为代表。以及现在光环日耀的CBSE,基于组件的架构
4. 如何设计一款游戏引擎?
&1&. 结构设计及功能设计
Game Engine的设计包括结构设计、功能设计及注意事项。
Game Engine包括图形引擎、脚本引擎、物理引擎、工具模块、音效引擎、网络组件、事件组件等。
Android游戏主要包括一个Activity类、流程控制类、游戏线程类和游戏对象类。Activity类是游戏的执行单元,负责游戏生命周期的控制。
流程控制:提供在游戏中多个界面之间切换方法;
游戏线程:不断监测可能发生的各种事件,计算游戏状态,刷新屏幕。
&2&. 注意事项:
手机游戏的主要问题是 硬件限制 及 电池瓶颈。CPU及内存不足,屏幕大小,音效等多方面限制,在设计时需要注意这些方面。
5. 实现一款游戏引擎
游戏引擎只是一款炒菜的炒菜锅,但有了好的炒菜锅不一定能保证炒出好的菜。
游戏引擎的实现就很复杂了,需要按照上一节的架构及功能设计去编码实现,目前绝大部分都是面向对象编程,设计好各种类。比如人物、NPC、道具、动画、动植物等等。有余力的同学可以去研究研究。
最近流行的一些游戏,其实也并不需要多么NB的游戏引擎,充分发掘用户的痛点才能设计出一款好的游戏。
目前有很多开源的Game Engine可供大家研究,比如Unity3D, Box2D等,大家可以去网上搜索并研究。
6. 对手机游戏的展望
这2年玩过的手机游戏也不少,我也来谈谈一款好的手机游戏应该具备哪些特征:
上手容易,精通不易,且玩且珍惜。手游面向的是大众,所以上手难的游戏就一律pass,必须保证游戏具有简单性,让玩家一安装就可以玩的;
可中断,时间短。一般玩游戏,都是在公交地铁上等碎片时间里,所以提供的是短时间的娱乐效果,允许在游戏和工作模式之间顺利切换;
必须加入SNS元素:一款好的手游应该具有社交元素,可以加入LBS寻找周围的玩家,或和好友一起玩游戏及互动,抑或者认识新的好友。因为手游都很简单,所以要留住玩家,加入SNS可以留住玩家;
充分利用手机的各项优点:手机的优点比如便携性,私密性,即使抵达。手机是我们身体的延伸,所以一款好的游戏应该充分利用手机的一些传感器、摄像头、网络、蓝牙,找出特点,以便设计出一款优秀的游戏。
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线十大开源游戏引擎深入比较
本文所属图书&>&
Panda3D是美国卡内基梅隆大学为娱乐巨头华特迪斯尼研发的开源、商业化三维游戏引擎,是世界十大开源游戏引擎中功能最完整、性能最稳定、商业化限制最少的一款。目前,迪斯尼仍在使用。卡内基梅隆大学在校学生及世...&&
在国内外,业界盛传有十大开源游戏引擎,分别是OGRE、Irrlicht、Panda3D、Crystal Space、jME、Blender Game Engine、Reality Factory、The Nebula Device 2、RealmForge、OpenScene- Graph。我们对这十款开源游戏引擎深入进行分析。
(1)&OGRE是面向对象图形渲染引擎(Object-Oriented Graphics Rendering Engine)的缩写,采用C++开发,以MIT许可证发布,可以在Windows、、Mac上运行。OGRE自己也说明本身不是游戏引擎。
其主要特征如下:
面向对象,插件扩展架构,具有文档支持。
支持脚本。可以通过脚本管理材质资产并进行多路渲染。
支持物理碰撞检测。
支持顶点灯光、像素灯光、灯光映射。
支持阴影映射、三维阴影。
支持多纹理、凹凸贴图、多重材质贴图、立体投影。
支持顶点、像素、高级着色。
支持场景管理,具有多种数据结构。
支持逆向运动动画、骨架动画、变形动画、混合动画及姿态动画。
支持网格加载、皮肤、渐进网格。
支持环境映射、镜头眩光、公告牌、粒子、运动模糊、天空、水、雾、丝带轨迹、透明对象。
支持XML文件转换。
引擎特性全面( ),稳定性好( ),支持全面( ),不容易上手和使用( )。
(2)&Irrlicht采用C++开发,以zlib/libpng许可证发布,可以在Windows、、Mac、Solaris、FreeBSD、Xbox上运行。Irrlicht自己也说明本身不是游戏引擎。
其主要特征如下:
面向对象,插件扩展架构,具有文档支持。
支持内建场景、灯光、GUI编辑器。
支持物理碰撞检测。
支持顶点灯光、像素灯光、灯光映射。
支持阴影映射、三维阴影、模板缓冲区阴影。
支持多纹理、凹凸贴图、多重材质贴图、立体投影。
支持顶点、像素、高级着色。
支持场景管理,具有多种数据结构,允许无缝集成室内及室外场景。
支持骨架动画、变形动画及混合动画。
支持网格加载。
支持环境映射、公告牌、粒子、天空、水、雾。
支持地形渲染。
引擎特性全面( ),稳定性好( ),支持全面( ),容易上手和使用( )。
(3)&Panda3D采用C++和开发,以BSD许可证发布,可以在Windows、Linux、Mac、SunOS上使用。Panda3D是一个完整的游戏引擎。
其主要特征如下:
面向对象,脚本扩展架构,具有文档支持。
支持内建场景、粒子、关卡编辑器。
支持物理碰撞检测,可以用于运动物体。
支持顶点灯光、像素灯光、灯光映射。
支持阴影映射、三维阴影、模板缓冲区阴影。
支持多纹理、凹凸贴图、多重材质贴图、立体投影。
支持顶点、像素、高级着色。
支持场景管理,具有多种数据结构。
支持骨架动画。
支持网格加载及皮肤。
支持环境映射、公告牌、粒子、雾、火。
支持地形渲染。
支持&客户端/服务器&网络模式。
支持2D、3D和流音效。
支持有限状态机、人工智能。
引擎特性全面( ),稳定性很好( ),支持很全面( ),很容易上手和使用( )。
(4)&Crystal Space采用C++开发,以LGPL许可证发布,可以在Windows、Linux、Mac上使用。Crystal Space是一个完整的游戏引擎。
其主要特征如下:
面向对象,扩展架构,具有文档支持。
支持内建场景、灯光、GUI编辑器。
支持物理碰撞检测,可以用于运动物体。
支持顶点灯光、灯光映射。
支持阴影映射、三维阴影。
支持多纹理、多重材质贴图。
支持顶点、像素着色。
支持场景管理,具有多种数据结构。
支持骨架动画、帧动画、变形动画。
支持网格加载、渐进网格。
支持环境映射、镜头眩光、公告牌、粒子、天空、镜像。
支持地形渲染。
支持2D、3D音效。
支持游戏世界管理。
通过有限状态机、行为树、神经网络、遗传算法支持人工智能。
引擎特性很全面( ),稳定性好( ),支持很全面( ),不容易上手和使用( )。
(5)&jME是jMonkey Engine的缩写,采用开发,以BSD许可证发布,可以在Windows、Linux、Mac上使用。JME的目标是提供一个语言3D游戏引擎,但业界目前也有人认为jME还不是一个游戏引擎。
其主要特征如下:
面向对象,插件扩展架构,具有文档支持。
支持内建游戏世界编辑器。
支持物理碰撞检测。
支持顶点灯光、灯光映射。
支持三维阴影。
支持多纹理、多重材质贴图。
支持顶点、像素、高级着色。
支持场景管理,具有多种数据结构。
支持骨架动画、帧动画。
支持网格加载及皮肤。
支持环境映射、镜头眩光、公告牌、粒子、天空、水、火、爆炸、雾。
支持地形渲染。
支持3D音效。
引擎特性全面( ),稳定性好( ),支持很全面( ),容易上手和使用( )。
(6)&Blender游戏引擎是采用C++和开发,以GPL许可证发布,可以在Windows、Linux、Mac、Solaris、FreeBSD、Irix上使用。Blender是一个完整的游戏引擎。
其主要特征如下:
面向对象,插件及脚本扩展架构,具有文档支持。
支持内建工作流、GUI、、角色等编辑器。
支持物理碰撞检测,可以用于运动物体。
支持顶点灯光、像素灯光。
支持阴影映射。
支持多纹理、凹凸贴图。
支持顶点、像素着色。
支持场景管理,具有多种数据结构。
支持逆向运动动画、帧动画。
支持网格加载及皮肤。
支持环境映射、粒子、天空、水、雾。
支持地形渲染。
支持&客户端/服务器&网络模式。
支持2D及3D音效。
通过脚本方式支持人工智能。
引擎特性基本全面( ),稳定性基本不错( ),支持全面( ),不容易上手和使用( )。
(7)&Reality Factory是采用C++开发,以MIT许可证发布,可以在Windows上使用。Reality Factory自称游戏无需。
其主要特征如下:
面向对象,脚本扩展架构,具有文档支持。
支持内建几何形体编辑器。
支持物理碰撞检测。
支持顶点灯光、像素灯光、辐射灯光、三维灯光。
支持阴影映射。
支持多纹理、凹凸贴图、多重材质贴图、投影。
支持顶点、像素着色。
支持场景管理,具有多种数据结构。
支持骨架动画、帧动画及混合动画。
支持网格加载及皮肤。
支持环境映射、公告牌、粒子、天空、水、火、爆炸、雾、贴花、天气、镜像。
支持地形渲染。
支持&客户端/服务器&网络模式。
支持3D及流音效。
通过路径查找、决策及脚本方式支持人工智能。
引擎特性基本全面( ),稳定性基本不错( ),支持基本全面( ),容易上手和使用( )。
(8)&The Nebula Device 2是采用C++开发,以MIT许可证发布,可以在Windows、Linux上使用。Nebula Device是一个完整的游戏引擎。
其主要特征如下:
面向对象,插件及脚本扩展架构,具有文档支持。
支持内建几何形体编辑器。
支持物理碰撞检测。
支持顶点灯光、像素灯光、灯光映射、光泽映射。
支持阴影映射。
支持多纹理、凹凸贴图、多重材质贴图、投影。
支持顶点、像素、高级着色。
支持场景管理,具有多种数据结构。
支持骨架动画、帧动画、变形动画及混合动画。
支持网格加载及皮肤。
支持环境映射、镜头眩光、公告牌、粒子、天空。
支持地形渲染。
支持&客户端/服务器&、P2P网络模式。
支持2D、3D及流音效。
通过脚本方式支持人工智能。
引擎特性全面( ),稳定性好( ),支持基本全面( ),不容易上手和使用( )。
(9)&RealmForge是采用C#在OGRE上开发,以LGPL许可证发布,可以在Windows、Linux、Mac、Solaris、HP/UX、FreeBSD上使用。RealmForge是一个完整的游戏引擎,现在已经转入商业化运作。
其主要特征如下:
面向对象,插件及脚本扩展架构,具有文档支持。
支持内建游戏编辑器。
支持物理碰撞检测,可以用于运动物体。
支持顶点灯光、像素灯光、灯光映射。
支持阴影映射、投影面、立体投影。
支持多纹理、凹凸贴图、多重材质贴图、投影。
支持顶点、像素、高级着色。
支持场景管理,具有多种数据结构。
支持骨架动画、帧动画、面部动画及混合动画。
支持网格加载、皮肤及渐进网格。
支持环境映射、镜头眩光、公告牌、粒子、天空、水、火、爆炸、贴花、雾、天气、镜像。
支持地形渲染。
支持&客户端/服务器&、P2P网络、主控服务器模式。
支持3D及流音效。
通过路径查找、决策、优先状态机、脚本、神经网络等方式支持人工智能。
引擎特性全面( ),稳定性基本不错( ),支持基本全面( ),不容易上手和使用( )。
(10)&OpenSceneGraph是采用C++开发,以LGPL许可证发布,可以在Windows、Linux、Mac、Solaris、SunOS、FreeBSD、Irix、Playstation上使用。OpenSceneGraph是一个完整的游戏引擎。
其主要特征如下:
面向对象,插件及脚本扩展架构,具有文档支持。
支持内建场景编辑器。
支持物理碰撞检测。
支持顶点灯光、各向异性灯光。
支持投影面、立体投影。
支持多纹理、多重材质贴图、投影。
支持顶点、像素、高级着色。
支持场景管理,具有多种数据结构。
支持骨架动画、帧动画及混合动画。
支持网格加载及皮肤。
支持环境映射、公告牌、粒子、镜像。
支持地形渲染。
支持&客户端/服务器&、P2P网络、主控服务器模式。
支持2D、3D及流音效。
引擎特性全面( ),稳定性好( ),支持还可以( ),上手和使用比较难( )。
一般说来,选择开源游戏引擎一定需要获取、好的文档及开放式支持。稳定性对于商业化运作是一个双刃剑,利于产品的开发运营,但需要有效引入新的游戏技术革新。引擎涵盖特性是一个积累过程,可以不断添加和改进。上手和使用性也反映了设计开发游戏引擎的团队的内在价值取向&&以技术为主,还是以应用为主。
游戏开发商都希望研制、运营一个万众瞩目的游戏产品,但是,使用按照不同许可证发布的游戏引擎开发的游戏产品需要遵循相应的知识产权法规。因此,游戏引擎的软件许可证成为选择时的一个极其重要的考虑因素。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'游戏引擎架构(1)
笔记(20)
博客搬家自
游戏团队:工程师、艺术家、游戏设计师、制作人
平台游戏(platformer)
是指基于人物角色的第三人称游戏。
主要的游戏机制是在平台之间跳跃。
第三人称游戏
比较看重主角的能力及运动模式。
需要逼真的全身动画。
复杂的摄像机碰撞系统,以保证视点不会穿过背景几何物体或动态的前景物体。
格斗游戏
丰富的格斗动画
准确的攻击判定
能侦测复杂按钮及摇杆组合的玩家输入系统
使用许多窍门渲染遥远背景,比如二维纸板形式的树木、山脉
赛道通常切开成较简单的二维区域,称为分区(sector)。用于实现渲染优化、可见性判断。
实时策略游戏(Real-time strategy, RTS)
通常不允许玩家改变视角以观看不同距离的景物,这个限制使开发者能在RTS引擎上采用各种优化。
译注:等角投影 屏幕上3个轴的夹角均为或接近120度。
较低解析度的模型以支持大量单元。
CryTek公司把部分研究成果公开:
/cryengine/presentations
开源引擎:
Panda3D 基于脚本的引擎、
Yake 基于OGRE开发的全功能引擎
Crystal Space
Boost的在线文档是一个学习计算机科学的好地方。
Loki 是强大的泛型编程模板库。它尤其擅长绞尽你的脑汁。
《C++设计新思维》
有关STL标准在游戏应用的问题及解决方案
EASTL 29页
libgcm是索尼提供给PlayStation3的低阶直接接口,比OpenGL更高效。
Edge 顽皮狗和索尼为PlayStation3制作的强大高效渲染及动画引擎。
Open Dynamics Engine ODE
角色动画工具
Havok Animation
人工智能工具
内存管理 内存碎片问题
渲染系统 分层从低到高
1. 低阶渲染器 只负责渲染
图形设备接口 使用DirectX或OpenGL
2. 场景图/剔除优化
3. 视觉效果
贴花系统 decal system 弹孔、脚印等
光照贴图、环境贴图
全屏后期处理效果
HDR光照、敷霜效果bloom
全屏抗锯齿FSAA
4. 前端 UI等
剖析和调试工具
intel VTune
IBM Quantity, Purify
Compuware Bounds Checker
时至今日,很少有公司编写自己的碰撞及物理引擎。取而代之,通常使用第三方的物理SDK。
刚体动力学
软体动力学
流体动力学
精灵/纹理动画
刚体层次结构动画
变形目标动画
微软音频工具包 XACT
切割屏多人
A*寻路算法
粒子系统工具 Houdini
剖析器(Profiler)
统计式剖析器 - 计算出某函数占整体执行时间的近似百分比,
不影响游戏运行
Intel VTune
测控式剖析器 - 为每个函数安插特殊的初构代码
程序会变得很慢
IBM Rational Quantify (Rational Purify Plus工具套装之一)
混合式剖析器
微软 LOP (Low Overhead Profiler)
检测内存泄露
IBM Rational Purify
Compuware Bounds Checker
合成和聚合
has-a 合成
uses-a 聚合
接口为王 保持接口整洁、简单、有良好注释
良好的命名
Effective C++ , Effective STL , Large-Scale C++ Software Design
/articles/Wrong.html
Ogre的基本数据类型
uint8 uint16 uint32
Real OGRE_DOUBLE_PRECISION 1 double 0 float
uchar ushort uint ulong
Radian Degree Angle
多字节值及字节序
小端 Intel
大端 Wii Xbox360 PlayStation3
字节序的解决方案:
1. 所有数据以文本方式写入文件
2. 转换字节序,就像网络通信一样
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9383次
排名:千里之外
原创:34篇
(2)(4)(3)(4)(12)(18)你必需知道的5个开源游戏引擎_C++,C语言_ThinkSAAS
你必需知道的5个开源游戏引擎
你必需知道的5个开源游戏引擎
内容来源: 网络
对游戏编程初哥来说,选择一个好的游戏引擎是一个很头疼的事。市面上鱼目混杂,并且价格不菲。今天我要隆重推出我的胡润游戏引擎五强(严格上说是四个,有一个是图像引擎)。他们不仅被证明是可靠的,而且全部开放源码。
1. Irrlicht
始于2003,次年即被评为最佳开源引擎。官方支持C++和.Net,拓展语言绑定包含java,perl,ruby,python.跨平台支持,使用D3D,OpenGL以及自带API.
优点:容易上手;跨平台;自带XML解析器;大的社区;
缺点:最近开发慢下来了
2. Panda3D
由迪斯尼开发,卡耐基-梅隆娱娱乐科技中心支持。Python是官方推荐语言。也支持C++。
优点:有用的社区;大量功能;定期开发;
缺点:缺乏工具支持;极差的文档;
3. jME (爪哇猴子引擎)
全部由Java实现。最流行的Java游戏引擎之一。
优点:容易上手;活跃的社区;内置物理引擎
缺点:我不太知道,因为没用过
图像引擎中最好的一个。2000年立的项。推荐使用C++语言。需要非常熟悉编程才行。初学者不宜。
优点:大量功能;优异的文档;大规模的社区;活跃的开发
缺点:不适合初哥;只有图像引擎
5. Crystal Space
1997年发行,用C++编写的。推荐使用C++
优点:不错的社区支持;大量功能;
缺点:难学;
我个人的经验是,C++初学者应从Irrlicht着手,这是最容易上手的。我没有Java编程经验,所以不好说什么。但是我认为jME还是可以踹踹的,很好的社区支持啊。
最后欢迎大家踊跃发言,敬请砸砖。敬礼先!
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信