• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Sviluppo di un web game [SWF/C#]

Stato
Discussione chiusa ad ulteriori risposte.

yomega

Utente Attivo
Autore del topic
13 Dicembre 2010
377
0
Miglior risposta
0
Salve, inizio con il dire che non so se la sezione è quella giusta, e quindi chiedo che venga spostata se necessario nella giusta sezione.
Ora la domanda vera e propria.
Vorrei sviluppare un web game multiplayer Simil-Habbo,
ma devo prima capire un paio di cose.
1)Penso proprio sia possibile far dialogare SWF (ActionScript 3.0) con C#. Secondo voi, dopo dovuto studio delle connessioni, è possibile creare una connessione tra server (C#) e SWF (AS 3.0)?
2) Se si che programma mi consigliate, anche a pagamento, per programmare/progettare l'swf (e AS3.0 ovviamente)?
Spero vivamente che possiate darmi una mano.

Grazie mille in anticipo,
Yomega :emoji_slight_smile:
 
Ciao,

creare un gioco come Habbo richiede la conoscenza, in primis, di come funziona una connessione (e dialogo) tra client e server: non bisogna pensare a far comunicare due linguaggi, in quanto è un concetto errato, è sufficiente pensare di realizzare un software Server (che potrebbe essere scritto persino in PHP o JS tramite Node.js per fare un esempio) che tramite dei socket accetti le connessioni e le richieste da parte del client, le processi e poi invii al client messaggi/risposte (a farla semplice).
Questa comunicazione poi deve avvenire in una notazione standard come, per esempio, il JSON.

