5.
FAQ
5.1 Indice delle domande
1) Qual'è il linguaggio di programmazione più adatto allo sviluppo
dei videogiochi?
2) Io voglio lavorare per una software house. Come posso fare?
3) Stavo pensando di formare un gruppo di programmazione con i miei
amici, avrò mai possibilità di successo?
4) Come è organizzato un team di sviluppo per videogiochi?
5) Cerco dei tutorials...
6) Sono un Niubbo e non conosco nessun linguaggio di programmazione,
ma voglio sviluppare un videogioco
7) Sono un Niubbo e sono completamente ignorante sulla
programmazione dei videogiochi, ma conosco alcuni linguaggi di
programmazione e vorrei essere illuminato sull'argomento. Da dove
posso cominciare?
8) Dove posso scaricare i DirectX?
9) Qual'è l'ambiente di sviluppo/compilatore ideale per creare
videogiochi?
10) Come posso creare un programma DOS da VC++?
11) Sviluppo videogiochi con software dedicato, come Klik & Play
e The Games Factory. Sono IT (In Topic)?
12) Esiste un archivio in cui sono presenti tutti i post di tutti i
NG?
13) Voglio realizzare un videogioco per Linux, oppure un porting di
un videogioco che ho già scritto. Che devo fare?
14) Quali sono le fasi di creazione di un videogioco?
15) Perché ho un errore di "Undefined External Symbol" o
"Unresolved External" quando compilo gli esempi dell'SDK
di DirectX?
16) Scusate la domanda che è molto banale però non riesco a
venirne fuori: posso interfacciarmi in qualche modo con le Directx
lavorando con WinNT?
17) Premettendo che utilizzo 3DStudio Max, Come faccio a creare file
con estensione .x visto che non si può esportare questo formato?
18) Cos'è il DIV?
19) Abbiamo una FAQ?
5.2 Domande e Risposte
1) D: Qual'è il linguaggio di programmazione più adatto allo
sviluppo dei videogiochi?
R: Senza dubbio è il C++. Naturalmente, alcune sezioni di
codice, necessiteranno una maggiore velocità di esecuzione e quindi
dovranno essere scritte in un linguaggio più veloce, quale è
l'Assembler proprio della macchina su cui è sviluppato il
videogioco.
2) D: Io voglio lavorare per una software house. Come posso fare
?
R: Prima di tutto bisogna essere ben consci di saperci fare (è
inutile presentarsi se non si sa fare nulla, per questo ci sono i
corsi, le scuole e lo studio come autodidatta); poi di solito è
necessario avere un titolo di studio in informatica anche solo il
diploma (non la laurea); inoltre avere qualche anno di esperienza
alle spalle aumenta le possibilità di essere presi; se avete già
programmato qualche demo o qualche veloce e strabiliante routine di
cui siete fieri basta mandarla insieme ai dati personali alle
software house, una volta analizzati se vengono ritenuti buoni
sarete fatti chiamare e invitati negli uffici per un colloquio; non
disperate insomma, e mandate materiale alle software house, non è
vero che cestinano tutto se il materiale è buono viene visto sempre
considerato, inoltre quando negli annunci vedete le richieste di
laureati a volte bisogna non farci caso e presentarsi comunque se vi
sentite all'altezza, a volte le aziende usano questo trucco per
essere sicure che si presentino solo poche e valide persone, in
Italia si cercano soprattutto buoni coder (anche non laureati) a
volte anche incapaci in materia di videogiochi, ma capaci."
3) D: Stavo pensando di formare un gruppo di programmazione con i
miei amici, avrò mai possibilità di successo?
R: Non bisogna disperare mai ! Ci sono due possibilità in questo
tipo di attività: la prima è scrivere giochi per ditte più grandi
e rientrare nel gioco come collaboratori esterni, e di solito è
così che si inizia; oppure se si fa un bel gioco di qualità dopo
averlo distribuito un po' in giro, magari lo si può anche mandare a
qualche rivista tecnica dove qualcuno farà sicuramente una piccola
recensione e
se il risultato sarà positivo potrete presentarla da qualche
publisher (le ditte che si occupano della masterizzazione e
distribuzione dei CD) e fargli vedere il materiale, a volte si
possono fare grandi cose in questo modo, in Italia ditte come
Microforum o DynaByte non cercano giochi ma anche piccoli titoli da
dischetto che magari verranno distribuiti in edicola, ma
l'importante è farsi conoscere. Se poi tutto questo non funziona
bisogna avere pazienza e mandare il proprio lavoro come freeware sul
mercato e chiedere alla gente di mandare dei ringraziamenti per il
gioco senza pagare,se dopo qualche mese i ringraziamenti sono
parecchi si può rendere il programma shareware e farsi pagare
piccole somme per la registrazione, cosi si inizia a fare qualche
soldo che potrà essere investito in apparecchiature e per
migliorare il proprio lavoro.
4) D: Come è organizzato un team di sviluppo per videogiochi ?
R: Fare videogiochi è cambiato molto rispetto a 5-6 anni fa. A quel
tempo uno poteva permettersi di lavorare da solo. Ora le cose sono
cambiate, perché sviluppare un progetto serio su PC non è uno
scherzo e richiede il lavoro ben organizzato di più persone.
Insomma è necessario:
- Il progetto creativo o ideazione : è bene all'inizio del lavoro,
sedersi tutti a un tavolo e spremersi le meningi su come dovrà
essere il videogioco, cioè proporre tutte le idee possibili, senza
preoccuparsi della realizzazione.
- Il progetto tecnico o elaborazione: è assolutamente necessario un
progetto il più completo possibile, di tutto quello che si deve
fare. C'è un tempo per l'ideazione (e fin qui il lavoro può essere
svolto in piena anarchia organizzativa) e uno per l'elaborazione
(dove bisogna pensare a tutto). Non lasciate mai nulla al caso
perché è sempre peggio.
- L'organizzazione: quando il lavoro coinvolge più persone, quindi
collegate fra loro, è importante essere ordinati (per perdere meno
tempo possibile), avere i servizi in comune (es. antivirus, backup,
aggiornamento software etc) e che ognuno sappia esattamente cosa
deve fare.
-La direzione: ci vuole qualcuno che funzioni da perno centrale, che
segua la regia del progetto, che prenda le decisioni quando nascono
diversi punti di vista.
- Il budget: bisogna domandarsi quanto tempo c'è a disposizione,
quali sono i mezzi disponibili e quelli necessari, quante persone si
possono o si devono coinvolgere, quali strumenti sono necessari e
quali no, che utilizzo fare del software a disposizione. Non
lavorare mai su un progetto software 'disordinato' con un team
'empirico'. Bisogna essere convinti che bisogna fare una cosa alla
volta, iniziandola, finendola, testandola, dopodiché metterla da
parte e iniziare a costruirci qualcos'altro sopra. Non si può
cambiare idea ogni due giorni, altrimenti il progetto sarà
disorganizzato e i tempi di produzione si allungheranno di
parecchio. Quando si fa un videogioco si ha una fretta indiavolata
di vedere tutto su schermo. Ma si deve imparare a pazientare un po'
di più e costruire delle solide fondamenta, in maniera da non dover
sottostare alla "regola del 70% e del 30%" : si dice che
un team 'empirico' ci metta il 30% del tempo per sviluppare il 70%
del gioco, e il 70% del tempo per sviluppare l'ultimo 30%. Lavorare
senza ordine e senza progetto è come fare le pentole senza i
coperchi."
5) D: Cerco dei tutorials...
R: corri subito a dare un'occhiata su http://www.multiplayer.it/itaprogaming
6) D: Sono un Niubbo e non conosco nessun linguaggio di
programmazione, ma voglio sviluppare un videogioco
R: Bene, inizia a studiare qualche linguaggio di programmazione
(preferibilmente il C/C++) e poi
guarda la risposta alla domanda di sotto...
7) D: Sono un Niubbo e sono completamente ignorante sulla
programmazione dei videogiochi, ma conosco alcuni linguaggi di
programmazione e vorrei essere illuminato sull'argomento. Da dove
posso cominciare?
R: Potresti iniziare a studiare alcuni SDK, come OpenGL o
DirectX. Scaricali dai loro siti ufficiali (www.microsoft.com
e www.opengl.org )
8) D: Dove posso scaricare i DirectX?
R: www.microsoft.com/directx
9) D: Qual'è l'ambiente di sviluppo/compilatore ideale per
creare videogiochi?
R: Per evitare i problemi di compatibilità di tutte le librerie
in generale, è consigliabile utilizzare Visual C++, dato che la
maggior parte delle librerie, sono state scritte appositamente per
questo compilatore. Naturalmente è possibile utilizzare altri
compilatori, come il DJGPP (www.delorie.com)
che è interamente free e il Borland C++ 5.x/Borland C++ Builder.
Ultimamente la Borland ha anche rilasciato una versione free del suo
compilatore... sarebbe un peccato non scaricarla!
10) D: Come posso creare un programma DOS da VC++?
R: Non puoi :)
11) D: Sviluppo videogiochi con software dedicato, come Klik
& Play e The Games Factory. Sono IT (In Topic)?
R: In teoria dovresti essere IT, ma raramente troverai persone
che dedicano anima e corpo a questi software :)
12) D: Esiste un archivio in cui sono presenti tutti i post di
tutti i NG?
R: Sì, lo trovi su http://www.dejanews.com
13) D: Voglio realizzare un videogioco per Linux, oppure un
porting di un videogioco che ho già scritto. Che devo fare?
R: Per non complicarti troppo la vita, prova a dare un'occhiata
su http://www.devolution.com
sulla voce "SDL". Si tratta di alcune librerie dedicate
allo sviluppo dei videogiochi sotto questo sistema operativo
(Somigliano moltissimo alle DirectX)
14) D: Quali sono le fasi di creazione di un videogioco?
R: Dal momento in cui viene concepita l'idea del gioco fino a
quanto diventa definitivo, il videogioco attraversa 5 fasi:
- Ideazione: in questa fase si mette a fuoco COSA si vuole fare,
cercando di chiarirsi le idee circa il software che sarà
necessario, i sistemi di gioco che lo sfrutteranno, la quantità di
materiale da produrre, la trama e i personaggi del gioco. In questa
prima fase è importante definire l'idea del soggetto: cercare di
essere originali. Basta con i soliti soggetti fantascentifici,
postatomici, fantasy, sportivi o pseudomilitari. Il mondo della
fantasia è molto vasto, quindi perché usare sempre le stesse idee?
+ Utente: pensare chi userà il videogioco (es. fascia di età del
videogiocatore) Fare in modo che una certa complessità di contenuti
sia inversamente proporzionale l'utilizzo del gioco. In genere, più
l'utente è maturo meno voglia ha di impazzire sui comandi (maniaci
a parte).
+ Sistemi di gioco: provocare divertimento e non frustazione. Per
evitare la Gameoverfobia, per esempio nelle avventure Lucas non si
muore mai, e qualsiasi situazione può essere recuperata. La gente
ormai non ha più voglia di impazzire cercando di risolvere
complicatissimi adventure. Vuole storie da giocare rilassandosi.
+ Stile: chiarire bene quale sarà l'utilizzo e quindi il tipo di
grafica e di audio. Per un gioco arcade visto dall'alto non valgono
le stesse regole adoperate per un adventure con punto di vista
laterale, o magari realizzata con grafica cartoon.
- Progetto: a questo punto comincia l'elaborazione delle cose ideate
nella fase precedente
+ Progetto software basso livello: graphic device, audio device,
input device i/o device. I motori grafico sonori veri e propri.
+ Progetto software alto livello: (engine software vero e proprio,
intelligenze, utilizzo dei vari device di basso livello), editor
necessari all'inserimento dei dati (in maniera che la definizione
della logica
possa diventare semplice ed intuitiva.
+ Specifiche funzionali: che 'dimensioni' deve avere il materiale
grafico sonoro-logico per far funzionare il gioco. Quali sono i
valori minimi e massimi associabili a ogni parametro. Come sfruttare
il software.
+ Storyboard: quale grafica, quale sonoro, quali testi devono essere
realizzati.
+ Organizzazione: chi fa cosa, in che tempi, usando quali
specifiche.
- Scrittura software: come già visto si compone di
+ Basso livello: il software direttamente a contatto con l'hardware,
ovvero quello che controlla le schede grafiche - sonore - I/O. Non
scartate mai l'idea di cercare quello che vi serve sulle riviste di
informatica e di acquistarlo. Cosi facendo vi assicurerete
l'utilizzo di software sicuramente ben fatto, testato, documentato
opportunamente e risparmierete tantissimo tempo.
+ Alto livello: il software costruito sul basso livello. Cercate di
mantenere alto e basso livello sempre adeguatamente separati, in
maniera chiara e pulita. Spesso capita di realizzare un videogioco
in diverse versioni, per computer diversi che usano elettronica (e
quindi un 'basso livello') diversa rispetto al PC. Lavorando in
maniera 'pulita' vi troverete a riscrivere solo il basso livello
ritoccando solamente quello alto. Ogni macchina poi ha le sue
particolarità. In PC bisogna scrivere tutto, nel MAC troviamo la
gestione delle finestre a livello hardware (leggi : uso delle
finestre anche attraverso codice asm), e nell'Amiga troviamo
coprocessori grafico sonori e un codice assembler unico.
+ Editor: tutti i programmi che vengono usati unicamente per lo
sviluppo e che poi non vengono inclusi nel master. Normalmente
scritti in linguaggi come Visual Basic o Delphi, semplici e
facilmente modificabili.
- Produzione materiale: composto di:
+ Modelli 3D, fotografie, illustrazioni su carta: quello che viene
definito materiale 'sorgente', che viene creato per realizzare il
materiale vero e proprio. I modelli 3D per esempio, devono essere
renderizzati secondo specifiche per poter apparire nel gioco.
+ Grafica statica: tutta grafica di sfondo, dei menu, delle icone.
è qui compresa anche la grafica cosidetta 'modulare', quella cioè
realizzata a pezzi per essere utilizzata in maniera complessa dal
software (a differenza di uno sfondo che invece va solamente
visualizzato).
+ Animazioni: le parti animate della grafica, che quindi comprendono
un lavoro di creazione dei vari fotogrammi (quindi anche utilizzo di
metodi come filmaggi etc), di montaggio dell'animazione, di
definizione del ritardo di ogni singolo fotogramma.
+ Musiche: realizzate in maniera 'modulare' (cosicché possano
essere suonate dal software 'diversamente' a seconda di come vanno
le cose nel gioco) oppure semplice. Possono contenere strumenti
campionati oppure no (dipende dal software utilizzato).
+ Effetti sonori: creazione dei vari samples e studio del loro
utilizzo all'interno dell'ambiente di gioco.
- Master, Logica, Montaggio e Testing: una volta che il software
funziona e il materiale è stato realizzato, si 'mette tutto
insieme'
+ Logica: inserimento delle tabelle, descrizione delle intelligenze,
parametratura e :
+ Montaggio: mettere tutto insieme e incrociare le dita. Qui
cominciano i guai se il lavoro di progetto è stato fatto male.
Avete idea di cosa significhi un videogioco funzionante con engine
multitasking senza nessuna documentazione disponibile che dà dei
problemi appena cominciate ad inserire la grafica? Da spararsi !!!
+ Master: tutti gli errori di software e materiale saltano fuori in
questa fase (tutti assieme appassionatamente :) ) e prima di vedere
qualcosa muoversi bisogna portare pazienza e ammazzare uno dopo
l'altro i bug che saltano fuori.
+ Testing: provare e riprovare il gioco, in tutte le sue
possibilità. Il lavoro dei testers è quello di dare le brutte
notizie ai programmatori. Ma quando tutti i testers danno l'OK
possiamo dire che il gioco è veramente pronto!"
15) D: Perché ho un errore di "Undefined External
Symbol" o "Unresolved External" quando compilo gli
esempi dell'SDK di DirectX?
R: Quando si definisce un prototipo di una funzione, il
compilatore, mette un "segnaposto" nella posizione della
funzione. La descrizione (Il codice, in pratica) della funzione,
probabilmente si
troverà in un altro file di codice .C, .CPP o LIB. Se il codice di
questa funzione, non è presente, il Linker, invierà un errore di
"Unresolved External".
Per risolvere questo problema, occorre inserire le librerie (File
con estensione .LIB) fornite con L'SDK stesso all'interno del
progetto; solitamente "ddraw.lib" "dsound.lib"
"dinput.lib", "dxguid.lib", ecc.
16) D: Scusate la domanda che è molto banale però non riesco
a venirne fuori; posso interfacciarmi in qualche modo con le Directx
lavorando con WinNT?
R: Puoi utilizzare solo DirectX3, niente D3D. Il DirectSound e il
DirectInput sono lentissimi perché sono disponibili soltanto in
modalità software (HEL)
17) D: Premettendo che utilizzo 3DStudio Max, Come faccio a
creare file con estensione .x visto che non può esportare questo
formato?
R: La risposta è semplice: All'interno di ogni pacchetto SDK di
DirectX, c'è un'utilità che si chiama conv3ds.exe. Questa
applicazione, converte il file .3ds esportabile da MAX in file .x
utilizzabili dalle vostre applicazioni Direct3DIM/Direct3DRM.
18) D: Cos'è il DIV?
R: E' un ambiente di sviluppo per videogiochi che ha un
linguaggio molto simile al C. Il costo è bassissimo e può essere
acquistato in edicola, peccato però che lavora sotto dos.
19) D: Abbiamo una FAQ?
R: >:-| |