Italian Chiacchiericci

LucaMs

Expert
Licensed User
Longtime User
upload_2016-5-6_12-6-49.png


ed il Frizzi ha esclamato: "Veeero, verissssimo"

Vedendo questa ed altre frescacce, mi viene voglia di andare là e mettere tutto a... soQQuadro! :D


Già che ci sono (e dato che sono soldi nostri, tra l'altro)...

ricorderete Striscia contro i "pacchi" della RAI; non so se ne siano accorti ma, quando presentava Carlo Conti, quasi in ogni puntata era presente un giocatore toscano, come lo è lui. Eppure, sempre alle elementari, mi insegnarono che le Regioni italiane sono 20 ed i concorrenti sono soltanto 6: ecchecaso anche qui?

Mah, resta il fatto che poi qualche toscano è andato al potere (certo che, se riesci a sopravvivere alla Peste, quando ti capita un'altra malattia ti sembra quasi di essere felice!).
 
Last edited:

LordZenzo

Well-Known Member
Licensed User
Longtime User
No, non è nemmeno questo.

Devo dire che quando ho scritto quel post volevo aggiungere: "@udg è escluso", convinto che avresti scritto immediatamente la "soluzione" ;)

Pensateci, era quasi un "tormentone" alle elementari!
be mi sono documentato perché io non ne ricordo
nel dizionario HOEPLI ci sono solo due parole senza u
QWERTY e QADI la seconda e' il magistrato mussulmano e non e' parola italiana ma italianizzata
ora che ci penso pero' forse intendi non che inizia con la Q:( ma
sebbene in latino venisse usata anche con la o ma perdendone molto presto ogni uso e restringendo quindi alla sola u
unica eccezione si potrebbe avere nel rafforzativo del suono, normalmente usato con la C come in acqua ma avvolte con la q come in soqquadro, in tal caso la prima q e seguita da un altra q
(fonte treccani)
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Finalmente, dopo un paio di mesi, ho preso coraggio ed ho deciso di rimettere mano sulla mia app. In realtà questa ha bisogno anche (direi quasi soprattutto) di un "server personalizzato" e mi sono accorto che... quel poco che ho fatto, pure male, ha bisogno di essere totalmente rivoluzionato.
Qualuno ha voglia/tempo di "ragionare" con me in termini teorici su come debba essere strutturato questo server?

Provo a spiegarmi (leggermente) meglio.

A me serve in modo specifico ma vorrei sviluppare una sorta di server base per giochi multiplayer online a turni (ad esempio un gioco di poker classico, 5 carte).
L'idea sarebbe di riuscire a svilupparlo talmente bene, talmente ben organizzato-strutturato-"modulato", che in serguito si possa facilmente modificare per adattarlo ad altri tipi di gioco, sia di carte che non (che so, anche volendo farci un tressette o il gioco dell'oca).

Penso di dover riscrivere (riprogettare) la parte sviluppata sia perché non me gusta ma soprattutto perché fin dall'inizio avevo pensato di creare anche dei BOT (giocatori finti) da far intervenire nelle stanze in cui non si riesca a raggiungere il numero minimo di giocatori umani, altrimenti la partita non avrebbe inizio.
Il server è un web server B4J ed avevo fatto in modo che la classe websocket handler rappresentasse un giocatore, ma questo non è possibile se il giocatore è un BOT.

Va beh, la sto facendo troppo lunga. Vi sto chiedendo se siete interessati-disponibili a progettare un web server di questo tipo ma non dal punto di vista della programmazione vera e propria (B4J) ma della logica, magari usando strumenti per creare diagrammi (cosa che non faccio da un'eternità, tanto che non so nemmeno se ne ho sul pc).

Ad esempio:

1) una classe websocket handler può essere considerata soltanto un "canale di comunicazione" con un generico utente (in questa classe, tramite chiamate ad un modulo DB avverà la registrazione-autenticazione utente);
2) si potrebbe avere una generica classe clsUser dalla quale dovrebbero derivare classi più specifiche clsPlayer e clsBOT, oppure no? Basterebbe una classe e poi usare dei flag che indichino che tipo di utente è quello "corrente"? C'è da ricordare che B4X non consente ereditarietà-polimorfismo, classi astratte, interfacce etc. Per questo stavo iniziando qualcosa di questo tipo (non ero ancora arrivato a verificare la logica):

upload_2016-5-25_10-48-36.png

