Page 1 of 18
Posted: 06 Feb 2010, 22:40
jigebren
This topic is about my new project called WolfR4.

About WolfR4
WolfR4 is a launcher for Re-Volt (version 1207), designed to fix some Re-Volt bugs, add some features and tweaks, and to allow more elaborated user tracks (custom tracks) by giving a way to track makers to customize things that are normally fixed.




Update: 2010/07/28
After a long time of closed beta releases (during the 6 months of development), this is finally the first Public Version of WolfR4 !

The WolfR4 compiled file can be downloaded from the WolfR4's webpage.
More information about this tool can also be found on my website.

Posted: 06 Feb 2010, 22:42
jigebren
I started to work on my new tool: code name "WolfR4" - don't ask me why...

I'm currently in the process of writting the part dedicated to launch revolt, and the part dedicated to patch the process memory...

Posted: 06 Feb 2010, 22:50
miromiro
What it will be able to do?

Posted: 06 Feb 2010, 23:11
jigebren
miromiro @ Feb 6 2010, 06:20 PM wrote:What it will be able to do?
See the first post. I've updated it.

I'm aware it's a huge project...
I can't promise this tool will be released one day.
I was really motivated about this tool, and can't count the time I spent to try to correct bugs that don't even occur on my own system. But when I see that only 3 of you took the time to answer to my question in topic "about tuxabug", my impetus is on the way to be gone...

Posted: 06 Feb 2010, 23:13
miromiro
Sounds good :).

Posted: 06 Feb 2010, 23:14
arto
jigebren @ Feb 6 2010, 06:12 PM wrote: I'm currently in the process of writting the part dedicated to launch revolt, and the part dedicated to patch the process memory...
One request regarding this:

could you make it instead of a launcher, a background task that waits until it detects Re-Volt?

My worry is the multiplayer aspect. Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.

If your program is a launcher that launches Re-Volt, it might not work on multiplayer. However if it was checking in background when Re-Volt is running and attaches to it, then it might.

Just a note that I hope you keep in mind when developing it so that we can enjoy the results in multiplayer races too.

Posted: 06 Feb 2010, 23:32
nero
Jig, i suggest it should be a patch. Not a launcher.

Posted: 06 Feb 2010, 23:46
jigebren
@arto
Good thing that you told me that in the beginning of development.

In fact, I was thinking in a first time about creating a background task. But I think I have to do it in a launcher way, because some values have to patched at the very beginning, before revolt executes. And moreover, if I patch a part while it is executed, it can lead to unpredictability bugs.
By launching revolt myself, it seems that I can pause it at the beginning, patch my value, and resume it after, which is good...
arto wrote:Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.
Can you be more explicit? What is DirectLobby. In case of revolt, which application tell the DirectLobby API to launch which service? I don't really understand the process.

-
nero wrote:Jig, i suggest it should be a patch. Not a launcher.
Impossible. If I want to allow custom models/skymaps/sfx, it's mandatory to check continually the revolt memory. Otherwise, we would have to restart revolt for every track, and before we do it, all other levels will use wrong models, etc.
Keep it mind that I can change just very little part in the original revolt exe, I can't do what I want.

Posted: 06 Feb 2010, 23:51
nero
So i can't expect a patch. Damn.
Oh well, beggars can't be choosers.

Posted: 07 Feb 2010, 00:55
arto
jigebren @ Feb 6 2010, 07:16 PM wrote: In fact, I was thinking in a first time about creating a background task. But I think I have to do it in a launcher way, because some values have to patched at the very beginning, before revolt executes. And moreover, if I patch a part while it is executed, it can lead to unpredictability bugs.
By launching revolt myself, it seems that I can pause it at the beginning, patch my value, and resume it after, which is good...
arto wrote:Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.
Can you be more explicit? What is DirectLobby. In case of revolt, which application tell the DirectLobby API to launch which service? I don't really understand the process.

