Kitty Corp Meow Mix Forums

Super Smash Bros. Brawl Hacking => Programming => Topic started by: WTVelocity on July 09, 2011, 03:55:39 PM



Title: SSBB Private Server
Post by: WTVelocity on July 09, 2011, 03:55:39 PM
I've already been running private servers for a couple games on my computer, and I was wondering if anyone knew how much framework would be involved in making a server emulator?

I know it would be pretty difficult probably to retrieve the files from the Nintendo server, considering their logs and stuff, you may end up getting banned for trying, and probably for nothing, considering any encryption they may have.

My thought is that someone who already knows most of the encoding for Brawl, or at least someone who knows enough to know where the networking protocol in the game is, may be able to emulate the encryption in a C++ or Java file.

The other part, which would be much easier in comparison probably, would be to  emulate the actual database that relays information sent to the server to the other clients.


Why have a Private Server for Brawl, you may ask?

Simple: Right now, if we don't want to get banned (and it's not common, but does happen), we have to play with friends only with their code. Even then, I've heard of a few people to get banned.

But just as much as that, is the problem that if we join a game, as most of you know, even with the bones being nearly original, if you use different moves (so anything other than a texture hack), you may end up lagging out the game.

The only remedy to fix this it would seem would be to have the SAME hacks on all the clients who is in a game. But other people may always be on and join.

I'm already working on a version of Brawl that has alot of Character changes and balances, some characters stronger, with others changes all together.

If I made a private server exclusive to this version of brawl, anybody with it could get on and organize, or wait, without need of going through all the trouble of choosing friend IDs.

I could host it on my computer that already runs servers, and it could end up as a partial brawl revival!  :happy:

Please comment if you like the idea, with any thoughts, and anyone who knows anything about data packeting or where the networking part of the game is stored, and how it could be edited, please PM me!


Title: Re: SSBB Private Server
Post by: Mansta8 on July 09, 2011, 04:03:31 PM
I believe brawl has a file that has the name of the normal sever in it, and looks for that. But maybe if we changed the file so it looks for the custom server it might work, but we need to make the new sever work for brawl somehow.


Title: Re: SSBB Private Server
Post by: Sky Grounder on July 09, 2011, 04:16:57 PM
I APPROVE OF THIS IDEA! :happy:

I believe brawl has a file that has the name of the normal sever in it, and looks for that. But maybe if we changed the file so it looks for the custom server it might work, but we need to make the new sever work for brawl somehow.
If that's true, I believe it's placed in sync.dat.
I just copied this from it:

9250ikotasam5260ikim


Title: Re: SSBB Private Server
Post by: ♤♡◇♧ on July 09, 2011, 04:55:16 PM
They tried this idea more then a year ago and had to stop due to disclosed reasons.


Title: Re: SSBB Private Server
Post by: WTVelocity on July 09, 2011, 04:59:13 PM
maybe if we changed the file so it looks for the custom server it might work
That's exactly what I was planning, When I have run WoW and Eudemons Servers, it's usually contained in a .dat file in the client folder somewhere.
By simply changing that address, whether it's an IP address or DNS resolver, it usually works the same either way.

but we need to make the new sever work for brawl somehow.
That's what I was saying by needing someone to create an emulator for the server.

Even with the game redirecting and connecting to my server computer, the computer would still need a program to understand the information the Wii sends, and relay it, as well as have all the included Ping checks and any other systems the Wii Servers have behind the scenes, that the wii actually would access: otherwise it could still lag or crash.

If that's true, I believe it's placed in sync.dat.
Thanks, that is likely to be what we might need to change. Could you please upload that to megaupload or something and PM me the link?

More data than that may be needed though, in order to properly assemble an emulator, but anywhere is a start!

They tried this idea more then a year ago and had to stop due to disclosed reasons.
Didn't see anything about it, but if it's for "Legal" reasons, there are certain laws that a "cease and desist" letter doesn't change, that some people don't know ALLOWS them to make edits, modify, exc games,  under certain motives and with certain legalities being met.


It's similar to how some years ago, Nintendo would say in their booklets: "Unauthorized Copies of this software is not necessary to back up your game software, and is not authorized by Nintendo.

That lead people to think they NEEDED Nintendo's authorization to HAVE backup copies... when in fact they were legally allowed to under certain laws, and Nintendo just used that to discourage.

In other words, we are protected to do some things we want to, under the above said laws, that letters telling us to stop doesn't change.


Title: Re: SSBB Private Server
Post by: WTVelocity on July 09, 2011, 05:32:58 PM
I had a look at sync.dat, and from the looks of it, there is another area of framework that references sync.dat for the connections.

Since we don't know yet what exactly the string "9250ikotasam5260ikim" means, we can't say if that is a password key or online directory, much less what kind of format it needs to be in if we change it...

Anyone please let me know if you have any other finds for the networking framework! :)


Title: Re: SSBB Private Server
Post by: DarkPikachu on July 09, 2011, 07:25:41 PM
HECK YEA :D

only 1 problem though >_>

due to needing the FRC,
I've had a hacked brawl vs match between me and roo

and even though it was only the FRC in both our GCT's
the game still desynced >_>

and that was only a bare match

but when I send roo my GCT, we have a perfect match



a resolution idea I have is to post a custom GCT for users to DL if they want to join,
and to only allow hacks that won't desync :)


Title: Re: SSBB Private Server
Post by: ??_? on July 09, 2011, 08:16:49 PM
They tried this idea more then a year ago and had to stop due to disclosed reasons.

Namely, it being impossible.


Title: Re: SSBB Private Server
Post by: VILE on July 09, 2011, 10:28:27 PM
Heh, I was a part of the project with the Brawl server stuff. It closed because at the time we didn't really have much man power (meaning no manual edits) and in conjunction with lack of time and programming ability, we thought it would be out of our range to fix it.

Namely, it being impossible.
It wasn't impossible, it was actually quite possible.


Title: Re: SSBB Private Server
Post by: WTVelocity on July 09, 2011, 10:42:07 PM

a resolution idea I have is to post a custom GCT for users to DL if they want to join,
and to only allow hacks that won't desync :)
Like I said, I'm actually building a client specifically for this project.

I will still have the game support friend matches, but I'm actually revamping the character lineup an move sets to try to have ALL characters in there balances, and many switched with more popular/well liked ones.

I will not ban people for using hacks, but would discourage use of unsupported hacks that wasn't included in regular matches, and encourage them being used in private games.

That would allow me to log records in each, which could be used to help create a client that WOULDN'T lag from bones being named differently, or changed, by changing the network framework.


In short, I suppose the server logs the bones, and sends the bones' location to the other Wiis, to save on data packet frequency and size. If we were to log how it works, and create data compression instead, it may lag some, but become more reliable.


Namely, it being impossible.
Also, the PSP 2000 was impossible to hack, right? That's what people said at one time.

There's always a way with a little data rewriting: Just need to find the framework network links, and people who know what they are doing.

I think this project would be a little easier than building a WoW server emulator, would it not? Blizzard's specialty is MMOs... Nintendo just threw a generic server together with some coding.

History and recent time both show that FANS can make better games than the original companies. Look as SMBX and the Sonic Fan Project.


Title: Re: SSBB Private Server
Post by: ??_? on July 09, 2011, 11:10:02 PM
Well, if you do manage to make any headway, I'm 100% behind you man.


