Italian Ricomincio da tre

LucaMs

Expert
Licensed User
Longtime User
Come da film con Massimo Troisi, ricomincio da tre, nello sviluppare il mio supermegaextrastraordinErio gioco multiplayer.

Malgrado abbia già sviluppato un po' di robaccia, voglio rifare tutto affinché sia il più decente possibile.

Scrivo tutto ciò con la speranza di ricevere suggerimenti da tutti voi, ovviamente :).


Il LogIn

Quello sviluppato finora può fare benissimo le veci del Guttalax :D. In pratica, l'utente si connette al mio server ed invia un nick ed una pw, dopodiché riceverà l'autorizzazione ad accedere "al gioco" (in effetti accederà ad una schermata tramite la quale avrà varie possibilità, tra le quali quella di entrare in una stanza per giocare).

Attualmente, sul dispositivo vengono salvati tutti i nick che l'utente crea, dandogli quindi la possibilità di usarne vari.

Mancano alcune "cosette":
1) meglio richiedere all'utente anche un indirizzo email, in modo da riconoscere l'utente in caso di problemi vari;
2) l'invio di una immagine/avatar (questo è meno semplice di quanto sembri, sia perché uso i websocket che non consentono l'invio di immagini - benché potrei escogitare qualcosa - e quindi dovrò usare un socket aggiuntivo normale, sia perché vorrei dare la possibilità di scegliere immagini predefinite o immesse dall'utente e la memorizzazione, sul dispositivo e sul server, è contortuccia, perché per risparmiare memoria e traffico di rete dovrei valutare se memorizzare proprio l'immagine, solo l'immagine, un codice immagine o meno, etc.
3) La possibilità di accedere tramite i vari social network (Facebook ma anche GMail, ad esempio) e pure qui non so bene da che parte iniziare (dovrò cercare sul sito);
4) Questo è un punto critico. Ho già trovato il modo di recuperare l'IP utente, che posso quindi salvare sul db server. Se un furbetto dovesse connettersi da casa con due o più dispositivi, potrebbe giocare contemporaneamente in una stessa stanza, in pratica barando. Potrei fare in modo che in una stanza non possano giocare due o più utenti che abbiano il medesimo indirizzo IP, ma questo comporterebbe anche che se due amici/fratelli volessero giocare da casa nella stessa stanza gli verrebbe impedito.
Che fare? Direi che questo è il consiglio più importante che vorrei chiedervi, sempre se non avete abbandonato la lettura subito dopo il titolo del thread :D.

Continua... dopo i vs suggerimenti :)...
 

valentino s

Active Member
Licensed User
Longtime User
Ciao, eccomi (da inesperto presuntuoso che prova ad aiutare un veterano ...!)

1) l'email sul web e' come il codice fiscale: ce n'e' una sola. Addirittura non chiederi il nome, lo prenderei dall'email direttamente piuttosto che fargli scrivere troppo.

2) invio immagine: ancora non so perche' non si possa, ma mi fido :) Per ridurre banda scegli 10 avatar, li memorizzi nell'app, e scambi il codice con il server. Piuttosto gestirai in un secondo momento l'aggiornamento del numero di avatar

3) fb e gmail: bel trip. Io ne ho fatti tanti sul web. Alla fine preferisco avere un mio sistema, al quale aggiungere facebook, google o altri. Quando loro cambiano le api, io funziono ancora. Il riconoscimento da fb o gmail lo farei da web, a me viene piu' facile e l'app andrebbe avanti anche senza riconoscimento ogni volta. Lavori meno sull'app e aggiorni piu' facile da web

4) ho lavorato per anni sugli ip per far scaricare podcast ad un solo utente alla volta. Il problema e' che l'ip cambia. 5 utenti su 100 ogni ora si trovano un ip diverso. Se gli dici di rifare il login, amen, sei a posto. Altrimenti ti complichi la vita e la complichi a loro. A questo punto torna buono il punto 1: l'email. Solo una email alla volta.
Nel mio caso dovevano scaricarsi le novita', e poi basta. Il problema si presentava una volta al secolo, lo sapevano, rifacevano il login sul sito e dopo tornavano su itunes per aggiornare il podcast che solo dopo veniva sbloccato.
Fossi in te lavorerei solo sull'email.

