Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
DARKTy

Tutorial - Game 3d

Recommended Posts

Ecco il mio primo tutorial - game 3D

Gnack In The GnackLand World 1

Potete avvicinarvi alla programmazione dei giochi con questo semplicissimo esempio che utilizza un solo modello 3D controllato nei movimenti con gli input da tastiera nel mondo della scena 3D.

Durante l'esperienza del gioco verranno visualizzati alcune brevissime spiegazioni dei comandi usati.

INSTALLAZIONE: (non c'è installazione , ma solo scarica e avvia)

Il tutorial - game 3D è costituito da 6 cartelle con un totale di circa 32 file (leggeri) che devono essere collocati secondo le istruzioni del documento RTF

QUESTE 6 CARTELLE CHE SEGUONO DEVONO ESSERE INCLUSE IN UNA CARTELLA PRINCIPALE CHE POTETE CHIAMARE COME VOLETE, MA QUESTE 6 CARTELLE E I FILE DEVONO CHIAMARSI COSI COME SONO ED ESSERE ALLO STESSO LIVELLO NELLA CARTELLA PRINCIPALE, PERCHE IL FILE EXE CERCA ALL'INTERNO DI QUESTE CARTELLE I FILE CON IL LORO GIUSTO NOME.

CARTELLA PRINCIPALE

\ESEGUIBILE

\OGGETTI 3D

\TESSITURE BOLLE

\TESSITURE DIAMANTI

\TESSITURE PEDANE

\TESSITURE PERSONAGGI

Questo giochino è molto semplice e non è del tutto corretto , nel senso che non è implementato , il menu non è ha circuito chiuso , le musiche e i suoni non ci sono, la curvatura dell'oggetto non è perfettamente assestata perchè il file 3ds non è stato convertito con il panda exporter , ma con il dbconverter1.

inoltre l'unico nemico è il tempo e gli unici obbiettivi i diamanti-talenti.

Il vantaggio di questo tutorial - game è quello di poter accedere alla lettura del codice sorgente, alla fine del livello 3 infatti sarà visualizzata una password per poter accedere dal menu PASSWORD CODICE SORGENTE nel quale se inserita correttamente aprirà automaticamente il note-pad con il testo del programma completo.

NOTA 1:

C'è un errore nella password visualizzata , e non ho tempo di corregere e ricompilare tutto per ora ,

quindi ve lo dico:

il formato della password restituita è M---MMMMM,

Quello corretto è questo:

M---M---- <<<Questo è il formato della password da inserire nel sotto menu della pasword

M=lettera Maiuscola

-= Lettera minuscola

NOTA 2:

Per mancanza di tempo ho impostato la visualizzazione del display a 1024,768,32 , quindi è fisso cosi' senza possibilità di selezionare impostazioni diverse.

Si richiedono directX v7 o superiori.

Se vi dovesse girare la testa, o per qualsiasi altro problema,

abbandonate il gioco immediatamente premendo il tasto ESC.

Questo gioco puo' essere rimodificato e implementato da chiunque, per l'oggetto 3D dovete chiedere a D@ve.

Ciao e alla prossima! (Se siete arrivati a leggere fino qui allora dovete aver scaricato da 8 link ,..giusto??? )

P.S. Per problemi tecnici o informazioni varie scrivete pure, ciao a tutti! E spero che vi piacia!!!


Edited by gurugugnola

Share this post


Link to post
Share on other sites

Ciao DARKTy,

ho provato un po' a capire quello che avevi scritto ma non sono riuscito a farlo funzionare ... :huh:

Sarai anche bravo a programmare ma come spiegazioni penso che tu possa ancora migliorare parecchio!! :wallbash::wallbash::wallbash:

Ma dico io ... hai fatto un casino con questi zip e con le cartelle ... :huh:

Ma non facevi prima a fare uno zip unico in cui mettevi già tutto con le cartelle che si chiamavano già con i nomi giusti? :blink2:

In poche parole non sono riuscito a farlo funzionare ... ho perso la pazienza ed ho deciso di spostarlo

qui nella sezione Programmazione e Script perché non mi sembra che possa essere considerato un tutorial ;)

grazie

D@ve


Segui Treddi.com anche su Instagram e Facebook!

Share this post


Link to post
Share on other sites

:Clap03: questo dovrebbe far capire che la programmazione non è uno scherzo... non basta fare il programmino che funziona, ma bisogna renderlo USABILE... qualche screenshot sarebbe stato bello vederlo ....anche perché non è che mi fido tanto a far eseguire un codice estraneo ....... ;)

