View Full Version : [C#] Gioco3d x la tesina di maturità... DA DOVE INIZIO??!?!??!
Radeon89
13-12-2007, 20:01
Ciao a tutti!
Ho cercato qualche altro topic su questo argomento ma non ne trovo...
Ho bisogno di un aiuto per iniziare la mia tesina di maturità che dovrebbe basarsi (se il tutto non si rivelerà troppo difficile e/o troppo lungo) su un gioco 3d in DirectX o come minimo su un motore grafico che vorrei creare.
Premetto che parto da ZERO, che il linguaggio che userò sarà C#, che conosco ma che non ho mai usato in questo ambito, e che come documentazione ho trovato per ora solo due siti italiani (tra l'altro fondati dallo stesso gruppo di persone XD ): uno è http://www.vincedx.altervista.org/index.php, l'altro è http://www.notjustcode.it/dblog/. Inoltre ho a disposizione un libro che forse qualcuno di voi conosce ma che è in inglese, il suo titolo è "Introduction to 3D Game Engine Design Using DirectX 9 and Csharp" di Lynn Thomas Harrison.
Purtroppo mi trovo molto disorientato, in quanto non so quanto tempo dovrei dedicare al progetto per riuscire a creare un semplice motore grafico 3d con C#, inoltre non so se invece mi converrebbe usarne uno già fatto tipo Ogre... E in quest'ultimo caso, quale sarebbe il mio lavoro da programmatore avendo il motore grafico già fatto?? Io so che esistono gli editor, ma ovviamente non è in quel modo che devo creare il mio videogioco...
Un'altra possibilità sarebbe quella di creare solo un motore grafico decente e poi di fare un animazione 3d basata su quel motore grafico (questo se impiegassi troppo tempo per creare un videogioco).
Per darmi una mano sto tentando di coinvolgere qualche mio compagno di classe, ma comunque mi serve qualcosa da cui iniziare e un po' di informazioni e consigli!
nico88desmo
13-12-2007, 20:11
Auguri. E' un progetto troppo ambizioso secondo me. Ci vuole troppo tempo e troppe conoscenze...molta programmazione e molta matematica.
Auguri. E' un progetto troppo ambizioso secondo me. Ci vuole troppo tempo e troppe conoscenze...molta programmazione e molta matematica. oddio dipende tutto da che tipo di gioco eh... un gioco molto modesto potrebbe tranquillamente essere argomento di tesi specialistica (non triennale però). e poi considera che la piattaforma managed aiuta.
edit - ah, dimenticavo: questo post è da leggere partendo dal presupposto che non si debba realizzare anche l'artwork.
ommiodio, avevo letto male... per la tesina DI MATURITA'?? :D :D
in effetti in tal caso auguri anche da parte mia :D
mi è venuto il dubbio perché ho visto il nick e mi son chiesto "minchia, ma questo si laurea a 18 anni :huh:", e allora ho letto meglio il titolo :D
@Radeon89: mi è venuta in mente anche un'altra cosa che ti incoraggerà sicuramente. un mio amico per la sua maturità a suo tempo realizzò un programma in C++, Win32, ed OpenGL, che mostrava un ambiente tridimensionale nel quale era possibile muoversi in due direzioni ed incontrare diversi oggetti che mostravano ciascuno una diversa tecnica di grafica 3D: texturing, lighting, sorgente luminosa, sprite nello spazio, mesh animate, cell shading, addirittura specchi riflettenti!!!
ha fatto tutto questo in pochi mesi partendo da zero e con l'aiuto dei tutorials di NeHe. se ha potuto farlo lui puoi farlo anche tu, ed inoltre considera che tu parti in condizioni estremamente più semplici (usi C# anziché C++ & Win32, è un vantaggio enorme).
quindi coraggio e rimboccati le maniche; solo una cosa debbo dirti: quando andrai all'esame sarà una enorme delusione perché i professori delle superiori non capiranno una ceppa dell'importanza di quello che hai fatto (crederanno che sei un ragazzino che smanetta coi computers e gioca coi videogiochi).
Dipende da che preparazione hai, in certe scuole dove si fa bene informatica uno che è in quinta ha già buone basi per mettersi seriamente.
Ovviamente ti serviranno pomeriggi interi da dedicarci, e imho non vale la pena se è solo per passare l'esame, ma se lo fai anche perche ti interessa allora si.
Come ha detto 71104, se fai copia incolla dai tutorial di nehe e hai già mezzo lavoro fatto..:asd:
Radeon89
13-12-2007, 21:08
@Radeon89: mi è venuta in mente anche un'altra cosa che ti incoraggerà sicuramente. un mio amico per la sua maturità a suo tempo realizzò un programma in C++, Win32, ed OpenGL, che mostrava un ambiente tridimensionale nel quale era possibile muoversi in due direzioni ed incontrare diversi oggetti che mostravano ciascuno una diversa tecnica di grafica 3D: texturing, lighting, sorgente luminosa, sprite nello spazio, mesh animate, cell shading, addirittura specchi riflettenti!!!
ha fatto tutto questo in pochi mesi partendo da zero e con l'aiuto dei tutorials di NeHe. se ha potuto farlo lui puoi farlo anche tu, ed inoltre considera che tu parti in condizioni estremamente più semplici (usi C# anziché C++ & Win32, è un vantaggio enorme).
quindi coraggio e rimboccati le maniche; solo una cosa debbo dirti: quando andrai all'esame sarà una enorme delusione perché i professori delle superiori non capiranno una ceppa dell'importanza di quello che hai fatto (crederanno che sei un ragazzino che smanetta coi computers e gioca coi videogiochi).
Per quanto riguarda l'effetto sui prof della commissione, è quello che pensa il mio prof. di elettronica (in pratica mi ha detto che la gente comune che non ne sa niente lo confronterebbe con i giochi commerciali, secondo lui), mentre il mio prof. di informatica pensa che ce la possa fare ma nessuno prima nella mia scuola ha mai portato una tesina improntata su un qualcosa di 3d. E nessun prof. ha mai affrontato l'argomento...
oddio dipende tutto da che tipo di gioco eh... un gioco molto modesto potrebbe tranquillamente essere argomento di tesi specialistica (non triennale però). e poi considera che la piattaforma managed aiuta.
edit - ah, dimenticavo: questo post è da leggere partendo dal presupposto che non si debba realizzare anche l'artwork.
Per artwork intendi tutti i disegni preparatori per la grafica??
la butto la...
...oltre che all'informatica ti puoi sempre collegare alla matematica!
per quel poco che ne so dell'argomento ce n'è un sacco dietro!
se te la giocassi bene su questo piano presumo che il prof di matematica ne potrebbe rimanere sorpreso mentre per quanto riguarda quelli delle materie umanistiche molto probabilmente non si azzarderebbero neanche ad aprire la bocca...
nico88desmo
13-12-2007, 22:07
Concordo.
Matematica e grafica 3D vanno a braccetto ;)
Per quanto riguarda la commissione esterna, io ti consiglio di non pensarci in quanto la tesina la fai per prima cosa per te, poi stanne certo che all'esame non avrai molti complimenti in quanto, come già detto, il confronto andrebbe con i videogame attuali perchè il presidente di solito non sa nulla riguardo questi argomenti.
Io un anno fà mi sono trovato a fare sempre una cosa un pò complicata in quanto gli argomenti non sono stati studiati durante l'anno scolastico, però ho avuto la soddisfazione di portare un progetto originale e che nessuno aveva fatto, e soprattutto funzionante. (anche se poi alla fine all'esame mi hanno fatto parlare 5min di quel programma a cui io ho lavorato parecchi mesi!!!!, per questo te lo ho sconsigliato un progetto del genere prima).
Comunque se vuoi portare questo argomento, per prima cosa...In Bocca Al Lupo!!! e seconda cosa....Buona Fortuna!
Come ha detto 71104, se fai copia incolla dai tutorial di nehe e hai già mezzo lavoro fatto..:asd: sei pregato di non stravolgere quello che io scrivo, perché se lo fai scrivi amene stronzate.
ho visto di persona il codice scritto dalla persona di cui parlavo ed ho più volte avuto modo di constatare la sua preparazione.
Per quanto riguarda l'effetto sui prof della commissione, è quello che pensa il mio prof. di elettronica (in pratica mi ha detto che la gente comune che non ne sa niente lo confronterebbe con i giochi commerciali, secondo lui), mentre il mio prof. di informatica pensa che ce la possa fare ma nessuno prima nella mia scuola ha mai portato una tesina improntata su un qualcosa di 3d. E nessun prof. ha mai affrontato l'argomento... infatti ce la puoi fare, solo che sarà una delusione. se sei preparato a questo e sei in grado di consolarti con la sola soddisfazione personale, allora apri MSDN e comincia a studiare.
Per artwork intendi tutti i disegni preparatori per la grafica?? intendo tutto tranne il codice; intendo grafica 2D, grafica 3D, suono, e quant'altro si reputi necessario.
la butto la...
...oltre che all'informatica ti puoi sempre collegare alla matematica!
per quel poco che ne so dell'argomento ce n'è un sacco dietro!
se te la giocassi bene su questo piano presumo che il prof di matematica ne potrebbe rimanere sorpreso mentre per quanto riguarda quelli delle materie umanistiche molto probabilmente non si azzarderebbero neanche ad aprire la bocca... se realizza anche l'artwork ci mette di mezzo Disegno e Storia dell'Arte :D
ed inoltre mi è venuto in mente un bel paragone che potrebbe fare sulla differenza tra il modo di relizzare visuali prospettiche al computer tramite motore grafico e il modo di farlo a mano in disegno tecnico (punti di fuga); potrebbe dare la spiegazione matematica di entrambi i sistemi e fare un figurone.
jappilas
13-12-2007, 22:55
...non starò qui ora a fare il disfattista e rimarcare la difficoltà del progetto, mi limiterò a linkare una chicca vista poco tempo fa ;)
"Gioco" + "3D" + "C#" + "Tutorial" = Rocket Commander (http://blogs.msdn.com/coding4fun/archive/2006/11/06/997852.aspx)
abbastanza accessibile, guidato, con spiegazione delle classi costitutive e delle interazioni tra parte grafica e parte logica, video, link per l' approfondimento, e soprattutto con il codice sorgente... :)
certo, realizzare un gioco non è banale, e credo che un tutorial per quanto ben fatto, non fornisca "tutti" gli strumenti necessari a chi debba concepire in proprio e ab initio un progetto SW di una certa complessità, ma può mettere in contatto con le problematiche coinvolte, con certe metodiche usate nello sviluppo SW, con certa terminologia...
un esempio su tutti, unit testing e relativo NUnit ...
:)
wingman87
14-12-2007, 00:23
Io mi sono diplomato l'anno scorso e ho portato un simulatore 3d del movimento dei satelliti GPS intorno alla Terra. L'ho creato partendo da buone basi di programmazione in generale ma partendo da zero in grafica. Ho studiato un tutorial di OpenGL, almeno le prime lezioni e poi insieme a due miei compagni ci siamo cimentati nell'impresa. Devo dire che è stata una grande soddisfazione e all'esame abbiamo anche fatto un figurone, abbiamo scritto una presentazione di una pagina (all'orale hai 5 minuti o poco + per presentarlo) e poi abbiamo stampato un'immagine di una tastiera con i comandi associati ad ogni pulsante e poi tutto il codice (che erano parecchie pagine) tutte commentate minuziosamente.
Nella presentazione abbiamo parlato ben poco delle tecniche implementative, abbiamo giusto fatto un accenno alla tecnica del double buffering e ai sistemi di illuminazione. Più che altro abbiamo parlato di come il simulatore fosse coerente con il sistema reale (la distanza dei satelliti dalla Terra, il tempo impiegato a fare un giro completo, la loro dislocazione) e poi abbiamo anche fatto vedere come magicamente disattivando il double buffering i satelliti disegnavano la loro orbita, e tramite le luci abbiamo fatto vedere come ogni satellite coprisse una certa area della superficie terrestre.
C'è stato però un grosso problema. Avevamo fatto i test sui nostri computer a casa e su quello che credevamo fosse il portatile che avremmo usato all'esame, invece poi ci è stata rifilata una baracca e il programma girava molto a scatti. E' stato comunque un successone.
Ad ogni modo io ti consiglio nella presentazione di non soffermarti troppo sul lato tecnico e se devi farlo di spiegare il tutto molto terraterra altrimenti i prof non capiranno nulla.
!@ndre@!
14-12-2007, 09:29
...un mio consiglio spassionato?....lascia perdere!!...rischi di perdere mesi per fare una cosa che in sede d'esame vale ZERO...la tesina non serve a niente, è solo un modo per rompere il ghiaccio e basta....come dicevano i miei prof la tesina è un'arma a doppio taglio perchè se è fatta male ti penalizza e se è fatta bene non ti dà niente in più perchè alla fine sono le domande che ti fanno i prof che contano......fidati per una tesina di maturità non vale la pena perdere tutto questo tempo!!...utilizza questo tempo per studiare bene le varie materie che è sicuramente più importante!!;)
se realizza anche l'artwork ci mette di mezzo Disegno e Storia dell'Arte :D
ed inoltre mi è venuto in mente un bel paragone che potrebbe fare sulla differenza tra il modo di relizzare visuali prospettiche al computer tramite motore grafico e il modo di farlo a mano in disegno tecnico (punti di fuga); potrebbe dare la spiegazione matematica di entrambi i sistemi e fare un figurone.
bell'idea :O
ho visto di persona il codice scritto dalla persona di cui parlavo ed ho più volte avuto modo di constatare la sua preparazione.
Indubbiamente, non volevo insinuare quello che hai capito tu, era solo un modo ironico per dire che in rete ci sono molti progetti interessanti da cui trarre ispirazione.
Anch'io ero entusiasta dopo aver seguito il tutorial di NeHe la prima volta, ma sapevo che molti dei miei professori non avrebbero saputo apprezzare il valore di un videogioco, per cui piuttosto iniziai un programma che disegnava dei grafici 3d di funzioni matematiche e permetteva di ruotarli, zoomarli e visualizzare alcune statistiche (tipo Derive), in modo da coniugare informatica e matematica, divertirmi con le OpenGL e fare anche una cosa dall'aspetto serio.
Poi a dir il vero seguii il consiglio di un prof di iniziare con le materie che meno si preferiscono, in modo da avere il vantaggio di scegliere con quale argomento affrontarle, e partii con storia... :rolleyes:
IceCoder
14-12-2007, 16:50
edit
contattami e ti spiego come funziona il tutto ;)
Radeon89
26-12-2007, 17:20
Ok, ora ho le idee chiare. Durante queste festività ci lavoro un po' sopra per vedere se la cosa è fattibile (ma credo di sì). Parto dal motore grafico e faccio come l'amico di 71104, cioè varie stanze in cui mostro le varie tecniche di rendering ed effetti grafici. Poi se rimane tempo passo al gioco vero e proprio...
...un mio consiglio spassionato?....lascia perdere!!...rischi di perdere mesi per fare una cosa che in sede d'esame vale ZERO...la tesina non serve a niente, è solo un modo per rompere il ghiaccio e basta....come dicevano i miei prof la tesina è un'arma a doppio taglio perchè se è fatta male ti penalizza e se è fatta bene non ti dà niente in più perchè alla fine sono le domande che ti fanno i prof che contano......fidati per una tesina di maturità non vale la pena perdere tutto questo tempo!!...utilizza questo tempo per studiare bene le varie materie che è sicuramente più importante!!;)
Premessa:5 mesi di sviluppo per un rendering engine tridimensionale (OpenGL) multipiattaforma, per la visualizzazione e la partecipazione attiva in ambienti virtuali remoti (quindi anche interfacciamento attraverso la rete), niente suono e modellazione 3d presa già fatta. 1 mese di scrittura della tesi.
Risultato: 6 minuti di presentazione compressi in 8 slide e 6 punti per la tesi, uno in + di quelli che hanno fatto una relazioncina sull'accessibilità dei siti web.
Conclusione: Non ne vale la pena neanche per una laurea triennale, figuriamoci per la maturità.... se lo dovessi rifare mi passerei l'estate al mare invece che in laboratorio a bestemmiare. tutto imho
Premessa:5 mesi di sviluppo per un rendering engine tridimensionale (OpenGL) multipiattaforma, per la visualizzazione e la partecipazione attiva in ambienti virtuali remoti (quindi anche interfacciamento attraverso la rete), niente suono e modellazione 3d presa già fatta. 1 mese di scrittura della tesi.
Risultato: 6 minuti di presentazione compressi in 8 slide e 6 punti per la tesi, uno in + di quelli che hanno fatto una relazioncina sull'accessibilità dei siti web.
Conclusione: Non ne vale la pena neanche per una laurea triennale, figuriamoci per la maturità.... se lo dovessi rifare mi passerei l'estate al mare invece che in laboratorio a bestemmiare. tutto imho
Benvenuto nella meritocratica università italica :D....lì ho appreso un grande insegnamento : "non sbatterti troppo e uscire dagli schemi per interessi personali..che il riconoscimento non ci sarà mai"
Radeon89
18-02-2008, 00:47
Alla fin fine ho iniziato, vediamo un po' quello che riesco a fare...
Però ora ho un problema da risolvere...
Sto tentando di disegnare un quadrato con un TriangleStripBuffer, ma non ci riesco, cioè non mi compare nulla... Il codice l'ho messo nell'evento Paint della form principale che contiene il device...
Ecco il codice:
private void Form1_Paint(object sender, PaintEventArgs e) //ciclo di rendering
{
dcg.device.Clear(ClearFlags.Target, col, 1, 0); //creo una schermata con il colore dichiarato prima (è come attributo di questa classe)
dcg.device.BeginScene(); //inizio scena
CustomVertex.TransformedColored[] triangleStripBuffer;
triangleStripBuffer = new CustomVertex.TransformedColored[4];
triangleStripBuffer[0] = new CustomVertex.TransformedColored(0, 0, 0, 0, Color.Red.ToArgb());
triangleStripBuffer[1] = new CustomVertex.TransformedColored(6, 0, 0, 1, Color.Blue.ToArgb());
triangleStripBuffer[2] = new CustomVertex.TransformedColored(6, 6, 0, 1, Color.Green.ToArgb());
triangleStripBuffer[3] = new CustomVertex.TransformedColored(0, 6, 0, 1, Color.White.ToArgb());
dcg.device.VertexFormat = CustomVertex.PositionNormalColored.Format;
dcg.device.DrawUserPrimitives(PrimitiveType.TriangleStrip, 2, triangleStripBuffer);
dcg.device.EndScene();//fine scena
dcg.device.Present(); //fa comparire tutto sullo schermo
this.Invalidate(); //invoca di nuovo il metodo stesso
}
Ho pensato fosse un problema di telecamera ma a me sembra di averla configurata correttamente...
Ecco il codice della configurazione della telecamera:
carDevice.Transform.View=Matrix.LookAtLH(new Vector3(0, 0, -30), new Vector3(0, 0, 0), new Vector3(0, 1, 0)); //configurazione telecamera: I vettore posizione,II vettore in che direzione guarda,III vettore direzione dell'alto, cioè dov'è l'alto (gli assi sono orientabili a piacere)
carDevice.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 3, 16 / 10, 1, 2000); //imposta la zona visiva. Parametri: 1) angolo di visuale 2)proporzioni dimensioni (in accordo con il tipo di schermo),3 e 4) distanza minima e massima di visibilità degli oggetti
Quest'ultima porzione di codice l'ho messa nel costruttore della classe DeviceCarEngine...
Cos'ho sbagliato??? :cry:
EDIT: ho pensato che è molto meglio dichiarare e riempire il buffer dei vertici fuori dal metodo Paint, per cui ho messo la creazione del buffer e dei 4 vertici all'interno della Load della form, però non cambia niente...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.