chaosfire / vdrift-ogre

Automatically exported from code.google.com/p/vdrift-ogre
0 stars 0 forks source link

How to build executable on Linux #4

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Hi, could you please give some info on how to build it to run on Linux . Im 
using Debian Squeeze 32 bit, and since it uses OGRE and Linux has OGRE as 
well...
And if it is possible to build it could you give some indication on the steps 
of how to do it ?
Thank you very much !

Original issue reported on code.google.com by masirm...@gmail.com on 7 Aug 2010 at 11:34

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Hi, I have no experience at all in building anything on Linux. Sadly, I got 
stuck to Windows, lately I've installed Ubuntu to start knowing it, but I spend 
all my time to develop new stuff.

But, VDrift builds under Linux and so does OGRE, this could be possible. It's a 
challenge though, even building under Windows probably is. There is a section 
about compiling it (under Windows) in my README, basically every library (dll) 
has to be compiled before the game.

I would be very happy if someone did succeed in building it under Linux so 
other people could play it too.

Original comment by Cry...@gmail.com on 7 Aug 2010 at 7:58

GoogleCodeExporter commented 8 years ago
Although the latest version works rather nicely on Linux with the latest 
version of Wine, native build would always be the best.

Seems the only building method provided with Stunt Rally is plain Visual Studio 
project file, so the first thing to do would be to add a real build system. I 
might actually take a crack at it with CMake, which I consider the best option 
(it works on Windows too and is able to generate those VC projects).

Original comment by tapiovie...@gmail.com on 2 Mar 2011 at 1:18

GoogleCodeExporter commented 8 years ago
So I've been tinkering with the sources... I have initialized a CMake build 
system, but it is not yet ready for prime-time. However, I have been able to 
find/debug/fix compilation errors / portability issues with it. I attached a 
file describing the errors I encountered (I hope I remembered to add them all, 
I started to take notes a bit too late and since this is not under version 
control, changes are harder to track :/ ).

I didn't create a patch, because some problems I "fixed" by commenting stuff 
out, but the majority of them are rather trivial corrections. There are a 
couple that require a bit more work, but I think none are particularly hard.

I'm now at a stage where the game compiles, but I still need to sort out some 
library linking errors. After I get there, I might be able to look into 
correcting those few larger portability issues that are preventing full 
functionality.

Some general portability notes:
* Use forward slashes and correct casing in paths (Unix/Linux is case-sensitive 
and backslash is used for escaping).
* Don't use WinAPI or anything that starts with a couple of underscores.
* If you must break the above guidelines, use include guards to exclude Windows 
stuff from other platforms.

Original comment by tapiovie...@gmail.com on 16 Mar 2011 at 9:44

Attachments:

GoogleCodeExporter commented 8 years ago
Hey,

sorry that I only mailed CryHam and didnt post here, but I was already working 
on a linux version too, a few weeks ago. I got the game to a runnable state, 
everything kinda works, except car steering because I didnt yet got it working 
to replace GetAsyncKeyState with OIS. I did however use Eclipse as build 
environment and not CMake (which would of course be better).

