Italian Questo dovrei metterlo in una CHIT-CHAT italiana

LucaMs

Expert
Licensed User
Longtime User
Eh si.

Scusa se non ho risposto subito (48 minuti!) ma stavo sproloquiando (in inglese grrr) proprio su questo e non è che sia semplicissimo tradurre, sigh.

Se a qualcuno interessa, metto il link.

Il punto è che sto leggendo una marea informazioni (sempre in inglese) e ci sono troppi modi per fare ogni cosa, quindi grande confusione.

A) si potrebbero usare i servizi di Google per i giochi multiplayer online e per mobile in particolare; ma i passaggi da fare sono moltissimi, io non ho ancora un account, di conseguenza non potrei fare prove e, infine, non conosco i costi;

B) forse, ma solo forse, si potrebbe attuare tutto con Apache-PHP-MySQL, ma non sono esperto in questi, anche se potrei arrangiarmi, e non sono certo di poter ottenere il risultato finale

C) utilizzare un server B4J; e qui, altre decine di strumenti utilizzabili possibili HTTPS, websocket, notifications, filtri, handlers, etc

Confusione totale.

Quasi quasi contatto EA gli vendo l'idea del gioco per 100.000€ e se la sbrighino loro :D


(ma quanto vola il tempo? erano 48 min. ora sono 58: non ho mica impiegato 10min per scrivere questo post!)
 

picenainformatica

Active Member
Licensed User
Longtime User
se vuoi ti aiuto. pero' decelera. Il problema principale non e' comunicare via internet ma fare il multiplayer. La comunicazione la farai a guoco finito. Per prima cosa: una applicazione a 2 giocatori nella stessa activity. Non devono avere niente un comune ma devono scambiarsi i dati con due timer. Qundo comincia a girare si fara' una pagina asp (gestita dagli stessi timer e che scambiano gli stessi dati ma, adesso, vua internet.
 

LucaMs

Expert
Licensed User
Longtime User
ecco, mettimici pure asp, che mi mancava nell'elenco :)

L'app non l'ho nemmeno iniziata perché, essendo necessariamente multiplayer ed avendo poi i problemi citati sopra, mi sarei ritrovato con un lavoro fatto a metà, cosa che mi è accaduta diverse volte, in passato.

Certo, potrei fare una emulazione del gioco, con un paio di player (magari più activities), ma dato che poi tutta l'architettura potrebbe servire per altri giochi simili, vorrei prima trovare la soluzione a questa, che è sia tecnica che economica, dato che un conto è usare i servizi di Google, un altro un hosting per php-mysql, un altro ancora i VPS (che pare siano piuttosto costosi e, inoltre, penso anche poco potenti, ma questa è una mia ipotesi, non li conosco).
 

LucaMs

Expert
Licensed User
Longtime User
Ripensandoci, un paio di player nemmeno sarebbero sufficienti.

Devo avere la possibilità di creare molte stanze da gioco, elenchi di giocatori, il giocatore deve poter scegliere un tavolo in base alle caratteristiche di questo e/o seguire un amico in una stanza...

Quindi, il server centrale è praticamente indispensabile anche per delle prove.
 

picenainformatica

Active Member
Licensed User
Longtime User
la soluzione, e ci ragiono da quando hai iniziato a parlarne, e' sicuramente quello che ho scritto. Scrivi un giochino a 2 giocatori, semplice ma che comunichi, nella stessa activity, come ti ho scritto. Questa e' la struttura generica. Asp e' generico (basic, php, java.....)
 

LucaMs

Expert
Licensed User
Longtime User
ma, vedi, fare un giochino è semplice:
basta che ad ogni azione di un giocatore, si richiami una routine (che sia tramite CallSub o CallSubDelayed).
Eventualmente si può anche simulare l'intervento del server, nello stesso modo.

Non è posso mettermi a sviluppare tutto il gioco, con regole e grafica, se poi le chiamate/risposte dal server (login, etc) devono essere diverse a seconda dei "collegamenti" col server. Dipende da quale server e da come funziona.
 

picenainformatica

Active Member
Licensed User
Longtime User
2, 20 o 20000 sono numeri ( indice di array). Le stanze sono proprieta' del singolo giocatore.
 

LucaMs

Expert
Licensed User
Longtime User
mah, vediamo, ci penso su.

Potrei creare una classe Sever (un oggetto) e alcuni oggetti Giocatore, con poche regole e scarsa grafica, per vedere se poi posso adattare il tutto alle connessioni.

