OGRE Wiki
Support and community documentation for Ogre3D
Ogre Forums
ogre3d.org
Log in
Username:
Password:
CapsLock is on.
Remember me (for 1 year)
Log in
Home
Tutorials
Tutorials Home
Basic Tutorials
Intermediate Tutorials
Mad Marx Tutorials
In Depth Tutorials
Older Tutorials
External Tutorials
Cookbook
Cookbook Home
CodeBank
Snippets
Experiences
Ogre Articles
Libraries
Libraries Home
Alternative Languages
Assembling A Toolset
Development Tools
OGRE Libraries
List of Libraries
Tools
Tools Home
DCC Tools
DCC Tutorials
DCC Articles
DCC Resources
Assembling a production pipeline
Development
Development Home
Roadmap
Building Ogre
Installing the Ogre SDK
Setting Up An Application
Ogre Wiki Tutorial Framework
Frequently Asked Questions
Google Summer Of Code
Help Requested
Ogre Core Articles
Community
Community Home
Projects Using Ogre
Recommended Reading
Contractors
Wiki
Immediate Wiki Tasklist
Wiki Ideas
Wiki Guidelines
Article Writing Guidelines
Wiki Styles
Wiki Page Tracker
Ogre Wiki Help
Ogre Wiki Help Overview
Help - Basic Syntax
Help - Images
Help - Pages and Structures
Help - Wiki Plugins
Toolbox
Freetags
Categories
List Pages
Structures
Trackers
Statistics
Rankings
List Galleries
Ogre Lexicon
Comments
History: Experiences:OpenMW
View page
Source of version: 4
(current)
{IMG(src="https://openmw.org/wp-content/uploads/2014/12/10750237_574294209337349_7419861345504652452_o.jpg",thumb="y", button="y", stylebox=border, width="230",align="right",title="OpenMW screenshot (https://wiki.openmw.org/index.php?title=Screenshots screenshots)")}{IMG} * __Full game title__: __[https://openmw.org|OpenMW]__ * __Developer__: OpenMW community * __Type__: Open Source * __Target Platforms__: Windows, Linux, Mac, (Android) * __Links__: [https://www.youtube.com/user/MrOpenMW|YouTube channel], [https://github.com/OpenMW/openmw|GitHub] {maketoc showhide="y"} !!About OpenMW is a cross-platform open source rewrite of the [https://en.wikipedia.org/wiki/The_Elder_Scrolls_III:_Morrowind|Elder Scrolls III: Morrowind] engine. In it's current state it is mostly complete and can be used to play Morrowind plus the official expansions. Being an open-world RPG engine, it uses a large number of Ogre features, so we will describe our experience in this article. !!Software and tools * __Programming Language__: C++ * __Main library__: Ogre3D (currently 1.9) * __Other libraries__: SDL2, MyGUI, OpenAL, FFmpeg, Bullet physics !!Resources We have written custom Ogre Archive classes to be able to load resources from BSA (Bethesda Softworks Archive) files, and for handling case-insensitive path lookup as necessary on Linux systems. This works fine and requires no changes to Ogre itself, but for a cleaner code we are hoping that the [http://www.ogre3d.org/forums/viewtopic.php?f=13&t=77193|Resource system redesign] GSOC eventually gets merged into Ogre. !!NIF files Morrowind uses the proprietary NetImmerse file format, which is very flexible. It is more of a "scripted scene" format rather than a mesh format. OpenMW can load NIF files and convert them into a set of Ogre Entities, Particle Systems and Controllers. !!Particles We also used the Ogre ParticleSystem for NIF file support. We had to register custom Emitter and Affector classes to properly emulate the particle behaviour for NIF files. Thanks to Ogre's extensible design this did not require any changes in Ogre. !!Materials & shaders OpenMW has a flexible shader pipeline, courtesy of the [https://github.com/scrawl/shiny|Shiny] add-on, allowing us to create many complex shader permutations from a single shader file. It also currently supports both GLSL and HLSL shaders from the same shader file, using porting macros defined in a header. "Shiny" and the related [http://www.ogre3d.org/forums/viewtopic.php?f=13&t=80120|Material system improvements Draft] that I published sparked off some discussions on the Ogre forums, and was a source of inspiration for the new "HLMS" material system now officially included in Ogre 2.1. Once we start using Ogre 2.1, we will most likely port our shaders to this system and shiny will become obsolete. !!Skeletal animation The Ogre animation system does not support timed animation events, so a custom animation system was written that moves the bones in the Ogre skeleton manually. Over the course of development, we found a few oddities in Morrowind's animation system that we needed to replicate, so writing a custom animation system turned out to be a good choice. !!Vertex morph animation Vertex morph animation is used in some NIF files, for example the facial animations and various creature animations. We used the Pose animation feature in Ogre to implement this and it "just worked"! !!Character equipment Morrowind's characters have segmented meshes for the various body parts. This becomes necessary when exchanging a body part with a clothing part, for example. To implement this we used Ogre's TagPoint system, which allows us to attach entities to a bone in the skeleton. One mostly unknown feature in Ogre is being able to create an "empty mesh" with no vertices, but a skeleton assigned to it. We use this to create an empty "base entity" which the various body parts and clothing parts are then attached to using TagPoints. !!Terrain Initially we used the Ogre::Terrain component and it worked mostly OK, but we were not able to achieve the same triangle layout as necessary for the Morrowind terrain. This caused an ugly crack in the environment where objects are placed precisely on the terrain. It also became apparent that the Ogre::Terrain component was unsuitable for paging large worlds. In 2013 a custom terrain engine was written for OpenMW, which is able to display all of Vvardenfell's landmass at once. [https://www.youtube.com/watch?v=2wnd9EuPJIY|YouTube video] [http://www.ogre3d.org/forums/viewtopic.php?f=11&t=79026|Ogre forum topic] !!GUI For the user interface we are using [http://mygui.info/|MyGUI]. It turned out to be rather easy to get it to resemble Morrowind's GUI, and at the same time MyGUI is feature rich and has some usability improvements "out of the box" over the Morrowind GUI. Thanks to its flexible skinning system and available toolset it will be easy for modders to create their own UI skins and layouts. !!Video For the BINK cutscenes in Morrowind we have written a custom video player using FFmpeg. In 2014 this player was refactored to be a generic Ogre video player and is now available under the MIT license as an [https://github.com/scrawl/ogre-ffmpeg-videoplayer|Ogre-addon].
Search by Tags
Search Wiki by Freetags
Latest Changes
FMOD SoundManager
HDRlib
Building Ogre V2 with CMake
Ogre 2.1 FAQ
Minimal Ogre Collision
Artifex Terra
OpenMB
Advanced Mogre Framework
MogreSocks
Critter AI
...more
Search
Find
Advanced
Search Help
Online Users
19 online users