SlaD3D

Gex, Dll, DyLib, Js e ogni tipo di estensione per GameMaker
Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

SlaD3D

Messaggio da Sla »

cos'è?
Una mia DLL per la creazione di videogame in 3D (del tipo u3d,xtreme3d,ogre3d..) con una peculiarità:
le sue funzioni sono le stesse del d3d di game maker a cui vengono aggiunte di più potenti.
(utilizzo di geometria statica per la velocità normale nel disegno dei poligoni, mipmap, utilizzo shader, possibilità di caricare modelli da diversi formati, skinning e tutte le altre tecniche 3d che avreste voluto poter utilizzare in gm).
In questo modo non avete bisogno di studiarvi da 0 un nuovo sistema se già conoscevate il d3d di gm.
Immagine
http://www.2shared.com/file/ZAJm8n8E/SlaD3D.html (274 KB)
Attenzione: se non avete installato vc++ vi servirà il redistributable:
http://www.microsoft.com/download/en/co ... px?id=5555 (4.8 MB)
Provatela e vedete se funziona. SlaD3D.zip contiene un gmk, la DLL e il file .gml con gli script.
Se avete un gm precedente all'8 create un nuovo progetto, importate gli scripts, create un object.
Evento create:

Codice: Seleziona tutto

sd3d_init();
sd3d_start();
bricks = sd3d_texture_load("mattoni.jpg");
sd3d_set_mipmap(true);
mipmap = true;

//Creo una piramide a 4 facce
piramide = sd3d_model_create();
sd3d_model_primitive_begin(piramide,pr_trianglelist);

sd3d_model_vertex_texture(piramide,-100,-100,0,0,0);
sd3d_model_vertex_texture(piramide,100,-100,0,1,0);
sd3d_model_vertex_texture(piramide,0,0,100,.5,1);

sd3d_model_vertex_texture(piramide,-100,-100,0,0,0);
sd3d_model_vertex_texture(piramide,-100,100,0,1,0);
sd3d_model_vertex_texture(piramide,0,0,100,.5,1);

sd3d_model_vertex_texture(piramide,-100,100,0,0,0);
sd3d_model_vertex_texture(piramide,100,100,0,1,0);
sd3d_model_vertex_texture(piramide,0,0,100,.5,1);

sd3d_model_vertex_texture(piramide,100,100,0,0,0);
sd3d_model_vertex_texture(piramide,100,-100,0,1,0);
sd3d_model_vertex_texture(piramide,0,0,100,.5,1);

sd3d_model_primitive_end(piramide);
evento end_step:

Codice: Seleziona tutto

sd3d_set_projection(mouse_x,mouse_y,300,0,0,0,0,0,1);
if(keyboard_check_pressed(ord("M")))
{
    sd3d_set_mipmap(!mipmap);
    mipmap = !mipmap;
}
if(sd3d_render_begin())
{
    sd3d_draw_block(-300,-100,0,-100,100,200,bricks,1,1);
    sd3d_model_draw(piramide,0,0,80,bricks);
    sd3d_render_end();
}
evento game_end:

Codice: Seleziona tutto

sd3d_end();

