I've been working on a server emulator for SF2 for the past few weeks and made good progress, but I could use some people to help out with reversing.
So far I have:
The problem now is that I'm using the EU client for the game, which doesn't have a server anymore and all the packages are outdated. So if I want to continue using data from some of the live servers (JP, TW or KR), I need to parse the package files and the contained net indices.
I could just use the JP/TW/KR clients, but the executable keeps getting updated. So I would constantly need to unpack and reverse the bits I need, which just seems tedious.
So far I had some success using the UE Viewer source code to parse package files, but I don't understand enough of how the packaging and serialisation works to actual debug any issues that come up. And no matter what I do, the total amount of actors I come up with when I try to load the list of packages the server sends is always less than the actor indices. It could be that I'm misreading the actor indices too, so this is just a lovely situation I'm not entirely sure what kind of values to expect. E.g. what actor should be replicated first.
So I'm just looking for people here who might know a thing or two about UE3 or SF2 and want to help out. It's been hard finding resources about UE3 server emulation, I don't even know if something like this has been done before. Any pointers regarding packaging or the netcode would be greatly appreciated
So far I have:
- 99% of the menu packets reversed. all of this is done in unreal scripts, so parsing them is just a matter of reading the decompiled scripts, I largely autogenerated this part
- a skeleton server that sends hardcoded responses so you can login, join a channel/room and start a match
- some basic udp parsing, setting up control channels, getting the map connection string and sending what packages to load
The problem now is that I'm using the EU client for the game, which doesn't have a server anymore and all the packages are outdated. So if I want to continue using data from some of the live servers (JP, TW or KR), I need to parse the package files and the contained net indices.
I could just use the JP/TW/KR clients, but the executable keeps getting updated. So I would constantly need to unpack and reverse the bits I need, which just seems tedious.
So far I had some success using the UE Viewer source code to parse package files, but I don't understand enough of how the packaging and serialisation works to actual debug any issues that come up. And no matter what I do, the total amount of actors I come up with when I try to load the list of packages the server sends is always less than the actor indices. It could be that I'm misreading the actor indices too, so this is just a lovely situation I'm not entirely sure what kind of values to expect. E.g. what actor should be replicated first.
So I'm just looking for people here who might know a thing or two about UE3 or SF2 and want to help out. It's been hard finding resources about UE3 server emulation, I don't even know if something like this has been done before. Any pointers regarding packaging or the netcode would be greatly appreciated