-
nero wrote:Jig, i suggest it should be a patch. Not a launcher.
Impossible. If I want to allow custom models/skymaps/sfx, it's mandatory to check continually the revolt memory. Otherwise, we would have to restart revolt for every track, and before we do it, all other levels will use wrong models, etc.
Keep it mind that I can change just very little part in the original revolt exe, I can't do what I want.
Yes, understandable... but would it be possible to poll launching of Re-Volt every second or so, and if the process is seen then suspend it and modify the values in memory? Re-Volt seems to take quite a long time to load even in multiplayer mode where it skips the intro pictures. Of course I understand next to nothing about these patchings and attaching to processes, so I may be way off the mark.
arto wrote:Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.
Can you be more explicit? What is DirectLobby. In case of revolt, which application tell the DirectLobby API to launch which service? I don't really understand the process.
The application that launches Re-Volt is one of the lobby programs. In Re-Volt's case practically GameSpy or RV House.

In Windows' DirectX API there is (or at least was) a DirectLobby API, which is meant to create multiplayer games. You use that API to launch the application - you know nothing about the application's location, just it's identifier.

I can show you the code in RV House's case:

http://rvhouse.svn.sourceforge.net/view ... iew=markup

see the methods start_host and start_client, they're respectively for the host of the race and the other players who are joining the race. It might all look a bit gibbledygooky as the APIs are a bit messy, and this is C++ not straight C as is the case with Re-Volt.

But the basic idea is:

- you know the GUID of the application you want to launch (the application itself registers itself to DirectLobby)
- you tell DirectLobby API to launch the application, giving it the GUID of the application you want to launch.
- DirectLobby then launches the exact application in whatever ways it needs. In practice, at least in Windows XP, DirectLobby has a registry entry for all the applications it needs to launch.

I don't know if that made it any clearer, but I hope so.

Posted: 07 Feb 2010, 01:39
Adamodell
Nice play on the Phoenix R3 title.
If you want, I could design an icon for it. Haha.

Posted: 07 Feb 2010, 03:14
jigebren
nero wrote:So i can't expect a patch. Damn.
Oh well, beggars can't be choosers.
There is truth in that sentence. ;)

And I'd like to point out that I had clearly asked about it before:
jigebren @ in Custom Models In User Tracks, preparatory work, planning... wrote:What I'm personally wondering:
- does anybody have anything against the use of a launcher/memory patcher? (I'm afraid there is no other way to do).
and then nobody said something against it.
Now that the development has started, it's a bit late.
Can you tell me why the reason why you expected a patch?

-
arto wrote:but would it be possible to poll launching of Re-Volt every second or so, and if the process is seen then suspend it and modify the values in memory?
I tried, but didn't succeed to pause the process. Moreover, to fix the 'QueryPerformanceFrequency' issue, I have to do this at the very beginning.
arto wrote:I don't know if that made it any clearer, but I hope so.
Yes, thanks, arto, I appreciate your help.
I'm a bit lost in C++ source, I can understand it roughly, but some subtleties may escape me...
I'm just wondering, can't you launch the launcher (ie. WolfR4) instead of revolt. Won't it work? Have you an idea?

-
   Nice play on the Phoenix R3 title.
If you want, I could design an icon for it. Haha.
:)
Thanks for the proposition, adam. I have little graphics skills, so it may not be a problem for me. You can feel free to propose me something, but the problem is I'm afraid you'll take it bad if it don't suit me, so I won't know how to refuse in the latter case.

Posted: 07 Feb 2010, 03:19
nero
jigebren @ Feb 6 2010, 10:44 PM wrote: Can you tell me why the reason why you expected a patch?
Because of lazyness. People are too damn lazy nowadays. And i'm not a big fan of launchers. :(
And it would be easier if it would be a patch...then you just have to unpack it and ur set to go, but as said above...

Posted: 07 Feb 2010, 07:20
Adamodell
jigebren @ Feb 6 2010, 10:44 PM wrote: :)
Thanks for the proposition, adam. I have little graphics skills, so it may not be a problem for me. You can feel free to propose me something, but the problem is I'm afraid you'll take it bad if it don't suit me, so I won't know how to refuse in the latter case.
If you want, you can do it. I don't want you to feel bad or anything.

Posted: 07 Feb 2010, 09:29
zagames
Perhaps, when the launcher is installed or executed, the program's address can be written to the windows registry. RV House could check for this registry, and if it exists, launch 'Wolf'. Just an idea