Il progetto deve ancora svilupparsi:
non ho ancora creato tutte le funzioni d3d di gm, anche se ne ho già aggiunte di carine (come d3d_set_mipmap, per testarla premete M nell'esempio)
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Finalmente l esoterico progetto di SLA!
La famigliarità con il D3D mi crea spontanee le seguenzi sensazioni :

- :D Sono pratico del D3D potrò fare qualcosa :first:
- D3d :roll: mmm.. mi sorge un piccolo pregiudizio riguardo alle prestazioni,Dimm che questa dll fa il culo al D3d,e magari fa un paragone con u3d,ogre.. piazzalo in un ipotetica classifica insomma.

Ps: Parlando d luci(3d lighting) com è messo ?
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

enick ha scritto:Finalmente l esoterico progetto di SLA!
La famigliarità con il D3D mi crea spontanee le seguenzi sensazioni :

- :D Sono pratico del D3D potrò fare qualcosa :first:
- D3d :roll: mmm.. mi sorge un piccolo pregiudizio riguardo alle prestazioni,Dimm che questa dll fa il culo al D3d,e magari fa un paragone con u3d,ogre.. piazzalo in un ipotetica classifica insomma.

Ps: Parlando d luci(3d lighting) com è messo ?
seconda: Sì. alla pari degli altri. D3D sta per Direct3D, una branca delle directX che però game maker utilizza malissimo.. u3d e ogre usano entrambe direct3d.
luci: per ora manca solo la funzione d3d_light_define_direction. Aggiungerò qualche altro tipo di luce (ad esempio quella a cono) e probabilmente anche qualche tecnica
avanzata di illuminazione. Quella di gm è vertex lighting. Aggiungerò la per-pixel lighting studiandomi bene gli shader.
Ultima modifica di Sla il 22/11/2011, 23:43, modificato 1 volta in totale.
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:
enick ha scritto:Finalmente l esoterico progetto di SLA!
La famigliarità con il D3D mi crea spontanee le seguenzi sensazioni :

- :D Sono pratico del D3D potrò fare qualcosa :first:
- D3d :roll: mmm.. mi sorge un piccolo pregiudizio riguardo alle prestazioni,Dimm che questa dll fa il culo al D3d,e magari fa un paragone con u3d,ogre.. piazzalo in un ipotetica classifica insomma.

Ps: Parlando d luci(3d lighting) com è messo ?
seconda: Sì. alla pari degli altri. D3D sta per Direct3D, una branchia delle directX che però game maker utilizza malissimo.. u3d e ogre usano entrambe direct3d.
luci: per ora manca solo la funzione d3d_light_define_direction. Aggiungerò qualche altro tipo di luce (ad esempio quella a cono) e probabilmente anche qualche tecnica
avanzata di illuminazione. Quella di gm è vertex lighting. Aggiungerò la per-pixel lighting studiandomi bene gli shader.
Grande! appena posso la provo se posso darti un consiglio personale rendi discreto
il sistema dell'illuminazione con varie funzioni di supporto come la spot che hai gia citato e magari un luce ambientale,l d3d relativamente alle luci era un po carente e inefficiente , se il tuo si dimostra migliore in questo campo potrei pensare di sostituirlo al volo.
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: SlaD3D

Messaggio da BaronVsCorsar »

grande Sla!
questo vuol dire che potrei convertire i miei progetti D3D semplicemente includendo la tua dll & script e rinominando tutti gli script d3d_* in sd3d_*?
sarebbe interessante, per me e non solo (puoi fare un confronto davvero significativo in questo momento).

Quali funzioni d3d ti mancano?

PS: prevedi pure una gex? sono decisamente più comode delle dll
PPS: :D la branchia è quelle dei pesci, riguardo directX puoi parlare di una branca. :lol:
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

BaronVsCorsar ha scritto:grande Sla!
questo vuol dire che potrei convertire i miei progetti D3D semplicemente includendo la tua dll & script e rinominando tutti gli script d3d_* in sd3d_*?
sarebbe interessante, per me e non solo (puoi fare un confronto davvero significativo in questo momento).

Quali funzioni d3d ti mancano?
questo sarebbe davvero comodo :roll:
BaronVsCorsar ha scritto:PS: prevedi pure una gex? sono decisamente più comode delle dll
Pareri personali,oo trovo molto piu comode le gex sia per l importazione (bisogna solo aggiungere la gex :protect: ovvio) sia per il fatto di avere le funzioni a portata d editor ;)
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: SlaD3D

Messaggio da guidox »

BaronVsCorsar ha scritto:questo vuol dire che potrei convertire i miei progetti D3D semplicemente includendo la tua dll & script e rinominando tutti gli script d3d_* in sd3d_*?
O meglio togli la "s" dagli script di sla!
Se in game maker crei un script con il nome di una funzione che già esiste verrà eseguito la script! :)

Comunque slascio buon lavoro! Metti una buona gestione delle luci e ci faccio un pensierino. ;)
Immagine

Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: SlaD3D

