GameService Beta versions

Every Podheads know the meaning of this section
Répondre
Avatar de l’utilisateur
NicoDE
Messages : 32
Inscription : 09 sept. 2004 14:59
Localisation : Germany
Contact :

GameService Beta versions

Message par NicoDE »

Hi,

does anyone here have a backup copy of the GameService Beta versions?
(e.g. referenced but not cached by the wayback machine)


Many thanks in advance,
Nico

crosspost at Bandie's Racing Board
Avatar de l’utilisateur
grokon
Messages : 3676
Inscription : 21 juil. 2003 8:16
Localisation : La porcherie

Re: GameService Beta versions

Message par grokon »

Not on my side ...
Avatar de l’utilisateur
NicoDE
Messages : 32
Inscription : 09 sept. 2004 14:59
Localisation : Germany
Contact :

Re: GameService Beta versions

Message par NicoDE »

Too bad, but thanks for your reply.
Avatar de l’utilisateur
Freddy
Messages : 159
Inscription : 16 sept. 2003 3:07
Contact :

Re: GameService Beta versions

Message par Freddy »

Hi again, It's been a long time. Isn't that something Skubidou might have?
Avatar de l’utilisateur
NicoDE
Messages : 32
Inscription : 09 sept. 2004 14:59
Localisation : Germany
Contact :

Re: GameService Beta versions

Message par NicoDE »

Freddy a écrit :Hi again, It's been a long time.
I was busy with other things, but from time to time I'm back on Io :)