Posted: 07 Feb 2010, 13:20
urnemanden
Of course that requires that Wolf has some sort of build-in Multi-player service that launches Re-Volt in Multi-Player Mode. Once that has been done, you eventually can make Wolf detect the OS and add -sli, so the Vista/7 users can have pleasure of the launcher too. =)

But of course that's a lot of work to do for you, I'd rather not push you out in anything now and perhaps wait till everything else is working. (;

Posted: 07 Feb 2010, 15:30
arto
jigebren @ Feb 6 2010, 10:44 PM wrote:
arto wrote:I don't know if that made it any clearer, but I hope so.
Yes, thanks, arto, I appreciate your help.
I'm a bit lost in C++ source, I can understand it roughly, but some subtleties may escape me...
I'm just wondering, can't you launch the launcher (ie. WolfR4) instead of revolt. Won't it work? Have you an idea?
Yes I can. But then Wolf would have to launch the real Re-Volt using DirectLobby API. Basically doing what RV House is doing now when it tells DirectLobby to create Re-Volt multiplayer game.

Another downside is that we can do this kind of change to RV House, but for the other game lobbies such as GameSpy it wouldn't work.

Posted: 07 Feb 2010, 15:32
KDL
WolfR4 ROFL!!!
Freenix LOL

actually, Phoenix R3 is named for reasons, :P
R3 = RRR : the forum's name
Phoenix: bird that born from his ashes, never die :P

WolfORP anyone :P?

Posted: 07 Feb 2010, 16:26
nero
AmberWolf 4 ???

Posted: 07 Feb 2010, 18:12
miromiro
Wolfr4.

It's because he lives in France :P.

Posted: 08 Feb 2010, 00:32
jigebren
arto @ Feb 7 2010, 11:00 AM wrote:Yes I can. But then Wolf would have to launch the real Re-Volt using DirectLobby API. Basically doing what RV House is doing now when it tells DirectLobby to create Re-Volt multiplayer game.
Too hard for me :( . I said it before, I'm unfortunately not a developper at all. I like to discover new stuffs, like memory patching, which I tried just for this project, but this direct lobby stuff is far too specific for me to spend a lot of time on it. I know you arto can help, but it would be too complicated.
Another downside is that we can do this kind of change to RV House, but for the other game lobbies such as GameSpy it wouldn't work.
Are they still used? I'm not really aware of online playing.

It seems that supporting online racing won't ease things. I'm not very pleased by the idea of having to remake all that I've already done in another way...
I have to think about it before continuing.

nero wrote:And it would be easier if it would be a patch...then you just have to unpack it and ur set to go, but as said above...
To make thing clearer, it's not an arbitrary choice. For the custom models support, I have no other choice at all. It's as simple as that.
For the launcher VS background task choice, I was pleased to use the launcher way, because I was able to do it nicely, and I keep control on the process. It's the only way I found to make sure I can patch values that are used at the very beginning of revolt process before they are used. Moreover, I can pause the process while patching, which is safer.

EDIT:
urnemanden wrote:you eventually can make Wolf detect the OS and add -sli, so the Vista/7 users can have pleasure of the launcher too. =)
This make me think: how do the vista users proceed to use the -sli parameter with RVHouse?

Posted: 08 Feb 2010, 01:06
jigebren
@arto
I'm really not sure you want to modify RVhouse, but I found 2 interesting stuffs in directX doc:

First:
directx wrote:Supporting Dynamic Lobby Connection  [Language: C++]
One drawback of external lobby launching is that the lobby server always tells the lobby client to launch a new instance of the application, even if one is already running. You can avoid a redundant launch by supporting dynamic lobby connection.

The instructions in this section assume the application is already running and has a connection to a lobby server that will return connection settings.
And after, I found this, which can looks even better:
directx wrote:However, a properly registered application can itself be run by a launcher. See Supporting Ripple Launching

Supporting Ripple Launching  [Language: C++]
Ripple launching is the running of an application by another application that has itself been launched from a lobby. In the following discussion, the program run by the lobby is called the launcher, and the program it launches is called the application.

[C++]
In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.

When a lobby client runs the application by calling IDirectPlayLobby3::RunApplication, DirectPlay finds the name of the launcher in the registry and runs the launcher rather than the application. It is then the responsibility of the launcher to run the application.

The launcher must pass on to the application any command-line parameters it is provided with. The application should silently ignore any command-line parameters it does not understand.
Can't it help?

Posted: 08 Feb 2010, 02:00
arto
jigebren @ Feb 7 2010, 08:02 PM wrote:
arto @ Feb 7 2010, 11:00 AM wrote:Yes I can. But then Wolf would have to launch the real Re-Volt using DirectLobby API. Basically doing what RV House is doing now when it tells DirectLobby to create Re-Volt multiplayer game.
Too hard for me :( . I said it before, I'm unfortunately not a developper at all. I like to discover new stuffs, like memory patching, which I tried just for this project, but this direct lobby stuff is far too specific for me to spend a lot of time on it. I know you arto can help, but it would be too complicated.
I agree this way is not advisable as it seems like a whole lot of duplication of code with little benefit...
Another downside is that we can do this kind of change to RV House, but for the other game lobbies such as GameSpy it wouldn't work.
Are they still used? I'm not really aware of online playing.
I guess GameSpy is still used, eventhough RV House is probably the biggest one. There may be others I'm aware of. In any case I think it'd be preferrable to find a universal solution. I think the other patcher did manage to do it, so it should be doable, but I do not know the details and haven't used it since the early versions.
urnemanden wrote:you eventually can make Wolf detect the OS and add -sli, so the Vista/7 users can have pleasure of the launcher too. =)
This make me think: how do the vista users proceed to use the -sli parameter with RVHouse?
There is a registry entry for DirectLobby applications, that DirectLobby uses to launch them. One of the entries gives the command line arguments that are used to launch the program, and in there user can specify the -sli.

Posted: 08 Feb 2010, 02:09
arto
jigebren @ Feb 7 2010, 08:36 PM wrote: @arto
I'm really not sure you want ot modify RVhouse, but I found 2 interesting stuffs in directX doc:
I am willing to change RV House if needed to, provided I have something to test with to see that the changes work. However...
directx wrote:Supporting Dynamic Lobby Connection  [Language: C++]
One drawback of external lobby launching is that the lobby server always tells the lobby client to launch a new instance of the application, even if one is already running. You can avoid a redundant launch by supporting dynamic lobby connection.

The instructions in this section assume the application is already running and has a connection to a lobby server that will return connection settings.
I couldn't with googling find the page describing this so I can not comment on this by itself.
And after, I found this, which can looks even better:
directx wrote:However, a properly registered application can itself be run by a launcher. See Supporting Ripple Launching

Supporting Ripple Launching  [Language: C++]
Ripple launching is the running of an application by another application that has itself been launched from a lobby. In the following discussion, the program run by the lobby is called the launcher, and the program it launches is called the application.

[C++]
In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.

When a lobby client runs the application by calling IDirectPlayLobby3::RunApplication, DirectPlay finds the name of the launcher in the registry and runs the launcher rather than the application. It is then the responsibility of the launcher to run the application.

The launcher must pass on to the application any command-line parameters it is provided with. The application should silently ignore any command-line parameters it does not understand.
Can't it help?
From my understanding this doesn't help. That RegisterApplication, what's being talked in there, is done by Re-Volt when it is launched (this is the reason why RV House can not launch Re-Volt before player has started Re-Volt in singleplayer before that). So Re-Volt itself must be modified. If you think you can modify Re-Volt to register your launcher, then yes it would probably solve these problems. But this instruction seems to be out of control of for example RV House. It seems the application that is to be launched is in control of what launcher it wants to be used.

Posted: 08 Feb 2010, 03:38
jigebren
arto @ Feb 7 2010, 09:39 PM wrote:I am willing to change RV House if needed to, provided I have something to test with to see that the changes work. However...
Of course. I'm not like you know who. :ph43r: At least, not yet... ;)
If we have hope to achieve something, I could make quickly a file with the launcher part in it, and send it to you.
I couldn't with googling find the page describing this so I can not comment on this by itself.
I found it in the DirectX 7 SDK. I can supply you the .chm file.
That RegisterApplication, what's being talked in there, is done by Re-Volt when it is launched (this is the reason why RV House can not launch Re-Volt before player has started Re-Volt in singleplayer before that).
Ah, ok. I didn't understood thing like that. I though revolt were not aware of Lobby at all, and that it was RVHouse that add a 'lobby layer' over the directplay online connection, or something like that.
The whole lobby stuff is still not very clear for me...
directx sdk wrote:In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.
But nothing says here it's the application itself that has to register, or am I wrong? The 'RegisterApplication' could be done by an external application (RVHouse or WolfR4), of course provided that the setting are not overwritten by revolt itself.

Posted: 08 Feb 2010, 04:04
arto
jigebren @ Feb 7 2010, 11:08 PM wrote:
I couldn't with googling find the page describing this so I can not comment on this by itself.
I found it in the DirectX 7 SDK. I can supply you the .chm file.
Ok thanks... if you think it is something that could be a solution, send it to me and I'll check if I understand it.
directx sdk wrote:In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.
But nothing says here it's the application itself that has to register, or am I wrong? The 'RegisterApplication' could be done by an external application (RVHouse or WolfR4), of course provided that the setting are not overwritten by revolt itself.
I thought about that too... but I quite much think Re-Volt always overwrites that value. I know from user reports, that if someone has installed several Re-Volt installations in different directories, then the one RV House launches is always the last Re-Volt installation that the user had used.

Of course one possible solution would be for Wolf patch to disable that registering thingy from Re-Volt. Then it would be just a matter of launching Re-Volt once using Wolf, who registers Re-Volt again using Wolf as a launcher, and when RV House launches "Re-Volt" (which is really Wolf now), Wolf would launch Re-Volt and disable Re-Volt's RegisterApplication calling.

I don't know if something like that could work, but from the docs you quoted it seems feasible.

I don't really know the details of the DirectLobby API myself either. I just found out enough to know how to launch Re-Volt back in the stone age.

Posted: 08 Feb 2010, 04:27
jigebren
arto @ Feb 7 2010, 11:34 PM wrote:Of course one possible solution would be for Wolf patch to disable that registering thingy from Re-Volt.
I think I can do that.
Then it would be just a matter of launching Re-Volt once using Wolf, who registers Re-Volt again using Wolf as a launcher,
I hope I can do that.
and when RV House launches "Re-Volt" (which is really Wolf now), Wolf would launch Re-Volt and disable Re-Volt's RegisterApplication calling.
That's it.

But at the end of the SDK help, in 'Supporting Ripple Launching', they said
directx sdk wrote:The application should always call IDirectPlayLobby3::GetConnectionSettings at least once before using IDirectPlayLobby3::WaitForConnectionSettings. (See Supporting Dynamic Lobby Connection.)
And I don't know what to think about this stuff.

Posted: 08 Feb 2010, 04:47
arto
jigebren @ Feb 7 2010, 11:57 PM wrote:But at the end of the SDK help, in 'Supporting Ripple Launching', they said
directx sdk wrote:The application should always call IDirectPlayLobby3::GetConnectionSettings at least once before using IDirectPlayLobby3::WaitForConnectionSettings. (See Supporting Dynamic Lobby Connection.)
And I don't know what to think about this stuff.
Googling with "Supporting Ripple Launching" I found this somewhat worrying document:

http://support.microsoft.com/kb/236614

Specifically:
More specifically, a ripple launcher program is a security program used to start games and prevent their piracy. A game that requires a ripple launcher program to install and run cannot be pirated because the ripple launcher program is encrypted into each program and cannot be duplicated.
This implies that it is designed so that third parties couldn't create launchers.
The primary enhancement of DirectPlay (DPlay) 6.1a over earlier versions of DPlay
I don't know the specific version of DirectPlay RV house uses. 6.1a is released 99/4, so it may well be RV uses earlier version.

And the part you quoted:
Requirements for Programs Started with Launcher.exe
A program started with the ripple launch program should silently ignore any command-line parameters it does not understand. Such a program should always call GetConnectionSettings at least once before using WaitForConnectionSettings.
This implies Re-Volt itself should call for WaitForConnectionSettings... and there is no such call in the Re-Volt sources. It might be quite difficult for Wolf4R to patch Re-Volt to call that function with all the structures it needs?

Posted: 08 Feb 2010, 04:57
jigebren
I will take a look at the microsoft link. That encrypted stuff sounds bad...
arto @ Feb 8 2010, 12:17 AM wrote:
Requirements for Programs Started with Launcher.exe
A program started with the ripple launch program should silently ignore any command-line parameters it does not understand. Such a program should always call GetConnectionSettings at least once before using WaitForConnectionSettings.
This implies Re-Volt itself should call for WaitForConnectionSettings... and there is no such call in the Re-Volt sources. It might be quite difficult for Wolf4R to patch Re-Volt to call that function with all the structures it needs?
I found this call at least in function 'CreateWaitForLobbyMenu' in the files:
xboxSrc\ui_WaitForLobby.cpp line:88
xboxFrontEndSrc\Lobby.cpp line:175

Posted: 08 Feb 2010, 05:25
arto
jigebren @ Feb 8 2010, 12:27 AM wrote: I will take a look at the microsoft link. That encrypted stuff sounds bad...
arto @ Feb 8 2010, 12:17 AM wrote:
Requirements for Programs Started with Launcher.exe
A program started with the ripple launch program should silently ignore any command-line parameters it does not understand. Such a program should always call GetConnectionSettings at least once before using WaitForConnectionSettings.
This implies Re-Volt itself should call for WaitForConnectionSettings... and there is no such call in the Re-Volt sources. It might be quite difficult for Wolf4R to patch Re-Volt to call that function with all the structures it needs?
I found this call at least in function 'CreateWaitForLobbyMenu' in the files:
xboxSrc\ui_WaitForLobby.cpp line:88
xboxFrontEndSrc\Lobby.cpp line:175
Sorry, I copy-pasted the wrong function. I meant GetConnectionSettings, which doesn't seem to be called as far as I can see by Re-Volt.

Posted: 08 Feb 2010, 05:37
jigebren
I found

Code: Select all

    r = Lobby->GetConnectionSettings(0, NULL, &size);
    if (r == DPERR_NOTLOBBIED)
    {
        RELEASE(Lobby);
        return;
    }
in 'xboxFrontEndSrc\play_TEMP.cpp' line:175 and line:192, procedure 'LobbyConnect(void)'

and (quickly checked) I found something similar to the procedure 'void LobbyConnect(void)' in the revolt exe file.

Posted: 08 Feb 2010, 21:45
jigebren
Ok, now, let's go back to work.

A quite good news! (and I temper my excitement, because bad news often follows)

The 'DPAPPLICATIONDESC2' structure used by the lobby 'RegisterApplication' method when we want to register the launcher is very similar to the 'DPAPPLICATIONDESC' structure used in revolt (which don't register launcher). So I was able to tweak the LobbyRegister() revolt function to add the missing 'lpszAppLauncherNameA' member directly in the exe.
So now, revolt has registered 'WolfR4' has a launcher. It's already a good beginning. Don't know if we will be able to do want we want at the end, but I'm very happy to have achieved this.

I have to modify WolfR4 to 'pass on to the application any command-line parameters it is provided with', like it is stated in the SDK doc, then when can make firt try, I think. (I tried RVHouse yesterday, but I wasn't registered, so I skipped it).


And one more info. In docs, it is said:
The application should always call IDirectPlayLobby3::GetConnectionSettings at least once before using IDirectPlayLobby3::WaitForConnectionSettings.
Revolt calls GetConnectionSettings at the beginning. There is a call to WaitForConnectionSettings but it is never used. So perhaps it can't work without that? I can't be sure.

Posted: 08 Feb 2010, 23:39
arto
jigebren @ Feb 8 2010, 05:15 PM wrote: Revolt calls GetConnectionSettings at the beginning. There is a call to WaitForConnectionSettings but it is never used. So perhaps it can't work without that? I can't be sure.
That sounds like great news!

Fastest way to find out is to just try it in RV House. If you have RVZT login, it works in RV House too. If not, it's fast and simple to register.

Posted: 08 Feb 2010, 23:50
jigebren
Yes, it's great, but I'm still sceptical about the WaitForConnectionSettings part, that one you've quoted...

I'm not registered to RVZT, but I'll do it, it can be usefull.

I have to update the command-line parameters stuff in my laucher, and then I'll try with RVHouse.

Posted: 09 Feb 2010, 03:36
jigebren
I'm ready to try with RVHouse. I launched it and registered. Now, there is waiting room and chat stuffs. But I'd just like to see if RVHouse can launch revolt, that's all. I don't want to join a race, because I'll be testing, so I can't play at the same time, and I'm too bad for now ;) . How can I do?

Posted: 09 Feb 2010, 04:20
jigebren
I did it. I created a locked room in RVHouse and asked to lauch the game, it was not very complicated, in fact. I used my modified revolt.exe to register the launcher (WolfR4), and modified the laucher to work with Lobby stuff.

And it works! At least it looks like it work, I mean RVHouse launched WolfR4 instead of revolt, then I launched revolt from WolfR4. There was a big delay before I can play the level, and when I quit the ended race (1 lap), revolt crashed. But I had not set the compatibility mode, that could be the cause.

Posted: 09 Feb 2010, 10:02
zipperrulez
it was not very complicated, in fact.
sounds complicated to me :P
There was a big delay before I can play the level, and when I quit the ended race (1 lap), revolt crashed. But I had not set the compatibility mode, that could be the cause.
On my pc with windows xp sp3 there is about a 1-2 minute loading screen if the compatability isnt set, so you can probably rest assured that the delay was the compatability.
revolt always crashed after racing online, unknown cause. afaik no one has been able to find out why it crashes, or stop it from crashing.

Posted: 09 Feb 2010, 10:06
jigebren
I did some other tests with RVHouse.
I tried to launch 'nhood1', being the only racer.

This time, I set compatibility mode to win98, so it seems to fix the loading delay I had before. Nothing surprising in it, as it does the same thing in solo racing mode.
But when I comlpete the race (1 lap) and choose Quit in the menu, revolt crashes. I tried with and without WolfR4 launcher, and it does exactly the same.

So at least, it looks like the lauching part is working nicely, and is not the cause of the crash.

But does anyone have any clue about this bug?

EDIT: I didn't see zipperrulez post above before, but he seems to have anticipated my questions...

Posted: 09 Feb 2010, 10:12
jigebren
zipperrulez @ Feb 9 2010, 05:32 AM wrote:revolt always crashed after racing online, unknown cause. afaik no one has been able to find out why it crashes, or stop it from crashing.
But how do you use to do when you play online? Did you just use 'Next race', and in that way it doesn't crash?

Posted: 09 Feb 2010, 10:18
zipperrulez
restarting the same track twice in a row crashes the game. ghost town 2 also has a strangely high crash tendency. to change the track you select another track, then press restart race. after the host terminates the game, when you press quit game (i dont remember if it is called quit game, but you get the idea...) revolt always crashes. it doesnt really matter though, because your done racing anyway.
hope i answered some of your questions ;)

Posted: 09 Feb 2010, 10:25
arto
jigebren @ Feb 9 2010, 05:36 AM wrote: So at least, it looks like the lauching part is working nicely, and is not the cause of the crash.

But does anyone have any clue about this bug?
I suspect this crash started happening after some Windows update. But I'm not sure...

Anyway great to hear it works. It's really exciting to know we who only race online will be able to enjoy the work you do!

Posted: 09 Feb 2010, 10:28
zipperrulez
arto has a way better understanding on this stuff than i do. i dont know any coding or stuff like that. all i know is pretty much creating custom content and troubleshooting basic errors. not very helpful to a programmer :P
Arto in that post above me wrote:Anyway great to hear it works. It's really exciting to know we who only race online will be able to enjoy the work you do!
it most certainly is :)

edit: whoa wait arto why do you only race online? lol.

Posted: 09 Feb 2010, 10:30
jigebren
zipperrulez @ Feb 9 2010, 05:48 AM wrote:hope i answered some of your questions ;)
Yep, thanks.
In fact it could look like that there is an issue with a memory allocation while loading the models, perhaps revolt try to load models that were badly (un)initialized.
Unfortunately, it's be probably too hard too fix (all the more in a patching way...)

