ArsLudica.org Forum
Cogitare => Officina Creandi => Topic aperto da: Cherno - Febbraio 26, 2008, 23:43:02
-
Bon ho deciso di aprire questo topic dove farò delle domande a caso
riguardanti la programmazione di un videogame, sperando di ricevere
risposte e sperando anche, con il tempo, di riuscire a darmele da solo.
Insomma una sorta di diarietto.
Via con la prima:
Geometry Instancing: non lo comprendo.
Insomma leggo che nella sostanza si va a creare un vertex buffer il
quale mi va a definire un oggetto 3d da disegnare, poi si crea un
buffer di attributi per ogni istanza prevista (tipo posizione che sicuramente
cambierà ed altri attributini con i quali interagire nei vari shader).
Fatto questo si fa una sorta di chiamata nel quale si dice
Disegna(VertBuff,IndexBuff,nIstanze);
Ok, tutto bello. Ma se alla fine faccio un Vertex Buffer grosso tanto
da contenere le informazioni geometriche di tutte le istanze, poi creare il buffer
degli attributi come sopra e sparare tutto a video...non è lo stesso?
HALP!
-
Il giusto è questo: tu mandi alla scheda una sola mesh, seguita da una sfilza di informazioni, tipo le matrici ed i materiali.
Facendo così mandi una sola mesh (tanti dati) e le info (pochi dati).
Così il bus è molto più libero, perchè mandi una sola mesh invece che centomila :D
-
Comprendo. per geometria che richiede parecchi aggiornamenti può starci.
Ma per geometria che rimane statica in memoria video, quindi trasferimenti sul bus nulli? E'
effettivamente utile (a parte il fatto che fa tutto la api)?
-
Comprendo. per geometria che richiede parecchi aggiornamenti può starci.
Ma per geometria che rimane statica in memoria video, quindi trasferimenti sul bus nulli? E'
effettivamente utile (a parte il fatto che fa tutto la api)?
Se sei certo che stia lì sempre, allora no :)
-
Comprendo. per geometria che richiede parecchi aggiornamenti può starci.
Ma per geometria che rimane statica in memoria video, quindi trasferimenti sul bus nulli? E'
effettivamente utile (a parte il fatto che fa tutto la api)?
Se sei certo che stia lì sempre, allora no :)
Monops, ma il thread sulle umbrella girl? ???
-
Comprendo. per geometria che richiede parecchi aggiornamenti può starci.
Ma per geometria che rimane statica in memoria video, quindi trasferimenti sul bus nulli? E'
effettivamente utile (a parte il fatto che fa tutto la api)?
Se sei certo che stia lì sempre, allora no :)
Monops, ma il thread sulle umbrella girl? ???
Quale? :D
-
Comprendo. per geometria che richiede parecchi aggiornamenti può starci.
Ma per geometria che rimane statica in memoria video, quindi trasferimenti sul bus nulli? E'
effettivamente utile (a parte il fatto che fa tutto la api)?
Se sei certo che stia lì sempre, allora no :)
Monops, ma il thread sulle umbrella girl? ???
Quale? :D
non lo so, ma un topic sulle umbrella girl va aperto assolutamente...
cosa sono le umbrella girl?
-
L'equivalente di questo http://en.wikipedia.org/wiki/Race_queen (http://en.wikipedia.org/wiki/Race_queen)
Solo con gli ombrelli.
Dai le tipine così carine che proteggono dal sole i piloti delle gare di motociclette prima della partenza...
:P
Se non sbaglio il buon Monopoli le aveva tirate fuori durante la strigliata allo speciale di TGM sul primo gioco in 3D.
Che poi... scusatemi, ho capito che non è quake, ci sono arrivato, ma allora qual'è? Descent, Driller o Ultima Underworld?
-
Si ma siete ot :fag:
-
:timido: Vero, scusa.
-
La gestione della camera è una roba davvero complessa. Non tanto la realizzazione in se,
quanto più renderla comoda e non fastidiosa: una soluzione per i grandi ambienti che ho
trovato carina è quella di Shadow of the Colossuss.
Visualizziamo un attimo:
rispetto al pg è posizionata alle spalle, sollevata in aria. L'inquadratura
non è centrata rispetto all'eroe ma è un pelo più spostata, sulla sinistra o sulla destra.
Quando il giocatore muove il suo alter ego spostando avanti, od indietro, la leva analogica,
la camera segue. Quando lo sposta usando la levetta analogica verso sinistra o destra, la
camera rimane ferma dov'è, il pg corre di lato girandogli attorno e quest'ultima lo inquadra.
Ora devo lavorare, poi aggiungo altro. :sisi:
-
Io non ho amato da morire la camera di SOTC; mi scocciava soprattutto che quando la posizionavo come piaceva a me poi tornava immediatamente a non inquadrare nulla di interessante :ehm:
-
E' vero, è parecchio migliorabile. Nonostante tutto è fatta in modo da farti capire
quanto il pg sia davvero piccolo rispetto all'ambiente.
Piccola ritrattazione: non è vero che quando si sposta lo stick indietro la camera segue.
Quando lo si fa il pg viene verso di noi per poco, poi si mette a girare in tondo come
quando si sposta lo stick a destra ed a sinistra :sisi:
Mi piacerebbe leggere qualcosa a proposito del design delle camere nei vg, ma ho
trovato davvero poco.
Vostre idee ed impressioni in generale?
-
Una delle mie camere preferite è ovviamente quella di Zelda: OoT. Vero che il gioco ha controlli mooolto limitati (vi immaginate un gioco in cui non si può nemmeno saltare?), ma è degna di nota la semplicità della personalizzazione dell'inquadratura, limitata alla pressione di un tasto per metterla dietro al personaggio (e la visuale in prima persona, scarsamente utile).
-
Comincio a provare un odio viscerale verso xna: possibile mai che per disegnare un paio di
linee in 2d debba:
1)Dichiarare un vertexbuffer
2)dichiarare un vertex declarator
3)dichiarare visuale view*proj
4)creare un file fx con tanto di shaders(semplici semplici)
??
Ma che oh?
Invece per disegnare uno sprite bastano 3 righe di codice, gliene do atto :D
edit:
quindi per disegnare la mia griglia 2d ho generato uno sprite a forma di quadrato e li
ho disegnati uno di fianco all'altro. Tiè :asd:
-
Ma quanto è veramente utile l'xml? Non è che a volte è un pò sopravvalutato?
Per esempio ora sto scrivendo un editor, la mia struttura dati è una griglia di tile m*n di
dove la dimensione delle tiles d è fissa. Ad ogni elemento della griglia sarà associata una
tile.
Quindi io avrò:
n_tilex = n
n_tiley = m
tile_size = d
[erba.png 0, 1 , 10, 15 ]
[erbaterrosa.png 3, 12, 20 ]
ecc ecc..
Dove quello rappresentato fra parentesi è il nome della tile e la posizione di riferimento rispetto
alla mia griglia n*m.
Il dubbio che mi sorge in quanto mi si è proposto di usare XML come formato (dubbio relativo
perchè in cuor mio già so dove andrò a parare :D ) è: per una roba del genere è utile usare xml?
Personalmente mi sembra uno spreco di byte inutile :/
-
Non so come sia utilizzato tutto ciò. XML è utile ad esempio per creare strutture dati flessibili (quindi come data definition language) o come mezzo di comunicazione, o di conservazione dei dati. Ti fa lavorare di più all'inizio, ma dà più soddisfazioni alla fine.
Questo per buttare lì qualche idea sparsa.
-
Ho capito ma fai conto che quello che ho scritto si traduce, nel caricamento in un
InizializzaLivello(file){
LeggiDimensioneLivello(file, retDimeX, retDimeY, retDimeTile)
Celle = new Celle[retDimeX, retDimeY];
vedo quante texture uso nel livello e le carico
poi ciclo for per piazzare ad ogni elemento il riferimento alla texture corrispondente come
salvato nel file.
}
ecco. Ora io ho l'editor che mi flessibilizza i dati e che mi permette di cambiarli. Non è
ridondante avere un file XML?
-
L'editor come li conserva, i dati?
-
E' quello che sto andando a definire: li conservo in xml o semplice file binario, dato le informazioni che devo
salvare e come verranno usate?
-
E' quello che sto andando a definire: li conservo in xml o semplice file binario, dato le informazioni che devo
salvare e come verranno usate?
Dipende. Se ti immagini situazioni in cui possa esserti utile maneggiare i dati come testo leggibile, non vedo cos'abbia di male l'xml. Qualche esempio: rimpiazzare una stringa con un'altra, contare le occorrenze di una stringa - per esempio quanti oggetti di un certo tipo hai messo in una mappa -, replicare/modificare porzioni di un file senza passare dall'editor (quindi potendo automatizzare la cosa con N tool o linguaggi differenti - qualsiasi linguaggio ancora oggi utilizzato legge il formato xml), semplicemente leggere il file con un editor di testo e comprenderlo senza farlo passare per qualche programma.
Se ho capito bene stai facendo un editor grafico. Bene, io ho imparato che, se vuoi fare una cosa una sola volta, la via grafica è ottima; se devi farla ripetute volte, un aiuto testuale/automatico non guasta. Perciò un formato aperto per conservare le informazioni potrebbe avere il suo perché.
Scusa se non ho riletto i messaggi precedenti (che avevo appena sbirciato, non avendo tempo) anche se adesso sono tranquillo a casa, ma adesso devo proprio andare a morire nel letto :asd: