用ogre引擎和unity引擎开发3d游戏引擎,下哪个版本的好呢?能提...

努力加载中,稍等...
暂无新消息
努力加载中,稍等...
已无更多消息...
这些人最近关注了你
努力加载中,稍等...
已无更多消息
努力加载中,稍等...
已无更多消息
【译】一个基于Ogre和ODE的3D RPG
版权所有,禁止匿名转载;禁止商业使用;禁止个人使用。
原文地址:版权:作者版权声明为,可以翻译简介  在这篇文章里,我介绍一个用Ogre图形引擎、ODE物理引擎和CEGUI等开发的3DRPG。框架和源代码资源在这里。背景  太空骑士是一个我孩子时期看的动画片,我还是一个游戏粉丝。所以我用我学到的知识把这个卡通开发成了RPG。这里是我用在游戏里面的Lib:? Ogre : 我用它作为图形引擎。它可以选择DirectX或是OpenGL来绘制屏幕。? OED:我用它和Ogre一起来构建游戏的物理世界。? CEGUI:它用来做游戏的主菜单、交易菜单和功能菜单。? 3D Max:游戏中的模型是在3DMax里面做的然后通过插件导出? DirectShow and Fmod: 它们用来播放音频和视频使用代码  下面是游戏框架的UML图。  游戏有几个模块,分别是任务、角色、AI、UI、工具和媒体模块。  任务模块控制着游戏的任务并且它有BaseMission 和FirstMission 等类。每一个类代表游戏的一个任务。基类控制着主要模块。  角色模块控制着游戏的角色比如主玩家、太空骑士、怪物Lada和NPC等等。他们是由entitymanager管理的并会在每一帧检测是否发生碰撞。角色模块也受到AI模块的控制;  AI模块使用状态机来模拟角色的人工智能。每个有AI的角色拥有人工智能有其自己的状态类和行为。它可以很容易地改变和扩展。  UI模块使用CEGUI显示游戏的UI。它接收来自用户的输入,把消息传递其他模块。它使用OIS接收键盘消息和鼠标消息。每个被CEGUI绘制在屏幕上的菜单都是一个脚本文件。  媒体模块就是Fmod和DirectShow的一个简单适配器。播放战斗和背景的声音和开场动画。  任务的基类包含一大堆成员和函数。它使用了UI模块来展示菜单,媒体模块来播放声音,角色模块来更新实体。它还构建了图形世界和物理世界。它还有函数来跳到下一个任务,加载保存的任务或者结束游戏。  状态机有3个主要状态:过去态、现在态和全局态。每个状态有4个行为Enter、Exit、Execute和 OnMessage。如果一个角色收到一条消息,会让状态机的当前状态执行并且转到下一个状态去。////Here is the Base Mission class//class BaseMission:
public OgreOde::CollisionListener,
public OgreOde::StepListener,
public OgreOde::TriangleMeshRayListener{public:
OgreOde::World
OgreOde::Space
OgreOde::StepHandler
OgreOde::TriangleMeshGeometry* terrainTriMeshG
OgreOde::InfinitePlaneGeometry *mG
GameFrame *gameF
Ogre::Root*
Ogre::Camera*
Ogre::SceneManager*
Ogre::RenderWindow*
CEGUI::System*
FrameListener* mFrameL
BaseMissionListener* mMissionL
GuiListener *mGuiL
Overlay *talkOverlay,*gameOverlay,*blackOverlay,*loadingOverlay,*missionIntruO
CEGUI::Window* gameSheet,* opSheet,* quitSheet,
* gameOverSheet,* loadSheet,* intruduceSheet,
* useButton,*noUseButton,* currentP
std::vector animationS
std::vector mM
std::vector mG
std::vector staticT
Role *mainM
BaseSound *mSound
SceneNode * _rocket_node_
ParticleSystem * _rocketParticles_public :
BaseMission(Ogre::RenderWindow* mW, Ogre::Root* mR, Ogre::Camera* mC,
Ogre::SceneManager* mS,CEGUI::System*
mG,GameFrame *);
virtual void Render();
virtual void Clean();
virtual void InitObjects();
virtual void createFrameListener();
virtual void NextMission();
virtual void upDate();
virtual void createScene();
virtual void UpdateGUI(void);
virtual void initDemoEventWiring(void);
Ogre::SceneManager* getSceneManager(void) const { return mSceneM }
Ogre::RenderWindow* getRenderWindow(void) const { return mW }
void resetParticleSystem(Ogre::ParticleSystem *ps, bool enable, const Ogre::Real delay);
virtual void GameOver();
void LoadGame(int i);};//// Here is part of the state machine of the AI in the game.//template class StateMachine{private:
entity_type *m_pO
State *m_pCurrentS
State *m_pPreviousS
State *m_pGlobalSpublic:
StateMachine(entity_type *owner):m_pOwner(owner),
m_pCurrentState(NULL),m_pPreviousState(NULL),m_pGlobalState(NULL){}
void SetCurrentState(State *s){m_pCurrentState =}
void SetPreviousState(State *s){m_pPreviousState =}
void SetGlobalState(State *s){m_pGlobalState =}...};template class State{public:
virtual bool OnMessage(entity_type *,Telegram &msg) = 0;
virtual void Enter(entity_type *) = 0;
virtual void Exit(entity_type *) = 0;
virtual void Execute(entity_type *) = 0;
virtual ~State(){}};操作和结果游戏操作:l
移动:W, A, S, Dl
开火: 鼠标, Z, C, Vl
任务通关: Yl
菜单: F1 游戏一共有7个任务,2个boss任务还有一个运送任务。下面是一些游戏的截图。游戏的主菜单玩家击败了一个怪兽
分类:(原创)程序新手圈
登录后参与讨论。点击
请勿发表无意义的内容请勿发表重复内容请勿发表交易类内容禁止发表广告宣传贴请使用文明用语其它
淫秽***政治倾向人身攻击抄袭剽窃广告刷屏恶意挖坟冒充他人其它十大开源游戏引擎深入比较
本文所属图书&>&
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及流音效。
引擎特性全面( ),稳定性好( ),支持还可以( ),上手和使用比较难( )。
一般说来,选择开源游戏引擎一定需要获取、好的文档及开放式支持。稳定性对于商业化运作是一个双刃剑,利于产品的开发运营,但需要有效引入新的游戏技术革新。引擎涵盖特性是一个积累过程,可以不断添加和改进。上手和使用性也反映了设计开发游戏引擎的团队的内在价值取向&&以技术为主,还是以应用为主。
游戏开发商都希望研制、运营一个万众瞩目的游戏产品,但是,使用按照不同许可证发布的游戏引擎开发的游戏产品需要遵循相应的知识产权法规。因此,游戏引擎的软件许可证成为选择时的一个极其重要的考虑因素。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。

参考资料

 

随机推荐