I expect to resolve the last issues (input and some minor stuff) this weekend. 
It would be nice if you could send me your CMake build system because I have no 
experience at all writing CMake files :(

P.S. havn't started with editor yet.

Original comment by scrawl...@gmail.com on 18 Mar 2011 at 7:40

GoogleCodeExporter commented 8 years ago
Screenshot: StuntRally "running" on Linux

Original comment by scrawl...@gmail.com on 18 Mar 2011 at 7:44

GoogleCodeExporter commented 8 years ago
Oh, another thing I forgot, I commited all the code I changed to this bazaar 
repository: https://code.launchpad.net/~scrawl/+junk/StuntRally

There are still many stubs in it, and I'm not sure if it would even still build 
on windows. But it has to be merged later anyway so it can be fixed then.

Original comment by scrawl...@gmail.com on 18 Mar 2011 at 7:52

GoogleCodeExporter commented 8 years ago
Hi and welcome, nice to see Linux programmers and thanks for help.
I also think that CMake would be best, so if you're familiar with it, go for 
it. Perhaps it's also good to leave the vc proj and eclipse so users not 
familiar to CMake but having those could get it easier.
I've commited my last version to hg repo, it has most Linux issues merged. It 
also uses now OIS for car input, hope it works under Linux too.
Anyway let's keep our modifications local and commit only official code that 
would compile the game on windows.

Original comment by Cry...@gmail.com on 19 Mar 2011 at 12:46

GoogleCodeExporter commented 8 years ago
I'm now adding my changes step my step to your repo. I'll be careful so it will 
still build on windows.

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 1:58

GoogleCodeExporter commented 8 years ago
I've now committed initial CMake build system version. It still needs some 
tweaks to make it work everywhere and also editor is not yet supported.

Original comment by tapiovie...@gmail.com on 19 Mar 2011 at 3:33

GoogleCodeExporter commented 8 years ago
First version that compiles (at least for me) is now in repo. Doesn't run yet.

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 3:49

GoogleCodeExporter commented 8 years ago
Also compiles for me but doesn't run. It would be useful to know if this still 
works on Windows. Also, feel free to test the CMake system and report errors. I 
added a guide to the project wiki, but I see scrawl123 did too, simultaneously. 
They should be merged together and I think one page should be used for all 
platforms, since otherwise there would a lot of duplicate information.

Original comment by tapiovie...@gmail.com on 19 Mar 2011 at 4:18

GoogleCodeExporter commented 8 years ago
After copying the data files, game still doesnt run. It immediately exits, but 
without an error or segmentation fault. Here is output:

INFO: Starting VDrift-Ogre: 2010-05-01, O/S: Unix-like
INFO: Home directory: /home/scrawl
INFO: Settings file: _game.cfg
INFO: Data directory: data
      DATA_DIR: data
INFO: Log file: _log.txt
INFO: 0 joysticks found.
INFO: Loading car controls from: _controls.cfg
INFO: Sound initialization information:
INFO: Obtained audio device:
      Frequency: 44100
      Format: 32784
      Bits per sample: 16
      Channels: 2
      Silence: 0
      Samples: 940
      Size: 3760
      Sound initialization successful
INFO: Exiting

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 4:29

GoogleCodeExporter commented 8 years ago
The problem has to be in BaseApp::configure. I can tell more when eclipse build 
is ready and I can debug it.

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 4:33

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Yeah found it scrawl: you have put the Run() in the multi threaded if block 
(move it after).
The if was only for CreateThread.

    if (settings.mult_thr > 0)  ///
        {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
            hpr = CreateThread(NULL,0,VprThread,(LPVOID)pApp,0,NULL);
            pApp->Run( settings.ogre_dialog || lpCmdLine[0]!=0 );  //Release change-
#else
            pApp->Run( settings.ogre_dialog);
#endif
        }

Original comment by Cry...@gmail.com on 19 Mar 2011 at 4:53

GoogleCodeExporter commented 8 years ago
game starts now, error was in main.cpp (see commit log)

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 5:08

GoogleCodeExporter commented 8 years ago
Yep I already found it. Next problem: When starting a game there is only trees 
and sky, nothing else.

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 5:14

GoogleCodeExporter commented 8 years ago
The issue seems to be that my QTimer implementation doesnt work. I'll look into 
it.

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 5:33

GoogleCodeExporter commented 8 years ago
Fixed QTimer implementation. Game works now :)

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 8:43

GoogleCodeExporter commented 8 years ago
As far as I can tell everything works.  tapiovierros, maybe you can test if it 
works on your linux machine too with the latest code?

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 9:02

GoogleCodeExporter commented 8 years ago
Depth Shadows are not working. When I set shadows to depth shadows and click 
apply, the program freezes. When I go to the system monitor, I can see the game 
slowly starts using more and more memory. But nothing happens.

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 9:16

GoogleCodeExporter commented 8 years ago
Happens with WINE too, so not sure if its a problem with linux or with the gpu 
or the gpu driver or anything else.

Original comment by scrawl...@gmail.com on 19 Mar 2011 at 9:17

