2009-11-13 12 views
8

In breve, sto creando un gioco multiplayer basato su Flash e sto iniziando ora a lavorare sul codice lato server. Beh, sono l'unico sviluppatore del progetto, quindi cerco una libreria di socket di alto livello che funzioni bene con i giochi per accelerare i miei tempi di sviluppo.Ricerca di una libreria di alto livello per la programmazione socket (Java o Python)

Stavo cercando di utilizzare Twisted Framework (per Python) ma ho alcuni problemi personali, quindi sto cercando un'altra soluzione.

Sono aperto a una libreria basata su Java o Python. La cosa principale è che la libreria è abbastanza stabile per i giochi multiplayer e la libreria deve essere "di alto livello" (abstract) poiché sono nuovo alla programmazione dei socket per i giochi.

Desidero anche notare che userò il socket binario raw per il mio gioco Flash (Actionscript 3.0) poiché presumo che sia più veloce del tradizionale socket Flash XML.

+2

Si può elaborare quello che si capisce esattamente con "libreria di alto livello per la programmazione socket" come prese non sono hight-livello. Cerchi una rete o un middleware (libreria)? – tuergeist

+0

In realtà negli ultimi mesi ho passato un po 'del mio tempo libero a guardare la programmazione dei socket (in generale) ed è davvero incredibile e voglio REALIZZARE il mio server socket in C ma voglio uscire da questo gioco per beta al più presto. Per quanto riguarda la ricerca ... sì, ho pensato che Twisted fosse un non-brainier ma per Java non sono sicuro ... Ho programmato alcune piccole cose client-server usando la lib di socket predefinita di Java. ma era molto diverso rispetto alla programmazione di un server socket per un gioco. –

+0

@ CodeJustin.com: Si prega di non COMMENTARE sulla propria domanda. Possiedi la domanda. Si prega di AGGIORNARE la domanda con i fatti aggiuntivi. –

risposta

7

Un'opzione per Python è il quadro Concurrence. L'ho usato abbastanza di recente, in combinazione con Stackless Python, per simulare un ambiente in cui c'erano potenzialmente migliaia di richieste al secondo, ognuna delle quali doveva essere elaborata in meno di 2 secondi. L'API è molto semplice ed è ben documentata.

Sono arrivato molto vicino all'implementazione in Java utilizzando Netty, che è un progetto JBoss.

+0

Wow, non posso credere di non aver inciampato su Concurrence prima. Sembra essere una buona soluzione per me (anche se ha integrato la classe mysql). La documentazione è ben strutturata, grazie. Al momento sono ancora aperto a più suggerimenti, ma vado a controllare Concurrence per vedere se mi piace. –

+0

+1 per Netty, che attualmente sto usando come server per un client di socket Flash. È un'esplosione, francamente. –

+0

Ho implementato una libreria, penseresti a guardarla: https://github.com/czifro-development/JSocket – czifro

0

L'alto livello su un lato e le prese binarie non funzionanti sull'altro non funzionano. Ci dispiace, ma dovrai andare a basso livello anche dal lato server.

MODIFICA: in risposta al commento dell'OP. Non sono a conoscenza di alcuna interfaccia di "alto livello" della natura di cui si sta parlando per Java. E francamente non penso che abbia molto senso. Se si parla di byte su stream Socket, è necessario comprendere le API standard JDK Socket/ServerSocket; per esempio. timeout, keep-alive, ecc.

+0

Beh intendo di alto livello in quanto la denominazione le convenzioni sono laici. In realtà "conosco" i concetti di socket BASIC e speravo di creare il mio server socket da zero, ma non ho quel tipo di tempo. Speravo di trovare una soluzione che gestisse la maggior parte dei processi di socket standard (come i timeout) e che la impacchettasse in una API facile da usare con una buona documentazione. Vedere che non è nemmeno TROVARE uno è più o meno me chiedendo se qualcuno CONOSCE di una buona soluzione. (Non voglio dover riprogrammare il server in pochi mesi a causa della mia scarsa scelta in una libreria di socket) –

+0

Cosa c'è di sbagliato nella riprogrammazione di qualcosa in seguito? Si chiama "imparare dai tuoi errori". Fa tutto parte del processo di apprendimento. –

+0

Concordato al 100% e suppongo che finché non avrò bisogno di cambiare il mio lato client API, non avrà molta importanza. Solo un po 'preoccupato di costruire il mio gioco attorno a un design difettoso (dovuto alla mia parte) e poi accoppiato con la mia mancanza di conoscenza per la programmazione dei socket, si sarebbe spento se provassi a creare il mio server (da zero) senza l'aiuto di una libreria socket che gestisce processi come l'aggiornamento di tutti i client con nuovi dati. So che se il gioco si sposta oltre la fine dell'anno rispetto a quello che farò una riscrittura del server, ma voglio essere pronto. –

0

Vedere "A Quick Guide to ActionScript 3 and Flash Programming". Ha un esempio dettagliato di un codice client ActionScript che utilizza socket per comunicare con un server Python (codice incluso). Non è quello che chiunque chiamerà alto livello, utilizza il modulo socket Python di base per la comunicazione.

(Nota: l'esempio server di Python è non divinatorio Dopo avere ottenuto l'idea generale di utilizzare i socket in Python, scrivere qualcosa di più semplice e NO from socket import *.)

+0

Grazie per questo gimel, questo è quello che intendo. In realtà, ho avviato un server pochi giorni fa con il modulo di base Python, ma ho iniziato a sentirmi un po 'sopraffatto dal livello di design che avrei dovuto fare prima ancora di avere un buon set di metodi per lavorare con il gioco. C'è così tanto da preoccuparsi e così tanto che non so ... poi ho visto il framework Twisted che ha fatto la maggior parte di queste "piccole cose" con cui ho avuto problemi, ma per motivi personali non voglio usare Twisted. –

+0

Prego. Vedi http://stackoverflow.com/questions/1157245/creating-a-board-game-simulator-python-pygame per una discussione sulla strategia di comunicazione. Mantienilo semplice. – gimel

+0

Grazie ancora a Gimel, si è trattato di una rapida e spiacevole gestione del design client-server per i giochi a turni. Utile –

0

per Java c'è Apache mina e Grizzly quadri sia di quelli davvero semplificare il lavoro con prese

Problemi correlati