Messaggio da Jak »

Il progetto è molto interessante e fare la gex includerà le dll dentro l'exe(così non devi rilasciare ma famosa msv100d.dll ma solo una gex comprendente tutto)
Il difetto di engine come u3d e ogre è che hanno uno scarso supporto a basso livello così da disegnare in maniera diretta qualcosa di particolare senza modificare la geometria ecc
PS: Se non sbaglio tempo fa parlavi di essere riuscito ad ottenere il context di game maker, non potresti usarlo per usare gli sprite di game maker come texture? Fare interagire i due sistemi direttamente insomma facendo fare un po ad uno ed un po all'altro o dici che è impossibile?
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Mancano ancora poche funzioni del d3d, oltre a d3d_light_define_direction che ho già menzionato, e nessuna è problematica.
Sono esattamente tutte le funzioni della sezione Drawing Basic Shapes eccetto d3d_draw_block (semplicemente perchè, per pigrizia, non avevo voglia di mettermi li a calcolare i vertici di ellissi e circonferenze, per quanto sia un lavoro da 10 minuti) e, di conseguenza, quelle similari dei primitivi (d3d_model_primitive_cone,ellipsoid...).
Quella per la fog mi da qualche bug, sistemerò presto con l'ausilio del mio mitico manuale DX9.
Della sezione Viewing the world ho lasciato intenzionalmente solo d3d_set_projection e d3d_set_projection_ext. Per il disegno 2d ho intenzione di aggiungere la funzione
sd3d_draw_texture(texid,x,y), e, magari, una serie di funzioni secondarie per disegnare texture con scaling e rotazioni.
Volendo si potrà,tra le altre cose, disegnare su una surface trasparente, salvarla e caricarla come texture per avere un output 2d sopra quello 3d.

Puoi "convertire" un vecchio progetto cambiando i nomi delle funzioni, con qualche accorgimento..
tutte le operazioni di disegno vanno tra sd3d_render_begin() e sd3d_render_end(), preferibilmente in end step.
Per il momento però non do garanzie, non ho testato bene tutto e potrebbe esserci qualche incongruenza tra il funzionamento della mia DLL
e del d3d di gm.

Il futuro della DLL? colmare i vuoti che mancano per quanto concerne il d3d di gm e aggiungere figate:
supporto animazioni con lo skinning, caricamento modelli da molti formati, supporto di shader in HLSL e/o altro (ancora devo studiarmeli),
magari metterne qualcuno di default: bump mapping/parallax mapping, per pixel lighting, toon shading..., vertex tweening,heightmaps, collisioni tra modello/modello e modello/retta, antialiasing..

@Jak: ero riuscito a ottenere il device di game maker, purtroppo però è fatto in DX8 e non riesco a utilizzare le sue sprite nella mia DLL.

Per il discorso "metti luci belle e lo userò": dovreste già usarlo solo che per il mipmap! E' incredibile che gm non lo abbia.. le luci di base sono uguali a gm (vertex lighting), con qualche tipologia in più (gm ha solo point e directional lights).
Quando avrò messo anche le luci via shader avrete tra le mani qualcosa di molto più potente... c'è tempo.

In ogni caso adesso vi chiedo solo di provare la DLL per vedere se funziona a tutti, perciò
DOWNLOAD (274 KB)
E, se non avete installato vc++:
Vc++2010 Redistributable (4.8 MB)
eppure mi sembra tutto giusto...

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Molto bene.
Aggiornerò presto la DLL con tante nuove funzioni.
eppure mi sembra tutto giusto...

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: SlaD3D

Messaggio da Tizzio »

unexpected error occured when running the game
Ho vc++2010 installato sul pc
windows 7 con directx 10
:fapensare:
u3d e ogre mi funzionano

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: SlaD3D

Messaggio da Jak »

