Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Kaillera p2p client

Kaillera p2p client 15/07/2014 13:14 #6515

  • atchoo
  • Avatar di atchoo
NOTA: pubblico il seguente post con la speranza di chiarire alcuni aspetti piuttosto che confondere ulteriormente le idee. Se avete domande, chiedete pure. :)

Nei giorni scorsi ho fatto qualche ricerca per svelare il funzionamento di alcune opzioni disponibili.

Bisogna premettere che il p2p è stato aggiunto parecchio tempo dopo il rilascio dell'ultima release di Kaillera standard, avvenuta nel 2003, che si basa esclusivamente su server.

Questo è il sito di riferimento: p2p.kaillera.ru/
Questo è la pagina di riferimento della versione custom più sviluppata (giusto per mostrarne le potenzialità: purtroppo il progetto sembra morto da tempo e i link per i download non funzionano): smashboards.com/threads/customized-n02-kailleraclient.275895/

Sul sito di riferimento è disponibile l'ultima versione rilasciata, la v0r7. Ha un pannello più ordinato, integra un client IRC (impostato su chissà quale codifica dei caratteri, visto che ha problemi con quelli accentati), ma non prevede l'utilizzo dei server (poco male per me, ma possono essere utili) e, magagna più grossa e pure strana, non è retrocompatibile con la versione che utilizziamo, la v0r6.

Il sito ha una sezione FAQ esaustiva (con alcune conferme, come l'assoluta parità di condizioni tra host e client*), istruzioni all'uso (nulla che non conoscessimo già) e un simpatico Delay calculator che, impostato correttamente, ti indica il ritardo in frame, sia su server (usate Official/UOKS servers) che su P2P. Si scopre così che Kaillera, in P2P, aggiunge
1 frame fino a 33ms
2 frame fino a 66ms
3 frame fino a 99ms
4 frame fino a 133ms
Non vado oltre perché già 4 frame di ritardo sono il limite massimo per un gioco come SWOS.

* Q: Does it give any advantage to low pingers over high pingers like normal kaillera?
A: No. Ping a.k.a. latency can be seen as a network property between 2 endpoints. There are only 2 endpoints in p2p and hence both users share the same ping.
Q: Does host have any advantage? How is host different to connector?
A: No. Host is obviously the one who is connected to. Host has the privilage of taking certain initiatives such as calculating average ping and throughput but nothing special. Client's clock also gets synchronized emit the same time as host. On the negative side, host needs to have the hosting port forwarded in firewalls and routers so the connector can connect. Once the game starts, both behave identically.


Veniamo ora alle "scoperte"... Non aspettatevi chissà cosa, ma possono essere utili.

La prima, purtroppo non funzionante nei test che ho svolto (probabilmente è stata inserita nella nostra versione in attesa di una sua completa funzionalità) riguarda il pulsante waiting games (vedi prima e seconda immagine, sulla sinistra).
In teoria, mettendo l'host la spunta su Enlist in waiting games list (vedi terza immagine), il client dovrebbe, premendo il pulsante waiting games, trovare tutti gli host disponibili in una finestra a parte (vedi quarta immagine).
Purtroppo, come ho già scritto, sembra non funzionare... Se riuscite a combinare qualcosa, scrivetelo qua.









La seconda è più interessante perché è legata alla qualità della parte giocata e, soprattutto, funziona. :lol:

Prima di illustrarla, una piccola premessa. Kaillera p2p funziona in maniera molto semplice: una volta calcolato il ping tra host e client applica X frame in aggiunta in maniera tale da preservare i 50 fps dell'emulazione.
Se la connessione è stabile non ci sono problemi e si gioca tranquillamente con X frame di ritardo (1, 2, 3, 4, ecc. ecc.).
Se la connessione non è stabile o, sfiga delle sfighe, ha un ping a cavallo tra il passaggio da un frame di ritardo all'altro, possono esserci i famigerati scatti (che possono sfociare in rallentamenti prolungati).

Primo esempio: io e Spaced ci connettiamo a 17ms di ritardo stabili. Kaillera p2p ci assegna 1 frame di ritardo e lancia l'emulatore. Giochiamo senza problemi.
Secondo esempio: io e Spaced ci connettiamo a 17ms di ritardo. Kaillera p2p ci assegna 1 frame di ritardo e lancia l'emulatore. La connessione non è stabile e, saltuariamente, supera i 34 ms. Ogni volta che la connessione supera quel valore abbiamo uno scatto, dovuto alla perdita di un frame che Kaillera recupera rallentando il gioco (da 50 a 49). Se il valore viene superato per lunghi tratti si hanno veri e propri rallentamenti, che possono scadere fino al vero e proprio slow-motion.
Terzo esempio: io e Spaced ci connettiamo a 32 ms di ritardo, sostanzialmente stabili. Kaillera p2p ci assegna 1 frame di ritardo e lancia l'emulatore. La connessione è stabile, ma ha dei piccoli ritardi che aumentano il ping a 35-36ms. Nonostante una connessione che considereremmo ottimale o quasi, il gioco ha scatti, più o meno continui in base a quante volte viene superata la soglia dei 2 fps.

In casi come il secondo e il terzo, l'host ha la possibilità di intervenire per minimizzare o eliminare il problema.
Kaillera p2p offre una funzione Smoothing (vedi immagine, in basso a destra), le cui opzioni sono:
- None, autoesplicativa;
- If near UB, aggiunge 4ms al ritardo calcolato, nel tentativo di "stabilizzarlo";
- Always, aggiunge 1 fps a quelli assegnati;
- Extra, aggiunge 2 fps a quelli assegnati.

If near UB è un po' cervellotica e, a mio avviso, non molto funzionale.
Extra aggiunge ben 2 fps e può fare comodo solo in caso di ping molto buono, da 1 fps, ma decisamente poco stabile.
Always è molto funzionale perché risolverebbe pienamente il problema del terzo esempio (giocheremmo a 2 fps fissi anziché a 1 fps ballerino) e mitigherebbe il problema del secondo esempio.

Always e Extra potete pure utilizzarle per giocare offline e allenarvi a una risposta ritardata. Basta fare contemporaneamente da host e client. :lol:
Nota: in base a come è impostata la rete potreste avere un'emulazione lentissima.


Ultima modifica: 15/07/2014 13:15 da atchoo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Kaillera p2p client 15/07/2014 16:44 #6525

  • Mercs83
  • Avatar di Mercs83
  • OFFLINE
  • Platinum Boarder
  • Messaggi: 1052
  • Ringraziamenti ricevuti 270
  • Karma: 14
Grazie non ci ho capito un cazzo...per me reste tutto invariato ! No al progresso,!
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
I seguenti utenti ringraziano:: atchoo, Space81

Kaillera p2p client 17/07/2014 00:49 #6575

  • ChristianF
  • Avatar di ChristianF
  • OFFLINE
  • Senior Boarder
  • Messaggi: 57
  • Ringraziamenti ricevuti 4
  • Karma: 2
Io ancora non capisco come sia possibile che ammaccando un bottone si possa accendere la luce nella mia stanza
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
I seguenti utenti ringraziano:: full

Kaillera p2p client 17/07/2014 01:01 #6576

  • Space81
  • Avatar di Space81
  • OFFLINE
  • Platinum Boarder
  • Messaggi: 444
  • Ringraziamenti ricevuti 133
  • Karma: 11
Info super interessanti, di solito uno clicca, gioca e dice : "STICAXXI di cosa c'è sotto", anzi spesso nemmeno se lo chiede.
Il Kaillera è un software datato ma complesso e ben studiato, il meccanismo di assegnazione frame di ritardo in automatico è geniale, ecco spiegate le slow motion su swos.in eheheh quando si pinga a 100.
Il waiting games l'avevo notato ed effettivamente facendo delle prove superficiali non ha mai funzionato, quella sarebbe una funzione veramente utile.
Grazie Atchoo ;)
Ultima modifica: 17/07/2014 01:01 da Space81.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Kaillera p2p client 18/07/2014 17:23 #6624

  • Emmeti
  • Avatar di Emmeti
