Come ottenere un'applicazione Web per comunicare tra utenti

3

Sto sviluppando un'applicazione web multiplayer per Anti-Chess. Sarebbe ospitato su Google App Engine.

Ho alcune domande:

Come faccio a ottenere due utenti diversi che hanno aperto la webapp sul proprio browser per comunicare i movimenti l'uno con l'altro. P2P o tramite il server. Se attraverso il server, posso memorizzare alcune mosse su di esso (in particolare parlando di GAE), per testare i bot in seguito?

Come implementare questa connessione P2P / Server. Come sviluppatore, conosco Jack su Networking. Ma ho sentito parlare di programmazione Socket, richiesta HTTP ecc., Cosa posso / dovrei usare. E dove posso leggere su quello!

Se non vado per GAE, mi costerebbe troppo per ottenere spazio su server e capacità di hosting? E la gente mi dice che quindi distribuire l'applicazione è più difficile che su GAE. È così. Dove posso leggere la distribuzione dell'applicazione Web sui server.

Dove va il codice per il networking? Userò Django con python come framework web, il front-end sarebbe HTML, CSS e JavaScript. Dovrei creare un modulo separato per i metodi di networking e quindi introdurre un metodo per chiamare ovunque sia necessario nel gioco?

Qualcuno mi ha suggerito di utilizzare il software Unity per lo sviluppo. Va bene, rende semplice fare il lavoro? Coprirà tutte le parti dello sviluppo, il front end e il back-end e il dispiegamento?

Nota: sono un primo timer nell'applicazione web, ho già programmato i giochi in codice, ma sempre senza GUI. E anche senza multiplayer sulle funzionalità di rete!

    
posta tMJ 06.04.2013 - 23:16
fonte

3 risposte

0

Bene Il tempo è un grande "rispondente"! Per favore, sopportami perché è la prima volta che rispondo alla mia domanda, e non sono molto sicuro di First / Second / third person!

Ciò che si può fare è: (Risponderò alle domande specifiche che ho postato nello stesso ordine richiesto)

  1. Tramite server : è necessario innanzitutto comprendere che il browser Web carica solo HTML, CSS e JavaScript. Con l'aiuto di HTML e CSS puoi far apparire l'interfaccia utente come vuoi tu. JavaScript ti consente di aggiungere la parte dinamica ad essa (la parte che cambia). Usare AJAX sarebbe meglio! Scopri HTML, CSS, JavaScript, JSON per i manichini qui . Attraverso P2P : non sarebbe così eccezionale! Per questo, si dovrebbe scrivere tutte le funzioni di gioco in JavaScript (qualcosa che non sceglierei su Death). E poiché non ho letto molto su di esso, non ho molta idea. GAE supporta la memorizzazione dei dati , ma puoi scriverlo solo su un database (fino a 1 GB di dati) e non su file. Devo ancora studiare l'esportazione del database delle mosse da GAE al mio disco rigido (come nel download) e ripristinare il database in modo da poter riutilizzare quello spazio scaricando periodicamente il contenuto del database.

  2. Per scoprire il lato client delle richieste HTTP dopo aver imparato HTML, CSS e JavaScript, puoi imparare questo qui (nella prima lezione stessa, del corso udacity). Elencherò il lato server della rete al punto 4.

  3. Sì, l'hosting è costoso, rispetto a quello gratuito, è troppo costoso, soprattutto per uno studente come me, che non intende generare entrate di annunci / iscrizioni!

  4. Il lato server può essere trattato con il framework Django, che può essere appreso su djangoproject.org o su altre risorse web (preferibilmente corsi crash, per piccole applicazioni web come la mia). Oltre a questo, non posso davvero commentare la curva di apprendimento e facilitare, in quanto non ho ancora ottenuto a quel punto.

  5. L'unità è! Eccessivo!

risposta data 11.04.2013 - 22:44
fonte
2

Se vuoi comunicare lo stato tra due partecipanti in un gioco, un modo relativamente semplice per farlo sarebbe quello di avere un servizio web che permetta a ogni giocatore di PUT la risorsa che rappresenta lo stato di gioco condiviso, con la verifica per essere sicuro che non fanno mosse illegali (o modificano le mosse dell'altro giocatore). Questo è un esempio del flusso logico:

  1. Assegna a ciascun giocatore un token, dopo che si sono autenticati (utilizzando, per esempio, un messaggio di posta elettronica).
  2. Permetti a un giocatore di invitare un altro a giocare. Ciò potrebbe assumere la forma di inviare un messaggio all'altro giocatore, a cui l'altro giocatore potrebbe rispondere.
  3. Se l'invitato accetta, crea una risorsa condivisa a cui questi due utenti dispongono di autorizzazioni e comunica l'URL a entrambe le risorse del giocatore.
  4. Consenti all'applicazione Web di rappresentare PUT dello stato del gioco sulla risorsa condivisa. Nel caso degli scacchi, un semplice esempio sarebbe avere un file PGN condiviso a cui entrambi gli utenti potrebbero scrivere.

Se sei interessato a questo approccio, che sarebbe un esempio di "SOA" o "architettura orientata ai servizi", potresti provare SOA con REST o Servizi Web RESTful . Questa architettura è orientata client-server, non peer-to-peer; questo ha il vantaggio di essere molto più semplice da implementare.

Potresti implementare i tuoi servizi web come percorsi separati all'interno del tuo progetto Django e avere chiamate AJAX dal tuo front-end Javascript che eseguono effettivamente le azioni relative allo stato del gioco. Penso che Unity sarebbe eccessivo per quello che stai cercando di fare; si tratta di giochi grafici.

    
risposta data 07.04.2013 - 01:12
fonte
0

Poiché si tratta di un'applicazione web, non è possibile comunicare direttamente tra i client, è necessario coinvolgere il server (infatti, per impedire l'imbroglio tramite client hacker, non implementerei mai nulla di simile a un sistema p2p, a meno che non ci sia uno stato viene mai inviato al server).
Una chiamata REST o JSON è probabilmente la più facile da raggiungere, ogni client invia il proprio stato al server a intervalli regolari e riceve la convalida e lo stato aggiornato di altri client in risposta.

    
risposta data 10.04.2013 - 11:51
fonte

Leggi altre domande sui tag