• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Smash on Voobly

Shears

Smash Master
Joined
Mar 13, 2008
Messages
3,146
Location
disproving indeterminism
Interdasting.

If we're restricting the client to Windows we might as well use Visual Studio and all those m$ libraries. I'm positive I could design a reasonably sleek interface in Photoshop. I would definitely put in the time if I thought there were competent people I could learn from (say, you). The net statistics stuff would be easy from the server-side perspective if we used something like PHP + mySQL or Node.js + MongoDB.

I'm not entirely sure how the networking works on Windows. About five years ago I wrote an HTTP wrapper using Winsock using C++. Basically, it just consisted of a few classes that allowed one to do something like
Code:
httpWrapper wrapper = new httpWrapper();
char* source = wrapper->request("GET", "http://smashboards.com");
and get the response data. It also automatically parsed and handled cookies, allowed the option to load / delete cookies, spoof referers, customize HTTP headers to adjust things like the user-agent header, etc. Again, that was five years ago, so it might take me a week or two to get back up to speed. I also know MIPS assembly (the basics at least, such as the 3 instruction formats, the registers, most the basic instructions, how the MIPS datapath works, etc) and C.

Somebody should make the Github repo(s) and start working on the foundations.
HTTP requests with full headers and responses can be a little too cumbersome, you don't want to pass more information than you have to. HTTP also doesn't allow the server to push data to the client and instead requires polling, which for this kind of application, 50ms polling windows will cause serious lag, desynch, and lost packets. There's plenty of libraries and languages that can achieve all this. I used a lot of Qt in college for doing large scale network applications. Using TCP sockets is simple, fast, and will do the trick. I think HTML5 is introducing web sockets but I don't know how fast they'll actually be. Basically, I think client-server TCP sockets are the way to go and just shortcut HTTP. I still have the code to use as a jumping off point. Also, does anyone know where I can look at the kaillera source code? I understand its a mess but I like messes.
 

Madao

Moderator
Moderator
Joined
Jun 27, 2013
Messages
873
Low-level memory/MIPS knowledge, to retrieve stats and synchronization variables
I can help with the low level memory/MIPS part. I thought about rollback, but it seems like you'd have to send a lot of information. Simply reseting the player coordinates and HP wouldn't be enough, because you have to worry about things like staleness. Idk how a server would deal with that. Iirc, Kailera only deals with input right?
Also is this client going to be made specifically for SSB64? If not, it would be much harder to do things like rollback.

Edit: I did some testing to see if I could implement rollback and I haven't been successful unfortunately. There's a lot you have to restore, so it will require extensive knowledge of savestates.
 
Last edited:

firo

Smash Ace
Joined
Jul 27, 2008
Messages
600
Location
Champaign, Illinois
I have a working copy of the source code for pretty much the current version of emulinker, which I will post. I also have a lot more that I will write about this stuff when I get the chance (probably tomorrow).
 

Agent 21 iXi

Smash Rookie
Joined
Dec 6, 2013
Messages
22
Location
Tennessee
Every so often there is talk about rewriting clients and the state of kaillera. Although there's always still plenty to learn I've spent a lot of time with Kaillera and figured I can offer some insights.

First, when we talk about "kaillera," there's really two things going on here - the server, which is emulinker, and the client, which in this case is Ownaclient. Voobly appears to be a business and I don't think they would take on smash64 and get involved with emulators. It also would not be open sourced which is a big deal.

Agent is correct in that the server code is not worth messing with, primarily because there is no nice source for it. However, I wouldn't say it is poorly written. The kaillera protocol was designed in the age of dial-up connections, and works well, all things considered, but is lacking some features that are common today. Kaillera isn't "bad," its just that technology and tools have advanced enough that current things are making kaillera seem worse and worse over time. Shears, I'm not sure what your background is, but I'd be happy to delve into the code and talk about some more technical aspects of things if you'd like.

Here's a list of things that can be reasonably expected if everything was to be rewritten with what's available today:
-Desync detection and ability to roll back to a save state
-Better lobby and username system
-Less lag outs, and system rejoining (if a user disconnects, they would be able to rejoin and load a save state so they could resume play)
-Easier 4-player p2p with NAT traversal (p2p without forwarding ports)
-Less server downtime
-Much better user experience and GUI using mupen64plus


Here's a list of things that most reasonably will NOT be improved by rewriting kaillera:
-Less desyncs (Mupen is probably better at this than pj64 so this may improve, but it is an emulator issue and not a netplay issue)
-Less input delay (p2p kaillera is as best as it can get)
-Better/more consistent ping times


Here's a list of things that can probably be done but may be outside the scope of the project:
-Cross platform play (Windows, Linux, OSX, Android, Wii, etc)
-Stat tracking


I've been involved with a couple projects to rewrite Kaillera but they all have died for one reason or another, which is common.

I have some time and I'd be willing to lead a development team to do what needs to be done to implement a new kaillera protocol. My area of interest in programming is networking and distributed systems so I think it would work well. If we wanted to do this, it would need to be composed of at least 2 other developers who are very committed to getting this done within a reasonable time. This would mean weekly scheduled skype calls, code reviews upon checkins, etc. We'd probably have something presentable come summertime if everyone involved put in atleast a few hours every week. I'd work mainly on the backend server code, and would want some people with experience/willingness to learn in the areas I know least about:

-Native Windows C++ and networking (interfacing with mupen)
-GUI frameworks (platform-independent if possible, e.g. Qt)

-Low-level memory/MIPS knowledge, to retrieve stats and synchronization variables

That being said the more people involved, the better. This would be a good way to get some experience developing stuff if that's what you are looking for.
I'm all in. I am very adept at self teaching myself so I can learn as I go as far as working on this project, I just need some team members. Now the rollback you mentioned firo, I'm assuming you're talking about GGPO style rollbacks? If so this style of net code is only effective on 2d games e.g. skullgirls, street fighter 3rd strike and simply would look horrendous on a 3d game like smash. Moreover, 4 player p2p is not a good idea, the problems of p2p are exaggerated with more players. Therefore, this is something that's only really effective with 2 people. As far as everything else in the green, this is very much needed and possible as far as I see. Might I also add to your blue section: Ability to record games and render as a video file ie .avi etc.
 
Last edited:

Cobrevolution

Smash Master
Joined
Feb 8, 2012
Messages
3,178
Location
nj
This is an idea I personally had already proposed.

In Voobly I've talked to some members of the staff including Elusive and they have told me that this project is possible to perform.

But they need staff who are knowledgeable about emulators.

I sincerely hope that I can agree to make this project possible and which would win all users, especially those who wanted to play snes, n64, neogeo etc. .. in online mode.

I invite you to look at this topic:

http://www.voobly.com/forum/thread/166246
http://www.voobly.com/forum/thread/166246
one of the latest posts from the forum

that dude made that topic like two months after i made the initial one, but i suppose staff must've replied via pm or something because i didn't see them say anything in that particular thread

so i guess if anyone knows anything about emulators or knows people who know anything about emulators...dale?

also i think it'd be pretty damn sweet if a bunch of smashers get together and get something new going, as was discussed in the last few posts. COMMUNITY
 

Agent 21 iXi

Smash Rookie
Joined
Dec 6, 2013
Messages
22
Location
Tennessee
Alright so our next step is to round up anyone who is knowledgeable enough to work with the source of emulators. Basically, if we can find someone who's fluent enough in C++ that person would be able to make additions to the source of emulators to include the SDK of Voobly's server/client. Once we have that everything should be able to come to life. As far as everything else, the Voobly team and Firo etc. should be able to handle the rest.
 
Last edited:

Runwarrior

Smash Rookie
Joined
Feb 23, 2014
Messages
1
Hi ..

I have read this topic and I see here are interested in doing a project is to improve the experience in the field of games by emulator.

So I inform you that from the staff of Voobly there is an interest for this project is done, all you need is the conformation of a good group to start working.

Please contact to _ CaMilO_

This is the profile and skype:

live:abcamilito

http://www.voobly.com/profile/view/123463536

If you are interested, a reunion will be made with Voobly staff and Firo, Ownasaurus, and Agent-21

The reason will be to discuss this topic.

We await your reply ..
 
Last edited:

Camilo@Voobly

Smash Rookie
Joined
Feb 25, 2014
Messages
1
Hi all players smash im Camilo Tech support of voobly as we all know this is a somewhat difficult project. but not impossible elusive would like to talk to work on this project with you. but first would need a team of experts in emulators. achieve and know the emulator is open source?

those who agree to work on this project?

please add me in skype for talking live:abcamilito
Profile in voobly http://www.voobly.com/profile/view/123463536
respond fast as possible. because it does not have much time .
 
Last edited:

firo

Smash Ace
Joined
Jul 27, 2008
Messages
600
Location
Champaign, Illinois
Hopefully we will talk soon. Among other things I would like to chat to clear up the following questions:

What is Voobly's purpose? Do you aim to make money? If members of the smash community contributed to this project, would we essentially be working for you guys for free?

Who owns the code that the team develops?

What's your development process like?

Is Voobly prepared to release the source for the work? (For me this is a requirement, and I don't see any indication of Voobly releasing any source code). Mupen64plus is under GPL, which means we will need to release the source of what we do.
 
Top Bottom