:hello:

Share this post


Link to post
Share on other sites

Si comprendo :-) , l'ho fatto di fretta e di getto , ero troppo preso , ed era tanto per mettere qualcosa di base, ora provo a scaricarlo e a vedere come va , cmq grazie per la pazienza :-)

Le IMMAGINI sono nel file RTF

Cmq a dire la verità mi piace di piu' qui nei thread Programmazione e script che nei tutorial , è molto piu' stimolante! :-)

La mia gigamail ogni tanto sembra che si blocchi , quindi di solito faccio gli zip piccoli per evitare di rifare tutto da capo.

Ora vedo poi vi dico. Ciao! e Grazie!

Share this post


Link to post
Share on other sites

Dopo la cartella 6 non si riesce a scaricare l'exe dal link Numero 8 , l'ho provato con il mio EXE e funziona...

Potrebbe dare solo 2 errori: codice 31 o errore 99 , che significano file non esistenti o percorsi dei file non trovati e quindi (immagine o oggetto inesistente).

FAQ: Errori frequenti , la cartella Tessiture DiamantE , va scritta Tessiture DiamantI

Per skippare il primo intro basta premere 8 , per il secondo 9

....qualche utente di Treddi che si sacrifica a provarlo????? Grazie!

Se vuoi ti rispedisco l'exe , pero' prima respira , tanto io non ho fretta e poi questo week-end non ci sono xkè vado via.

Resto in attesa nel caso ci fossero sviluppi ...


Edited by DARKTy

Share this post


Link to post
Share on other sites

Ciao.

Si il gioco funziona. L'ho provato sul pc di casa con la 6600GT e le scritte di inizio (quelle verdi che scorrono da DS verdo SN) non sono risultate temporizzate bene... in poche parole sfrecciavano e non riuscivo a leggerle... sul portatile senza "scheda video" (ovvero con la INTEL 915GM) andava quasi bene, dovresti quindi migliorare la temporizzazione di scorrimento. Sempre nelle schermate con le scritte a scorrimento devi migliorare il metodo di disegno dei fotogrammi in quanto si vede lo sfarfallio del ciclo di refresh in particolare nella piccola scritta bianca in alto (di solito si disegna sul back-buffer ed al termine si mostra il tutto sul front-buffer.... con le OpenGL ad es si usa la fuinzione SwapBuffers(hDC);, in DirectX non la ricordo di preciso ma il metodo è analogo).

Infine durante il gioco che va liscio su entrambe le macchine di caratteristiche mooooolto diverse si ha il solito problema per le scritte gialle in basso ed ovviamente sulla 6600 va molto meglio in termini di fluidità (ma qui non è colpa tua :P ).

Concludo con un ultimo GROSSO BUG (per entrambe le macchine): se ad esempio durante un qualunque punto dell'esecuzione (presentazione e gioco) uso Alt-Tab per passare ad un'altra applicazione e poi tornare al gioco, oppure premo il pulsante Windows della tastiera, quando poi ritorno al gioco succede il finimondo e cioè la presentazione scrive una scritta sopra l'altra mentre se quaccio questo switch di applicazioni durnte il gioco quando ci torno le scritte si sovrappongono ed il frame di gioco è tutto nero!!!!

:hello::hello: e scusa il ritardo

Share this post


Link to post
Share on other sites

P.S.: Negli eseguibili .EXE, nelle DLL o in altro tipo di file comune non si inseriscono le password in chiaro, ci può essere sempre qualcuno (come me) che si diverte ad aprire il fine in esadecimale e "leggere" cose che tu credi di aver nascosto!!!!!!!!!!!! ....molte volte poi con gli EXE explore mi frego le risorse del tipo puntatori, icone finestre ,...... tutto questo per dirti che senza giocare ho trovato la PWD..... :P

:rolleyes::hello:

P.S.: Spero che questo consiglio più quelli del post precedente ti siano di grande utilità


Edited by TheShark

Share this post


Link to post
Share on other sites

HIHIHIHI!!! Non ti preoccupare se hai scoperto la password , anzi ne sono molto contento , infatti il gioco l'ho voluto consegnare di proposito cosi' senza troppe criptazioni , per far capire le strutturazioni e i principi base e le varie opportunità che poi andranno risolte e implementate 1 tra queste , quella che tu hai scoperto. Bravo!!!