E' proprio il primo abbozzo, scritto in due minuti.
la wshUser è la web socket class; sotto, qualche esempio di "codice" output/input che dovrebbe gestire.
clsUser rappresenterebbe un generico utente; avrebbe un oggetto ws di tipo wshUser per comunicare e dati vari
clsPlayer sarebbe una specializzazione della classe clsUser; per ottenere questo con B4X, utilizzerei un oggetto pubblico di tipo clsUser.
Stessa cosa per clsBOT che "eredita" (si fa per dire) da Player.

Ma potrebbe non essere giusto né necessario; magari basta una variabile TipoUtente per indicare se è un giocatore umano, un BOT o magari non sta giocando ma chattando (cosa che vorrei aggiungere in parallelo al gioco - o meglio, l'utente dovrebbe scegliere se entrare in una stanza da gioco o in una chat).

Troppo lunga e mal spiegata; parte di questo deriva dal fatto che il BOT avrà il suo modo di giocare (io preferisco farlo totalmente stupido per non far incacchiare i giocatori umani) e di comunicare le sue giocate (nonché ricevere quelle degli altri) in maniera diversa da un giocatore umano; da cui la necessità di ripensare a quello che era la classe web socket handler rappresentante un utente/giocatore.

Ah, una cosa da tenere in considerazione sono i thread, per questioni di performance del server; quindi si dovrà fare in modo che buona parte del codice giri nel thread relativo al singolo utente, ovvero alla classe web socket handler! (ed anche il codice che gestisce gli accessi al db centrale).

Insomma, il tutto è molto meno semplice di quanto sembri. Se qualcuno ha voglia di scervellarsi... altrimenti mi metto lì a modificare quanto fatto finora :)

Un web server del genere (dimenticavo: i client B4A, non browser), progettato bene, sviluppato bene in modo che sia facilmente adattabile ad altri giochi, sempre a turni, PER ME sarebbe una manna (non dal cielo :D).
 
Last edited:

udg

Expert
Licensed User
Longtime User
Ciao LucaMs, ottima notizia quella che ti vede nuovamente impegnato sul tuo progettone!
Come sai io decisamente non sono un giocatore, quindi potrei errare su tutta la linea.. ad ogno modo:

lascerei perdere la complicazione dei BOT. Una volta che entro nel portale dei giochi, mi aspetto di trovare una lista di possibili alternative e di poterne scegliere una (ed una soltanto alla volta, come se fisicamente decidessi di entrare in un'area piuttosto che un'altra). La mia selezione dovrebbe comportare l'iscrizione ad una lista FIFO per quel tipo di gioco. A quel punto, se non ci sono sufficienti giocatori avrò due opzioni: disiscrivermi da quel gioco e provare con un altro oppure andare al bar (ovvero entrare nella chat). Appena nella lista FIFO per un determinato gioco ci sono abbastanza giocatori, questi vengo "teletrasportati" nella specifica stanza e di lì si procede con le varie fasi del gioco (dalle regole ai turni etcetc). Hai pensato a coa succede se uno o più giocatori abbandonano (o perdono la connessione) durante una partita?

Una stanza sarebbe caratterizzata da un tipo di gioco e da una lista giocatori. Il server di lavoro da fare ne ha tanto. Hai esplorato la possibilità del MQTT per la parte collegamenti e messaggi? Potresti delegare ad un server MQTT tutta la gestione utenti e messaggi e lasciare sul B4J il loop sui giochi attivi e tutta la logica.

Come vedi, idee in libertà. Ma visto che hai ripreso dalla fase di valutazione e disegno, forse è il momento buono per esprimerle.

UHHHHUUUUUUUUUUUUUU
 

LucaMs

Expert
Licensed User
Longtime User
HHHUUUHHH

Grazie per avermi... complicato la vita :D

I BOT li ritengo necessari, anche se potrebbero far sospettare i giocatori umani (che questi BOT vincano sempre, ma metterei un chiaro messaggio che essi sono là proprio per fare numero e non possiedono intelligenza artificiale ma eseguono un'azione - scelta della carta da giocare, nel mio caso - random, giusto secondo le regole).
Ho letto commenti negativi, su giochi di questo tipo, di utenti che si lamentano di non trovare gente con cui giocare e, soprattutto finché il gioco non avrà un numero decente di installazioni...!

L'idea sarebbe quella di sviluppare un server molto "elastico": oggi ci realizzo un poker (+chat "separata"), domani un nuovo server per il 7 e mezzo :D. Crearne uno per entrambi (o per un numero maggiore) di giochi significherebbe appensantirlo troppo (e magari ottenere pure meno soldi dalle pubblicità, chissà).

MQTT non l'ho studiato (già i due neuroni stanno pensando di trasferirsi all'estero, figurati se gli propongo di fare anche questo lavoro :D); suppongo che sarebbe l'ideale per la parte chat ma che, oltre appunto al fatto che dovrei studiarlo bene, dovrebbe poi condividere un DB col server di gioco B4J, altra complicazione.