In passato ho testato quella dll fornita dal sito .ru e se non sbaglio il tutto si blocca quando si preme invio dopo aver scritto qualcosa usando la chat dell'emulatore (per intenderci f11->scrivo qualcosa->premo invio). Tutto ok invece quando si usa la chat in "connection window".
'Waiting games' con la v0r7 funziona, ma bisogna impostarlo. Il funzionamento è molto simile a quello dei server kaillera:
quando "flagghi" 'Enlist' invii un messaggio con l'ip - nome gioco etc. etc. a un programma che gira su server (simile a kailleraserver, per intenderci) e che scrive l'IP del gioco su un file di testo in un sito; cliccando su waiting games il client si collega al sito e al file .txt (si preme 'refresh' se ricordo bene) e se ci sono games in lista verranno visualizzati nella finestrella 'waiting games'.


Ho cercato ovunque il codice del kailleraclient.dll attualmente nel pack swosit (in uso anche in quellodel .de e di sensibleita): n02 v0.5r1(kaillera 0.9 compatible) - Nov 1 2007 , ma non l'ho trovato.
Si trova la dll, ma non i sorgenti e dubito sia stata modificata da Redhair, quindi non so a chi chiedere.

Le versioni che ho trovato sono: v0r7 e n02.client.v0.5r1.p2p.v0r6(sept15).
La prima è quella indicata nei link del post iniziale del thread, la seconda è una versione che sembra che sia stata fatta leggermente prima rispetto a quella attualmente in uso (15 settembre e 1 nov) anche se in alcuni punti viene indicata come v0r6 (e quindi potrebbe essere una versione più recente).
In pratica per quanto riguarda l'aspetto è quasi identica a quella 'Nov 1 2007' tranne la parte riguardo lo smoothing che ha solo l'opzione +1 frame e qualche piccolissima differenza (tipo il fatto che non memorizza la selezione P2P-client, Spaced forse si ricorderà...).
Non ho idea della stabilità di questa versione, p2p sembra funzionare correttamente.
Non ho ancora testato su questa versione:
client, playback e funzione 'waiting list'.

Intendo fare tutti i test possibili e vedrò di aprire un thread con i tutti risultati.
Prima di tutto quello che mi interessa è scoprire se si riesce a superare il "problema" del blocco dell'applicazione quando uno dei due giocatori esce dalla finestra dell'emulatore.
Ultima modifica: 18/07/2014 18:31 da Emmeti.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.180 secondi

Visitando questo sito web si autorizza l'utilizzo e l'impiego di cookie. To find out more about the cookies we use and how to delete them, see our privacy policy.

  I accept cookies from this site.
EU Cookie Directive plugin by www.channeldigital.co.uk