Per le scritte di scorrimento ho avuto un problema in fase di compilazione, cioè avviandolo con il sorgente la sincronizzazione è perfetta , ma una volta compilato in exe , ho dovuto applicare dei comandi SYNC in piu' ad ogni sincronizzazione del testo.

Qui spiego come ho "risolto" il problema :

http://www.kataxia.com/web/forums/viewtopi...4fa01e37eda9869

...se per caso avvii il sorgente con il compilatore darkBasic , occorre rimuovere i comandi SYNC in piu' che ho dovuto aggiungere nel sorgente per risolvere il problema della sincronizzazione delle scritte a video, cioè occorrerà lasciare 1 ed uno solo Sync in un ciclo e non di piu', solo per creare l'exe occorerà applicare il sync ad ogni cambiamento delle proprietà del testo (nome font,dimensione font, colore ecc.. SYNC)

Questo del testo non è da approfondire , poichè le scritte di testo in un prodotto finito saranno IMMAGINI tagliate e incollate , quindi niente testo in output , ma immagini rappresentanti i caratteri . Stesso discorso vale per le scritte dei menu , che possono e devono essere sostituite con immagini grafiche o sprite per un miglior rendimento e impatto visivo.

Ti ringrazio per aver testato il progetto , ora lo puoi modificare a piacimento , se hai bisogno di una mano ci sono.

Idee utili:

-è possibile far muovere le pedane ,

-è possibile migliorare l'I.A. delle palline (Per ora hanno il movimento casuale RND , volendolo cambiare quella è la posizione nel codice del movimento, e volendo si puo' applicare un movimento a PAN, a Vortice, Direzionale, ad inseguimento o altro)

-è possibile apl posto delle palline inserire dei cloni di gnack da utilizzare come nemici, o inserire nemici aggiuntivi

-se si anima lo gnack , sarebbe carino vedere i piedini oscillare su e giu' come un canguro , e se si mouvono le braccia , si puo' farlo scorrere e arrampicare quando appoggia sui lati della pedana.

-alcne palline potrebbero essere utilizzate come bonus se toccate , altre come danno , e altre come sostegno in volo.

-bhe lasciate andare la vostra fantasia....

Ciao e Grazie!!!

Share this post


Link to post
Share on other sites

Ciao ho provato il giochino!! simpatico carino, interessante......tu non sei un programmatore....almeno spero!! non si lavora così!!!! frustati o datti un po di sberloni da solo!! è questo il modo di strutturare un'applicazione??!?!? non si fa!! a parte gli scherzi scusa è stato più forte di me ma un programmatore serio non dovrebbe presentarsi così e nemmeno creare una struttura tale, ora non ho molto tempo per giocare e vedere il codice che hai scritto cmq ti farò sapere :)

ciao ciao :)

Share this post


Link to post
Share on other sites

[X i Moderatori]

C'è la possibilità di mettere un indicatore del numero dei download effettuati del Tutorial -Game 3D , tanto per poter capire se è di utilità e di interesse o no e per vedere cosa migliorare per un eventuale prossimo e diverso Tutorial - Game 3D ?

[X Tutti]

Io intanto ho messo un sondaggio qui , per non intasarvi di spazio.

http://lnx.kataxia.com/web/forums/viewtopic.php?p=4850#4850

Chiunque puo' esprimere le sue opinioni , critiche , e altro in modo che l'eventuale prossimo Tutorial - Game 3D tenga conto di tutti i punti di vista e che sia soddisfaciente per tutti.

Share this post


Link to post
Share on other sites

[X TheShark]

Concludo con un ultimo GROSSO BUG (per entrambe le macchine): se ad esempio durante un qualunque punto dell'esecuzione (presentazione e gioco) uso Alt-Tab per passare ad un'altra applicazione e poi tornare al gioco, oppure premo il pulsante Windows della tastiera, quando poi ritorno al gioco succede il finimondo e cioè la presentazione scrive una scritta sopra l'altra mentre se quaccio questo switch di applicazioni durnte il gioco quando ci torno le scritte si sovrappongono ed il frame di gioco è tutto nero!!!!

Se hai bisogno di implementare queste opzioni occorre solamente aggiungere nella parte

delle IMPOSTAZIONI INIZIALI queste righe di codice: (almeno la riga 1 e la 4, perchè la 2 e la 3 servono solo se vuoi anche la modalità a finestra)