Secondo me se usi l'email per l'identificazione risolvi molto il problema. Una email alla volta. E tu puoi controllare comunque gli ip per vedere abusi in relazione al tempo e alla geolocalizzazione (ma rinunciaci: i tool sono inaffidabili, li ho provati per mesi e non hanno dato mai risultati affidabili).

Piuttosto mi chiedo se apple sollevi problemi (v. la recente discussione in inglese app rejected because of user registration. ). Siccome anche io devo occuparmi di identificazioned degli utenti per vendergli i miei contenuti, da in app purchase, sto pian pianino chiedendomi le stesse cose.

Ho sparato troppe cavolate ? :)
 

LucaMs

Expert
Licensed User
Longtime User
I suggerimenti sono molto ben accetti; inoltre, veterano o no, puoi avere idee eccezionali comunque :)
l'email sul web e' come il codice fiscale: ce n'e' una sola
Sì, ovviamente un indirizzo email è univoco. Avrei voluto evitare di chiederlo perché molte persone preferiscono non fornirlo (io stesso ho spesso usato siti che ti forniscono un indirizzo provvisorio, come 10MinuteMail.com, per iscrivermi su vari siti), però è necessario in molti casi, esempio classico: l'utente dimentica la propria pw.


Per ridurre banda scegli 10 avatar, li memorizzi nell'app, e scambi il codice con il server
Questa è una soluzione piuttosto usata e comoda. Ha due svantaggi, però:
1) devo trovare immagini gratuite ed utilizzabili commercialmente (altrimenti Google mi decapita appena entrato :D) oppure disegnarle da me (come disegnatore, modestamente, sono una chiavica :p).
2) l'utente preferisce spesso usare immagini scelte da sé (magari Brad Pitt ;)), quando non addirittura vere immagini di sé stesso.


3) fb e gmail: bel trip. Io ne ho fatti tanti sul web. Alla fine preferisco avere un mio sistema, al quale aggiungere facebook, google o altri.
Infatti quello che vorrei fare è consentire all'utente una certa libertà ma anche di poter scegliere di accedere usando FB; inoltre, se potesse invitare anche i suoi amici di FB, sarebbe una buona pubblicità "automatica".


Il problema e' che l'ip cambia
Sì questo è vero. A me, d'altra parte, potrebbe anche non interessare memorizzare l'IP, proprio perché cambia, ma vorrei, anzi DOVREI, impedire che un utente possa giocare in una stanza con due suoi cloni, dando una bella fregatura agli avversari. Immagina una parita di Poker in 4 in cui due utenti sono in realtà la stessa persona. Questo è un punto cruciale, perché se succede, tutti gli altri giocatori smetteranno di giocare per sempre.


Piuttosto mi chiedo se apple sollevi problemi (v. la recente discussione in inglese app rejected because of user registration. ). Siccome anche io devo occuparmi di identificazioned degli utenti per vendergli i miei contenuti, da in app purchase, sto pian pianino chiedendomi le stesse cose.
Dato che è così, anche se un po' egoisticamente, direi che tutti insieme dovremmo trovare la "soluzione ideale", qualunque app noi abbiamo in mente di sviluppare.
Io, poi, pur avendo intenzione di vendere "contenuti" tramite in-app billing, non sono informato circa il metodo e quindi se sia necessario identificare l'acquirente e come.
Mi riferisco a Google Play, non ad Apple, ma suppongo che possano esistere problemi in entrambi i casi.


Ho sparato troppe cavolate ?
Assolutamente no e, anzi, ti ringrazio molto per le risposte.
 

LucaMs

