There is little news this week, but there is a good reason for it; we are getting close to the release of 0.18.0. There are already RCs available on our forums. The team worked really hard and effective to close tasks on the road map. But there were severe problems with bugs on OSX.
There’s been bad luck recently with the OSX build, but only corristo on our development team uses Mac, so it’s a classical example of under-testing. This issue did get sorted out thanks to corristo and scrawl.
In other news: Scrawl implemented two more features: gamma correction and the rest/sleep window. Gamma correction adjusts the screen brightness (it’s the age old dilemma of video games: do you want to see your enemy slightly washed out or not?). Scrawl took over the Rest/Sleep window, because Aurix was quite busy lately. Thanks to the help of Hrnchamd we are quite sure that the speed of mana and health regeneration is correct. scrawl is now working on the global map, it’s only half finished but works very well!
jhooks1 made excellent progress on his task. Pmove has been reintroduced and controls are already working with all important features.
We’re celebrating an anniversary on the site. It was exactly one year ago today, that we moved to our current forums. The forum migration involved moving all the archives from google cache and amazon to the new forum “archive section”, but we had no choice. Thanks go to Lgro, our website admin! You gave OpenMW something essential to its current progress. The old website and forum had been left without any administrator, were invaded by spam bots and suffering from frequent periods of down time. In fact, we still can’t close the old forum properly; it’s still out there somewhere, dark and gloomy. Like the inside of a dead snail’s shell… or the city of Moria. Readers, if you decide to go looking in the old forums… remember not to dig too deep.
Despite the departure of the creator and lead developer of OpenMW, the remaining team members decided not to give up. They started this new website, the new forums, and reorganized the project. And here we are, in what will hopefully prove the most productive year yet for OpenMW. So raise some glasses, “To new life… to our phoenix! Santé! Mazel tov! Prost! Skål! Na zdorovie! Salud! And cheers!”
Speaking of new life, here’s what’s happened since we last talked:
Edmondo, the maintainer of OpenMW for gentoo, fixed a few recent problems that were preventing OpenMW from running on Gentoo (We are once again using submodules). Gentoo users can once again install OpenMW.
There’s been progress on our editor, thanks to Eli2. Auto completion was added and filters can now be imported from files. Lgro also pushed some bugfixes and added support for different types of encoding.
_greye is halfway finished with the player control task (a rather large task composed of five sub tasks). He’s got movement and turning working, but camera nodes still need to be completed. Right now _greye is working on fixing bugs related to objects crossing cell borders.
Corristo implemented the correct Ogre main loop for OS X, so Mac’s enjoy the speed of the cursor being freed from the tyranny of FPS.
Gus is working on moving and creating objects.
Scrawl added the basic features of the main menu. It has Return, Options, and Exit buttons.
Jhooks1 got the new
capsule box shapes collision method working on creatures.
Zini is working on yet another refactoring task, this time in the mw-subsystem. Refactoring code helps make it more organized, readable, and even efficient.
We are merging all the finished 0.17.0 features and fixes into the main branch of the engine and beginning preparations for our next release. Though thin in terms of new gameplay features, 0.17.0 includes major changes under the hood. For instance, the Shiny shader library makes shader development easier by allowing the same shaders to be run regardless of a user’s choice of the OpenGL or Direct3d rendering subsystems, graphics card, and OS. While, the new animations system that’s now in place improves performance.
If you have been following OpenMW, then you know what a picture like this means.
Here’s a link to the blog post the picture references that explains its meaning
We need a lot of testing this version. You can help out OpenMW by reporting bugs.
Though there won’t be a new release for July, last week was a great one for OpenMW. So let’s recap.
First off, we have a new developer, _greye, who finished his first task (making CreatureStats into a class) in a single day. Then he picked another one (maintenance in the item dropping code) and finished that in a short period of time. Both were very well done, so thank you _greye and welcome to the team!
nhydock, another new developer, has taken the camera control task (which is composed of four or five subtasks).
scrawl’s new shader system has been merged into the main branch. What does that mean for OpenMW? Until now we have been using the Nvidia CG toolkit. This toolkit works with DirectX and OpenGL on all graphics cards, but only gives good performance with Nvidia cards (which is understandable since its developed by Nvidia). We need both DirectX and OpenGL support because Radeon graphics cards (built by amd) lack quality OpenGL drivers. Otherwise we’d just write our shaders in OpenGL. Again the problem is CG doesn’t provide good performance for the Radeon cards. To make matters worse, CG is closed source and available for on Linux, windows, OSX and not on BSD.
To avoid the above mentioned problems with CG, many game developers instead write all their shaders twice: in GLSL for OpenGL and in HLSL for DX or just ignore OpenGL and focus on DirectX.
But the situation is improving because Scrawl made a library called “shiny”. From now on we can write a shader once and then compile it as either GLSL or HLSL. But that’s not all, here’s scrawl detailing the new library’s design and features:
– High-level layer on top of OGRE’s material system. It allows you to generate multiple techniques for all your materials from a set of high-level per-material properties.
– Several available Macros in shader source files. Just a few examples of the possibilities: binding OGRE auto constants, binding uniforms to material properties, foreach loops (repeat shader source a given number of times), retrieving per-material properties in an #if condition, automatic packing for vertex to fragment passthroughs. These macros allow you to generate even very complex shaders (for example the Ogre::Terrain shader) without assembling them in C++ code.
– Integrated preprocessor (no, I didn’t reinvent the wheel, I used boost::wave which turned out to be an excellent choice) that allows me to blend out macros that shouldn’t be in use because e.g. the shader permutation doesn’t need this specific feature.
– User settings integration. They can be set by a C++ interface and retrieved through a macro in shader files.
– Automatic handling of shader permutations, i.e. shaders are shared between materials in a smart way.
– An optional “meta-language” (well, actually it’s just a small header with some conditional defines) that you may use to compile the same shader source for different target languages. If you don’t like it, you can still code in GLSL / CG etc separately. You can also switch between the languages at runtime.
– On-demand material and shader creation. It uses Ogre’s material listener to compile the shaders as soon as they are needed for rendering, and not earlier.
– Shader changes are fully dynamic and real-time. Changing a user setting will recompile all shaders affected by this setting when they are next needed.
– Serialization system that extends Ogre’s material script system, it uses Ogre’s script parser, but also adds some additional properties that are not available in Ogre’s material system.
– A concept called “Configuration” allowing you to create a different set of your shaders, doing the same thing except for some minor differences: the properties that are overridden by the active configuration. Possible uses for this are using simpler shaders (no shadows, no fog etc) when rendering for example realtime reflections or a minimap. You can easily switch between configurations by changing the active Ogre material scheme (for example on a viewport level).
– Fixed function support. You can globally enable or disable shaders at any time, and for texture units you can specify if they’re only needed for the shader-based path (e.g. normal maps) or if they should also be created in the fixed function path.
This library should make the lives of developers easier and since it is designed for the Ogre3d rendering engine, it could have bright future beyond even the OpenMW project. Huzzah for open source!
Take a look at the new water shader scrawl made using the “shiny” shader library.
If all that is not awesome enough, then wait dear readers, because there’s more.
In every blog post since time immemorial we have talked about getting animations to work, but now that saga’s beginning its conclusion. That’s right, the new and completed animation system awaits testing in the main branch. jhooks1 and Chris’s huge effort is bearing fruit. You can expect only falling action (bug fixes and performance improvements) from here on out.
Although animations have been present in OpenMW for some time, they did not use ogre’s animations system, instead OpenMW manually moved all bones. This was not efficient and not all creatures were correctly animated, especially those from expansions sets. For example, Bloodmoon’s werewolf animations looked really bizarre.
But now those problems are solved and we employ Ogre for the animations. Even hardware skinning can be added as a post 1.0 feature.
Zini is finishing up the potion usage task. Now the drinking sound effect plays correctly. Additionally, zini refactored the action class.
Corristo made sure that OpenMW still works for you OSX users out there. There were mac specific bugs that should now be resolved.
We migrated to new servers after the result of the slashdot effect exposed our inability to handle heavy users loads (our servers crashed). The first choice was amazon cloud which looked quite nice, but soon it became clear that they are insufficient for our needs. At the moment OpenMW.org is on one MyDevil.net server, while bugtracker and forum are on OVH server. In addition OpenMW.org is protected by Cloudflare CDN “proxy”, so it has chance to handle next slashdot effect.
Happy Easter to all our Christian friends! Happy Sunday to all our non-Christian friends!
Scrawl, our resident CG beast, is on the loose again. Just look at this screenshot.
Reflection can be turned off completely or individually for everything except sky and terrain. We can put an end to the question of whether OpenMW will be able to compete with MGE for improving graphics. OpenMW has the potential for amazing graphics improvements and doesn’t yet because we have more important tasks concerning the game engine and gameplay to do first. Maybe we’ll make some screenshots in full HD with eyecandy turned up high without the gui and cross hairs for wallpapers… but first we need to add option to turn off gui and cursor…
chris is trying to insert nif animations into ogre properly, which should give us a moderate increase in fps. He’s produced very nice results so far. I thought his expertise was just openAL, but it seems he is not new to the video game business.
Jhooks1 very recently started work on clothing rendering, not much to tell about it yet.
Kromgrat got bored with bugfixing so he started work on new feature: gui window pinning.
Zini finally got someone to work on the boring, but important, task of Record Saving. Thank you Ace!
gus is working on implementing factions. Hopefully soon we’ll be able to join factions and get quest their quests!
swick finished work on the initconfig.
lgro worked on bugfixes, because he currently lacks time to start larger tasks.
Corristo finished with his pathgrid rendering.
Mark76, the man who is singlehandedly making Crystal Scrolls (another Morrowind engine), joined the OpenMW team last week. News about task He picked are coming (hopefully) soon.
Stardemon has also returned to the fold and is starting work on making new videos. Here’s just a quick test he did. It is titled 0.13.0, but it’s actually a snapshot of 0.14.0. Warning! Stardemon is pretty hyper in this video. 🙂
Finally, zini started working on a new gameplay feature that we’ll explain next week. Soon stay tuned :-]
Who says it’s not all about looks? Version 0.14.0 is shaping up to be one sexy release. People, we’re getting terrain rendering, water rendering and possibly clothed npcs… sometimes it’s all about looks. Part of me is going to miss the floating houses, boats, and ruins when terrain is added, but I’ll forget them once I’m running around Morrowind freely. 🙂
scrawl is in the process of completing water rendering. He found a solution for displaying water in interiors cells, which was problem up till now. Now he’s back to working on occlusion and the Minimap to have it face the right orientation and some other polishing.
There is beginnings of an inventory gui thanks to hircine. Soon you’ll be able to see all that stuff you’re hoarding and face the reality, “Why do I have all this useless cutlery? I have 10 buckets, and 24 brooms?!? I don’t want to drop any of them… I think… I think I have problem.” Good, step one is admitting it has become a problem.
Ah yes, zini managed to get auto-equipping working. For now it is only putting the first suitable item on the npc, but soon we’ll see the glory of jhooks1 work on rendering clothed npcs!
The terrain branch has been merged to main so if you want to test it, just build the main.
Chris’s epic sound redesign is going well. His branch was recently merged into main and he fixed the long-standing no sound bug.
ACE and Corristo are working on squashing them. Corristo fixed the 0.13.0 OSX launcher bug so path to the binary can contain spaces now and a bug affecting autodetection of Morrowind install on a mac. Please, if you’re trying out OpenMW and you find a bug, register on our bug tracker and submit it. OpenMW needs bug testers!
swick is working on a morrowind.ini converter. His first version of it is completed and waiting to be reviewed by zini.
jhooks1 has finally triumphed over the physics implementation. Work remains to be done, but it is leaps better than the previous implementation. Speaking of leaping, jhooks1 implemented jumping! Here is jhooks1 doing a well deserved victory lap after getting physics working.