Grazie comunque per seguire l'argomento ;)
 

picenainformatica

Active Member
Licensed User
Longtime User
La comunicazione tra giocatori non puo' essere, anche nel giochino, con callsubxxx perche' poi non potrai usarla. se ti fai la struttura che ti sto suggerendo poi devi solo renderla piu' complessa ma non sara' piu difficile.
 

LucaMs

Expert
Licensed User
Longtime User
uhm... tu dici che non potrei poi adattare quel tipo di chiamate ma lo dici, secondo me, perché hai in mente una tua struttura, penso.

Altrimenti, per esempio, una callsub potrebbe corrispondere ad una chiamata con i websocket; oppure ai metodi GET e POST, oppure a chissà cos'altro!
 

LucaMs

Expert
Licensed User
Longtime User
Aspetta che forse ho capito il Qui Quo Qua (o qui pro quo).

Il gioco che intendo io è a turni! Ecco perché non capivo il tuo esempio con i timer.

Ogni giocatore ha un suo turno ben preciso (al quale darò un termine di tempo, ovviamente) durante il quale gli altri non hanno modo di agire.
 

picenainformatica

Active Member
Licensed User
Longtime User
Prova a pensare diversamente (se non cambi nulla nulla cambia): io metto le x ( in un giochino famoso) e tu le o. Nella activity disegni 2 scacchiere. Io non vedo cosa fai tu e viceversa. Il mio timer scrive nella posizione zero dell'array le mie mosse e legge le tue e aggiorna la mia tastiera. Il tuo timer fa lo stesso ad indici invertiti.Successivamente i timer comunicheranno con il server web con un asp di poche righe. Cambiera' solo il numero di proprieta' da inviare. Al posto del timer potresti usare un pulsante aggiorna ma la ritenevo una stupidaggine.
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
Secondo me ti conviene iniziare con un sistema semplice ma soprattutto economico.
Potresti infatti aprire uno spazio web su un server gratuito (ad esempio it.altervista.org ) dove ti danno gratuitamente a disposizione Apache, PHP e MySQL.
Se il tuo gioco è a turni, hai il vantaggio che l'utente deve prima aspettare che finisca il turno dell'altra persona, e quindi puoi gestire il tutto in PHP e MySQL.
Quando il giocatore decide la mossa, chiama una pagina PHP che elabora il tutto, ed aggiorna su MySQL i dati relativi alla mossa che l'utente ha fatto, decide quale prossimo utente dovrà fare la mossa, e il timeout che gli viene dato a disposizione.
Gli altri utenti, ad esempio ogni 3 secondi, interrogano un'altra pagina in PHP dove gli viene costantemente aggiornato lo stato del gioco, l'utente che in quel momento sta giocando, quanto tempo ha ancora a disposizione, eccetera eccetera.
Quando l'utente avrà fatto la sua mossa e il prossimo a muovere sono io, alla prima chiamata a questa pagina PHP, mi verrà risposto che tocca a me, quanto tempo ho a disposizione eccetera eccetera, e quindi il programma in B4A abilita la mossa all'utente e quando l'utente l'ha eseguita, chiama una pagina PHP dicendogli quale mossa ha fatto in modo che il programma elabori il tutto e decida cosa fare.

Ovviamente puoi anche avere un server tuo dedicato, non importa quale linguaggio, però deve rimanere acceso 24 ore su 24, ha un certo costo, devi avere un IP fisso (o meglio ancora un dominio registrato) e quindi cominicamo a parlare di altri costi.

Ovviamente il mio è solo un punto di vista

Sergio
 

udg

Expert
Licensed User
Longtime User
Ovviamente puoi anche avere un server tuo dedicato, non importa quale linguaggio, però deve rimanere acceso 24 ore su 24, ha un certo costo, devi avere un IP fisso (o meglio ancora un dominio registrato) e quindi cominicamo a parlare di altri costi.

Un'alternativa low-cost potrebbe essere costituita da un Raspberry.
Con una cinquantina di euro tutto compreso, ti ritrovi uno scatolino su cui eseguire un server Linux Debian, MySQL e tutte le app B4J che desideri. Non è neanche necessario dedicargli un monitor/TV e, assegnandoli un IP locale fisso, diventa uno scherzo usare sistemi typo DynDNS per raggiungerlo anche dall'esterno della LAN, una volta che decidi di provare dei test più ampi.