Posted: 09 Feb 2010, 10:33
zipperrulez
jigebren @ Feb 9 2010, 06:00 AM wrote: Unfortunately, it's be probably too hard too fix (all the more in a patching way...)
I don't think its all that big of a deal, because when it crashes you are finished with the game anyway.

Posted: 09 Feb 2010, 10:36
jigebren
zipperrulez @ Feb 9 2010, 06:03 AM wrote:
jigebren @ Feb 9 2010, 06:00 AM wrote: Unfortunately, it's be probably too hard too fix (all the more in a patching way...)
I don't think its all that big of a deal, because when it crashes you are finished with the game anyway.
It's just for fun, if we can call it like that ;) .

Do you know if it happens only with lobby stuff, or also on a LAN (with IPX if I remember)? It could be more easy to test without the need to launch RVHouse.

Posted: 09 Feb 2010, 10:38
zipperrulez
if i remember right, if you can arrange a game without the use of rvhouse (ip joining) then it doesnt crash upon exit. dont quote me on that though, its been about 2 years since i raced without rvhouse :blink:

Posted: 09 Feb 2010, 12:22
urnemanden
Jig wrote:Do you know if it happens only with lobby stuff, or also on a LAN (with IPX if I remember)? It could be more easy to test without the need to launch RVHouse.
I always join by IP when I race online and I never experienced a crash - at least not with 0916. If I quit the multi-player game I get back to frontend.