Stessa cartella del gioco(o sulla cartella system).
Per ignote ragioni i redistributable si dimenticano questa dll :fapensare:
http://www.mediafire.com/?14q8mxed5703n57
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Per quanto riguarda tizio il problema è di altra natura,
in primo luogo perchè ha già vc++, secondariamente se il problema fosse quella DLL verrebbe richiesta esplicitamente con un messaggio di errore (impossibile trovare 'msvcr7d.dll').
Il fatto che sia GM a dare errori e non la DLL con uno dei messaggi preimpostati di DX9 mi fa pensare che essa venga effettivamente avviata correttamente, ma blocchi gm probabilmente per una mancanza di prestazioni (il che è plausibile visto la fonte..).
In effetti, sebbene DX9 ne offra la possibilità, non ho fatto nessun tipo di controllo al momento dell'inizializzazione della DLL. Magari nella prossima release la inizializzo sfruttando il massimo disponibile dal computer..
eppure mi sembra tutto giusto...

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: SlaD3D

Messaggio da Jak »

A me con gm8.1 mi dice che manca la dll mentre con gm8.0 mi dice solo unexpected error :fapensare:
E' anche vero che pure tizzio ha gm8.1 quindi effettivamente hai ragione.

Se gm fallisce ad inizializzare ti viene il messaggio che non è riuscito ad inizializzare la funzione.
Unexpected error di solito mi capita in caso di errori della dll. :fapensare:
Quindi boh, non saprei cosa fare a parte aggiornare i driver(ma credo che l'hai già fatto no?)
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Nono, ho testato con alcune funzioni che il mio hardware non supportva.
Creando una applicazione win32 in c++ che utilizzava la mia DLL si chiudeva all'istante, senza dare messaggi strani. La stessa cosa accade in gm, solo che questo ultimo ha una sua gestione dei 'blocchi' del gioco, e mostra errore. Se è vero che DX ha un apparato facilmente e doverosamente sfruttabile per quanto riguarda gli errori, è anche vero che non li mostra in automatico se non per casi eccezionali. E sarebbe anche sgradevole il contrario, o almeno io verrei infastidito dal dover mostrare dei messaggi non miei (preferirei gestire da me gli errori e mostrare i miei personali messaggi).
E ricordiamoci di far mettere a tizzio l'avatar troll-face.
eppure mi sembra tutto giusto...

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

Eccomi di ritorno da parigi e pronto a procedere nello sviluppo :)
eppure mi sembra tutto giusto...

Avatar utente
enick
GMI VIP
Messaggi: 3749
Iscritto il: 26/06/2011, 19:34
Specialità: 39dll e 3D
Località: Sardegna
Contatta:

Re: SlaD3D

Messaggio da enick »

Super_Slascio ha scritto:Eccomi di ritorno da parigi e pronto a procedere nello sviluppo :)
1) Parigi :shock: , BASTARDO 8)
2) Ecco bravo continua. :lol:
Nicola porcu(Sardegna)
ImmagineImmagine
Immagine
Are you sleeping?
[email protected]

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

gita di classe anticipata :roll:
cmq odio parigi
eppure mi sembra tutto giusto...

Avatar utente
condors94
GMI Guru
Messaggi: 2939
Iscritto il: 07/01/2010, 16:53
Contatta:

Re: SlaD3D

Messaggio da condors94 »

io DEVO andarci... come DEVO andare in jamaica e come DEVO andare ad amsterdam :lol: :lol:

8)

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: SlaD3D

Messaggio da Sla »

vabbe.. torniamo on topic.
Procede bene, ho aggiunto la possibilità di caricare modelli da file .x e le collisioni.
Spoiler
EvilDrone.x
Immagine
Ecco come funzionano:
per ogni modello lascio una "slot di salvataggio" (uno spazio di alcuni bytes) che viene sovrascritta con le informazioni sulle trasformazioni correnti (scale, translation, rotation) ogni volta che quel modello viene disegnato. Queste informazioni vengono poi utilizzate dalle funzioni di collision checking.
Quindi, se utilizzate d3d_collision_ray(modello,raggio) saprete se il dato raggio collide con il modello così come lo avete disegnato l'ultima volta.
eppure mi sembra tutto giusto...

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti