[Question] Is possible to create somethig like this?
#1
Hi everyone. I've been following this emulator by an year (but only now, i'm starting to use my account on the forum xD).
I've seen that the emulator have suport to netplay, but the netplay from the PS2.
Isn't possible to create a plugin to netplay, but the games that are multiplayer, and have no suport to netplay?
Like a kailera platform, to play the games =P
Then, many games would be possible to play online, even the ones that have no online suport =p
Is it possible to do in PCSX2?
Reply

Sponsored links

#2
it probably is possible, but due to the fact it needs so much power and the performance of the emulator varies so much machine to machine, playing against someone with a slightly lower spec machine could be considered "unfair" Tongue2
[Image: ref-sig-anim.gif]

Reply
#3
It'd be possible if both machines played the games same speed all the time, otherwise the delay on responses from one machine to the other would be considered lag and end up disconnecting I guess.
Reply
#4
perhaps you could write a "server version" of pcsx2, which emulates all 2-4 players on one machine. its graphics plugin encodes and distributes the graphical output to all connected pcsx2 "clients", their pad plugins send back the users' inputs. a pcsx2 with a server/client connect system and heavily modified graphics and pad plugins could be enough for that, though the "server" would need to be some hardware monster and you would need quite some upload bandwidth for the graphics distribution. anyone up for it? Laugh
CPU Core [email protected] | GPU Nvidia Geforce GTX 570 | RAM 8GB DDR-3 1600MHz CL9 | OS Win7 Ultimate (x64) SP1
EMU PCSX2 v1.1.0 r5645 | GS GSdx SSE4 r5632 | SPU2 SPU2-X r5559 | PAD LilyPad r5403 | CDVD cdvdGigaherz r5403
Reply
#5
that last one "server version" is kind of.... ^^"
It could be done, but the players, contently would feel lag in command responses, and it would need such a super computer and connection xD
Kailera style is bether.
For frames problems, if the other one is a low end machine, we can always use frame limiter, and put the number of frames to a number that both machines could support( more slow gaming, but...), or the low end uses could use frame skiper =p
Reply
#6
(06-19-2009, 03:53 PM)Palito Wrote: that last one "server version" is kind of.... ^^"
It could be done, but the players, contently would feel lag in command responses, and it would need such a super computer and connection xD
Kailera style is bether.
For frames problems, if the other one is a low end machine, we can always use frame limiter, and put the number of frames to a number that both machines could support( more slow gaming, but...), or the low end uses could use frame skiper =p

the lag would be the same as in a kailera style system. keep in mind that the server would only have to emulate one instance of the game just with support for 2-4 players and the encoding of the graphical output. the server would emulate it just as if there were 4 people sitting in front of one ps2. the main advantage would be the perfect synchronisation between the four players, all would only experience a similar lag due to their internet connection. syncing two or even more independend instances of pcsx2 would be much more difficult than that Wink
CPU Core [email protected] | GPU Nvidia Geforce GTX 570 | RAM 8GB DDR-3 1600MHz CL9 | OS Win7 Ultimate (x64) SP1
EMU PCSX2 v1.1.0 r5645 | GS GSdx SSE4 r5632 | SPU2 SPU2-X r5559 | PAD LilyPad r5403 | CDVD cdvdGigaherz r5403
Reply
#7
more dificult, but more eficient =p
ePCSXe already haves it, N64 emulator, too.
PCSX2 maybe will have it too =D
nothing is impossible in my opinion =p
Reply
#8
Keep in mind that thanks to the limited memory of the PS2's GS, your typical PS2 game sends like ~100 megs of data to the GS per second (some games much more, and some games a bit less). There are few things you can do to optimize this transfer, without introducing visual glitches or worse in most games. The other challenge that Pcsx2 has over other prominent emulators is that the PS2 is decidedly multi-processor in nature, so synchronization of peer-to-peer clients could end up being especially difficult (tho in theory a basic master VSYNC counter sync should suffice).

If you want to the netplay experience to generally not suck, then you'll need to do what zero29 suggests, and have a server/client model. But you can't have the cserver send raw GS data for the problem I noted above. It would have to be pre-processed GS data (post-cache processing so that only uncached textures are transferred), for there to be any chance of speedy netplay. But even with caching, many games transfer megs of GS data per second for basic post-processing effects. So even that seems fairly non-viable for most games. Going any lower in the chain pretty much means going back to a full-on emulation process of all PS2 CPUs and DMAs, and thus going back to a peer-to-peer model.

The other possibility for multiplayer connectivity is to send each user's PAD data to the other client. So if you have two players, one will plug in as PAD 1, and the other as PAD2. But even this can have pretty nasty side-effects. For one, the PAD inputs for both sides must be synchronized perfectly or else players' game states will go woefully out of sync .. and doing that is next to impossible. So eh, that probably isn't such a good idea either.
Jake Stine (Air) - Programmer - PCSX2 Dev Team
Reply
#9
I wouldn't think the pad plugin method would be that hard. Just use a built-in delay of X pad reads. Would either have to learn X from the game or make it user-settable, as I'm not sure all games read pads at the same rate. Then all clients would process the pad data at the same time. If a client fails to get pad data for a given read in time, then have it lock up until it gets the data. Obviously you'd have to send pad state even when no controls are pressed, but that's only like 21 (?) bytes per read, even in dual shock 2 native mode. I'm pretty sure this is the same basic scheme StarCraft used for multiplayer.

I've considered implementing this, but was concerned about the games getting out of sync due to other issues (Different settings for PCSX2 or different/differently configured plugins, different behavior because of multithreading, different game versions, different PCSX2 versions, different BIOS versions, sunspot activity, invasion by mutated zombie superwombat armies, etc). If two running copies of PCSX2 on different PCs could be guaranteed to stay in-sync as long as they received the same pad input, then I'm pretty sure the pad method would work reasonably well, and wouldn't be that difficult to implement.
Reply
#10
Well, that pad plugin think must work pretty well.
But, to it work completly, the emulator must keep sends data from PC to PC, like chickenliver said.
In question of multyplayer and sthings in PCSX2, if two friends want to playm then they will talk to put the same sethings, and if possible, the same bios into the 2 emulators (if they own their own PS2, it's no crime to use other one's bios i think.).
So, maybe this can be easely implemented.
I know a program, that allows to play Sonic Riders PC game online, and, wen the game gets out of sync, it freses the game, and sync the game again, maybe something like this can be implemented yo prevent possible out of sync insues.
Reply




Users browsing this thread: 3 Guest(s)