Come costruire una semplice partita a 2 giocatori, la comunicazione via internet, senza codice personalizzato su un qualsiasi server?

StackOverflow https://stackoverflow.com/questions/2144287

  •  23-09-2019
  •  | 
  •  

Domanda

Come posso creare un semplice gioco a 2 giocatori, che comunica su internet?

Ho bisogno di risolvere i problemi di:

  • di ricerca o di rendezvous - due giocatori vogliono trovare l'altro.

  • le comunicazioni in corso.Il giocatore può avviare un'azione che richiede di fornire informazioni per l'altro lato, in un reasonbly tempi stretti (IM-tipo di latenza, non e-mail-tipo di latenza).

A questo proposito, suppongo che è equivalente a un 2-way chat, in cui le persone vogliono essere in grado di trovare tra di loro, e quindi anche, una volta accoppiati, intercommunicate.

Ulteriori requisiti:

  1. per ora, si supponga che l'endpoint Windows OS, relativamente recente.

  2. assume né la macchina endpoint è accessibile direttamente da internet.Assumiamo sono macchine client, nascosto dietro un firewall che blocca le richieste in arrivo.Le macchine possono effettuare richieste in uscita.(per dire, su HTTP, TCP, ma è anche bene)

  3. la comunicazione dovrebbe essere privato.Per semplicità, diciamo che c'è un segreto condiviso già in atto, e gli endpoint sono in grado di fare AES.Credo che quello che voglio dire con questo è, qualsiasi intermediario, non dovrebbe essere necessario per decifrare il messaggio cifrato.La decifratura avviene solo a livello di endpoint.

  4. tutto il codice personalizzato deve essere eseguita solo sul Pc client.

  5. Si supponga che non vi è alcun server di internet, che è sotto il mio controllo.

  6. Sono felice di utilizzare i server di terze parti per facilitare la comunicazione, come un server di CHAT o qualcosa del genere, il tempo libero, e io non sono necessari per installare il custom codice su di esso.


Cosa Api sono disponibili per facilitare questo disegno?

Posso fare questo con IM Api?WCF?Ci sono Canali WCF Windows Messenger?

Quali protocolli?HTTP?Ho questo tagged as "peer-to-peer", ma voglio dire che praticamente;non c'è alcuna esigenza di un formale protocollo p2p.

Quali formati di messaggio vorresti utilizzare?


MODIFICA

Per chiarire i requisiti giro per i server, quello che voglio è NESSUN SERVER SOTTO il MIO CONTROLLO.E NESSUNO DEL MIO CODICE PERSONALIZZATO SU QUALSIASI SERVER.Che non è la stessa come "server".

Penso in questo modo:Mi potete inviare una e-mail tramite SMTP, con codice personalizzato che scrivo su invio e la ricezione di lato.Il mio codice personalizzato possibile connettersi tramite una connessione SMTP server intermediario.Questo non richiederà l'installazione di codice sul server SMTP.Questo è qualcosa di simile a quello che voglio, ma il servizio SMTP non è accettabile, a causa della latenza.

EDIT2
Ho trovato anche questo: libreria per la Messaggistica Istantanea, come libpurple, ma scritto in C#


RISPOSTA

Posso fare quello che voglio, che utilizza le librerie per IM quadri.Un modo semplice per fare uso di Windows Live Messenger è quello di utilizzare la L'Attività di messaggistica SDK.Questo dimostra il concetto, ma non è davvero una soluzione generale.Ma, qualcosa di simile può essere realizzato con l'IM librerie per i vari sistemi di messaggistica, come libpurple, o l'utilizzo di librerie per i canali IRC.In tutti questi casi, il server di CHAT di agire come il firewall penetrante infrastruttura di comunicazione.

È stato utile?

Soluzione

libpurple insieme a otr può darvi la privacy-over-IM una tale domanda avrebbe bisogno.

Altri suggerimenti

IM è lo strumento sbagliato. Invece, utilizzare una sala chat.

Con una chat, i vostri clienti "Log In" nella stanza di chat, e che viene utilizzato per la "presenza". Chiunque nella chat room è "disponibile" per giocare la partita.

Una volta fatto ciò, l'istanza di gioco comunicano tra loro attraverso la chat room. Possono utilizzare il canale globale, o canali IRC semplicemente private per il traffico di gioco.

Le questioni da risolvere:

  • In primo luogo, tutto lo stato del gioco è condivisa sui client. Molti giochi hanno fatto questo (RTS è come Age of Empires, RPG come Diablo). Ma stati clienti sono suscettibili di hacking e barare. Questo è solo un semplice verità. Se il gioco è popolare, sarà violato.

  • traffico Ping. In sostanza il flusso è che si accede alla sala, il vostro cliente è in "a disposizione per giocare" modalità. Poi fa un rumore metallico tutti gli altri per vedere se sono a disposizione per giocare. Questo avverrà con ogni cliente "accedi" per chat room. È quindi possibile utilizzare la sala pubblica per eventi broadcast "Frank è pronto per un nuovo gioco", "Frank ha iniziato un gioco con Joe", ecc Questo può aiutare mantiene giochi in sincronia e non loquace, ma quando un client si connette alla chat stanza, sta andando ad andare "Ciao a tutti, è Bob, che cosa stai facendo tutti". Quindi è necessario per gestire tale.

  • volume di traffico. camere IRC in grado di gestire un sacco di traffico, ma non un sacco di traffico. La maggior parte sono progettati per evitare che "spamming", "flooding", ecc Così si può ben essere tasso limitati a voi il gioco. Non è un problema per la "Dama", a maggior ragione per il "World of Warcraft" nel corso di un 40 uomo Raid. Questo è un problema di progettazione del gioco.

  • Termini del servizio. Il fornitore di IRC può ben dire "Uh no, non si può fare con il nostro servizio". Non ho guardato dentro ad esso, in modo da non so, ma potrebbe essere un problema.

Oltre a questo, IRC è un buon fit. Un sacco di IRC codice bot galleggianti intorno sulla rete, non ho mai usato niente di tutto ciò.

Ogni due giocatori deve avere un certo tipo di ambiente server per il bisogno fondamentale di dover comunicare tra due clienti / giocatori per lo meno. Tenete a mente, ciascuno dei clienti / giocatori possono anche agire come un proprio server per comunicare con altri client collegati. Ma la necessità di tenere sotto controllo tutti i clienti / giocatori in qualsiasi momento e la necessità di facilitare la ricerca di altri clienti / giocatori richiede intrinsecamente un certo tipo di ambiente server per cominciare.

È possibile configurare un messaggio di bordo su uno dei free message board server in modo che i giocatori possono trovare a vicenda.Probabilmente si vorrà per incoraggiarli a usare i messaggi privati per lo scambio di indirizzi IP.Quindi, utilizzare un protocollo che collega l'utilizzo di indirizzi IP.Buona fortuna con quello.Firewall rendono un dolore.

Poi, naturalmente, una macchina della coppia avrebbe bisogno di agire come server e l'altro come client.Il software deve contenere entrambi i gruppi di codice.Ho scritto un gioco e posso dire che il codice di comunicazione ottiene un po ' di confusione.

Posso dirvi fin da ora che sarei molto più felice nella vita, se hai scritto un servizio web per facilitare la comunicazione.Ma, poi, avete bisogno di un server.

Buona fortuna.Si sta andando ad avere bisogno.

OPPURE, si potrebbe semplicemente scrivere un gioco per un client di messaggistica istantanea, come Microsoft Messenger.Ho visto giochi per quello, quindi so che si può fare.

Come qualcuno ha detto, non può ancora possibile farlo se non si dispone di un server mediato tra i 2 giocatori. Come sei felice di utilizzare server di terze parti, vi suggerisco di costruire il vostro sistema utilizzando Google App Engine + XMPP su HTTP. Funziona bene su internet e dietro firewall. Eppure è gratuito (fino a quando il sistema non cresce fuori quota GAE).

Condivisione di file è fuori a causa della vostra vincolo firewall. Questo in realtà non funziona facilmente per i servizi di directory in ogni caso.

Il metodo più semplice successivo avrei usato è quello di lanciare uno script del server CGI molto semplice su uno dei numerosi siti web di hosting super economico. Sembra che non si vuole seguire questa strada. C'è qualche motivo particolare? 100 linee di codice e un server super economico dovrebbe darvi tutto quello che stai chiedendo e anche di più.

Immagino che si potrebbe agganciare in una sorta di terza parte chattare cosa biblioteca. Non so circa le attuali protocolli di messaggistica istantanea, ma il buon vecchio IRC e un canale separato per il vostro gioco avrebbe funzionato. È anche potrebbe cobble insieme qualcosa tramite FTP. commenti del blog in un sito blog avrebbe funzionato troppo. La domanda è perché?

Questi sono tutti kludges. Ottengono il lavoro fatto in modo ottuso, poco eleganti, e mal di scala.

Vi esorto a riconsiderare la soluzione server web.

Hai un sacco di esigenze contrastanti. Entrambi i client dietro un firewall che blocca le richieste in entrata significa praticamente che non possono fare peer-2-peer in quanto né la macchina può agire come server, e sarà necessario disporre di un server di trasporto al centro messaggi da qualche parte di routing per ogni cliente. In questo momento quello che stai chiedendo non è praticamente possibile, data l'esigenza nessun server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top