World Conquest: un Risiko homebrew per C64

Introduzione e regole del gioco

È un grande piacere, per me, poter presentare questo gioco per Commodore 64 che scrissi più di vent’anni fa, e ringrazio Retroacademy.it per avermi concesso questo spazio.

La storia di questo programma è un po’ particolare, ma di questo parlerò più avanti. World Conquest è un gioco strategico a turni ispirato a Risiko, e può essere considerato come una rivisitazione moderna di quest’ultimo. Come nel classico gioco da tavolo, i giocatori controllano regioni del mondo tramite armate, tentano di espandersi conquistando regioni adiacenti, e ottengono progressivamente rinforzi. Anche la mappa è molto simile a quella di Risiko, essendo suddivisa in 42 regioni, sebbene vi siano alcune differenze nelle interconnessioni. A differenza di Risiko, che prevede da 2 a 6 giocatori, World Conquest è concepito come una sfida uno contro uno (è possibile giocare contro un altro giocatore oppure contro il computer).

sc08

Entrambi i giocatori iniziano con 7 regioni assegnate casualmente, mentre le 28 regioni rimanenti sono designate come neutrali, quindi possono difendersi ma non attaccare. L’esito degli attacchi ovviamente è casuale: il lancio dei dadi non viene visualizzato, ma è comunque simulato all’interno del programma, per cui le probabilità di successo in battaglia sono le stesse di Risiko, compreso il leggero vantaggio a favore delle armate che subiscono l’attacco. Non sono ammesse battaglie asimmetriche, per cui il numero di armate chiamate a difendersi è sempre uguale a quello delle armate che sferrano l’attacco.

La caratteristica principale di World Conquest è che ogni regione possiede degli attributi economici (espressi in risorse, energia e tecnologia) che influenzano direttamente la progressione del gioco, e che rendono certe regioni più desiderabili di altre. Nello specifico, il totale delle risorse minerarie determina la quantità delle armate di rinforzo che si possono costruire, l’energia viene convertita in numero di attacchi per turno, e il livello tecnologico permette progressivamente di sbloccare una serie di upgrades acquistabili tramite “crediti di guerra”, che a loro volta vengono guadagnati distruggendo armate e incassando tributi dalle regioni possedute. Le upgrades forniscono diversi vantaggi: alcune aumentano le probabilità di successo in battaglia, altre incidono sull’aspetto economico, altre ancora garantiscono abilità speciali.

A questo proposito, un celebre scienziato, Dr. Helmut Kriegbringer, si è rifugiato in una delle regioni neutrali portando con sé schemi e progetti top-secret: il giocatore che riuscirà a catturare il Dottore usufruirà di un bonus tecnologico, con la possibilità di accedere ad una upgrade speciale. È anche possibile lanciare due tipi di attacco nucleare (al suolo o ad alta quota, con effetti totalmente diversi) a patto di possedere un silo. I giocatori possono tentare di impossessarsi dei silo esistenti (situati in Alaska, Stati Uniti Orientali, Russia, Gran Bretagna, Sud Africa, Cina e India) e perfino acquisire la capacità di costruirne di nuovi. Per default è possibile nuclearizzare solo regioni situate nel medesimo continente in cui il silo è collocato, ma questa limitazione può essere superata dotandosi di ICBM. Una partita può essere vinta in più modi: conquistando 30 regioni, ottenendo il completo controllo di 3 continenti (ma la combinazione Sud America, Africa e Oceania non è valida), eliminando l’avversario o costringendo quest’ultimo alla resa.

sc03

È possibile, anche se si tratta di un’eventualità piuttosto rara, che una partita termini in pareggio: nel caso di escalation nucleare i livelli radioattivi delle regioni possono salire eccessivamente, e ciò in determinate condizioni può portare all’inizio di un inverno nucleare e alla sconfitta di entrambi i giocatori. A causa di queste caratteristiche aggiuntive, e anche per l’alterazione delle regole di gioco, molte delle strategie tipiche di Risiko si rivelano obsolete se applicate a World Conquest. Indubbiamente, la conoscenza delle dinamiche del gioco da tavolo si rivela utile e facilita l’approccio, tuttavia i giocatori sono anche chiamati a sviluppare nuove tattiche e a tenere in considerazione un maggior numero di fattori, come il peso economico delle regioni e la costante minaccia nucleare. La parte più noiosa di World Conquest è dover imparare i codici di 3 lettere che identificano ogni regione, e che vengono utilizzati per impartire la maggior parte dei comandi di gioco, ma esiste un’opzione per visualizzarli: a partita in corso premere “R” e, alla richiesta del codice regione, digitare l’asterisco.