After getting POD running in Wine and finishing the analysis of POD's UbiPatch BIN format I continue to reverse engineer the Game Service protocol(s). The "final" Game Service client (let's name it GS2) for POD 2.2.9.0 not only changed the message data encoding (encoded octets diagonally arranged in a square matrix), but also introduced interprocess communication and compatibility problems that are not easily solved on current Windows versions (e.g. registry write access in HKLM, focus/device lost is a problem for some Glide wrappers, ...). Therefore I focus on the "first" Game Service client (let's name it GS1) that was distributed as a single library (gs.dll) and directly integrated in POD 2.2.8.1. Another reason is that only the PowerVR binaries have been built with Visual C++ 4.1, 4.2 and 5.0 (somewhat easier to analyze than all the other binaries that have been built with Watcom). A very basic proof of concept "server" successfully fakes user account creation/login/update and router/server(arena)/session/user lists. Now I'm looking for more information and more client versions to analyze.

I know that there are several ways to cheat in POD multi-player modes, but that's something I don't care about.
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

Uuuh, that starts to be very interesting. I was thinking of doing the same for a long time, and you seem to have already done a pretty good job !

I'd like to help you so if you could give me some more information on how you managed to launch pod correctly in wine (using dgVoodoo ? With a software rendering version ?) I'd be glad to try this on my side to help reverse engineering the protocol.

Also, I loved the GS1 and the green theme really missed my with the GS2, so I'm all for keeping with the GS1, as buggy as it was.
Avatar de l’utilisateur
Freddy
Messages : 159
Inscription : 16 sept. 2003 3:07
Contact :

Re: GameService Beta versions

Message par Freddy »

NIcoDE, I am not at all familiar with all the lingo and programming.
Is the ultimate goal, to re-create the GS1 thru reverse engineering so it can be used again?
Or are you just trying to see if you are successful in doing it as a hobby?
It'll be a huge contribution if you can make a new or existing game service work for everybody.
I am in favor in re-inventing anything that was actually glitchy with POD, as long as the originality and feel of the game remains the same.
Keep up the good work!!
Avatar de l’utilisateur
NicoDE
Messages : 32
Inscription : 09 sept. 2004 14:59
Localisation : Germany
Contact :

Re: GameService Beta versions

Message par NicoDE »

Dfg a écrit :I'd like to help you so if you could give me some more information on how you managed to launch pod correctly in wine (using dgVoodoo ? With a software rendering version ?)
I created a new entry for GOG's POD Gold release in the Wine AppDB (notes and how-to are in progress). And in the meantime I created a winetricks verb for this release.

There are some standard tricks to prepare a wineprefix (to avoid littering your Linux home/desktop/menus):
  • export WINEPREFIX="$HOME/.local/share/wineprefixes/xxx"
    (where xxx is the name of your prefix)
  • env LANG=C winetricks sandbox
    (LANG=C because winetricks does not know all localized shell folder names)
  • winecfg
    (setup your prefix, e.g. "mount" your CD-ROM directory)
  • export WINEDLLOVERRIDES=winemenubuilder.exe=d
    (avoid automatic link creation)
  • cd "$WINEPREFIX/dosdevices/x:"
    (cd to "CD-ROM" drive and run the setup, ...)
Mounting your CD-ROM or ISO might not work because Wine sometimes doesn't recognize the volume label (required for the setup to work). In this case extract the files into a directory, add it in Wine as a hard-disk (advanced properties), set the volume label (POD or POD2_0), apply the changes and then change the type to CD-ROM.

I successfully installed and upgraded the POD OEM release to the 3Dfx version 2.2.8.1 following the instructions at Holger Bredel's homepage.

You should only apply the ForceFeedback patch if it's actually working on your system (for my Logitech Driving Force GT it does not). Else you'll have tons of messages in the Wine log.

For the 3Dfx emulation I use nGlide (dgVoodoo did not work on my box in Wine).
And for the run-time patches (buggy CPU checks and so on) PodHacks is used.
Freddy a écrit :Is the ultimate goal, to re-create the GS1 thru reverse engineering so it can be used again?
Or are you just trying to see if you are successful in doing it as a hobby?
My goal is to create a server (private prototype on Windows, later public source code release for Linux) that only implements the required features to connect and play with a GS1 version of POD.
I don't wanna bring the whole Game Service back to life :)

It's a spare time project. Therefore it will take some time (measured in months) because I'm quite busy with my family, a full-time job, and other hobbies.

The project is still in the research phase (there is a private scratch pad where I put some technical stuff from time to time). There might be problems that I'm not aware of at the moment (e.g. the server might have to connect to a client port - what makes the client network setup far more complicated (port forwarding by the router)).

Best regards,
Nico
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

O M G !

Amazing. That wasn't simple at all.

I'll try this asap ...
Avatar de l’utilisateur
Freddy
Messages : 159
Inscription : 16 sept. 2003 3:07
Contact :

Re: GameService Beta versions

Message par Freddy »

If you could achieve that, it'll be fantastic.
Playing thru IP wasn't as bad, a disconnect here and there and laggy when playing most custom tracks.
All the original 32 tracks were not a problem. By the time I got to play online the GS2 was being used, I never raced thru the GS1.
A customized GS1 could possibly raise interest again, especially for all those old Poddies like me.
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

Ok, I tried on my POD Gold original CD. Install went fine as usual, and podhacks successfully let me pass the 32k colors restriction.

However, I currently freeze on the intro video...

Edit: googling a bit I found the problem. PulseAudio does not work well with wine. pasuspender solved the problem. Now my main problem is performance : it's horribly slow !

Edit2: Using dgVoodoo, the game is playable. Some polygons are missing and the game isn't really easy to play, but I can test things. And I can run wireshark :-)
Avatar de l’utilisateur
NicoDE
Messages : 32
Inscription : 09 sept. 2004 14:59
Localisation : Germany
Contact :

Re: GameService Beta versions

Message par NicoDE »

Dfg a écrit :it's horribly slow !
Sounds like 3D acceleration isn't working.
Multiarch and no libgl1-xxx-glx:i386 ?
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

Thanks, I'll look at that. But enough for today. Just for reference my discovery of the day :

http://sd-21102.dedibox.fr/sylvain/pod-gs1.txt

Maybe that's something you already knew ...
Avatar de l’utilisateur
NicoDE
Messages : 32
Inscription : 09 sept. 2004 14:59
Localisation : Germany
Contact :

Re: GameService Beta versions

Message par NicoDE »

Dfg a écrit :Maybe that's something you already knew ...
A short overview of my guesswork...

There are two message types in the library (attached gs1msg).
A connection sequence might look like in the attached gs1log.
(all "[4][3]StillAlive <>" have been stripped)
(Demo versions send StillAlive_Shareware and additionally require a Success reply to Connect_Shareware)
Pièces jointes
gs1log.zip
GS1 connections sequence
(517 octets) Téléchargé 331 fois
gs1msg.zip
GS1 packet doc (C++ style)
(1.32 Kio) Téléchargé 361 fois
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

Ok, you're far ahead from me :-) I'll try to fill the gap quickly ...
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

Ok, I think I get it. Do you already have a basic code for the router / server ? (I'm ready to write one, but maybe it's useless if you already have it done somewhere)

In which way do you think I could help ? I can see a couple of thing :
- Writing a tool that translates logs to binary / binary to logs to help protocol reverse engineering
- Setting up a git somewhere
- Continue protocol reverse engineering
- Something else ?
Avatar de l’utilisateur
grokon
Messages : 3676
Inscription : 21 juil. 2003 8:16
Localisation : La porcherie

Re: GameService Beta versions

Message par grokon »

This the best I was able to get for years !
I still have issues (car is too fast, and there are some textures errors) ... but still ! Amazing ...
If I am not able to connect my wheel, it is pointless though ;)
I will try with Windows now ... never know !
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

NicoDE a écrit :
Dfg a écrit :it's horribly slow !
Sounds like 3D acceleration isn't working.
Multiarch and no libgl1-xxx-glx:i386 ?
Libgl1 is there and 3D accel is definetly working. And dgVoodoo works fine (in terms of performance ... though rendering is quite ugly). But I don't know why nglide doesn't. Actually, even dgVoodoo sometimes switches to the very slow mode (I can't correlate this to a wine warning or anything). Anyway, I'm running an old ubuntu and it may explain most of the problems I encounter.
Avatar de l’utilisateur
NicoDE
Messages : 32
Inscription : 09 sept. 2004 14:59
Localisation : Germany
Contact :

Re: GameService Beta versions

Message par NicoDE »

Dfg a écrit :Do you already have a basic code for the router / server ?
No, just a local "router/server" (same port) that replies hard-coded messages to advance step by step in the connection sequence (to reach the point where a game is running).
I tell the game about my "router" by generating a GS.bin with a custom tool.
Dfg a écrit :In which way do you think I could help ?
That depends on your interest and spare time.
Personally I'm fairly new to Linux development/daemons and would start by using the APR framework. But it sounds like your are more experienced in this topic.
Dfg a écrit :- Writing a tool that translates logs to binary / binary to logs to help protocol reverse engineering
Did you notice the gs.dif? Patch your GS.dll and it will generate a log file.
Dfg a écrit :- Continue protocol reverse engineering
I spent a lot of time in IDA looking at the library and the game binaries.
Maybe I should write down some docs, notes, and comments (or answer questions if possible) before your start to repeat the analysis.

---
grokon a écrit :(car is too fast, ...)
You need to enable VSync in dgVoodoo/nGlide.
grokon a écrit :If I am not able to connect my wheel, it is pointless though ;)
My wheel works, but not the haptics (not in Linux and therefore not in Wine).
Avatar de l’utilisateur
Dfg
Messages : 968
Inscription : 20 juil. 2003 14:29
Localisation : Là bas dans les montagnes

Re: GameService Beta versions

Message par Dfg »

NicoDE a écrit :That depends on your interest and spare time.
Interest : high , spare time : low. :-)
NicoDE a écrit :Personally I'm fairly new to Linux development/daemons and would start by using the APR framework. But it sounds like your are more experienced in this topic.
I'm fairly experienced in linux development (contrary to windows development : I've never compiled anything on windows), and I didn't know the APR framework. With APR, we may achieve some kind of portability so that may be interesting, though we may lack control on network performance tuning we may need to design a low latency server.
NicoDE a écrit :Did you notice the gs.dif? Patch your GS.dll and it will generate a log file.
O....K. That's terrific.
NicoDE a écrit :I spent a lot of time in IDA looking at the library and the game binaries.
Maybe I should write down some docs, notes, and comments (or answer questions if possible) before your start to repeat the analysis.
Oh, ok. Good to know.
Répondre