Title: Re: SSBB Private Server
Post by: Sky Grounder on July 10, 2011, 04:12:53 AM
If this will work out, remember to make suport for all regions (Important to keep in mind if you're going to use codes) ;)


Title: Re: SSBB Private Server
Post by: VILE on July 10, 2011, 05:36:53 AM
WTVelocity, I would like to know what programming language this will be written in. Even though I know little about manipulating received or sent packets, I may be able to help you with reverse engineering the actual files that handle the online capabilities.

I don't remember too much information about the previous attempt at changing the online capabilities (I wasn't too heavily involved in the project because it wasn't at the top of my priority list at the time), but I do remember that there was some stuff stored in "main.dol" (I think thats what it was called). I may be able to create a decompiler and recompiler for this file (and possibly other ones that need modification), or atleast be able to look at the file(s) and provide some information as to how it works.

I probably cannot offer my abilities full time, but I am willing to set aside some time every so often to discuss and have a look at this project.


Title: Re: SSBB Private Server
Post by: DarkPikachu on July 10, 2011, 07:32:43 AM
hmm...

so the networ instances are carried out by only he bone data...
interesting

meaning my idea for a project I had a while back just may work after all
(with quite a bit of modding of course)

matches hosted by a central server...
basically, the match goes by your hack vs their hack
the data is UL'd to the server before the match starts
(they'll see your hack, and you'll see theirs when versing)

Hacks that cause desync:
this won't happen due to:
replacement of CHR0 data (in the vital CHR0's)
replacement of Logic data
and replacement of FS data before the match starts

I'm thinking to use the GCT to hard-code the mods in instead of using a modded file

the only problem I can think of would be for custom imports that won't cause desync
that's for my idea that involves a model import over a single slot,
and doesn't affect the other slots
(it's possible, as I've done it in the image below)

(https://ipfs.io/ipfs/QmUCoEUgG5Z3Puwatig11X5B6A7hP1xVyDrpbSGXzVr8oV?filename=al_100820_1518.bin.out.jpg)
^both are in their own 'WalkSlow' animations
NOTE: (before people go around asking why I havn't released the hack),
the hack was never released because it was incomplete.
the hack used in the image above had an invalad bone tree

anyways...
the problem with that would be the data replacement for chr0's...
that would cause the import to render in T-Pose instead of rendering the animation

note: this would only modify the UL'd data on the server.
(the data on the SD is safe) ;)



How this would work on the network:
the data on the wii's RAM would be replaced with the data on the server
the transferred data across systems would still be bone data


Q: why not allow character imports if the data would be on both wii's??
A: it would work if not doing ditto matches,
but actually doing ditto matches would cause a mis-influence on the other players character,
along with other complications that could cause an error

if I'm forgetting anything, let me know :)


Title: Re: SSBB Private Server
Post by: xmanfit0 on July 10, 2011, 10:59:11 AM
Here are some interesting pages that may be of use to you:
Project Wi-Win on Smashboards (dead) (http://www.smashboards.com/showthread.php?t=269253)

Discussion on why a private server is "impossible" (http://www.smashboards.com/showthread.php?t=256213)
(^Perhaps you may prove them wrong)
Good luck to you.


Title: Re: SSBB Private Server
Post by: WTVelocity on July 12, 2011, 02:12:49 AM
WTVelocity, I would like to know what programming language this will be written in. Even though I know little about manipulating received or sent packets, I may be able to help you with reverse engineering the actual files that handle the online capabilities.
I planned on it being whatever the easiest to use programming for this would be.
I tend to see most server apps running in C++, so even though I know Java would be more than possible, I was thinking C++ may be the easier ticket.

I honestly would be directing and debugging the scripts more than the programming itself, because I'm already involving myself in the project of the client and debugging it, as well as having to study laws for a job coming up...

For all the other comments, I'll read them after I get some sleep and can better comprehend and analyze them. :P


Title: Re: SSBB Private Server
Post by: VILE on July 12, 2011, 03:49:27 AM
I planned on it being whatever the easiest to use programming for this would be.
I tend to see most server apps running in C++, so even though I know Java would be more than possible, I was thinking C++ may be the easier ticket.

I honestly would be directing and debugging the scripts more than the programming itself, because I'm already involving myself in the project of the client and debugging it, as well as having to study laws for a job coming up...

For all the other comments, I'll read them after I get some sleep and can better comprehend and analyze them. :P
Well my actual knowledge of being able to create in a programming language finishes at C# (and some other similar derivitives), I have a limited knowledge of C++, though.


Title: Re: SSBB Private Server
Post by: WTVelocity on July 13, 2011, 11:09:49 PM
Ok, I read most of the posts on the old Topic, and one of their arguments for why it wouldn't work is a falsified assumption: That Nintendo doesn't host the game at all, that it is all simply P2P.

Nobody has been apparently been able to even decode the networking protocols used for the internet yet: all that has been found is how to access the data packets through the WiFi to synchronize.
But there is still more that tells it the Host name, how to resolve the host name/connection, and any passwords or data encryption needed to get it to connect.

How do I know Nintendo does? Simple number of reasons!

1)As stated above, nobody has been able to decode the protocol to safely say it doesn't or to say how the networking truly works.

2)We have already heard of a number of people banned for using hacks.
IF it wasn't hosting on a server machine to monitor connections, there would be no gateway to block. If it's connecting through a gateway, that is still a form of a host, which can be emulated.

3)Anyone who has actually RUN private servers, beyond just running a file or to to make it run, and setting ports, knows that there has to actually BE an address to connect to.
Wiis will NOT just randomly detect each other because they are running the same program or networking protocols.

Don't Believe me? Think of how long it takes for your computer to recognize a LAN game that you are running on another computer. It take a good minute sometimes, depending on connections, the game, and the protocol being used, to even SEE the other game on the network.
Now, once it is connected, it can synchronize whether you are next door or in Korea.
But obviously the Wiis are not powerful enough for projecting a game to every Device on the internet using that protocol to find it.

And the reason I said I believe the server reads bones and relays the data, is because we know how it desyncs when bones are renamed, but not by textures.

In other words, it's capturing the data of your movements, and refreshes other Wiis with that information. But why could some data change without a desync? Why only the bones?
That's my reason behind believing that. It may not be 100% true, but somewhere in there lies how it works.


Title: Re: SSBB Private Server
Post by: DarkPikachu on July 13, 2011, 11:43:21 PM
I'm an idiot *facepalm*

I already know that bone data is not sent through the network...
what's sent through the network is the same data used in brawl replays.
(I've known this for years)

that's why desyncs happen...

because on your wii you have a mod while they don't on their wii

their wii is using their data for your char
(the data loaded into their wii's RAM)

so if you have a logic edit on your wii, and they don't
the data on your wii will be different from the data on their wii when in-battle
so you'll be sending your opponent flying on your wii,
when they're stuck in the ground on their wii.

what causes a desync is when the game ends on their wii,
and your still brawling on yours




me and roo were paying attention to our stock when we were on the verge of a desync
I had 5 lives, he had 4 on my wii, but he had 5 lives and I had 4 on his wii

meaning controls and positioning were messed up throughout the net,
causing me to... lets say... walk off the edge on his wii, while I'm fine on mine...

there was no actual freeze due to us still being in-game


Title: Re: SSBB Private Server
Post by: WTVelocity on July 14, 2011, 05:13:31 PM
Tcll: That explanation is far from being able to say that it runs off the same protocols, which is why I'm understanding that you're trying to say (please correct me if you're wrong).

Here is why I've gathered by watching the games behavior, with my knowledge of game programming:

While it is true that the moves that show up in replays are different, depending on hacks being used, that doesn't mean that any part of that module would be used in transmitting data. Perhaps the recorded data may be SENT to both, the replay and network sending packets, but it would be unrealistic to send replay data itself.

Reason would simply be because that would require more system memory, and also risk it becoming unstable. It is comparable to asking your friend on your right to relay a message to your friend just to your left.

That is unless, by small possibilities, the game creates a giant replay window that you are actually PLAYING in. I haven't tried recording an online match, but considering you CAN replay online games, but not ones against the CPU, that could be a small possibility.

But in reality, all this is just possibility of speculation:
We still have a .dat file that is being read by SOMETHING, and being interpreted and used for a connection.


There is a possibility that the Friends thing is actually a direct connection to other Wiis, not through Nintendo: but I have heard of people getting banned even playing through that.

So on that note, we have Wii Friend codes and such, and if I can recall correctly, you can check your Wii system code without Brawl, right?

That means there is a likely chance that Wiis are actually configured to connect to a Nintendo server as a proxy or gateway.
If that is indeed the case, it would be no wonder that programmers before were unable to find the packeting data, if it is stored in the Wii, not the Brawl game!


Title: Re: SSBB Private Server
Post by: DarkPikachu on July 14, 2011, 06:15:36 PM
That means there is a likely chance that Wiis are actually configured to connect to a Nintendo server as a proxy or gateway. If that is indeed the case, it would be no wonder that programmers before were unable to find the packeting data, if it is stored in the Wii, not the Brawl game!
that's it exactly
I know what it does, I just have a problem explaining things well -.-*

all I know is (on extremely basic terms) command data is sent to replays,
and the same command data would be sent across the net...

IDK if the command data is converted before being sent to a replay file,
but I do know that the least possible data to send in a short amount of time would be a command...

btw, there's a slight correction...
the moves in replays are the same, no matter what hack you have...
the replay only stores button data...

this would explain why:
if you save a replay in B-, the char would walk off the edge in regular brawl.
the protocalls stored in the logic and animation files would be different,
causing the char to move differently when the command is pressed