Come nasce World Conquest

Iniziai a ideare e programmare World Conquest nel 1993, con l’intento di inviarlo a Zzap! per una valutazione. Era il periodo in cui i giochi per Commodore 64 cominciavano a scarseggiare, così la celebre rivista dedicata agli 8-bit aveva iniziato a recensire i lavori inviati dai lettori (leggi: erano talmente alla canna del gas che avrebbero recensito anche il comando PRINT), e ovviamente non volevo perdere l’occasione di essere menzionato sulle sue pagine. All’inizio avevo in mente di creare una trasposizione fedele di Risiko, ma ben presto cambiai idea e decisi di optare per qualcosa di più complesso e che giustificasse l’impiego di un computer. Così, dopo alcuni giorni di progettazione, in un paio di settimane scrissi il programma, lo testai a dovere, spedii il dischetto e rimasi in attesa, già pronto a sorbirmi il rituale rimprovero dei redattori di Zzap! per non aver scritto il gioco in italiano bensì in una oscura lingua morta chiamata inglese. La versione che inviai era limitata a due giocatori (con la promessa di aggiungere la possibilità di sfidare il computer in una successiva versione) e non comprendeva le istruzioni, che invece erano stampate a parte su un piccolo manuale in italiano.

sc06

Passarono diversi mesi, ma tra le pagine di Zzap! non c’era traccia di World Conquest. Devo dedurre che il dischetto non giunse mai in redazione, oppure che il programma non fu ritenuto degno di attenzione poiché realizzato in BASIC. Fatto sta che di lì a poco passai ad Amiga, Zzap! chiuse i battenti, e per un bel po’ di tempo non pensai più né al Commodore 64 né a World Conquest, che si apprestava a diventare uno dei tanti programmi che avevo scritto e che nessun altro aveva mai visto. Nel 1995, a ridosso degli esami di maturità, mi ricordai di questo progetto rimasto in sospeso, e decisi di ultimarlo per una questione di principio, implementando l’intelligenza artificiale e incorporando delle sintetiche istruzioni che nessuno avrebbe mai letto.

sc04

Programmare e testare l’I.A. richiese molto tempo, circa tre mesi, e anche molto spazio: la presenza delle numerose nuove routines, unitamente all’aggiunta delle istruzioni, comportò una crescita a dismisura del programma, che rispetto al prototipo inviato a Zzap! due anni prima era quasi raddoppiato in dimensioni. In seguito, continuai ad utilizzare in tandem il Commodore 64 e l’Amiga 1200 fino al 1998, anno in cui mi arresi all’evidenza e acquistai il mio primo PC. Presto scoprii l’emulazione, ma solo ultimamente mi sono deciso a procurarmi gli strumenti necessari a convertire in formato digitale i miei vecchi programmi. Così, a distanza di 23 anni dalla sua creazione, grazie a Internet ho potuto finalmente condividere World Conquest con tanti altri utenti che, come me, non hanno mai abbandonato del tutto il caro vecchio Commodore 64.

Considerazioni tecniche

Il programma è scritto interamente in BASIC. La grafica ovviamente è in modalità testuale, ma come ben sappiamo il set di caratteri PETSCII si dimostra sempre molto flessibile. La mappa di gioco non ha alcuna pretesa di realismo, e le proporzioni sono decisamente alterate, tuttavia riesce a svolgere le sue funzioni. Il listato è spaventosamente lungo e, una volta che il programma è in esecuzione, rimangono a disposizione poco più di 1000 bytes per accomodare le variabili che governano l’evoluzione degli eventi. La lunghezza del listato è parzialmente inflazionata dalla presenza delle istruzioni di gioco, che ovviamente concorrono pesantemente anche al consumo di RAM.