Expert
Licensed User
Longtime User
Ciaoooo raga...login ..ma ti sei fatto il server o intendi il pc con cui sviluppi ? Io andrei di mail e pwd. . Indirizzo ip quoto Valentino. ..
Entrambe le cose; nel senso che sviluppo un mio server con b4j che ospito sul mio pc per le prove ma che poi metterò a disposizione tramite un host VPS (chissà quando :().

Per l'email a questo punto direi che concordiamo: obbligatoria.

Per l'IP, vedi la risposta che ho dato a Valentino: come faccio ad impedire che un giocatore giochi con due personaggi (due dispositivi) in una stessa stanza (stanza virtuale del gioco) senza impedire che siano due persone diverse che vogliano giocare dalla propria rete locale? In questo caso nemmeno le email aiuterebbero, perché uno stesso utente potrebbe usare due propri indirizzi email.
Questa è davvero tosta ma è anche importante, per non scoraggiare gli utenti onesti.

Grazie, Max
 

LucaMs

Expert
Licensed User
Longtime User
Io, poi, pur avendo intenzione di vendere "contenuti" tramite in-app billing, non sono informato circa il metodo e quindi se sia necessario identificare l'acquirente e come.
Mi riferisco a Google Play, non ad Apple, ma suppongo che possano esistere problemi in entrambi i casi.

Per quanto riguarda questa faccenda (esco temporaneamente dal punto principale che rimane il LogIn e, direi, l'utente "doppione"), sto leggendo i tutorial di Erel.
C'è un tutorial relativo alla versione 3: Android In-App Billing v3 Tutorial che però consiglia di leggere il tutorial per la versione precedente: Android In-app Billing tutorial. In questa versione (ma vale anche per la 3) Erel scrive:

----------------------------------------------------------------------------------
Testing your application

It is not so simple to test the payment process. A device set to the same account as the merchant account cannot be used, as you are not allowed to purchase from yourself.

From my experience this is the easiest way to test your application:

- Upload a draft application to the market. You do not need to publish it.
- Set some low cost ($0.01) products.
- Use a device with an account other than the merchant account.
- Add this account as a test account. This is done under Edit Profile page.

The account must be a gmail.com account.
----------------------------------------------------------------------------------

Quest'ultima affermazione è alquanto "angosciante": questo significa che non è possibile vendere "prodotti" ad utenti che non abbiano un account gmail?
Se è così, dopo aver escogitato il metodo migliore per il login, dovremmo visualizzare un'activity (o dialog) in cui richiedere per forza un account gmail all'utente, nel momento in cui questi volesse acquistare qualcosa.


P.S. Non solo. Leggendo sul sito ufficiale di Google:
..............................................................................................................................................
Testing In-app Billing
The Google Play Developer Console provides several tools that help you test your In-app Billing implementation:

  • Test purchases, which let license-test users purchase your published in-app items, without any actual charges to their accounts.
..............................................................................................................................................
L'ultima frase, sottolineata, sembra indicare che, oltretutto, l'utente/acquirente debba avere un account gmail legato ad un conto economico.

[Come avrete capito, non ho mai comprato un tubo su Google Play :D]


P.S. Sì, a quanto pare un utente che voglia acquistare app o contenuti deve associare una carta di credito o ricaricabile ad un account GMail.
 
Last edited:

valentino s

Active Member
Licensed User
Longtime User
Parliamo di Android
Quest'ultima affermazione è alquanto "angosciante": questo significa che non è possibile vendere "prodotti" ad utenti che non abbiano un account gmail?
Penso che sia solo per il test interno. Se non ricordo male la guida diceva prima che dovevi fare cosi' se volevi testare gli acquisti tu stesso. Lo sviluppatore non si puo' acquistare da solo, se non ho capito male.

L'ultima frase, sottolineata, sembra indicare che, oltretutto, l'utente/acquirente debba avere un account gmail legato ad un conto economico.
In realta' su google play puoi avere altre email, o non avere la carta di credito. Solo che alle domande devi rispondere in modo strano e poi ti fa andare avanti lo stesso.

Quanto all'identificazione di Google Play ho letto di programmi che simulano l'acquisto senza pagare su dispositivi rooted. Per questo loro farebbero controllare direttamente con un metodo incasinato non poco.

TORNIAMO ALL'IDENTIFICAZIONE

Diciamo che chi vuole fregarti puo' farlo. Uno perche' e' un essere umano come te e non c'e' computer che tenga :)... Due perche' potrebbe prendere tre telefoni, uno tim uno vodafone uno wind, collegarsi con la wifi aperta del vicino e a te sembrerebbero comunque utenti diversi.

Puoi solo impedire chi ogni account si logghi due volte. Questo si'.

Altrimenti tutti gli account devono essere paganti, solo cosi' ti registri (da paypal pero'... temo problemi di approvazione) il nome di chi paga e se non ha usato due carte di credito diverse tu lo puoi riconoscere. Insomma: deleghi l'autenticazione a paypal o alle banche. Oppure fai tu tutto a mano.

Cosi' come non puoi impedire ad uno di mettersi d'accordo con un amico e giocare nella stessa stanza insieme a carte scoperte.

E' a questo punto che le regole contrattuali e le leggi ti possono aiutare a risolvere il problema. Se lo sgami, lo cancelli e non gli dai la vincita.

... sara' mica un gioco per soldi ? Altrimenti devi farti autorizzare dai Monopoli di Stato ...
 

LucaMs

Expert
Licensed User
Longtime User
Direi che per gli acquisti avremmo bisogno di qualcuno che ne abbia effettuati, per saperne di più con certezza.
Sto cercando mentre rispondo qui :D e qualche notizia positiva l'ho trovata: pare si possa pagare anche tramite paypal e perfino operatore telefonico (ma suppongo che serva comunque un account Google).



Diciamo che chi vuole fregarti puo' farlo.
Il guaio è che non frega me ma gli utenti onesti; frega anche me, indirettamente, perché farà in modo che molti altri utenti preferiranno non giocare.


E' a questo punto che le regole contrattuali e le leggi ti possono aiutare a risolvere il problema. Se lo sgami, lo cancelli e non gli dai la vincita.
Infatti stavo pensando di aggiungere una funzione di segnalazione di abuso da parte dei giocatori; poi sarà necessario verificare queste giocate, il che significa memorizzare l'andamento delle partite [P.S. beh, basterebbe salvare soltanto le partite in cui ci siano state queste segnalazioni] (cosa questa da aggiungere al "framework" che vorrei sviluppare, ovvero accoppiata b4j server - b4a client che sia una base specificatamente sviluppata per giochi multiplayer a turni; sempre più complicato, a quanto pare).

... sara' mica un gioco per soldi ? Altrimenti devi farti autorizzare dai Monopoli di Stato ...
Già, soltanto lo Stato può permettersi il lusso di fregare i cittadini (giusto un piccolo riferimento: nel gioco del Lotto, rispetto alle probabilità che il cittadino vinca, lo Stato gli frega da un minimo del 60%, per estratto ed ambo, ad un massimo di 99%, per la cinquina! Poi esistono leggi su percentuali da usura!!!)

Comunque no, o meglio sì :D ma soldi finti, finiti i quali, però, l'utente deve acquistarne con denaro vero :p.


Grazie ancora per l'aiuto, Valentino
 
Last edited:

valentino s

Active Member
Licensed User
Longtime User
Io sono ancora indietro :) sto ancora litigando per capire come mettere le icon in un tabbaritem in b4i. Appena arrivo all'identificazione ci sentiamo e affrontiamo questo in termini generali, potrebbe essere una base anche per altri che vogliano aiutarci :)