Riga 1) DISABLE ESCAPEKEY :REM (Per disabilitare il tasto esc, ma per uscire dal programma occorrera' specificare la condizione di uscita associata a qualche evento)

Riga 2) SET WINDOWS ON :REM (se vuoi la modalita' a finestra ON altrimenti OFF per la modalità a tutto schermo, (va messo dopo il SET DISPLAY MODE 1024,768,32)

Riga 3) ALWAYS ACTIVE ON :REM (Il programma continua ad essere eseguito anche se dovesse essere minimizzato, (Qui perde lo stesso il FOCUS di applicazione corrente se si preme ALT-TAB) )

Riga 4) DISABLE SYSTEMKEYS :REM (Disabilita i controlli in input generati con ALT - TAB quindi MANTIENE IL FOCUS)

Cmq non è un BUG , ma una NON implementazione della procedura di refresh.

Se disattivi i tasti ESC, ALT-F4 , ALT - TAB , perdi la possibilità di vedere le finestre dagli avvisi dati dal sistema , quali finestre di aggiornamenti,antivirus, e altri popup menu che di solito spuntano normalmente per avvisarti dei comunissimi eventi, e per un tutorial non mi sembra il caso di disattivarli.

Ciao , Se serve altro sono qui!


Edited by DARKTy

Share this post


Link to post
Share on other sites

Ciao

...infatti non devi assolutamente disabilitare questi tasti ma devi correggere i difetti che dissi, perché se compare involontariamente un qualunqe messaggio di Windox e la tua pplicazione va in secondo piano poi succede il finimondo e sei costretto a chiuderla perché inutilizzabile!

Ciao

Share this post


Link to post
Share on other sites

Dunque: per sapere se un applicazione è stata sospesa e ripresa , si utilizza questo comando...

ValoreRestituito=SCREEN INVALID() : REM 0=NO , 1=SI è stata sospesa e ripresa

Quindi :

IF ValoreRestituito=1 THEN Gosub ProceduraDiRefresh

REM ETICHETTA DI REFRESHRiparo:

da fare qui...

Ora qui non so quale siano i comandi pu' adatti,

ma piu' probabile che sia lo

SHOW OBJECT NumeroOggetto

Quindi un rivisualizzazione degli oggetti per ogni oggetto presente

nella scena utilizzando questo comando(per evitare di eliminarli

e poi ricaricarli)

Return

:blush: Dammi un consiglio! Secondo te qual'è il miglior modo per effettuare il refresh durante una sospensione del focus con ritorno all'applicazione?

Cioè devo eliminare gli oggetti e ricaricarli (tanto le nuove posizioni restano memorizzate) , o eseguire uno show (che è l'opposto di HIDE OBJECT , ma che potrebbe avere esito positivo) oppure c'è qualche altro trucchetto particolare ???


Edited by DARKTy

Share this post


Link to post
Share on other sites

Ciao

Per prima cosa quando una applicazione full-screen (tipo giochi) perde il focus a causa di una riduzione ad icona oppure perchè passa in secondo piano e comunque non può essere più full-screen e non ha una finestra standard di visualizzazione e bene che il ciclo di rendering si fermi per evitare inutili rallentamenti nell'uso dell'attuale prog in primo piano (cpu al 100% inutilmente), poi quando torni al gioco devi stare attento a che il device context delle directx sia ancora valido, catturare un evento di lost-focus che le directx hanno e al limite ciclare in attesa che il focus torni e a quel punto fare un refresh della scena cancellando prima il frame buffer (ed ovviam anche il depth buffer e tutti gli altri buffer attivi).

Non credo sia necessario ricaricare gli oggetti

:hello:

Share this post


Link to post
Share on other sites

Si è vero è proprio cosi' , infatti non occorre ripristinare le texture di eventuali oggetti 3D , perchè quelle vengono aggiornate automaticamente con il la visualizzazione dell'oggetto , quindi occorre solo il refresh delle immagini 2D , infatti in un esempio del dark ho visto che all'evento SCREEN INVALID()=1 inizia una procedura di riincollamento sullo schermo di tutte le immagini 2D , mentre per il 3D non tocca nulla in manuale. Non ricordo cosa scompare nel game , ma se la matrice del terreno e le texture degli oggetti rimangono , devo solo pulire lo schermo del backbuffer e ciclare una nuova incollatura dell'interfaccia 2D .

Ho scoperto che il DB 1 supporta la struttura Type , è un po' diversa la sintassi rispetto a quella del TYPE di Vb , ma questo mi basta e mi aiuta parecchio adesso per velocizzare le mie procedure di programmazione.

Un'altra cosa importante è che mi sto per accostare a comprendere le dll per la chiamata in DB e il loro utilizzo.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...