Posted: 09 Feb 2010, 19:48
jigebren
zipperrulez @ Feb 9 2010, 05:48 AM wrote:restarting the same track twice in a row crashes the game. ghost town 2 also has a strangely high crash tendency. to change the track you select another track, then press restart race. after the host terminates the game, when you press quit game (i dont remember if it is called quit game, but you get the idea...) revolt always crashes. it doesnt really matter though, because your done racing anyway.
hope i answered some of your questions ;)
urnemanden @ Feb 9 2010, 07:52 AM wrote:I always join by IP when I race online and I never experienced a crash - at least not with 0916. If I quit the multi-player game I get back to frontend.
From what you reported, it is likely that the bug is linked to the lobby stuff implementation. Perhaps because in that case, revolt start directly in the multiplayer part of the frontend. It could miss some initializations.

@urnemanden
In your case, do you also have a bug when restarting the same track twice when you race online? But perhaps you never have tried, as everybody else would crash their session...

-

Concerning that bug, I know it will be hard to refrain from doing so ;) , but I will probably don't spend too much time on it anymore. The available source code concerning the online racing is not as clean as the rest, it's a bit messy and mixed up, and the 'flow' is more difficult to identify.
Moreover, it looks like the Lobby code from m$ implement some anti-debbuging tricks. The revolt thread was paused everytime I attach my debugger on it. I think I could skip this one, but there could be other more nasty.
And as zipperrulez said, people are used to this bug, so...

Posted: 09 Feb 2010, 20:39
urnemanden
Jig wrote:@urnemanden
In your case, do you also have a bug when restarting the same track twice when you race online? But perhaps you never have tried, as everybody else would crash their session...
When you host, you most likely don't crash when restarting the same track, that's both for RV House joiners and IP Joiners as of I know. I don't know about RV House joiners, but if I join a game where the host restarts the same track, Re-Volt doesn't crash for me, it just simply tells me that the multi-player game has terminated (ended).

Posted: 09 Feb 2010, 20:49
arto
zipperrulez @ Feb 9 2010, 05:58 AM wrote:
Arto in that post above me wrote:Anyway great to hear it works. It's really exciting to know we who only race online will be able to enjoy the work you do!
it most certainly is :)

edit: whoa wait arto why do you only race online? lol.
Because online racing is more fun :).