
\documentstyle[italian]{article}
\title{{\sf Elan 1.00}}
\author{Andrea Giotti}
\date{13 Aprile 1996}

\begin{document}
\maketitle

\section{Introduzione}

{\sf Elan} \`{e} un gioco di simulazione portabile scritto dall'autore su Commodore Amiga e reso
disponibile per Linux ed OS/2 grazie ai contributi elencati nella sezione \ref{credits} (p.
\pageref{credits}).

Il programma dispone solo di output testo ed \`{e} indirizzato ad un pubblico che non bada molto
alle forme. I colori non sono indispensabili ma fortemente raccomandati. Arricchimenti che rendano
pi\`{u} gradevole l'interazione, come un'interfaccia grafica ed effetti speciali, sono previsti in
successive versioni e contributi in questo senso sono ben accetti.

La simulazione consiste nel riprodurre la colonizzazione di un ambiente ostile con un budget
limitato. Ragioni e metodi sono descritti nel seguito.

\section{Installazione e configurazione}

Prima di lanciare la simulazione si consiglia di copiare l'eseguibile {\tt elan} ed il file di
configurazione {\tt elan.cfg} dalla sottodirectory della piattaforma specifica (Amiga, Linux/ANSI,
Linux/ncurses o OS/2) a quella dove si desidera installarlo. I parametri configurabili dall'utente
sono la dimensione della finestra di interfaccia, sui sistemi che lo consentono, e le coppie di
colori testo/sfondo da impiegare per classi di messaggi e simboli di mappa. Il file di
configurazione \`{e} testo ASCII a formato rigido e deve trovarsi nella directory da cui viene
lanciato il programma.

La dimensione della finestra deve essere tale da consentire la visualizzazione di una pagina
testo $80 \times 45$ nella font appropriata. Numeri di colori validi per tutte le versioni sono
gli interi da 0 a 7, ma numeri maggiori possono essere accettati da versioni specifiche. A titolo
di esempio, il pacchetto di distribuzione include un'immagine in formato GIF della versione Amiga
correttamente configurata.

La versione Amiga pu\`{o} essere lanciata da workbench o shell, nel qual caso necessita di uno
stack di almeno 6000. Apre sempre una nuova finestra console sullo schermo workbench con la font
di default del sistema.

Delle due versioni Linux, quella ANSI pu\`{o} girare in un qualsiasi terminale capace di
riconoscere le sequenze di controllo ANSI, l'altra necessita della libreria ncurses ma funziona su
tutti i terminali descritti nella documentazione della stessa. Entrambe ereditano il terminale
dello shell da cui sono lanciate, e si consiglia di sperimentarle sulla propria console preferita
prima di sceglierne una.

La versione OS/2 pu\`{o} essere lanciata da desktop o shell ed apre sempre una nuova finestra
console.

Oltre alla presente documentazione in vari formati, il pacchetto di distribuzione include sorgenti
e makefile. Prima di tentarne la ricompilazione su piattaforme diverse da quelle elencate \`{e}
opportuno leggere la sezione \ref{technical} (p. \pageref{technical}).

\section{Background}

Nel mercato galattico, la sostanza con maggior valore specifico \`{e} senza dubbio l'elan, per i
suoi poteri taumaturgici ed il difficile modo in cui viene prodotta. Sui mondi dominati da
dittature politiche o religiose, inoltre, la sua messa al bando ne porta il prezzo a valori
tali da potervi comperare un'intera astronave con pochi centilitri di elan pura. Un'assunzione
regolare di quantit\`{a} molto inferiori sono sufficienti ad un essere umano per invertire il
processo di invecchiamento e conquistare una virtuale immortalit\`{a} in un corpo eternamente
giovane, incidenti a parte. Altri presunti doni portati dall'elan, come la capacit\`{a} di parlare
lingue ignote e vedere mondi arcani, non sono mai stati documentati scientificamente.
Sfortunatamente, un corpo umano che abbia fatto uso regolare di elan e ne venga privato subisce
un invecchiamento accelerato e questo conferisce a chi pu\`{o} produrre l'elan un formidabile
potere di ricatto sui alcuni dei pi\`{u} ricchi uomini della galassia.

Su di un solo mondo conosciuto cresce il lichene da cui si distilla l'elan, attraverso un
complesso processo elettrochimico. Il suo identificativo nel database \`{e} Csi Afrae 5,
planetoide roccioso distante tre unit\`{a} astronomiche da Csi Afrae, stella in fase pre-nova
oltre le nubi di Magellano. Csi Afrae 5 possiede un'orbita fortemente ellittica e questo porta ad
una notevole variazione nell'intensit\`{a} dei raggi provenienti dalla primaria durante l'anno,
con conseguente escursione termica media da -7 a -98 gradi. L'anno dura 333 giorni, ognuno lungo
una volta e mezzo il giorno solare standard. Il planetoide \`{e} molto piccolo ma denso e la
gravit\`{a} \`{e} un quinto di quella terrestre. L'atmosfera \`{e} una miscela di azoto,
idrocarburi e anidridi solforose, altamente corrosiva, con forti venti e tempeste di sali di
zolfo. Sotto la dura luce ultravioletta di Csi Afrae, nelle valli dove l'atmosfera si addensa e si
formano laghi di acido solfidrico, cresce il lichene madre assieme a poche altre forme di vita.
Tutti i tentativi di riprodurre in laboratorio le condizioni che portano alla crescita del lichene
sono falliti.

Per essere utile ai fini della produzione di elan, il lichene deve essere fatto crescere in una
piantagione omogenea e non in mezzo ad altre forme di vita analoghe ma prive di interesse
commerciale. La piantagione produce una biomassa in fermentazione, fortemente reattiva, che deve
essere distillata subito o riposta in appositi silo di cristallo inerte. La sua esportazione
diretta \`{e} talvolta praticata ma, dato che la biomassa si degrada con l'accelerazione, il suo
valore finale come sorgente di elan ne risulta fortemente diminuito, con conseguente riduzione del
prezzo a circa un quinto. Il processo di distillazione avviene in complessi impianti appositamente
costruiti, richiede temperature elevate ed \`{e} energeticamente assai costoso.

Si comprende come sia preferibile produrre l'elan in loco ed esportarlo successivamente, ma la
sopravvivenza sulla superficie di Csi Afrae 5 \`{e} resa problematica dalle avverse condizioni
ambientali che portano a frequenti guasti degli impianti. Attraverso processori atmosferici
installati in alta quota, lontano dalle piantagioni, \`{e} possibile ricavare aria ed acqua e
produrre il cibo necessario dentro serre idroponiche. Ma il rendimento dei processori cala
sensibilmente quando il pianeta \`{e} pi\`{u} lontano dalla primaria e la temperatura si abbassa,
periodo in cui la crescita del lichene si fa invece pi\`{u} rigogliosa. La posizione di Csi Afrae,
lontana dalle rotte commerciali ed ai margini dello spazio conosciuto, rende inoltre fortemente
antieconomici frequenti contatti per i rifornimenti. Di tutti coloro che hanno provato ad
installare una colonia su Csi Afrae 5 per produrre l'elan, pochi sono riusciti a sopravvivere al
primo inverno.

Ulteriore problema \`{e} costituito dall'ecosistema locale, che reagisce in maniera ostile ad ogni
tentativo di intrusione. Un parassita particolarmente comune pu\`{o} attaccare gli impianti, altre
forme pi\`{u} esotiche sembrano capaci di perforare i condotti di distribuzione. La rimozione
dell'ecosistema stesso tramite robot militari appare desiderabile, ma l'elevato costo di una
simile operazione ha finora spinto a ripiegare su opere di contenimento basate su barriere
termiche, nei cui confronti le forme native provano una innata repulsione. Studi specifici
sull'ecosistema non sono mai stati resi di dominio pubblico.

L'esportazione e la commercializzazione dell'elan sono monopolio della Hermeschem Galactica, che
ne possiede scorte consistenti. La sua produzione viene invece appaltata a ditte specializzate
nella colonizzazione di mondi in condizioni estreme. Spesso, il sogno dei loro manager \`{e} stato
quello di rubare alla Hermeschem il controllo sull'elan per entrare nel club dei potenti della
galassia. La cruda realt\`{a} \`{e} invece stata sempre quella di una totale dipendenza dal
traghetto che, una volta all'anno, compera biomassa o elan in cambio di rifornimenti e nuove
apparecchiature. Il permesso di sfruttamento di Csi Afrae 5 viene infatti concesso solo in cambio
di un contratto di esclusiva su ogni scambio commerciale con la colonia.

Una nuova variabile nello schema \`{e} stata introdotta quando, nei biolaboratori di Altair, \`{e}
stato messo a punto un procedimento genetico per adattare un essere umano alla vita su Csi Afrae
5. Il procedimento consiste nella metamorfosi di un certo numero di umani in ibridi riproduttori,
destinati a vivere per il resto dei loro giorni in un ambiente saturo di elan. Dagli ibridi
dovrebbe nascere una nuova generazione di forme pantropiche capaci di sopravvivere e di riprodursi
all'esterno. Il sostentamento degli ibridi per un tempo sufficiente alla riproduzione richiede
rilevanti quantit\`{a} di elan, ed \`{e} per questo cos\`{\i} costoso che la seconda fase del
procedimento ha potuto essere sperimentata solo su ratti.

\section{Obiettivo}

Scopo del gioco \`{e} quello di rimuovere l'ecosistema nativo di Csi Afrae 5 e sostituirlo con uno
dominato da forme pantropiche derivate dall'uomo, libere di scorazzare tra le pozze di acido
solfidrico e di sintetizzare internamente l'elan nutrendosi del lichene madre. Per farlo \`{e}
necessario progettare, acquistare, installare, connettere, controllare e difendere i sistemi della
colonia per una decina di anni almeno.

Gli impianti sono autoregolanti ed i robot diretti da programmi predefiniti, ma senza una
costante supervisione anche la pi\`{u} perfetta delle colonie collassa. La scelta, per prova ed
errore, dei parametri su cui impostare una strategia di gestione \`{e} parte integrante del gioco
e viene lasciata all'utente. I vincoli di progettazione sono descritti nella sezione
\ref{commands} (p. \pageref{commands}), assieme ai comandi che li riguardano, mentre alcuni
suggerimenti di gioco sono raccolti nella sezione \ref{tips} (p. \pageref{tips}).

\section{Impianti}

\subsection{Impianti di produzione}

\subsubsection{Energetici}

\begin{itemize}

\item[$\diamond$] {\it Pannello solare}\nopagebreak

Generatore che produce elettricit\`{a} proporzionalmente all'intensit\`{a} della radiazione
solare, variabile durante l'anno.

\item[$\diamond$] {\it Reattore nucleare}\nopagebreak

Generatore che produce una quantit\`{a} costante di elettricit\`{a} ma deve essere alimentato con
sempre nuova acqua di raffeddamento che diviene radioattiva e non pu\`{o} essere riprocessata.

\item[$\diamond$] {\it Impianto di riscaldamento}\nopagebreak

Sistema che trasforma elettricit\`{a} in calore. La variazione dei consumi secondo la temperatura
esterna viene conglobata nel rendimento dell'impianto. I condotti del calore sembrano
offrire una certa protezione dalle forme di vita aliene, purch\`{e} la portata termica sia
sufficientemente elevata.

\end{itemize}

\subsubsection{Chimici}

\begin{itemize}

\item[$\diamond$] {\it Processori di acqua ed aria}\nopagebreak

Condensatori che estraggono acqua potabile o aria respirabile dall'atmosfera aliena e sono
alimentati elettricamente. Il loro rendimento dipende dalla posizione, pi\`{u} alto in quota, e da
fattori metereologici che tendenzialmente migliorano al crescere della temperatura ambientale.

\item[$\diamond$] {\it Distilleria}\nopagebreak

Complesso di reattori che distilla l'elan dalla biomassa grezza, ma per farlo consuma rilevanti
quantit\`{a} di elettricit\`{a} e calore.

\end{itemize}

\subsubsection{Biologici}

\begin{itemize}

\item[$\diamond$] {\it Serra}\nopagebreak

Impianto idroponico pressurizzato in cui si coltiva cibo commestibile per gli esseri umani. Deve
essere alimentato con elettricit\`{a}, calore, acqua ed aria. Il suo rendimento \`{e} indipendente
dalla posizione e dai fattori ambientali.

\item[$\diamond$] {\it Piantagione}\nopagebreak

Coltivazione a cielo aperto del lichene madre da cui si ricava la biomassa grezza. Il suo
rendimento dipende dalla posizione, pi\`{u} basso in quota, e dal fattore di crescita del lichene
che tendenzialmente diminuisce al crescere della temperatura ambientale.

\item[$\diamond$] {\it Lievitatore}\nopagebreak

Dispositivo organico in simbiosi con il lichene madre, non necessita di manutenzione e produce
direttamente l'elan senza passare attraverso lo stadio di biomassa grezza e senza consumare
energia. Come per la piantagione, il rendimento finale dipende da posizione e fattore di crescita
del lichene ed \`{e} comunque leggermente inferiore rispetto al processo di coltivazione e
distillazione.

\end{itemize}

\subsection{Impianti di stoccaggio}

\begin{itemize}

\item[$\diamond$] {\it Batteria}
\item[$\diamond$] {\it Cisterna d'acqua}
\item[$\diamond$] {\it Serbatoio d'aria}
\item[$\diamond$] {\it Magazzino del cibo}
\item[$\diamond$] {\it Silo di biomassa}
\item[$\diamond$] {\it Serbatoio di elan}

\end{itemize}

\subsection{Impianti di consumo}

\begin{itemize}

\item[$\diamond$] {\it Computer}\nopagebreak

Sistema di controllo dei robot teleguidati, richiede solo elettricit\`{a} per funzionare. Se la
potenza di CPU erogata \`{e} insufficiente, i robot teleguidati si arrestano. Su ogni robot
teleguidato \`{e} possibile caricare un diverso programma di comportamento tra quelli disponibili
nella libreria del computer.

\item[$\diamond$] {\it Habitat}\nopagebreak

Ambiente pressurizzato che sostenta la popolazione umana della colonia, responsabile del buon
funzionamento dei sistemi. Deve essere alimentato con elettricit\`{a}, calore, acqua, aria e cibo
e possiede una riserva interna di supporto vitale per le emergenze. Contiene speciali incubatrici
per la crescita accelerata di nuovi individui prodotti in vitro, che vengono attivate
automaticamente quando l'uscita del supporto vitale eccede i consumi della popolazione. Almeno
un habitat deve avere un lato libero per consentire l'attracco del traghetto.

\item[$\diamond$] {\it Hybridome}\nopagebreak

Capsula semiorganica che ospita la popolazione ibrida della colonia. Non necessita di
manutenzione, per la sua alimentazione bastano elettricit\`{a} ed elan e possiede una piccola
riserva interna di supporto vitale. Gli ibridi non possono uscirne, e questo li rende inutili per
i compiti di riparazione anche in caso di emergenza. La capsula deve avere un lato libero, per
consentire il rilascio nell'ambiente delle forme pantropiche che costituiscono la generazione
successiva agli ibridi. La gestazione delle forme pantropiche viene avviata quando l'uscita del
supporto vitale eccede i consumi della popolazione.

\item[$\diamond$] {\it Metamorpher}\nopagebreak

Ambiente pressurizzato che ospita un biolaboratorio automatico, con vasche di elan a diverse
concentrazioni, entro cui gli esseri umani possono essere progressivamente trasformati in ibridi
attraverso un processo di ricombinazione genetica. Deve essere alimentato con elettricit\`{a},
calore, aria ed elan. La metamorfosi si completa solo quando \`{e} disponibile un adeguato
supporto vitale ibrido.

\item[$\diamond$] {\it Radiatore}\nopagebreak

Dispositivo dissipatore che consente di fissare una soglia minima per la portata termica dei
condotti di calore. Il calore necessario alla colonia viene prelevato precedentemente, il resto
viene dissipato fino al valore di uscita impostato sul radiatore.

\end{itemize}

\section{Robot}

\subsection{Hardware}

\begin{itemize}

\item[$\diamond$] {\it Robosonda}\nopagebreak

Semplice robot controllato da una CPU integrata che esegue un programma di esplorazione. Dispone
di un laser di bassa potenza ma non distingue le forme di vita e le attacca quando queste
interferiscono con i suoi compiti. La sua mancanza di corazza lo rende particolarmente
vulnerabile ai fenomeni elettromagnetici.

\item[$\diamond$] {\it Incursore}\nopagebreak

Robot teleguidato dotato di un laser di media potenza e di una corazza leggera. Ottimo contro i
parassiti, \`{e} in grado di distinguere le forme di vita native da quelle derivate dall'uomo. Il
suo basso prezzo lo rende adatto a svariati compiti.

\item[$\diamond$] {\it Sterminatore}\nopagebreak

Robot teleguidato dotato di un cannone ad antiparticelle e di una corazza pesante. Efficace
anche contro le creature pi\`{u} resistenti, \`{e} in grado di distinguere le forme di vita native
da quelle derivate dall'uomo. Nato per eseguire programmi di caccia.

\item[$\diamond$] {\it Stalker}\nopagebreak

Robot teleguidato capace di scavalcare i condotti, dotato di un laser di media potenza e di una
corazza pesante rinforzata con schermatura ai fenomeni elettromagnetici. Integra dispositivi
per scaricare a terra i vortici di plasma e per dare una limitata caccia alle creature che si
nascondono nel sottosuolo. \`{E} in grado di distinguere le forme di vita native da quelle
derivate dall'uomo.

\item[$\diamond$] {\it Guardiano}\nopagebreak

Sofisticato robot controllato da una CPU integrata che esegue un programma di pattuglia. Capace
di scavalcare i condotti, possiede un laser di alta potenza ed una doppia corazza pesante con
schermatura contro i fenomeni elettromagnetici. Integra dispositivi analoghi a quelli dello
Stalker ma \`{e} pi\`{u} efficace contro le creature del sottosuolo. \`{E} in grado di distinguere le forme
pantropiche pure da loro eventuali mutazioni, oltre che dalle forme native. Elimina inoltre
eventuali robosonde superstiti, in quanto potenziale pericolo per le forme pantropiche.

\end{itemize}

\subsection{Programmi di libreria}

\begin{itemize}

\item[$\diamond$] {\it Sorveglianza}\nopagebreak

Il robot sta fermo e tenta di eliminare le forme ostili che gli si avvicinano, ammesso che si
accorga della loro presenza.

\item[$\diamond$] {\it Esplorazione}\nopagebreak

Il robot tende a muoversi incessantemente e predilige le regioni inesplorate, non cercando lo
scontro ma difendendosi all'occorrenza.

\item[$\diamond$] {\it Caccia}\nopagebreak

Il robot d\`{a} la caccia alle forme ostili, preferendo le regioni a bassa quota dove l'ecosistema
\`{e} pi\`{u} florido.

\item[$\diamond$] {\it Pattuglia}\nopagebreak

Il robot d\`{a} la caccia alle forme ostili, preferendo le regioni ad alta quota e gi\`{a}
esplorate, tipicamente attorno al nucleo della colonia.

\end{itemize}

\section{Comandi}\label{commands}

Tutti i comandi vengono impartiti attraverso la pressione di un singolo tasto. I comandi di uso
pi\`{u} frequente sono raggruppati sul tastierino numerico.

\subsection{Movimento}

\begin{itemize}

\item[$\Box$] {\large {\tt 1 2 3 4 6 7 8 9}}\nopagebreak

Tutti questi tasti spostano il cursore nella direzione corrispondente alla loro posizione
sul tastierino numerico.

Nei modi di costruzione condotti, stendono inoltre un segmento di condotto nella nuova locazione
se questa non contiene impianti o punti di prelievo di altri condotti. In questo caso fanno
avanzare il tempo. La prima locazione di un nuovo condotto deve essere vuota ed in generale due
condotti possono scavalcarsi solo in punti diversi da quelli di prelievo degli impianti connessi.

\item[$\Box$] {\large {\tt 5}}\nopagebreak

In modo controllo, sposta il cursore sul prossimo punto di prelievo del condotto sottostante.

\item[$\Box$] {\large {\tt .}}\nopagebreak

In modo controllo, sposta il cursore sul prossimo impianto con regolazione manuale dell'uscita
o guasto.

\end{itemize}

\subsection{Realizzazione}

\begin{itemize}

\item[$\Box$] {\large {\tt [}}\nopagebreak

In modo controllo, se la locazione sotto il cursore \`{e} vuota e non circondata da altri impianti
vi installa un nuovo impianto e fa avanzare il tempo.

In modo commercio, acquista un nuovo impianto da installare successivamente.

\item[$\Box$] {\large {\tt ]}}\nopagebreak

In modo controllo, se la locazione sotto il cursore \`{e} vuota e precedentemente esplorata vi
piazza un nuovo robot e fa avanzare il tempo.

In modo commercio, acquista un nuovo robot da piazzare successivamente.

\item[$\Box$] {\large {\tt /}}\nopagebreak

Passa da modo controllo ai modi di costruzione condotti o viceversa. Se sotto il cursore c'\`{e}
un impianto spicca da esso un nuovo condotto, se invece c'\`{e} un condotto questo viene esteso a
partire dalla locazione corrente nella direzione specificata muovendo il cursore.

\item[$\Box$] {\large {\tt X}}\nopagebreak

In modo controllo, distrugge il condotto o l'impianto sotto il cursore.

\end{itemize}

\subsection{Gestione}

\begin{itemize}

\item[$\Box$] {\large {\tt Enter}}\nopagebreak

In modo controllo, se c'\`{e} un impianto sotto il cursore lo commuta dalla regolazione automatica
dell'uscita a quella manuale o viceversa. Se invece c'\`{e} un incrocio tra due condotti li
scambia portando sopra il sottostante.

\item[$\Box$] {\large {\tt +}}\nopagebreak

In modo controllo, se c'\`{e} un impianto sotto il cursore ed \`{e} regolato manualmente la sua
uscita obiettivo aumenta di un 5\% del massimo nominale. Se invece c'\`{e} un robot teleguidato,
si seleziona per esso il programma successivo nella libreria.

In modo commercio, se l'impianto \`{e} un contenitore non pieno questo viene riempito acquistando
la risorsa appropriata in misura del 5\% della sua capacit\`{a} massima.

\item[$\Box$] {\large {\tt -}}\nopagebreak

In modo controllo, se c'\`{e} un impianto sotto il cursore ed \`{e} regolato manualmente la sua
uscita obiettivo diminuisce di un 5\% del massimo nominale. Se invece c'\`{e} un robot
teleguidato, si seleziona per esso il programma precedente nella libreria.

In modo commercio, se l'impianto \`{e} un contenitore non vuoto la risorsa immagazzinata viene venduta
in misura del 5\% della sua capacit\`{a} massima.

\item[$\Box$] {\large {\tt *}}\nopagebreak

In modo controllo, se c'\`{e} un impianto sotto il cursore ed \`{e} regolato manualmente la sua
uscita obiettivo viene azzerata o, se questa \`{e} gi\`{a} nulla, resa uguale al massimo nominale.
Se invece c'\`{e} un robot teleguidato, si seleziona per esso il programma di default.

In modo commercio, se l'impianto sotto il cursore \`{e} un contenitore non vuoto la risorsa
immagazzinata viene interamente venduta, mentre se \`{e} vuoto viene riempito acquistando la
risorsa appropriata fino a riempimento completo o esaurimento dei crediti.

\end{itemize}

\subsection{Evoluzione}

\begin{itemize}

\item[$\Box$] {\large {\tt 0}}\nopagebreak

In un qualiasi modo diverso dal modo commercio, fa avanzare il tempo di un passo.

\item[$\Box$] {\large {\tt Spacebar}}\nopagebreak

Esce dal modo commercio facendo avanzare il tempo di un passo.

\item[$\Box$] {\large {\tt Tab}}\nopagebreak

Nei modi controllo, commercio ed osservazione fa avanzare il tempo fino all'evento successivo o
alla pressione di un tasto. Esempi di eventi sono arrivo e partenza del traghetto e fine della
colonia.

\item[$\Box$] {\large {\tt >}}\nopagebreak

Nei modi controllo o osservazione, fa avanzare il tempo fino all'evento successivo o allo scadere
dell'anno senza aggiornare la mappa.

\end{itemize}

\subsection{Utilit\`{a}}

\begin{itemize}

\item[$\Box$] {\large {\tt Backspace}}\nopagebreak

Mostra l'elenco degli ultimi messaggi.

\item[$\Box$] {\large {\tt ?}}\nopagebreak

Mostra un elenco dei comandi accettati.

\item[$\Box$] {\large {\tt \$}}\nopagebreak

Mostra una stima del valore della colonia.

\item[$\Box$] {\large {\tt R}}\nopagebreak

Ridisegna la mappa.

\item[$\Box$] {\large {\tt D}}\nopagebreak

Scarica su disco la mappa come file testo di nome {\tt elan.map}.

\end{itemize}

\subsection{Generali}

\begin{itemize}

\item[$\Box$] {\large {\tt L}}\nopagebreak

Carica l'ultima partita salvata.

\item[$\Box$] {\large {\tt S}}\nopagebreak

Salva la partita corrente.

\item[$\Box$] {\large {\tt Q}}\nopagebreak

Simula dieci anni di evoluzione della colonia, calcola il punteggio finale ed esce dalla
simulazione. Il processo si interrompe allo scadere dell'anno se nel frattempo \`{e} stato premuto
un tasto.

\item[$\Box$] {\large {\tt Esc}}\nopagebreak

Esce immediatamente dalla simulazione.

\end{itemize}

\section{Simboli}

In tabella \ref{symboltable} (p. \pageref{symboltable}) sono riportati i simboli impiegati sulla
mappa, ad eccezione di quelli usati per rappresentare i condotti.

Gli impianti sono rappresentati attraverso la lettera associata, nel colore caratteristico della
risorsa prodotta. Per gli impianti dotati di capacit\`{a} interna la lettera \`{e} maiuscola se la
capacit\`{a} corrente supera l'1\% del massimo nominale, minuscola altrimenti. Per tutti gli altri
la lettera maiuscola significa che l'uscita supera l'1\% del massimo nominale. Se la lettera \`{e}
in campo inverso l'impianto \`{e} efficiente, indipendentemente dal fatto che sia o meno in
funzione, altrimenti \`{e} guasto.

Anche i robot sono rappresentati attraverso la lettera associata, maiuscola quando il robot \`{e}
in attivit\`{a}, minuscola quando \`{e} spento per mancanza di potenza di CPU.

I condotti sono rappresentati attraverso simboli convenzionali che ne ricordano la direzione di
stesura, nel colore della risorsa trasportata, mentre gli incroci da {\tt x} minuscole nel colore
del condotto soprastante. I punti di prelievo sono contrassegnati da un numero che indica il
numero di impianti connessi a quel segmento di condotto.

I diversi tipi di terreno sono rappresentati da spazi, per le cime, o da simboli di punteggiatura
al decrescere della quota, fino alle valli contrassegnate da asterischi. Cime e valli non sono
visibili in prima scansione e compaiono solo durante l'esplorazione dell'ambiente. Le caselle
inesplorate hanno un colore diverso da quelle esplorate, e gli oggetti sono visibili solo se si
trovano nelle seconde.

\begin{table}
\caption{Principali simboli di mappa}\label{symboltable}
\begin{center}
\begin{tabular}{|c|l|}
\hline
\multicolumn{2}{|c|}{Impianti} \\
\hline
{\tt E} & Pannello solare \\
{\tt N} & Reattore nucleare \\
{\tt H} & Impianto di riscaldamento \\
{\tt W} & Processore d'acqua \\
{\tt A} & Processore d'aria \\
{\tt D} & Distilleria \\
{\tt G} & Serra \\
{\tt P} & Piantagione \\
{\tt Y} & Lievitatore \\
{\tt B} & Batteria \\
{\tt U} & Cisterna d'acqua \\
{\tt O} & Serbatoio d'aria \\
{\tt F} & Magazzino del cibo \\
{\tt S} & Silo di biomassa \\
{\tt \$} & Serbatoio di elan \\
{\tt C} & Computer \\
{\tt @} & Habitat \\
{\tt \&} & Hybridome \\
{\tt M} & Metamorpher \\
{\tt R} & Radiatore \\
\hline\hline
\multicolumn{2}{|c|}{Robot} \\
\hline
{\tt I} & Robosonda \\
{\tt J} & Incursore \\
{\tt K} & Sterminatore \\
{\tt L} & Stalker \\
{\tt T} & Guardiano \\
\hline\hline
\multicolumn{2}{|c|}{Forme di vita} \\
\hline
{\tt X} & Parassita alieno \\
{\tt Z} & Riproduttore alieno \\
{\tt \#} & Gizmo di plasma \\
{\tt \^{}} & Talpa aliena \\
{\tt \&} & Forma pantropica \\
{\tt ?} & Forma mutante \\
\hline\hline
\multicolumn{2}{|c|}{Terreni} \\
\hline
& Cima \\
{\tt .} & Regione superiore \\
{\tt :} & Regione intermedia \\
{\tt ;} & Regione inferiore \\
{\tt *} & Valle \\
\hline
\end{tabular}
\end{center}
\end{table}

Nonostante l'assenza di colori la renda di difficile lettura, \`{e} parso comunque utile
includere in figura \ref{map} la mappa di una colonia nello stadio terminale del suo
sviluppo, ripulita dai simboli relativi al tipo di terreno. L'immagine originale a colori
\`{e} inclusa nel pacchetto di distribuzione.

\begin{figure}
\caption{Esempio di mappa}\label{map}
\begin{verbatim}
                                     Y   Y
                                     1---1
                                     |
                     +1-1-------+--+-x+
                     |H1R+-----+1 $| ||
                     | | 1O W C1M11x-+|
                     |B2A1+-221-1-xx11|
                     | | ||O @2F|$1|&||
                     |E2A1x211| ++|| ++
                     | | |+1@1x-+|1|
                     |E1-xx22-1F|1D1--------+
                     | | +x1G1--+|11--+P   P|
                     |E2W1+2-1U || S S111P 1|
                     | | | U |  1x1+  | +--1|
                     |E1W1   1N H|H| S2P1P P|
                     | 12-1-1-2-2+2+--------+
                     |B E E E E B B|
                     +-------------+
\end{verbatim}
\end{figure}

\section{Suggerimenti}\label{tips}

Per un gioco proficuo, si consiglia di seguire le seguenti poche regole per sopravvivere:

\begin{itemize}

\item Collocare inizialmente l'habitat in una regione ad alta quota, adatta per l'installazione
dei processori atmosferici. Se la zona non ne presenta di sufficientemente estese, generarne una
nuova.

\item Progettare una colonia compatta, perch\`{e} anche la stesura dei condotti di distribuzione
delle risorse ha un costo che dipende dalla risorsa e deve essere preventivato.

\item Non confondere la creazione di un nuovo condotto con l'estensione di un condotto esistente,
poich\`{e} non si possono fondere due condotti successivamente.

\item Proteggere la colonia circondandola con condotti del calore stesi lungo le direzioni
cardinali poich\`{e} i tratti diagonali possono essere attraversati.

\item Utilizzare gli impianti di stoccaggio per smorzare le conseguenze del ciclo stagionale ed
immagazzinare le risorse da vendere in attesa del traghetto.

\item Controllare manualmente l'uscita degli impianti quando una risorsa scarseggia, poich\`{e} le
priorit\`{a} di produzione indotte dalla regolazione automatica non sempre sono quelle desiderate.

\item Controllare manualmente l'uscita degli impianti se si desidera una risposta in tempo minimo,
poich\`{e} la regolazione automatica produce transitori pi\`{u} lenti che consentono minori
sprechi delle risorse immagazzinate.

\item Ricordare che gli impianti si usurano e questo comporta minore efficienza e maggiore
probabilit\`{a} di guasto, che nel caso di un habitat pu\`{o} avere conseguenze disastrose.

\item Non consentire mai alla popolazione umana di scendere troppo al di sotto del numero dei
sistemi, poich\`{e} questo aumenta pericolosamente il tempo medio di riparazione.

\item Appena il capitale lo consente, comperare un habitat di backup da tenere eventualmente a
regime.

\item Tenere sotto controllo l'attivit\`{a} aliena e non essere impazienti con i robot.

\end{itemize}

\section{Note tecniche}\label{technical}

Il sorgente \`{e} quasi completamente ANSI C, con la parte dipendente dal sistema racchiusa nei
moduli:

{\tt system.h} e {\tt console.\{c|h\}}.

Tutte le chiamate a funzioni non contenute nella libreria standard sono in {\tt console.c} ed il
trasporto verso sistemi che dispongono di un driver ANSI per la console consiste nella semplice
riscrittura di queste.

L'eventuale aggiunta di una interfaccia grafica minimale comporterebbe cambiamenti pi\`{u}
profondi ma limitati ai moduli:

{\tt interf.\{c|h\}}, {\tt files.\{c|h\}}, {\tt config.\{c|h\}}, {\tt texts.\{c|h\}},
{\tt symbols.\{c|h\}} e {\tt symtable.c}.

Tutta la restante parte \`{e} indipendente dalle modalit\`{a} di rappresentazione.

Attualmente, il formato dei savefile \`{e} dipendente dal sistema su cui gira {\sf Elan}.
Implementare un formato di savefile indipendente dal sistema comporta la riscrittura del solo
modulo {\tt files.\{c|h\}}.

La versione che si appoggia sulla libreria ncurses \`{e} virtualmente ricompilabile su qualunque
sistema per cui questa sia disponibile, non contenendo alcuna chiamata a funzioni specifiche di
Unix.

\section{Avvertenze e bug noti}

\begin{itemize}

\item Se si cancella un impianto vicino ad altri impianti, tutti connessi ad un condotto che vi
passa in mezzo in punti distinti ma circostanti l'impianto da cancellare, i simboli dei punti di
prelievo sul condotto interessato possono non essere aggiornati in maniera corretta. Questo \`{e}
solo un problema di rappresentazione e non ha alcuna conseguenza sullo stato della simulazione. Il
caso si presenta assai raramente e non sembra meritevole di correzione, ma opinioni diverse in
merito verranno considerate.

\item La simulazione rallenta sensibilmente all'aumentare del numero delle forme di vita presenti
sulla mappa. La soluzione adottata in giochi analoghi \`{e} quella di imporre un massimo al numero
delle stesse, ma appare irrealistica e assai discutibile. Indipendentemente da considerazioni
tecniche, se la popolazione aliena inizia a crescere esponenzialmente la cosa migliore da fare
\`{e} rinunciare a combatterla abbandonando il gioco.

\item Le unit\`{a} di misura impiegate per le risorse sono del tutto arbitrarie e verranno rese
pi\`{u} realistiche in versioni future.

\item La versione Linux/ANSI non supporta lo spengimento del cursore durante l'aggiornamento dello
schermo per mancanza di una sequenza standard apposita, mentre quella Linux/ncurses lo fa sui
terminali che lo consentono. L'affidabilit\`{a} della seconda dipende dalla versione della
libreria ncurses utilizzata.

\end{itemize}

\section{Autori e strumenti}\label{credits}

Idea, progetto ed implementazione su Commodore Amiga sono di Andrea Giotti. Le due versioni Linux
ed il pacchetto di distribuzione sono opera di Michele Bini, che ha fornito inoltre molti consigli
utili durante la messa a punto di {\sf Elan}. La versione OS/2 e la documentazione inglese sono
di Duncan Wilcox.

I sistemi impiegati per lo sviluppo sono stati un Amiga 4000/040 ed un compatibile con processore
Pentium, i compilatori utilizzati SAS/C, GCC ed IBM C-Set, il testo di riferimento la guida ANSI C
della Mark Williams.

Un ringraziamento agli innumerevoli autori di Moria per l'esempio fornito.

Se il gioco vi piace, siete pregati di spedire una cartolina a:

\begin{tabbing}
xxxxxx \= \kill
\> Andrea Giotti \\
\> P.za Monteoliveto, 10 \\
\> 51100 Pistoia \\
\> Italy
\end{tabbing}

\end{document}

