ArsLudica.org Forum

Effettua l'accesso o una nuova registrazione.

Inserisci il nome utente, la password e la durata della sessione.
Ricerca avanzata  

News:

Autore Topic: [PC] Esperimento  (Letto 4464 volte)

Cherno

  • Redazione
  • Hero Member
  • *****
  • Offline Offline
  • Post: 3.829
    • Mostra profilo
[PC] Esperimento
« il: Dicembre 29, 2008, 11:02:42 »

Approfittando delle ferie natalizie e quindi il tempo libero che ho, nonostante ora sia a lavoro :x , sto tirando su un giochino 2d, pertanto ho deciso di condividere con voi questo progettino. Il design non è completo, credo anche che mai lo sarà a dire il vero, quel che è certo è che il giocatore controllerà un demonietto in fuga durante la quale dovrà eliminare i suoi inseguitori.

La visuale è in sidescrolling, il nostro alter ego si troverà in una landa desolata nella quale potrà muoversi a destra e sinistra, saltare e sparare un raggio al fine di eliminare i suoi antagonisti. Per sparare basterà puntare con il mouse e cliccare nella posizione dove si intende direzionare il raggio distruttore.

Direzione artistica:
Lo sprite del personaggio l'ho creato io diverso tempo fa, era li che aspettava di essere utilizzato :D Avendo scarsa capacità artistica sia nel disegno, sia nel disegno digitale, ho fatto un lavoro minimale e con pochi frame di animazione: la corsa è composta da 4 frames, tanto per dire.

Ecco:


Questo è il demonietto, fa molto megaman, lo so, in ogni caso ditegli ciao :D

Assodata quindi la mia poca competenza nella digital art, il gioco seguirà questo stile in pixel art molto essenziale. In rete cercherò dei tile-set e degli asset grafici per caratterizzare l'ambiente di gioco.

Realizzazione tecnica:
Sono pigro: non ho avuto nessunissima voglia di cercare motori 2d già fatti, installarli, configurarli ed imparare ad utilizzarli. Ho parecchio codice messo via scritto da me nel corso di vari anni, quindi ho dato una bella rispolverata al tutto, ho preso su Visual C++ ed ho organizzato il lavoro: il risultato ottenuto fra ieri e l'altro ieri è che attualmente il mio motore grafico poggia su directx9, è in grado di gestire sprite 2d sia animati che statici, può integrare elementi 3d.

Le strutture dati per far muovere il tutto ci sono, quello che ancora andrebbe fatto è rendere il motore grafico più indipendente in modo che disegni e basta, in maniera ottimale, senza che sia a conoscenza di cosa gli si stia dando in pasto(che sia uno sprite animato, non animato, ecc ecc). Insomma sto modularizzando, come è giusto che sia e come Monopoli insegna :D , tanto è vero che il motore sarà una dll a sè stante.

Per quanto riguarda l'input per ora ho gestisco la tastiera. Finiti i lavori sul motore grafico, passerò a sistemare l'input del mouse

Stato dei lavori:
Attualmente l'applicazione disegna un terreno in parallasse stile shadow of the beast ed il personaggio. E' possibile spostarsi in giro, ma l'ambiente è ancora spoglio e di avversari non ve ne è ancora l'ombra.

Nei prossimi giorni:
Come dicevo sto approfittando di questo periodo di vacanza per tirare su il motore, attualmente sta andando tutto bene ed in maniera fluida, tanto e vero che con relativamente poche ore di lavoro ho già una struttura decente e soprattutto un codice che mi permette di aggiungere features senza dannarmi troppo. Quello che mi prefiggo di fare da oggi al sette gennaio è quindi di terminare i lavori sul motore grafico e sul sistema di input, sistemare le strutture dati e creare un sistema di collisioni. Se riesco in questa impresa entro il termine impostomi (7 gennaio) anzitutto mi sentirò un figo, in seconda battuta potrei andare avanti e sviluppare di più il gameplay e creare un tool per la progettazione dei livelli.

A breve posterò un video, stay tuned :D
« Ultima modifica: Dicembre 29, 2008, 11:05:44 da Cherno »
Connesso

Id

  • Hero Member
  • *****
  • Offline Offline
  • Post: 929
  • [rend, slaughter, devour]
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #1 il: Dicembre 29, 2008, 11:35:02 »