Beh, intanto qualcosa studio (faccenda classi derivate); se poi, nei prossimi 2/3 giorni, qualcuno sarà interessato, magari si potrebbe realizzare un progetto ben fatto, da condividere tra noi (e da vendere al membro straniero, hehehe). Altrimenti mi accontenterò della mia soluzione ingarbugliata :).


Grazie per i tuoi suggerimenti, U. ;)
 

LucaMs

Expert
Licensed User
Longtime User
Hai pensato a coa succede se uno o più giocatori abbandonano (o perdono la connessione) durante una partita?
Ho dimenticato di rispondere a questa domanda:
eh si che ci ho pensato... purtroppo!
E' una bella complicazione; inoltre, le conseguenze dipendono anche dal tipo di gioco!

Le situazioni da prevedere sono un'enormità, molte più di quelle che possono sembrare a prima vista.

Solo per fare un altro esempio: c'è da tenere in considerazione eventuali hacker (quindi tutto dev'essere in mano al server)
 

LucaMs

Expert
Licensed User
Longtime User
Aggiungo un'altra piccola cosa, poi mi "taccio" (e quando mai?!?! :D).

Personalmente ritengo che solo questo tipo di giochi, ovvero multiplayer, possano far ottenere discreti guadagni, perlomeno oggi.

La singola app con la quale l'utente si sollazza, offline, non rende un tubo! Servono decine di migliaia di visualizzazioni giornaliere di interstitial, per poter guadagnare qualcosa.

Meditate, gente, meditate (i più "diversamente giovani" ricorderanno questa frase pubblicitaria sgrammaticata di Arbore - forse aveva bevuto troppa birra, hehehe. Ma tanto oggi è di moda sventrare la grammatica italiana: tutti fanno a gara con la canzone di Checco Zalone: "Siamo una squadra fortissimi" !
Si sentono / leggono frasi come:

Il 50% degli italiani FANNO questo...
Un pullman di tifosi HANNO FATTO questo...
etc

Soggetto - verbo - complemento oggetto - DI SPECIFICAZIONE...???

In compenso, poi, sparano parole inglesi mal pronunciate, senza nemmeno conoscerne il significato.

E poi le mode, Dio quanto odio le mode.

"a 360 gradi" (giornalisti che di solito stanno a 90°)
"endorsment"
adesso iniziano con Incipit

Basta, spacco il TV (IL TV, il televisore, non la televisione!)
)
 

udg

Expert
Licensed User
Longtime User
"Chi beve birra campa 100 anni"
"... e che è veleno?" (disse Matusalemme)

Se ho capito bene, la tua idea è quella di avere tanti server ognuo dedicato ad uno specifico gioco. Poi delle app che i giocatori utilizzerebbero per interagire con i server (e sorbirsi le pubblicità-guadagno).
Il problema-hacker deriva dal fatto che un giocatore costituisce una specie di portafoglio virtuale sul server per giocate e vincite? Identifichi un giocatore dalle classiche credenziali user/password? O cerchi di vincolarlo all'utilizzo di uno specifico device cercando di leggerne un qualche codice univoco (tra reale e generato)?
 

LucaMs

Expert
Licensed User
Longtime User
Prima volevo sottolineare che gli errori grammaticali non mi danno alcun fastidio se commessi da "semplici" cittadini; non sopporto che li facciano giornalisti / presentatori TV. E' come se andassi alla Scala e sentissi un tenore stonare in continuazione e malgrado questo gli rinnovassero il contratto!


Si, hai capito bene, un gioco+chat per ogni server.

Gli hacker possono essere di vari tipi; anche il semplice rompiscatole che tenta di appropriarsi dell'identità di un altro utente mi darebbe fastidio. Ho rimediato a questo in un modo un po' fastidioso per gli utenti ma penso l'unico possibile.

Se un utente accedesse solo tramite NomeUtente e PW, un hacker potrebbe, dopo aver giocato una partita, conoscere i nomi utente e tentare di scoprirne la PW.
Quindi ho scelto di chiedere 4 informazioni, per la registrazione:

1) Nome utente (che servirà per l'autenticazione ma non sarà mai visualizzato);
2) PW
3) Nome giocatore - visualizzato
4) EMail - facoltativa

In questo modo l'hacker, non conoscendo il nome utente, non potrà tentare di impersonare altri.