Riguardo alla validità delle tecnologie/linguaggi da te citati, ti sconsiglierei assolutamente di crearlo in Flash il gioco (e dunque di imparare l'AS3) in quanto ormai è un plugin morto visto che i Browser ne stanno tagliando il supporto progressivamente proprio per farlo scomparire e diminuirne l'adozione.
Questo genere di giochi oggi stanno conoscendo nuova vita tramite la creazione del Client con linguaggi moderni come HTML5, CSS3 e JS+jQuery, sfruttando poi i WebSocket per creare connessioni al server.

Riguardo il Server, se già conosci il C# e sai come creare dunque un server in quel linguaggio, procedi pure tanto a breve il .NET framework diventerà ufficialmente multipiattaforma, visto che Microsoft sta lavorando ad un porting ufficiale del framework per Linux e Mac, altrimenti procedi con un linguaggio già multipiattaforma come Java.
 
  • Like
Reactions: Dev1.matrix
ti sconsiglierei assolutamente di crearlo in Flash il gioco (e dunque di imparare l'AS3) in quanto ormai è un plugin morto visto che i Browser ne stanno tagliando il supporto progressivamente proprio per farlo scomparire e diminuirne l'adozione.
Questo genere di giochi oggi stanno conoscendo nuova vita tramite la creazione del Client con linguaggi moderni come HTML5, CSS3 e JS+jQuery, sfruttando poi i WebSocket per creare connessioni al server.
Non mi sono mai informato sull'HTML5, tanto meno della possibilità di comunicazione client-server.
Però leggendo ora in un post in inglese, mi è venuto un dubbio, leggo che HTML5 supporta sia i Web Socket che il long-polling.
Che cos'è il long-pooling?
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Meglio WS o Long-Pooling? Leggendo quanto riportato sopra deduco che sia meglio il webSocket, ma potrei sbagliarmi.
 
Non mi sono mai informato sull'HTML5, tanto meno della possibilità di comunicazione client-server.
Però leggendo ora in un post in inglese, mi è venuto un dubbio, leggo che HTML5 supporta sia i Web Socket che il long-polling.
Che cos'è il long-pooling?
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Meglio WS o Long-Pooling? Leggendo quanto riportato sopra deduco che sia meglio il webSocket, ma potrei sbagliarmi.


Il Long polling è una tecnica che veniva impiegata prima che venissero introdotti i WebSockets (che fanno parte delle specifiche dell'HTML5 e dunque sono relativamente recenti), viene impiegato sempre per Webapp in real-time (come il gioco che vuoi realizzare tu) ma la reputo una tecnica che è più adatta a scopi dalle poche pretese (es. il refresh di un counter senza aggiornare la pagina, anche Habbo lo usava infatti per questi scopi nel suo CMS) che per basarci un intero gioco in tempo reale e con richieste asincrone, anche perché non si tratta di un vero Socket che apre connessioni, ma bensì viene visto dal Server sempre e comunque come una normale richiesta HTTP.

Se comunque la tua principale preoccupazione è il supporto fallback a browser meno moderni, puoi sempre usare Socket.IO che è una library JS che contiene diverse metodologie per effettuare la connessione al Server ed effettua un fallback se nota che il browser non supporta una determinata specifica (es. puoi stabilire come priorità WebSocket, poi se Socket.IO si accorge che usi un browser più vecchio apre la connessione tramite metodi come i Socket in Flash/AS od il long-polling).

Nota però che per usare Socket.IO, dato che quest'ultimo utilizza un proprio "linguaggio di comunicazione" devi usare la loro controparte Server ufficiale (che usa Node.JS) oppure affidarti ad un server in Java (esiste questa library per Java fortunatamente:
Perfavore, Entra oppure Registrati per vedere i Link!
) poiché in C# pare non esistano "library Server" che supportino la controparte client di questo socket.
 
Il Long polling è una tecnica che veniva impiegata prima che venissero introdotti i WebSockets (che fanno parte delle specifiche dell'HTML5 e dunque sono relativamente recenti), viene impiegato sempre per Webapp in real-time (come il gioco che vuoi realizzare tu) ma la reputo una tecnica che è più adatta a scopi dalle poche pretese (es. il refresh di un counter senza aggiornare la pagina, anche Habbo lo usava infatti per questi scopi nel suo CMS) che per basarci un intero gioco in tempo reale e con richieste asincrone, anche perché non si tratta di un vero Socket che apre connessioni, ma bensì viene visto dal Server sempre e comunque come una normale richiesta HTTP.

Se comunque la tua principale preoccupazione è il supporto fallback a browser meno moderni, puoi sempre usare Socket.IO che è una library JS che contiene diverse metodologie per effettuare la connessione al Server ed effettua un fallback se nota che il browser non supporta una determinata specifica (es. puoi stabilire come priorità WebSocket, poi se Socket.IO si accorge che usi un browser più vecchio apre la connessione tramite metodi come i Socket in Flash/AS od il long-polling).

Nota però che per usare Socket.IO, dato che quest'ultimo utilizza un proprio "linguaggio di comunicazione" devi usare la loro controparte Server ufficiale (che usa Node.JS) oppure affidarti ad un server in Java (esiste questa library per Java fortunatamente:
Perfavore, Entra oppure Registrati per vedere i Link!
) poiché in C# pare non esistano "library Server" che supportino la controparte client di questo socket.

Avevo già letto di questo Socket.IO, ma non mi attira molto Java.
E da come tu dici, sembrerebbe possibile fare a meno di usarlo, giusto?
Quindi io mi butto sul C#, dovrebbe funzionare come soluzione. Ieri sera ho spulciato un pò su google, e ho trovato degli ottimi esempi C#<->HTML5
Dimmi che ne pensi

Grazie mille per il tempo speso per me,
Yomega
 
Avevo già letto di questo Socket.IO, ma non mi attira molto Java.
E da come tu dici, sembrerebbe possibile fare a meno di usarlo, giusto?
Quindi io mi butto sul C#, dovrebbe funzionare come soluzione. Ieri sera ho spulciato un pò su google, e ho trovato degli ottimi esempi C#<->HTML5
Dimmi che ne pensi

Grazie mille per il tempo speso per me,
Yomega

La comodità di Socket.IO, oltre ovviamente al fallback (che può tornare utile solo in teoria perché se realizzi un gioco con linguaggi moderni come HTML5 e CSS3, usando le nuove regole, hai già escluso a priori diverse vecchie versioni dei browser) è che ti offre già un sistema solido e ben collaudato (con diverse funzioni già pronte) che sfruttando i WebSocket permette al tuo client di connettersi e comunicare col Server.

Ovviamente la problematica di dover essere legato alla loro controparte server si fa sentire, ma in generale comunque puoi farne a meno di Socket.IO o magari cercare altre library simili, ma che abbiano anche il "supporto" a Server in C#.

Quello che ti posso dire è che uno dei miei ultimi progetti, simile al tuo per molti versi, usava un client in HTML5 (WebSocket) ed il server in C#, dunque è fattibile come cosa.
 
La comodità di Socket.IO, oltre ovviamente al fallback (che può tornare utile solo in teoria perché se realizzi un gioco con linguaggi moderni come HTML5 e CSS3, usando le nuove regole, hai già escluso a priori diverse vecchie versioni dei browser) è che ti offre già un sistema solido e ben collaudato (con diverse funzioni già pronte) che sfruttando i WebSocket permette al tuo client di connettersi e comunicare col Server.

Ovviamente la problematica di dover essere legato alla loro controparte server si fa sentire, ma in generale comunque puoi farne a meno di Socket.IO o magari cercare altre library simili, ma che abbiano anche il "supporto" a Server in C#.

Quello che ti posso dire è che uno dei miei ultimi progetti, simile al tuo per molti versi, usava un client in HTML5 (WebSocket) ed il server in C#, dunque è fattibile come cosa.
Grazie mille per l'aiuto.
Allora comincio il progetto, magari più avanti aprirò un thread sul forum se il lavoro dovesse "funzionare".
Grazie ancora, Yomega
 
Grazie mille per l'aiuto.
Allora comincio il progetto, magari più avanti aprirò un thread sul forum se il lavoro dovesse "funzionare".
Grazie ancora, Yomega

Di nulla, figurati.

Nel caso, se il tuo progetto avrà seguito ed avrai voglia di illustrarcelo, la sezione Progetti in sviluppo de Il Laboratorio è il posto giusto dove potrai farlo! :emoji_slight_smile:
 
Perfetto, dato che ho risolto potete chiudere?
Ancora mille grazie
Yomega
 
Stato
Discussione chiusa ad ulteriori risposte.