Il taxi scende in strada anche su mobile
Poco più di un mese fa, il 5 giugno, avevo raccontato la nascita di City-Driver, il mio taxi simulator browser-based costruito interamente in JavaScript. Da allora il progetto ha fatto parecchia strada — è il caso di dirlo — e la versione 5 che sto per presentarti, è quasi un gioco diverso rispetto al prototipo di partenza. La novità più importante? City-Driver ora gira anche su mobile, e questo mi ha costretto a ripensare da zero non solo l'interfaccia, ma buona parte della logica di gioco.
Quello che segue è il riepilogo di tutto quello che è cambiato lungo il percorso che va dalla versione 1 alla versione 5
City-Driver v1
City-Driver v5
City-Driver v5 su Mobile
Basta game over al primo urto
Nella prima versione, sbattere contro un edificio significava game over immediato. Era una meccanica punitiva che funzionava male soprattutto su touchscreen, dove il controllo è meno preciso rispetto a mouse e tastiera. Ho quindi ripensato l'intero sistema di "salute" del gioco:
- Il game over ora scatta solo quando si supera un numero massimo di infrazioni accumulate.
- Ogni urto contro un ostacolo (un palazzo, ad esempio) fa scendere un nuovo indicatore di integrità della vettura. Se arriva a zero, il taxi va riparato: niente game over, ma un costo che pesa sul bilancio.
- Il bilancio, il livello di carburante e lo stato dell'auto sono ora tenuti costantemente sotto controllo tramite HUD dedicati.
Questo cambio ha reso il gioco molto più "gestionale": non basta più guidare bene, bisogna anche amministrare le proprie risorse.
Il carburante non è più infinito
Altra novità sostanziale: il carburante si consuma. Ho introdotto delle vere e proprie stazioni di servizio sparse per la città dove fare rifornimento. Quando il livello scende troppo, il taxi rallenta progressivamente fino a diventare quasi ingestibile — un modo per avvisare il giocatore senza spezzare bruscamente l'esperienza con un altro game over secco.
Una leaderboard su Redis
A fine partita è possibile salvare il proprio punteggio (il bilancio raggiunto) in una leaderboard persistente. Tecnicamente ho riutilizzato lo stesso stack già rodato su altri miei progetti: Upstash Redis più funzioni serverless su Vercel.
La parte interessante dal punto di vista implementativo riguarda come si ottiene la posizione in classifica. Redis mette a disposizione le Sorted Set, una struttura dati pensata esattamente per questo tipo di problema:
ZADDsalva il punteggio, associandolo automaticamente alla posizione corretta nell'insieme ordinato.ZREVRANKrestituisce la posizione del giocatore nella classifica ordinata in senso decrescente, con una singola chiamata O(log N).
Niente query complesse, niente ordinamenti lato applicazione: la struttura dati fa già tutto il lavoro sporco. Dopo il salvataggio, il gioco comunica subito al giocatore in che posizione si trova.
L'adattamento mobile
Qui si concentra la parte di lavoro più corposa. Rendere giocabile un simulatore di guida su schermi piccoli e touch ha richiesto diverse scelte:
Zoom dinamico. Ho aggiunto la possibilità di zoomare la visuale, così anche su schermi ridotti si può scegliere tra un'ampia panoramica della città o un dettaglio più ravvicinato sul traffico circostante.
Comandi touch. Un tasto dedicato, "Comandi Touch", mostra a schermo i controlli per Freno, Acceleratore, Sterzata a Destra e Sterzata a Sinistra. Ho comunque mantenuto il controllo "classico" — cliccare su un'area del gioco — già presente fin dalla versione 1.0.6, per chi preferisce quell'approccio anche da mobile.
Grafica Alta/Bassa. Per far girare il gioco anche su smartphone datati, ho introdotto un toggle che disattiva il 3D/volume dei palazzi, riducendo il carico sulla GPU e privilegiando la fluidità rispetto all'estetica.
Una città più viva
I pedoni non coinvolti nella missione attiva non sono più bloccati dentro le aree verdi: ora circolano liberamente, anche in mezzo alla carreggiata. Sembra un dettaglio minore, ma cambia parecchio la percezione della città: più caotica, più imprevedibile, più... vera.
A supportare l'orientamento in questo contesto più dinamico c'è anche una nuova minimappa, che mostra sempre la posizione dell'obiettivo da raggiungere.
Temi Light e Night
Il gioco ora supporta due temi grafici: light, pensato per le missioni diurne, e night, per i turni notturni. Il cambio non è solo estetico: cambia sensibilmente la leggibilità della scena e, in prospettiva, si presta bene a influenzare anche la difficoltà (visibilità ridotta, semafori più difficili da individuare, eccetera).
L'audio: dal clacson al rombo del motore
Ho lavorato parecchio anche sul comparto sonoro, che nella prima versione era pressoché assente:
- Clacson attivabile con il tasto H.
- Rombo del motore dinamico, con pitch e volume che variano in base alla velocità del taxi.
- Effetti sonori per collisioni, stridio delle gomme in frenata, incasso del denaro e avviso di carburante basso.
Piccoli dettagli, ma sono quelli che fanno la differenza tra un prototipo e un gioco che si sente "vivo".
Rotatorie e indicatori di direzione
Ultima chicca lato guida: sono state introdotte le frecce direzionali, da usare quando si affronta una rotatoria. Usarle correttamente permette di ottenere una riduzione delle penalità accumulate per i passaggi con il semaforo rosso — un piccolo incentivo a guidare in modo più "corretto" anche nei contesti dove le regole sono meno immediate da interpretare.
Le missioni di base
Se devo indicare la novità più grande di questa versione, però, è questa: City-Driver non è più (solo) un simulatore di taxi cittadino. È diventato un contenitore di missioni diverse, ognuna con la propria logica.
Oltre alla classica missione di servizio taxi cittadino, sono già disponibili:
🅿️ Sfida di parcheggio
Caricamento immagine
Vedi quel rettangolo azzurro che lampeggia come a dirti "sono qui, vieni da me"? Quello è il tuo bersaglio. Manovra, aggiusta lo sterzo, magari qualche piccolo avanti-indietro da vero professionista del parcheggio, e infila il taxi esattamente dentro quello stallo. Nessuna scusa: è evidenziato apposta perché tu non possa sbagliare.
🛡️ Guida sicura
Caricamento immagine
Niente eroismi al volante, oggi si gioca in difesa: mantieni la calma, rispetta le distanze e porta a casa il taxi (e i nervi saldi) senza collezionare neanche un graffio. Ogni urto è un punto contro, ogni frenata evitata in tempo è una piccola vittoria personale. L'obiettivo non è arrivare primo, è arrivare intero.
⛽ Esaurimento carburante
Caricamento immagine
La lancetta del carburante sta scendendo pericolosamente verso lo zero e il tuo taxi inizia già a fare le bizze? Niente panico: punta dritto verso la stazione di servizio più vicina, accostati alla pompa e fai il pieno. Qualche secondo di sosta oggi, per non ritrovarti a spingere il taxi a piedi domani.
Le missioni narrative: piccole storie nella città
Come si intuisce dai titoli presenti in questa sezione, l'idea è di trasformare City-Driver in una piccola raccolta di "storie" ambientate nella stessa città, ognuna con le proprie regole, i propri vincoli di tempo o di risorse, e magari un tono narrativo diverso.
☀️ City Tour
Caricamento immagine
Si parte! La giornata da tassista comincia con il classico cliente in salsa vacanziera: un turista, mappa alla mano (o più probabilmente smartphone con la batteria quasi scarica), pronto a farsi accompagnare in giro per la città. Sorriso cordiale, guida tranquilla e magari qualche dritta sui posti da non perdere: si comincia col piede giusto.
👴 Pensione in Arrivo
Caricamento immagine
Chiamata di quelle classiche: un signore anziano, agenda mentale scandita dagli orari dell'ufficio postale, deve assolutamente arrivare in tempo per ritirare la pensione — perché si sa, dopo una certa ora la fila diventa un'epopea. Corsa tranquilla, chiacchiere sul tempo che cambia e destinazione: le Poste. In cambio, 25 € sul tassametro e 5 € di mancia, offerti con la generosità di chi sa bene il valore di un passaggio puntuale.
🏥 Codice Visita
Caricamento immagine
Stavolta la corsa ha un tono un po' più serio: una signora anziana ti chiede di portarla in ospedale, niente fretta isterica ma quella calma un po' preoccupata di chi preferirebbe essere altrove. Tu ci metti guida attenta e qualche parola rassicurante lungo il tragitto. All'arrivo: 25 € di corsa e 5 € di mancia, il minimo che può fare per ringraziarti di averla accompagnata senza intoppi.
🍹 Aperitivo
Caricamento immagine
Il pomeriggio volge al termine e la città cambia ritmo: giacca appesa, testa già fuori dall'ufficio, i clienti di oggi hanno un solo pensiero fisso — il bar. Destinazione aperitivo, capitano.
🎵 Serata Disco
Caricamento immagine
Il sole tramonta e la città si trasforma: paillettes, profumo intenso e la playlist già partita dal telefono del passeggero. È l'ora delle corse verso la discoteca — tu guidi, loro già ballano sui sedili posteriori.
🌙 Turno Notturno
Caricamento immagine
Le luci dei negozi si spengono una a una, il traffico si dirada e la città sembra quasi addormentarsi — ma per te il turno non è ancora finito. Strade deserte, semafori che lampeggiano nel silenzio e ogni tanto qualche cliente notturno con una storia da raccontare: benvenuto nel turno notturno, dove il taxi non dorme mai.
🥴 Cliente Alticcio
Caricamento immagine
Sale a bordo un passeggero che ha decisamente vissuto una nottata più intensa del previsto: occhiali da sole anche se non c'è traccia di sole, movimenti al rallentatore e uno sguardo che implora guida dolce e nessuna curva brusca. Oggi il vero carico da trasportare non è lui, è il suo mal di testa.
🌃 Fine Serata
Caricamento immagine
È l'ora più tarda del turno, quella in cui la festa è ufficialmente finita e restano solo occhi pesanti, scarpe scomode e la voglia matta del proprio letto. Il tuo compito: guida silenziosa, radio bassa e destinazione casa, prima che qualcuno si addormenti sul sedile posteriore.
🕵️ Testimone Chiave
Caricamento immagine
Chiamata urgente: una testimone oculare ha visto qualcosa, e quel qualcosa potrebbe ribaltare l'intera indagine. Il detective Jones la aspetta, il tempo stringe e ogni minuto perso è un minuto di vantaggio per il colpevole. Tocca a te trasformarti in taxi-scorta d'emergenza: guida rapida ma lucida, perché stavolta a bordo non c'è un cliente qualunque, c'è la chiave di tutto il caso.
🚨 Zona Rossa
Caricamento immagine
La deposizione ha dato i suoi frutti: il detective Jones ha già in mano un nuovo indizio e un indirizzo cerchiato in rosso sulla mappa. Niente sirene, ma l'urgenza è la stessa: fai salire a bordo il detective e portalo sulla nuova scena del crimine il più in fretta possibile, prima che qualcosa — o qualcuno — sparisca dalla circolazione.
🚓 Inseguimento
Caricamento immagine
Il sospettato numero uno è stato finalmente avvistato, e l'ispettore Jones non ha un attimo da perdere. Il problema? Il caso è molto complicato. La soluzione? Un'amica di vecchia data: la Sig.ra Costanza, autrice di gialli acclamati e, a quanto pare, anche piuttosto pratica quando si tratta di dare la caccia ai cattivi. Sale a bordo del tuo taxi decisa e ti trascina dritta nell'inseguimento del secolo. C'è però una clausola non negoziabile: la Sig.ra Costanza pretende una guida impeccabile. Codice della strada alla lettera, please — dopotutto, nei suoi romanzi il colpevole viene sempre catturato senza infrangere una sola regola. Alla prima infrazione, altro che colpo di scena: la corsa finisce lì, seduta stante.
🚔 Caccia al Taxi
Caricamento immagine
Una chiamata radio come tante altre: un cliente appena uscito dalla Banca, fretta da vendere e una mancia che promette bene se lo porti alla stazione dei treni più vicina. Il classico colpo di fortuna della giornata, verrebbe da pensare. Peccato che "appena uscito dalla Banca" nasconda un dettaglio che il tizio si è dimenticato di specificare: non ci è entrato con un conto corrente da aprire. Nel giro di pochi istanti la strada si riempie di lampeggianti, decine di volanti convergono sulla zona e la polizia inizia a inseguire... te. Da tassista modello a complice involontario della fuga del secolo: la mancia, a questo punto, è l'ultimo dei tuoi problemi.
Cosa aspettarsi nelle prossime versioni
Il lavoro su City-Driver continua. La base tecnica costruita per questa versione — gestione risorse, sistema missioni, adattamento mobile, leaderboard — è pensata per reggere l'espansione futura senza dover essere riscritta da zero. Le prossime missioni arriveranno progressivamente, e con ogni probabilità porteranno con sé nuove meccaniche specifiche legate al loro contesto narrativo (pensate a cosa potrebbe richiedere un vero e proprio inseguimento rispetto a una corsa tranquilla verso l'ospedale). In parallelo sto valutando anche nuove zone della mappa e statistiche di gioco più dettagliate da affiancare alla leaderboard.
Puoi provare l'ultima versione su city-driver.darioros.it, da desktop o direttamente dal tuo smartphone. Fammi sapere che posizione raggiungi in classifica.