GoogleCodeExporter commented 8 years ago
Whoa, Depth Shadows were only for test.
but they didn't work and they are more demanding than our Normal color shadows 
(no depth written unluckily that's why they look bad).

Original comment by Cry...@gmail.com on 19 Mar 2011 at 9:43

GoogleCodeExporter commented 8 years ago
For me it runs, but I only get a light blue background with an fps counter - 
nothing else. It might be related to MyGUI as I get gazillion runtime 
deprecated warnings, e.g. "StaticText factory is deprecated, use TextBox 
[Options.layout]". What version of MyGUI are you using? Also, I'm on Ubuntu 
10.10 64bit.

Btw, do you guys use IRC? I'd say a real time conversation and coordination 
would be much nicer. Usually open-source projects have channels in the 
freenode-network, so I'd say that would be the place to create #stuntrally, but 
do tell me if there already is a channel (or if you can't be bothered with 
that).

Original comment by tapiovie...@gmail.com on 19 Mar 2011 at 11:54

GoogleCodeExporter commented 8 years ago
At start this backgroud appears and GUI should be visible. I'm using MyGUI 
v3.0.1, the newest.
You can try with setting autostartgame = on in [ misc ] group in _game.cfg file.
 This should skip GUI and load the track at start.
We don't have IRC, but it looks useful now. So you can create a channel there. 
Just email us how to get there, I have no experience with IRC so far.

Original comment by Cry...@gmail.com on 20 Mar 2011 at 6:55

GoogleCodeExporter commented 8 years ago
With autostartgame, I get an assert: 
/home/tapio/src/ogre/OgreMain/src/OgreRenderQueueSortingGrouping.cpp:386: void 
Ogre::QueuedRenderableCollection::addRenderable(Ogre::Pass*, 
Ogre::Renderable*): Assertion `retPair.second && "Error inserting new pass 
entry into PassGroupRenderableMap"' failed.

I'll investigate more later.

#stuntrally @ freenode is up. You can join it with a web browser through 
webchat:
http://webchat.freenode.net/?channels=#stuntrally
Best would be of course if you had access to a shell server and could connect 
there with Irssi inside a Screen, which would mean the messages would wait 
there even if the user himself is offline.

Original comment by tapiovie...@gmail.com on 20 Mar 2011 at 9:28

GoogleCodeExporter commented 8 years ago
Googled your error, here are some links:

http://www.ogre3d.org/forums/viewtopic.php?t=26469
http://www.ogre3d.org/forums/viewtopic.php?t=21068&highlight=retpair+second
http://redmine.rigsofrods.org/issues/16

It is also said in some thread that it should be safe to disable the assert.

Original comment by scrawl...@gmail.com on 20 Mar 2011 at 10:47

GoogleCodeExporter commented 8 years ago
Zaandvoort track doesnt work. When I select it and click new game, there is 
just the car in the middle of nowhere. The track doesnt render. Can't drive the 
car (but camera can move)

Original comment by scrawl...@gmail.com on 20 Mar 2011 at 11:24

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Just realised, I have it also with Zandvoort. Ok I've fixed it, it's in repo.

Original comment by Cry...@gmail.com on 20 Mar 2011 at 12:30

GoogleCodeExporter commented 8 years ago
Ok, next issue: While in a game, this message is spit out multiple times every 
frame:

Error prior to using GLSL Program Object : invalid value

Which makes the game run a lot slower (output is always slow).

Google lead me to this thread: 
http://www.ogre3d.org/forums/viewtopic.php?f=5&t=63604

It seems you shouldnt have shininess parameter greater than 128 in the material 
scripts.

Original comment by scrawl...@gmail.com on 20 Mar 2011 at 12:57

GoogleCodeExporter commented 8 years ago
only happens on terrain tracks, not on zandvoort.

Original comment by scrawl...@gmail.com on 20 Mar 2011 at 1:06

GoogleCodeExporter commented 8 years ago
Hmm, didn't know we had one.  Only glass in car.material has 128 but this is a 
parameter, and it's not fixed function.
Must be something with terrain textures, maybe they have alpha so it get such 
high shininess value, maybe other tracks don't have this problem, so we could 
locate textures ? But this is in debug only ?

Original comment by Cry...@gmail.com on 20 Mar 2011 at 1:22

GoogleCodeExporter commented 8 years ago
For the record (if there is someone outsider watching this), the issue 
(building on linux) is practically solved - the game runs with hardly any 
issues and the editor is almost ported too (compiles and runs, but without 
input). I'll leave this open until everything is polished, though.

Original comment by tapiovie...@gmail.com on 21 Mar 2011 at 11:03

GoogleCodeExporter commented 8 years ago
Building on Linux has been possible for some time now, so closing.

Original comment by tapiovie...@gmail.com on 25 Mar 2011 at 9:25