Built from Source on Linux Yesterday

cosmic vole

New member
Joined
Jan 18, 2018
Messages
11
I got the latest code from github built and running under Linux Mint yesterday. It's looking good. Nice work upgrading to Ogre 1.11 and I like having the config inside the game.

I had quite a few issues with it but I figured most of them out last night. Some of them were partly my own fault because I downloaded and built Ogre 1.11.5 myself instead of using ror-dependencies to build it.

Here's what I found:

  • For some reason on my system it was looking for config files in "/config/config/" instead of "/config/". I tracked it down to code at lines 152 and 165 in main.cpp :

CreateFolder(dst_path + file.filename);

and

Ogre::String path = file.path + file.filename;

On my machine "file.filename" began with "/config/" causing it to double up. Changing it to "file.basename" fixes the issue.
  • At first there were loads of errors with materials not being found, causing almost all the textures not to appear. It turned out it was because Ogre was defaulting to a strict mode OGRE_RESOURCEMANAGER_STRICT=3 when I built it. It needs to be 0. This is all because I downloaded Ogre 1.11 myself. If you build it using ror-dependencies this is set automatically, but it would be nice if this was mentioned more prominently on Ogre's website considering how much old content it breaks!
  • When I enabled Caelum the game crashed. Have you guys had it working with Ogre 1.11.5? I tracked it down to InternalUtilities.cpp :

void InternalUtilities::generateSphericDome (const Ogre::String &name, int segments, DomeType type)
{
// Return now if already exists
if (Ogre::MeshManager::getSingleton ().resourceExists (name))


Ogre 1.11.5 seems to always need a resource group name when calling resourceExists(), so this was always returning false which meant it was trying to create a duplicate manual mesh with the same name, causing a null pointer.

I fixed it with the following code (although RESOURCE_GROUP_NAME might work and be more efficient - I haven't tried that):


if (Ogre::MeshManager::getSingleton ().resourceExists (name, AUTODETECT_RESOURCE_GROUP_NAME))


  • I did have a go at running the prebuilt Linux binary from itch on Linux Mint. Oddly, when I use the RunRoR script to start it, it crashes complaining it can't find a codec for png files, even though there's a libpng library bundled with it. If I run it using the system libraries instead, the problem seems to go away. I downloaded that yesterday.
Anyway, keep up the good work guys. I hope this post is more of a help than a hinderance!
 
OP
OP
cosmic vole

cosmic vole

New member
Joined
Jan 18, 2018
Messages
11
I guess what I'd like to know is, is it worth me making some branches and pull requests to fix these bugs? Are you interested?
 
OP
OP
cosmic vole

cosmic vole

New member
Joined
Jan 18, 2018
Messages
11
You need to compile ogre with cg
Thanks but the Caelum crash was nothing to do with cg on my system. Looking closer, I think it was the same issue about my having built Ogre with OGRE_RESOURCEMANAGER_STRICT=3 biting me again when I was building Caelum. When Caelum calls resourceExists(), the groupName is defaulted to OGRE_RESOURCE_GROUP_INIT by Ogre, which was empty. Basically if you build Ogre yourself, OGRE_RESOURCEMANAGER_STRICT really screws everything up for RoR if you don't set it to 0.

I'm still probably going to make a pull request for the config path bug, once I can trace exactly why it happens.
 
Top