Giocare a Uno con gli amici, ognuno a casa propria

Android • Applicazioni • iOS

Giocare a Uno con gli amici, ognuno a casa propria

Sappiamo tutti che questo è un periodo molto particolare, non starò a dilungarmi sulla questione perché non mi va di approfittare della situazione per scrivere l’ennesimo articolo.

Voglio invece raccontarvi come io e i miei amici passiamo il tempo visto che siamo chiusi in casa da giorni.

Da poco amanti della vita discotecara e troppo movimentata, quello che preferiamo fare quando siamo in giro per pub, tra una birra e l’altra, è giocare a Uno. Eh sì 🤣.

Ma adesso che siamo distanti, come facciamo? Le app ufficiali di Uno non permettono di giocare in multi-play e in locale contemporaneamente, quindi come fare?

Di certo non vogliamo perderci momenti di relax e divertimento, quindi non ho potuto far altro che rimboccarmi su le maniche e inventare qualcosa.

Ed ecco qua, la mia versione di Uno per iOS e Android per giocare a distanza con gli amici.

Ecco come ho creato l’app

L’obiettivo è quello di poter giocare a Uno, sia in locale che a distanza. In pratica io e la mia ragazza sul nostro divano e i nostri amici a casa loro.
Non devono esserci limiti sul numero di giocatori.

Il server e la web app

È necessario avere a disposizione un server per creare e installare una web app che si occupi di gestire gli utenti e le partite.

Ho utilizzato il framework realizzato in Nice APP basato su WordPress che ci permette di creare web app in modo veloce.

La web app si occupa di registrare gli utenti nel database e metterli a disposizione per il gioco.
Una volta registrati si può creare le stanze di gioco.
Gli altri giocatori potranno quindi entrare nelle stanze e prendere parte alla partita.

Il server si occupa di tutto il processo di gioco come:

  • conteggio delle carte
  • smistamento delle carte
  • gestire le azioni dei giocatori
  • registrare lo storico delle azioni

L’interfaccia di scambio dati è basata su delle API REST.

Adesso che il server e la web app ci sono, dobbiamo creare i client, cioè le applicazioni per iOS e Android.

UI/UX

La prima cosa da fare è studiare e realizzare l’interfaccia grafica.

Qui è possibile realizzare praticamente qualsiasi cosa dipende dal tempo a disposizione.

Visto che volevamo giocarci in serata, ho optato per la via più semplice e veloce, poche schermate e grafica solo per la schermata di gioco.

Per velocizzare ulteriormente il processo ho fatto realizzare le bozze alla mia ragazza che di fatto è il suo lavoro 😜

L’app iOS

Il mio processo di lavoro è questo:

  • creazione del modello dei dati su iOS
  • creazione degli engine network e di sessione su iOS
  • creazione delle schermate e delle logiche su iOS
  • porting del modello dei dati su Android
  • porting degli engine network e di sessione su Android
  • creazione delle schermate e porting delle logiche su Android

Lavorando in questo modo ho il 40% del lavoro in meno su Android, il codice completamente allineato tra Swift e Kotlin e gli eventuali bug si risolvono in modo speculare nelle due piattaforme.

Per quest’app è necessario realizzare i vari modelli come l’utente, la stanza di gioco e le carte.

Poi si passa ai vari motori che in questo caso si occupano di:

  • gestire l’interscambio dei dati con il server
  • gestire le sessioni degli utenti
  • gestire le sessioni di gioco

Possiamo ridurre a 2 engine, uno per il network e uno per le sessioni.

Dopo di che si può iniziare a realizzare le schermate:

  • la schermata di login
  • la schermata della lista delle stanze di gioco
  • la schermata di gioco

La schermata di gioco è quella più complicata visto che è l’unica con un’interfaccia grafica elaborata.

L’app Android

Una volta finita e testata l’app iOS è stato il turno di Android.
Come dicevo prima, lavorando in questo modo, possiamo fare un porting su Android, lo sviluppo di questa parte è molto veloce e lineare rispetto a quella iOS dove c’è tutto lo studio e la realizzazione delle logiche base.

La conversione del modello, degli engine e delle logiche può essere automatizzata tra Swift e Kotlin.
Mentre per le schermate si possono creare i layout seguendo le logiche di iOS e convertendo l’interfaccia grafica al sistema operativo.

Le logiche di gioco

I giocatori sono e devono essere liberi di giocare con le regole di Uno che preferiscono.

Le regole del gioco non sono imposte dall’applicazione, questo perché l’idea è quella di giocare proprio come dal vivo, con tutte le dinamiche divertenti che il gioco live offre.

I giocatori possono buttare le carte, anche più di una alla volta!
Possono prendere quante carte vogliono. Esattamente come dal vivo.

Quando un giocatore finisce le carte ha vinto, ma gli altri possono continuare a giocare e determinare il perdente, cioè l’ultimo che non riesce a finire le carte.

Ma si possono anche applicare le regole in base a come si vuol rendere complicata la partita, proprio perché il gioco è la simulazione della realtà.

Funziona?

Beh, noi abbiamo passato 3 ore a giocare via Skype, con la videocamera accesa e qualche birra sul tavolo, direttamente dal divano di casa 😎

Il tutto è stato realizzato in 4 ore. Ovviamente è ancora un prototipo, se volessi renderla commerciale dovrei ancora lavorarci molto.

Peccato però che l’applicazione non potrà mai essere pubblicata visto che si tratta di un marchio registrato, ma è stato un ottimo esercizio!

il