Realizzazione tecnica:
Sono pigro: non ho avuto nessunissima voglia di cercare motori 2d già fatti, installarli, configurarli ed imparare ad utilizzarli. Ho parecchio codice messo via scritto da me nel corso di vari anni, quindi ho dato una bella rispolverata al tutto, ho preso su Visual C++ ed ho organizzato il lavoro: il risultato ottenuto fra ieri e l'altro ieri è che attualmente il mio motore grafico poggia su directx9, è in grado di gestire sprite 2d sia animati che statici, può integrare elementi 3d.

Le strutture dati per far muovere il tutto ci sono, quello che ancora andrebbe fatto è rendere il motore grafico più indipendente in modo che disegni e basta, in maniera ottimale, senza che sia a conoscenza di cosa gli si stia dando in pasto(che sia uno sprite animato, non animato, ecc ecc). Insomma sto modularizzando, come è giusto che sia e come Monopoli insegna :D , tanto è vero che il motore sarà una dll a sè stante.

Interessante. Ma sinceramente secondo me sarebbe meglio una .lib di una DLL, che te ne fai del linking dinamico?
Nel senso: non ti accorcia i tempi di compilazione se cambi i .h, non ottimizza "whole program", non inlinea una mazza, gli accessi a funzioni e metodi sono piu' costosi perche' risolti a runtime, devi smazzarti la (piccola) bega degli entry point della DLL, potenzialmente hai la rogna delle variabili statiche e globali, e tutto questo per cosa?
Le DLL le han fatte per non avere su disco (e in memoria) codice "duplicato". Mi sta bene la DLL del CRT (e forse per un gioco neanche), tanto quasi tutto usa le DLL del CRT, per cui ce l'hai gia' in memoria con risparmio di ram (una miseria, cmq: il runtime del Visual 7.1 sono 300 KB, e se poi consideri che il linker scarta i pezzi che non gli servono, alla fine risparmi circa 80 KB di ram e di HD, cioe' molto poco), ma non so quanto davvero ti serva per un engine grafico.

Quanto al resto, in genere, amo le strutture "a tre strati": un primo strato "di sistema" (threading, gestione della memoria, I/O su disco, "libreria di cose che van sempre bene", tipo liste puntate, alberi e cose varie); un secondo strato "di engine" (con un engine per componente, per dire: engine grafico, engine audio, engine di input, eccetera), e un ultimo strato contenente le logiche di gioco che poggia sui due precedenti. Ciascuno dei componenti singoli e' legato solo ed esclusivamente ai componenti dello strato inferiore, ad eccezione dello strato piu' basso; e ciascuno dei componenti e' relegato entro una sola libreria completa (un .lib).
 
Cmq, se vuoi una mano con il refactoring dell'engine grafico o di qcosa d'altro, fai un fischio :D

Per quanto riguarda l'input per ora ho gestisco la tastiera. Finiti i lavori sul motore grafico, passerò a sistemare l'input del mouse

Fai attenzione. Aggiungere una feature "di basso livello" come l'input da mouse non e' affatto triviale come sembra una volta che tutto quello che sta "piu' in alto" e' "up and running", e spesso si risolve in una serie senza fine di smanazzi imbarazzanti.
Connesso
Stand or fall, no middle ground at all - Faedalien (Unlimited SaGa)

Cherno

  • Redazione
  • Hero Member
  • *****
  • Offline Offline
  • Post: 3.829
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #2 il: Dicembre 29, 2008, 11:59:23 »

Oramai ho fatto una dll, un pò anche per provarc:i è un argomento che affrontai in passato, ma ero ancora immaturo a livello di deisgn del codice. Non che ora sia un espertone, ma sicuramente ne so di più di prima. Quindi a livello formativo faro così :D La storia dell'inline non l'avevo considerata, quindi direi che a livello didattico sto centrando l'obbiettivo, ora so che inline e dll non cozzano :D

Per quel che riguarda l'input sono d'accordissimo con te, ma ho preferito lasciarlo dietro in quanto ho già "pezzi di codice" che gestiscono il tutto in maniera corretta. Visto che c'è qualcuno che ne sa, posterò anche lo schema delle classi :sisi:

Ti ringrazio infinitamente per i consigli :D


Vazkor

  • Hero Member
  • *****
  • Offline Offline
  • Post: 1.642
  • Banned
    • Mostra profilo
    • Myspace
Re: [PC] Esperimento
« Risposta #3 il: Dicembre 29, 2008, 12:21:22 »

Ciao demonietto.
Connesso

Id

  • Hero Member
  • *****
  • Offline Offline
  • Post: 929
  • [rend, slaughter, devour]
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #4 il: Dicembre 29, 2008, 12:35:15 »

Oramai ho fatto una dll, un pò anche per provarc:i è un argomento che affrontai in passato, ma ero ancora immaturo a livello di deisgn del codice. Non che ora sia un espertone, ma sicuramente ne so di più di prima. Quindi a livello formativo faro così :D La storia dell'inline non l'avevo considerata, quindi direi che a livello didattico sto centrando l'obbiettivo, ora so che inline e dll non cozzano :D

Per la DLL, l' "esperimento didattico" e' davvero l'unica ragione sensata.
E d'altronde, l'inline (e altre ottimizzazioni, tipo l'omissione dello stack frame - come fai a omettere lo stack frame se non sai QUALE stack frame omettere? - e altre ancora) te le perdi per forza, perche' quando hai da un lato una DLL che deve saper stare su da sola, e dall'altro un eseguibile che non sa cosa chiama - perche' cmq il codice della DLL e' separato dal codice del chiamante - il compilatore non puo' ottimizzare la chiamata di funzione: deve preoccuparsi prima della "coerenza", cioe' considerare il fatto che chiunque potrebbe chiamare la dll e la dll stessa dovrebbe funzionare, inoltre l'eseguibile potrebbe chiamare qualsiasi versione della dll che esporti un certo simbolo, e poter funzionare.
Non e' tanto "inline e dll non cozzano" quanto piuttosto "dato che ogni pezzo di codice e' indipendente (il codice della dll deve star su da solo, quello del chiamante anche), il compilatore non puo' ottimizzare l'insieme dei due, ma puo' ottimizzare soltanto le due parti singolarmente".

Per quel che riguarda l'input sono d'accordissimo con te, ma ho preferito lasciarlo dietro in quanto ho già "pezzi di codice" che gestiscono il tutto in maniera corretta. Visto che c'è qualcuno che ne sa, posterò anche lo schema delle classi :sisi:
Ti ringrazio infinitamente per i consigli :D

Per l'input... va bene avere delle classi per gestirlo correttamente, ma e' piu' un problema di interfaccia fra chiamato e chiamante.
Nel senso: hai delle classi che lo gestiscono l'acquisizione dei dati, e hai delle classi che usano i dati acquisiti.
Sembra tutto banale, da li', ma devi vedere anche il formato in cui i due si scambiano i dati, e la quantita' dei dati che si aspettano - se la classe che usa i dati si aspetta un formato e quella che li acquisisce ne usa un altro, puoi doverti ritrovare a fare un cabaret di smanazzi per far andare tutto :D

Per i consigli, no problem :D
Connesso
Stand or fall, no middle ground at all - Faedalien (Unlimited SaGa)

Ziggybee

  • Administrator
  • Hero Member
  • *****
  • Offline Offline
  • Post: 8.383
  • Gamer Extraordinaire
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #5 il: Dicembre 29, 2008, 13:20:05 »

Perché non hai utilizzato XNA?
Connesso
Matteo Anelli

Vazkor: "Altro che Apple TV"

Cherno

  • Redazione
  • Hero Member
  • *****
  • Offline Offline
  • Post: 3.829
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #6 il: Dicembre 29, 2008, 13:32:09 »

XNA l'avrò usato mezza volta, poi l'ho lasciato li per mancanza di tempo. Lo scopo del progetto è puramente didattico: vorrei mettere in campo le mie conoscenze programmative, rispolverare alcuni concetti, applicare un pò di software engineering e sviluppare un piccolo progetto, per tanto sto utilizzando librerie ed ambienti di sviluppo che già conosco.  Sviluppare un giochino sarebbe solo una conseguenza di quello che sto facendo, tanto è vero che il design è dell'applicazione è: corri e spara. Tutto qua. All'inizio neanche volevo metterci il salto :D

Insomma sto studiando :D

Ziggybee

  • Administrator
  • Hero Member
  • *****
  • Offline Offline
  • Post: 8.383
  • Gamer Extraordinaire
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #7 il: Dicembre 29, 2008, 14:52:07 »

Ah, bon.

Se ti interessa, io avrei un progettino per G4W ed eventualmente Community/XBLA (ho le licenze) di un platformuzzo free roaming, con grafica 2D (2D editato vettorialmente, è più semplice e manutenibile).
Connesso
Matteo Anelli

Vazkor: "Altro che Apple TV"

Cherno

  • Redazione
  • Hero Member
  • *****
  • Offline Offline
  • Post: 3.829
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #8 il: Dicembre 29, 2008, 14:54:18 »

Dal 7 gennaio ti saprò dire se avrò tempo e quanto, ti farò sapere :sisi:

Coolcat

  • Senior Staff
  • Hero Member
  • *****
  • Offline Offline
  • Post: 1.336
  • capito a sproposito
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #9 il: Dicembre 29, 2008, 14:54:43 »

il demonietto mi piace.
Connesso

Id

  • Hero Member
  • *****
  • Offline Offline
  • Post: 929
  • [rend, slaughter, devour]
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #10 il: Dicembre 29, 2008, 15:26:41 »

Ah, bon.

Se ti interessa, io avrei un progettino per G4W ed eventualmente Community/XBLA (ho le licenze) di un platformuzzo free roaming, con grafica 2D (2D editato vettorialmente, è più semplice e manutenibile).

Potrebbe interessare anche me :D
Connesso
Stand or fall, no middle ground at all - Faedalien (Unlimited SaGa)

Ziggybee

  • Administrator
  • Hero Member
  • *****
  • Offline Offline
  • Post: 8.383
  • Gamer Extraordinaire
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #11 il: Dicembre 29, 2008, 19:00:53 »

Che sai fare, idduzzo?

Al momento sto partorendo un altro shmup vettoriale, facendo il porting del motore usato per la mia submission XBLA ad XNA che è infinitamente migliore per giochilli piccoli e veloci. Quasi porno.
« Ultima modifica: Dicembre 29, 2008, 19:13:27 da z.e.r.o »
Connesso
Matteo Anelli

Vazkor: "Altro che Apple TV"

Id

  • Hero Member
  • *****
  • Offline Offline
  • Post: 929
  • [rend, slaughter, devour]
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #12 il: Dicembre 30, 2008, 10:17:06 »

Che sai fare, idduzzo?

Al momento sto partorendo un altro shmup vettoriale, facendo il porting del motore usato per la mia submission XBLA ad XNA che è infinitamente migliore per giochilli piccoli e veloci. Quasi porno.

Uhm, che so fare? Quando Monopoli era in Milestone, ero il suo capo.
A curriculum, ho 7 giochi commerciali pubblicati, di cui tre da lead programmer. 
Vedi te =D
Connesso
Stand or fall, no middle ground at all - Faedalien (Unlimited SaGa)

Joe

  • Global Moderator
  • Hero Member
  • *****
  • Offline Offline
  • Post: 7.580
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #13 il: Dicembre 30, 2008, 12:37:06 »

Che sai fare, idduzzo?

Al momento sto partorendo un altro shmup vettoriale, facendo il porting del motore usato per la mia submission XBLA ad XNA che è infinitamente migliore per giochilli piccoli e veloci. Quasi porno.

Uhm, che so fare? Quando Monopoli era in Milestone, ero il suo capo.
A curriculum, ho 7 giochi commerciali pubblicati, di cui tre da lead programmer. 
Vedi te =D

AmoooVe!  :-*
Connesso

Ziggybee

  • Administrator
  • Hero Member
  • *****
  • Offline Offline
  • Post: 8.383
  • Gamer Extraordinaire
    • Mostra profilo
Re: [PC] Esperimento
« Risposta #14 il: Dicembre 30, 2008, 22:37:40 »

Che sai fare, idduzzo?

Al momento sto partorendo un altro shmup vettoriale, facendo il porting del motore usato per la mia submission XBLA ad XNA che è infinitamente migliore per giochilli piccoli e veloci. Quasi porno.

Uhm, che so fare? Quando Monopoli era in Milestone, ero il suo capo.
A curriculum, ho 7 giochi commerciali pubblicati, di cui tre da lead programmer. 
Vedi te =D

LOL! Abbi pazienza, che ne sapevo!
Connesso
Matteo Anelli

Vazkor: "Altro che Apple TV"
 

Pagina creata in 0.018 secondi con 15 interrogazioni al database.