Tornando alle mille cose da prevedere... Avete presenti le "segnalazioni" fatte da giocatori nei riguardi di qualche giocatore scorretto, maleducato o che magari mette un bel pene come Avatar? Bene, che fare, salvare tutto l'andamento di ciascuna partita per verificare se la segnalazione sia motivata?

Poi... come amministratore, dovrei creare un utente speciale in grado di entrare in una stanza qualunque e controllare l'andamento della partita?

Poi... il web server B4J non ha GUI: come interagire? Sviluppare un sw apposito (una sorta di pannello di controllo)?

Insomma, è un gran lavoro! Il lato positivo è che, una volta completato, crearne uno per ogni gioco è QUASI un gioco da ragazzi.
 

udg

Expert
Licensed User
Longtime User
... o che magari mette un bel pene come Avatar?
Vuoi essere accusato di essere illiberale e discriminatorio? :)
L'utente in questione potrebbe essere una "testa di.." e sostenere (a ragione) che quello è un valido autoritratto.. eheh

UHHH
 

LucaMs

Expert
Licensed User
Longtime User
Ho fatto l'ennesima caxxata: perché proporre questa collaborazione in questo thread invece che in uno dedicato?

Va beh che tanto non interesserà nessuno :D

Altra "aggiunta": servirebbe schematizzare tutto in blocchi, magari top-down (graficamente intendo, ovviamente). Ad esempio, separare bene (e generalizzare) blocchi come DatiTurno come oggetto da passare, VerificaGiocata... altro che avevo in mente ed è gia fuggito :D

Poter fare in modo che se passo dal Poker alla Scopa io debba modificare solo un determinato blocco (classe? O addirittura libreria riutilizzabile!)


[che ficata... in teoria :p]
 

LucaMs

Expert
Licensed User
Longtime User
Personalmente ritengo che solo questo tipo di giochi, ovvero multiplayer, possano far ottenere discreti guadagni, perlomeno oggi.

La singola app con la quale l'utente si sollazza, offline, non rende un tubo! Servono decine di migliaia di visualizzazioni giornaliere di interstitial, per poter guadagnare qualcosa.


magari usando strumenti per creare diagrammi (cosa che non faccio da un'eternità, tanto che non so nemmeno se ne ho sul pc).
Ce l'ho: ArgoUML. Ora tutto sta a vedere se riuscirò ad usarlo come si deve.
Ve lo dico nel caso in cui qualcuno volesse collaborare! In caso contrario, vorrà dire che vi venderò il sorgente per pochi spiccioli, 500 eurini :p
 

LucaMs

Expert
Licensed User
Longtime User
Ce l'ho: ArgoUML. Ora tutto sta a vedere se riuscirò ad usarlo come si deve.

upload_2016-5-25_16-17-33.png


Mica male. Con l'oggetto-classe clsPlayer selezionato, ArgoUML produce anche del codice sorgente; in questo caso Java ma si può scegliere un diverso linguaggio (vedi combobox sopra la parola "public" del sorgente). Peccato non ci sia B4J :p. Sarebbe il caso di proporre ad Erel di aggiungere B4A, B4J,... visto che ArgoUML è open source :).

Notare come clsPlayer erediti da clsUser (io non ho scritto il codice, solo disegnato e "collegato" le classi).
 

LucaMs

Expert
Licensed User
Longtime User
Dal "Corriere della Sera":
Succhiarsi il pollice e mangiarsi unghie riduce il rischio di allergie
http://www.corriere.it/salute/pedia...ie-261a3e52-476e-11e6-af4e-15bff4e09cf7.shtml

Evitare di comprare quotidiani riduce il rischio di diventare scemi!


A proposito di scemi, non bastava "Otto e mezzo" su LA7 (che di scemo e "capra capra capra" ha il titolo, non il programma TV), adesso pare che esca un film al cinema dal titolo: "Una spia e mezzO".
Sembrerò pignolo, ma questi sono alcuni dei segnali che l'Italia sta diventando un Paese sempre più ignorante (ci sono molte statistiche che lo dimostrano).


Infine, la RAI ha finalmente avuto una buona idea: insegnare agli italiani privi di ogni nozione riguardo Internet, attraverso dei brevi "tutorial" interpretati da alcuni personaggi di "Don Matteo".

Peccato che, nella prima puntata, sul finale, in pochissimi secondi abbiano concentrato un bel po' di nozioni; in questo modo chi non sa avrà continuato a non sapere.
Non solo, peggio ancora: hanno fatto credere che Internet e Web siano sinonimi, che siano la stessa cosa; forse dovrebbero informarsi loro per primi :D

00:04:08 "Immaginate che questa sia la rete Internet, eh... il World Wide Web"
 
Last edited:
Top