[GEX]Fake3D

Gex, Dll, DyLib, Js e ogni tipo di estensione per GameMaker
Avatar utente
Delfador
Membro attivo
Messaggi: 376
Iscritto il: 04/01/2010, 19:52
Specialità: Ehm...
Località: <- Per di qua ->
Contatta:

[GEX]Fake3D

Messaggio da Delfador »

Fake3D v1.3

E' una GEX che permette di disegnare le principali forme solide (parallelepipedi, prismi/cilindri, piramidi/coni) senza usare il 3D!
Si usano solo i primitive :rockrock:
L'uso massiccio può rallentare parecchio il gioco.

Nello zip trovate la GEX e un .gmk che ne spiega le principali funzioni (non ho fatto in tempo a mettere l'help).
Se la usate nei vostri giochi creditate :rockrock:

Download

Screen
Spoiler
Immagine
Immagine
Funzioni
  • fake3d_adjust_depth(x,y,add)
  • fake3d_draw_cube(x1,y1,z1,x2,y2,z2)
  • fake3d_draw_cube_color(x1,y1,z1,x2,y2,z2,col1,col2,col3,col4,col5,col6,col7,col8)
  • fake3d_draw_cube_texture(x1,y1,z1,x2,y2,z2,tex)
  • fake3d_draw_cube_texture_ext(x1,y1,z1,x2,y2,z2,tex1,tex2,tex3,tex4,tex5,tex6)
  • fake3d_draw_cylinder(x,y,z1,z2,radius,prec)
  • fake3d_draw_cylinder_color(x,y,z1,z2,radius,prec,col,col2)
  • fake3d_draw_cylinder_texture(x,y,z1,z2,radius,prec,tex)
  • fake3d_draw_cylinder_texture_ext(x,y,z1,z2,radius,prec,tex1,tex2)
  • fake3d_draw_line(x,y,z,depth)
  • fake3d_draw_line_color(x,y,z,depth,col1,col2)
  • fake3d_draw_line_ext(x1,y1,z1,x2,y2,z2)
  • fake3d_draw_line_ext_color(x1,y1,z1,x2,y2,z2,col1,col2)
  • fake3d_draw_point(x,y,z)
  • fake3d_draw_point_color(x,y,z,color)
  • fake3d_draw_pyramid(x,y,z1,z2,radius,num)
  • fake3d_draw_pyramid_color(x,y,z1,z2,radius,num,col1,col2)
  • fake3d_draw_pyramid_texture(x,y,z1,z2,radius,num,tex)
  • fake3d_draw_rectangle(x1,y1,z1,x2,y2,z2,outline)
  • fake3d_draw_rectangle_color(x1,y1,z1,x2,y2,z2,col1,col2,col3,col4,outline)
  • fake3d_draw_rectangle_texture(x1,y1,z1,x2,y2,z2,tex,outline)
  • fake3d_draw_sprite(spr,subimg,x,y,z)
  • fake3d_draw_sprite_ext(spr,subimg,x,y,z,xscale,yscale,rot,col,alpha)
  • fake3d_draw_vertex(x,y,z)
  • fake3d_draw_vertex_color(x,y,z,col,alpha)
  • fake3d_draw_vertex_texture(x,y,z,xtex,ytex)
  • fake3d_draw_vertex_texture_color(x,y,z,xtex,ytex,col,alpha)
  • fake3d_point_distance(x1,y1,z1,x2,y2,z2)
  • fake3d_set_center(x,y)
  • get_x_from_depth(x,y,z)
  • get_y_from_depth(x,y,z)
Bug
    Proposte
    • Luci
    Changelog
    Spoiler
    v1.3
    • Le funzioni sono state rifatte da capo, aumentandone la performance
    • Aggiunte varie funzioni
    v1.2
    • Ora tutte le funzioni di draw richiedono depth1 e depth2
    v1.1
    • Non è più necessaria la funzione fake3d_init()
    • Le texture si adattano perfettamente ai poligoni
    • Non ci sono più problemi con le piramidi
    v1
    • Creata la GEX!
    Ultima modifica di Delfador il 22/02/2011, 22:05, modificato 8 volte in totale.
    Immagine

    Nix
    GMI Advanced
    Messaggi: 2437
    Iscritto il: 26/12/2008, 18:14
    Uso: GM:Studio 2
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Nix »

    Molto bella, complimenti :mrgreen:

    Avatar utente
    CaMpIoN
    Membro super
    Messaggi: 684
    Iscritto il: 17/11/2009, 16:20
    Specialità: Programmatore
    Uso: GM:Studio 1.4 Master
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da CaMpIoN »

    Bella, è molto utile per un super processore... hihi :P
    Giochi da me creati:
    Spoiler
    Immagine

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

    Re: [GEX]Fake3D

    Messaggio da Jak »

    Ci avevo provato anche io tempo fa per poter usare la potenza delle surface nel 3d. Il problema è che tu puoi simulare la z muovendo le coordinate dei triangoli ma la profondità sarà data dall'ordine con cui disegni i triangoli. Se un cubo dovrebbe essere nascosto da un'altro il cubo che sta davanti è quello disegnato per ultimo inoltre se intersecate dei triangoli viene sempre questo problema cioè che non si intersecano ma il triangolo disegnato per ultimo sta sopra agli altri.
    Fatto sta che questa gex è utilissima se si vogliono fare dei giochi in finto 3d su un solo livello di profondità, praticamente ciò che si vede dai tuoi screen, che gli oggetti 3d sono tutti con la stessa profondità.
    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
    BaronVsCorsar
    GMI VIP
    Messaggi: 4699
    Iscritto il: 14/02/2004, 12:05
    Specialità: Saccenza
    Uso: GameMaker 8.1
    Località: Ferrara
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da BaronVsCorsar »

    interessante :fapensare:

    e poichè è quasi inutile a livello di utilizzo pratico (d3d o u3d ci son già), è estremamente più interessate!

    Bella pensata, complimenti :cappa:

    @jak: in effetti solo con il depth non si possono gestire tutte le possibili sovrapposizioni (dovuto alla terza dimensione, alcuni oggetti possono coprire in parte un oggetto B più avanti rispetto ad A ed essere parizalmente ricoperti da A.

    Codice: Seleziona tutto

            X
    AAAAAAAAAAA  
                                            BBBBBBBBBBBB
    
                                                X
    
    A, B e X sono parallelepipedi, X sbieco rispetto ad A e B (immaginate la linea che unisce le due X... ok, non è venuto benissimo, ma per dare l'idea)
    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
    Delfador
    Membro attivo
    Messaggi: 376
    Iscritto il: 04/01/2010, 19:52
    Specialità: Ehm...
    Località: <- Per di qua ->
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Delfador »

    Jak ha scritto:Ci avevo provato anche io tempo fa per poter usare la potenza delle surface nel 3d. Il problema è che tu puoi simulare la z muovendo le coordinate dei triangoli ma la profondità sarà data dall'ordine con cui disegni i triangoli. Se un cubo dovrebbe essere nascosto da un'altro il cubo che sta davanti è quello disegnato per ultimo inoltre se intersecate dei triangoli viene sempre questo problema cioè che non si intersecano ma il triangolo disegnato per ultimo sta sopra agli altri.
    Fatto sta che questa gex è utilissima se si vogliono fare dei giochi in finto 3d su un solo livello di profondità, praticamente ciò che si vede dai tuoi screen, che gli oggetti 3d sono tutti con la stessa profondità.
    La prima parte non sono sicuro di averla capita bene.
    Io ho cercato di simulare alla meglio la profondità e, per quanto ho provato fino ad ora non ci sono bug. Le facce dei solidi vengono disegnate nel'ordine esatto, e c'è la funzione apposita fake3d_adjust_depth() per impostare la depth correttamente.

    La seconda parte è vera.
    Cioè, nelle funzioni della gex c'è il parametro depth, che indica quanto debba essere profondo il solido. Quindi si può impostare su che piano debba "terminare", ma non su quale piano "inizi".
    In pratica:
    Spoiler
    Immagine
    Penso che, se trovate sia una cosa utile, potrei mettere nella prossima versione la possibilità di impostare anche la profondità d'inizio.

    Baron ha ragione (ovviamente).
    Immagine

    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: [GEX]Fake3D

    Messaggio da guidox »

    L' avevo cominciato pure io(avevo raggiunto un buon risultato), ma poi visto che io ci avevo messo molta altra roba mi sono fermato e poi visto che lo stavi già facendo tu mi sono proprio bloccato...
    Comunque un bel esempio, peccato che è un po lento...
    Immagine

    Immagine

    Avatar utente
    maz85
    Admin
    Messaggi: 8287
    Iscritto il: 07/02/2004, 15:57
    Specialità: Nientologo
    Località: Oblio
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da maz85 »

    Bravo, mi piace vedere gente con un po' di inventiva :D

    Avatar utente
    Delfador
    Membro attivo
    Messaggi: 376
    Iscritto il: 04/01/2010, 19:52
    Specialità: Ehm...
    Località: <- Per di qua ->
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Delfador »

    Grazie maz! Per me è un onore :D

    PS: fra poco rilascio la nuova versione 1.1 con i bug corretti
    Immagine

    Avatar utente
    Delfador
    Membro attivo
    Messaggi: 376
    Iscritto il: 04/01/2010, 19:52
    Specialità: Ehm...
    Località: <- Per di qua ->
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Delfador »

    Rilasciata versione 1.1

    Modifiche:
    • Non è più necessaria la funzione fake3d_init()
    • Le texture si adattano perfettamente ai poligoni
    • Non ci sono più problemi con le piramidi
    Immagine

    Nix
    GMI Advanced
    Messaggi: 2437
    Iscritto il: 26/12/2008, 18:14
    Uso: GM:Studio 2
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Nix »

    L'esempio nuovo non l'hai ancora uppato...

    Avatar utente
    Delfador
    Membro attivo
    Messaggi: 376
    Iscritto il: 04/01/2010, 19:52
    Specialità: Ehm...
    Località: <- Per di qua ->
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Delfador »

    L'esempio è quello giusto...
    Immagine

    Nix
    GMI Advanced
    Messaggi: 2437
    Iscritto il: 26/12/2008, 18:14
    Uso: GM:Studio 2
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Nix »

    Colpa di Chrome che non lo scaricava perchè ce n'era uno col nome uguale e pensava che fosse lo stesso file...

    Comunque non la installa.. An error occurred installing the extension package.
    EDIT: Installata

    Avatar utente
    Delfador
    Membro attivo
    Messaggi: 376
    Iscritto il: 04/01/2010, 19:52
    Specialità: Ehm...
    Località: <- Per di qua ->
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Delfador »

    Rilasciata la versione 1.2
    Modifiche:
    • Ora tutte le funzioni di draw richiedono depth1 e depth2.
    Può sembrare insignificante, ma permette creazioni... carine:
    Spoiler
    Immagine
    Immagine

    Avatar utente
    CaMpIoN
    Membro super
    Messaggi: 684
    Iscritto il: 17/11/2009, 16:20
    Specialità: Programmatore
    Uso: GM:Studio 1.4 Master
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da CaMpIoN »

    Wow questo si che è bello, merda ma non cambia il fatto della velocità, non si può trovare un modo per aumentare la velocità, insomma è perfetta ora, ma lenta, e come creare un gioco mettendoci 3 anni, e poi non venderlo nemmeno...
    Non so se mi spiego xD. :lol:
    Giochi da me creati:
    Spoiler
    Immagine

    Avatar utente
    Delfador
    Membro attivo
    Messaggi: 376
    Iscritto il: 04/01/2010, 19:52
    Specialità: Ehm...
    Località: <- Per di qua ->
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Delfador »

    Ho capito Campion, ma non penso si possa velocizzare più di tanto.
    L'unico modo sarebbe quello di creare una dll, ma purtroppo non sono capace :(
    Immagine

    Avatar utente
    CaMpIoN
    Membro super
    Messaggi: 684
    Iscritto il: 17/11/2009, 16:20
    Specialità: Programmatore
    Uso: GM:Studio 1.4 Master
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da CaMpIoN »

    Bhe puoi anche chiedere collaborazione a chi sa farlo... ;)
    Giochi da me creati:
    Spoiler
    Immagine

    Avatar utente
    Feschio
    Membro d'elite
    Messaggi: 1476
    Iscritto il: 02/07/2010, 8:19
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Feschio »

    Ma per fare una dll per gm non si dovrebbe conoscere un altro linguaggio? Anche perchè non vedo come una dll fatta usando le funzioni di gm possa accelerare...
    Valta Korpiklaani! Finlandia Rulez
    Nix ha scritto:Lego, tu piaccono alle rosse pescie dimezza cotte?

    Avatar utente
    Delfador
    Membro attivo
    Messaggi: 376
    Iscritto il: 04/01/2010, 19:52
    Specialità: Ehm...
    Località: <- Per di qua ->
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da Delfador »

    Feschio ha scritto:Ma per fare una dll per gm non si dovrebbe conoscere un altro linguaggio? Anche perchè non vedo come una dll fatta usando le funzioni di gm possa accelerare...
    Infatti...
    Io non conosco abbastanza bene nessun altro linguaggio per poter fare una dll :(
    Immagine

    Avatar utente
    jumoonp
    GMI VIP
    Messaggi: 3292
    Iscritto il: 13/01/2008, 20:59
    Contatta:

    Re: [GEX]Fake3D

    Messaggio da jumoonp »

    Guarda che i programmi 3d si potevano fare anche col GM4 e senza usare alcuna gex o dll......
    ne ho molti di tutorial a proposito....
    risulterebbe un pò difficile incollare vecchi code sul gm8, perchè alcune funzioni sono passate al d3d, per esempio si deve sostituire il draw_poligon col draw_rectangle o draw_line ect...., ma non è impossibile da fare....

    Da queste parti è passato un utente molto bravo, da cui ho carpito molto del suo lavoro, un certo "z4g0" , un mostro di bravura
    http://gmitalia.altervista.org/gmi_foru ... ofile&u=19

    chissa che fine ha fatto....
    Ultima modifica di jumoonp il 03/02/2011, 16:25, modificato 1 volta in totale.
    Spoiler
    Gabriele Dell'Otto e Lee bermejo

    Immagine

    Rispondi

    Chi c’è in linea

    Visitano il forum: Nessuno e 3 ospiti