Indice del libro

Prima di passare all'uso pratico di GtkRadiant, occorre passare alcuni minuti a riflettere su come i videogiochi Quake-like rappresentano in una mappa tutti gli elementi tipici del proprio gameplay. Neverball, che come già detto useremo per questi tutorial, utilizza teletrasporti, interruttori, shinker (Rendere più piccola la palla), grower (Il contrario), monetine, etc. per rendere il gioco più completo di quanto non lo sarebbe con un puro insieme di oggetti fisici. Tutte queste entità sono dette... entità. Coerente, dopotutto.

Un'entità è un insieme di attributi, un attributo è una struttura di informazione formata da un identificatore e un valore. Ogni entità ha un attributo "classname", che definisce il nome dell'entità stessa. Potremmo paragonare la struttura di un'entità agli array associativi del PHP.

Caratteristiche astratte

modifica
  • Ad ogni entità si associa un nome, dato dal valore dell'attributo "classname".
  • Un'entità può avere una posizione nello spazio.
  • Un'entità può avere infiniti attributi, teoricamente.
"classname" => "nome entità",

"attributo1" => "valore",

"attributo2" => "valore";

Entità per rappresentare i videogiochi

modifica

Spesso il significato di un'entità cambia da gioco a gioco, le entità Weapons per esempio hanno significato solo nei videogiochi sparatutto e le entità Team addirittura solo in Quake III. Tuttavia alcune di esse, che sono presenti in ogni mappa, hanno funzioni analoghe in tutti i giochi. Per creare entità in un certo punto in GtkRadiant, nella finestra di progettazione basta premere il tasto destro del mouse. La prima regola delle entità dice che a ogni entità va associato un nome: questo in genere è una stringa fatta di tre nomi che ne specificano l'utilizzo separati da underscore. Questa regola è convenzionale e non necessaria. In GtkRadiant, nel menù contestuale vengono organizzate in gruppi in base a come comincia il nome di ciascuna entità. Vedremo successivamente come si codificano attributi in un'entità tramite la UI di GtkRadiant.

Entità di Neverball

modifica

Info_Player_Start

modifica

Questa entità definisce il punto di partenza. Ne va inserita una per mappa, in una posizione arbitraria. Il suo unico attributo è opzionale, radius. Il valore di default è 0.25 e serve per modificare la grandezza del giocatore (il raggio della pallina in questo caso!).

Info_Player_Deathmatch

modifica

Questa entità definisce la fine della mappa. Se ne possono definire più di una in una stessa mappa. Come Start, oltre all'attributo origin che viene gestito da GtkRadiant automaticamente, le Deaths hanno un solo attributo opzionale chiamato radius, che ne definisce il raggio. Di default è 0.25.

Questa entità definisce una "luce". In gergo per luce si intende qualsiasi cosa che emette luminosità in maniera dinamica e automatica. In Neverball, le light sono monete da raccogliere. In altri giochi questi Item non definiscono nulla, solo la fonte di luce. L'unico attributo da specificare, obbligatorio, è "light", che vale 1 di default e indica l'intensità (il valore delle monetine in questo caso!).