Quando, nel 1995, aggiunsi le istruzioni, avevo intenzione di implementare anche altre caratteristiche, come attacchi alle infrastrutture nemiche, raid aerei, disastri naturali che avrebbero rallentato le operazioni nelle regioni coinvolte, ma forse i due anni passati su Amiga avevano alterato la mia percezione del Commodore 64 e dei suoi limiti, e alla fine tutte queste idee rimasero tali a causa della mancanza di memoria. Forse la soluzione migliore sarebbe stata spostare le istruzioni su un file separato, ma ho sempre avuto l’abitudine di incorporarle all’interno dei miei programmi, inoltre temevo che l’aggiunta di ulteriori fronzoli potesse annacquare lo spirito del gioco.

sc09

Un’altra cosa che incide molto sulla lunghezza del listato sono gli elementi estetici, alcuni dei quali obiettivamente superflui (come ad esempio i grafici a barre che rappresentano i valori economici delle regioni) ma avevo cercato fin da subito di dare al programma un aspetto gradevole e, per quanto possibile, professionale, per compensare il fatto che fosse scritto in BASIC. La prima cosa da bandire assolutamente era il comando INPUT, sostituendolo con una routine che impedisse il libero movimento del cursore e che filtrasse i caratteri, accettando esclusivamente quelli utilizzati nei comandi di gioco (ovvero il set alfanumerico più l’asterisco, necessario per attivare alcune funzioni).

La lentezza del BASIC del Commodore 64 è cosa nota, ed essa si riflette anche sul tempo necessario per visualizzare una schermata, per cui ho utilizzato a più riprese la locazione 53265 per mascherare lo schermo finché la sua tracciatura non viene completata. Un altro problema, sorto durante la fase iniziale di sviluppo, era rappresentato dalla lentezza con cui le cifre relative al numero di armate per regione venivano ridisposte in sequenza sulla mappa, costringendo ad una fastidiosa attesa ogni volta che si abbandonava lo “Status Screen”. Inizialmente mi ero affidato a una coppia di vettori-stringa costituiti dai caratteri CRSR DOWN e CRSR RIGHT, ma in seguito riuscii a dimezzare i tempi di esecuzione utilizzando i comandi POKE 211,X e POKE 214,Y che, unitamente a SYS 58640, consentono di posizionare il cursore direttamente alle coordinate desiderate. Per visualizzare i marcatori delle regioni mi sono servito di sprites, così come per mostrare una semplice animazione durante gli attacchi nucleari.

Note sull’intelligenza artificiale utilizzata

L’intelligenza artificiale merita un breve discorso a parte. Essa obiettivamente risulta un po’ lacunosa, soprattutto nella fase di spostamento delle armate a fine turno (e qualche volta anche nella distribuzione dei rinforzi), tuttavia il computer svolge tutte le azioni di un giocatore umano, inclusa la ricerca delle tecnologie, simulando nel contempo un certo grado di imprevedibilità e alternando fasi di espansione con altre di consolidamento.

Certe carenze nell’I.A., oltre ad essere dovute all’incapacità del sottoscritto di concepire algoritmi migliori, sono state il prezzo da pagare per ottenere dei tempi di riflessione ragionevolmente brevi da parte del computer, onde evitare lunghe attese e il conseguente insorgere della “sindrome da partita a scacchi”.

sc07

Le routines eseguono inoltre dei controlli che escludono l’eventualità che il computer rimanga intrappolato in un loop durante una delle sue varie attività.

Una cosa da tenere in considerazione è che l’I.A. è strettamente legata alle condizioni iniziali della mappa: quando si sfida il computer, è bene assicurarsi che questi abbia accesso ad almeno due o tre regioni facilmente conquistabili (cioè protette da una singola armata), in caso contrario il computer non riuscirà ad effettuare attacchi durante i primi turni, accumulando uno svantaggio eccessivo nei confronti dell’avversario umano.

È comunque opportuno, anche nella modalità a due giocatori, dare un’occhiata alla mappa proposta prima di confermarla e iniziare la partita, cercando di evitare scenari eccessivamente penalizzanti per uno dei due contendenti: iniziare una partita con quattro regioni dell’Africa già in proprio possesso può sembrare vantaggioso, ma una simile situazione complica non poco le possibilità di espansione.

Download del gioco

Potrebbero interessarti anche...