Umberto
 

LucaMs

Expert
Licensed User
Longtime User
Secondo me ti conviene iniziare con un sistema semplice ma soprattutto economico.
Potresti infatti aprire uno spazio web su un server gratuito (ad esempio it.altervista.org ) dove ti danno gratuitamente a disposizione Apache, PHP e MySQL.
Se il tuo gioco è a turni, hai il vantaggio che l'utente deve prima aspettare che finisca il turno dell'altra persona, e quindi puoi gestire il tutto in PHP e MySQL.
Quando il giocatore decide la mossa, chiama una pagina PHP che elabora il tutto, ed aggiorna su MySQL i dati relativi alla mossa che l'utente ha fatto, decide quale prossimo utente dovrà fare la mossa, e il timeout che gli viene dato a disposizione.
Gli altri utenti, ad esempio ogni 3 secondi, interrogano un'altra pagina in PHP dove gli viene costantemente aggiornato lo stato del gioco, l'utente che in quel momento sta giocando, quanto tempo ha ancora a disposizione, eccetera eccetera.
Quando l'utente avrà fatto la sua mossa e il prossimo a muovere sono io, alla prima chiamata a questa pagina PHP, mi verrà risposto che tocca a me, quanto tempo ho a disposizione eccetera eccetera, e quindi il programma in B4A abilita la mossa all'utente e quando l'utente l'ha eseguita, chiama una pagina PHP dicendogli quale mossa ha fatto in modo che il programma elabori il tutto e decida cosa fare.

Ovviamente puoi anche avere un server tuo dedicato, non importa quale linguaggio, però deve rimanere acceso 24 ore su 24, ha un certo costo, devi avere un IP fisso (o meglio ancora un dominio registrato) e quindi cominicamo a parlare di altri costi.

Ovviamente il mio è solo un punto di vista

Sergio


Grazie Sergio per l'interessamento e la risposta.

Questa era proprio la prima idea che avevo avuto, ma non conoscendo il terzetto Apache-PHP-MySQL, non ero certo di poter ottenere il risultato.
Ho infatti installato qualche settimana fa XAMPP, ma essendo proprio agli inizi con PHP, non sapevo se sarei stato in grado di gestire "eventi".

Da quanto dici, mi pare di aver capito che debba sempre essere il client ad interrogare il server; però, dato il tuo suggerimento, ovvero il controllo ogni tot sec da parte degli altri giocatori, sembra non sia un gran problema.

Si, l'idea era quella di riuscire a far funzionare il tutto sul mio pc e poi trovare qualche host gratuito fino a quando le app scaricate non iniziassero ad essere parecchie (con la giusta pubblicità è chiaro che mi attendo almeno 1.000.000 di download entro un anno :p).

Ora ti ringrazio molto per la conferma che la cosa sia fattibile in questo modo. Il guaio è che ormai avevo abbandonato questa ipotesi, non ricevendo una risposta esauriente quanto la tua, ed ho iniziato dei tentativi con i server B4J.

Sembrerebbe che con i WebSocket la cosa dovrebbe essere relativamente semplice; purtroppo l'esperto (Erel) si starà godendo una vacanza (oppure gli è esplosa una delle sue tre teste e l'ha portata dal meccanico). Ho iniziato ieri, vediamo come va.

Comunque XAMPP è ancora qui accanto a me, non si sa mai; eventualmente ti/vi chiederò di lanciarmi una ciambella di salvataggio (uhm magari, vorrebbe dire che starei in mare! :D).


Grazie ancora.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Un'alternativa low-cost potrebbe essere costituita da un Raspberry.
Con una cinquantina di euro tutto compreso, ti ritrovi uno scatolino su cui eseguire un server Linux Debian, MySQL e tutte le app B4J che desideri. Non è neanche necessario dedicargli un monitor/TV e, assegnandoli un IP locale fisso, diventa uno scherzo usare sistemi typo DynDNS per raggiungerlo anche dall'esterno della LAN, una volta che decidi di provare dei test più ampi.

Umberto


... e avrei ancora un'altra cosa da studiare: questo Raspberry, già letto spesso, mi fa venire l'orticaria il suo nome :). Anche Linux, testato millenni fa (obbligato dal mio capo di allora, durante gli intervalli per scarsità di clienti) e poi abbandonato (però conosco la sua qualità, nonché il fatto che Android sia un suo discendente, un figliastro, direi).


Grazie Umberto
 
Top