Ciao
 

LucaMs

Expert
Licensed User
Longtime User
Non so esattamente di che parli, dato che non ho e penso non avrò mai b4i, però ho letto dei tabhost di b4a e sono pieni di problemi, quindi li sconsiglio sempre (non è possibile ottenere riferimenti alle view contenute nei vari tab).
 

valentino s

Active Member
Licensed User
Longtime User
Confermo che ha qualche limite, ma non credo seri, secondo me perche' giovane. Ma spesso basta essere creativi e comunque la velocita' di sviluppo e' unica. PS: Ho risolto... Buona giornata !
ps: non siamo monogami: se altri si vogliono unire ... :) altrimenti passiamo a modalita' chat :)))
 

valentino s

Active Member
Licensed User
Longtime User
sapevo che ci lavorava matteo collina ma ora sto capendo cosa e'. potrebbe servirmi non poco. Vado a studiare ...
 

LucaMs

Expert
Licensed User
Longtime User
Mah, io ho dato un'occhiata al volo, dato che è una bella rottura cercare di capire a fondo, soprattutto in inglese, ma ho la sensazione che tutto ciò sia nato per gestire pochi byte velocemente tra vari dispositivi.

Ti pare che con tutti i problemi che ho, volendo sviluppare "ad alto livello" una "struttura" completa per gestire giochi multiplayer A TURNI online, mi debba pure mettere a studiare MQTT?

Magari sbaglio ma mi sembra che non ci sia molta chiarezza tra le differenze (ed i vantaggi) tra MQTT e HTTP.

Comunque, che io usi l'uno o l'altro, le varie parti (login, gestione "stanze"-utenti-giocatori, etc.) devono essere studiati, pianificati a prescindere dal mezzo di trasmissione dati. Ergo, almeno per il momento, proseguo (si fa per dire :() con b4j e websocket.
 

valentino s

Active Member
Licensed User
Longtime User
a me invece torna comodo avere gia' un server che smisti tutto. Quando inizio a lavorarci segnalo sul forum :)
 
Top