[WIP] Moteur 3D Towanda en direct Live !

15 sujets de 16 à 30 (sur un total de 40)

  • Screetch

      #129935

      Merci Yomgui pour ton aide, je vais essayer de mettre ça en place dans mon moteur. Si mon moteur n’est pas conventionnel, c’est parfaitement normal, je ne m’appuie sur rien (ou pas grand chose) pour le faire. C’est plus un test pour moi, je voulais me prouver que j’en étais capable :).

      Si je montre le source, cela hérissera très surement le poil de nombreuses personnes ici :-D

      Abonnez-vous à ma nouvelle chronique "En Route vers le Futur" sur Youtube !

      AmiDARK

        #129936

        @Screetch :

        Si tu viens à l’Alchimie, j’amènerai 2 livres qui parlent de la conception d’un moteur 3D à la Wolfeinstein 3D … cela m’avait servi à créer mon 1er moteur 3D Sur Amiga 1200 ( 68060 nécessaire car pas optimisé par ma part) :p

        J’obtenai avec l’aide du moteur 3D détaillé, ce genre de rendus :

        (avant d’avoir supprimé l’effet fish eye :p)

        Après avoir fixé l’effet fish eye, j’obtenai un truc genre :

        Et après avoir amélioré le moteur (multi cases sur +ieurs hauteurs) j’obtenai ce genre de résultat :

        (gestion de lumières à la louche :p , etc …)

        Je dois aussi, toujours avoir le code 100% assembleur 680×0 dans un coin de mon HD si cela t’intéresse :p

        @+

        AmiDARK

        Anonyme

          #129937

          @Amidark: Au cas ou, je l’ai encore ;-)

          Par contre, Pb, j’arrive pas à lire des source amos avec un éditeur de texte, il faut obligatoirement Amos.

          Au cas ou, j’ai une source d’un raycast sous hollywood, ma version est plutôt pas terrible, par contre la version de jali est excellente mais rame à mort :-(

          AmiDARK

            #129938

            @Artblink : Lool

            Je te l’avais envoyé ? MDR

            Oui, pour l’Amos, il faut avoir l’Amos et exporter en .ASCII

            J’ai l’Amos, je pourrai l’exporter si tu veux (enfin, si cela n’utilise pas de librairies externes de l’Amos que je n’aie pas installé) ;)

            Oui, je me souviens de ton prog :) Sympa :)

            @ +

            AmiDARK

            Yomgui

              #129939

              Tiens une question me vient: pourquoi l’un d’entre vous n’a pas encore fait un « minecraft » à votre sauce?

              Ca demande pas un super moteur complexe, mais beaucoup d’idée pour l’interactivité.

              C’était pas une requête il y a pas longtemp?

              AmiDARK

                #129940

                Salut :)

                Bah pour ma part, l’élaboration et le développement de l’AmiDARK Engine prends tout mon temps libre de programmation :p

                Mais rien ne dit que plus tard je ne ferai pas de jeux en utilisant l’AmiDARK Engine bien sûr ;)

                @ +

                AmiDARK

                Anonyme

                  #129941

                  @Amidark:

                  Vi, c’était pour mon moteur 3D sous hollywood… hum… pas top mais c’était marrant. Avec la meuh meuh et le vaisseau de Mister Thellier.

                  Idem pour mon moteur raycast tous pourri qui fonctionnait un peux ;-)

                  Si c’est possible de me sortir le code Amos pour que je puisse le lire, se serais cool, mais fait seulement si t’a le temps, j’y regarderai pas maintenant.


                  @YomGui
                  : :-D, moi bidouilleur, alors impossible de sortir un truc complet en 3D, par contre, en 2D, j’trouve plein de truc, mais j’ai encore beaucoup de mal avec les IA… Si quelqu’un a des combine, c’est main’nant ;-)

                  Je recherche des petites routines pour l’IA d’un jeu de course de voiture, des ennemies dans un jeu de plateformes,shoot, pi c’est tous, en fait je cherche plein de source sur les IA.

                  AmiDARK

                    #129942

                    Salut :)

                    @ArtBlink :

                    Tu parles de quel code source Amos ?

                    Pour la 2D, il y a le A* je crois qui est le plus simple …

                    J’ai toujours eu aussi, un peu de mal avec l’IA …

                    @ +

                    AmiDARK

                    Anonyme

                      #129943

                      Coucou,

                      Il y a un fichier qui s’appel Motor092399d.Amos

                      Le A* je l’ai déjà sous hollywood, il marche bien, c’est un pathfinding qui calcule un trajet sur l’horizontale et la vertical, le pb c’est que je veux bloquer le pathfinding à 2 changement de direction, ex :

                      H=Horizontale

                      V=Verticale

                      H-V-H on arrête, pathfind pas bon ou

                      V-H-V

                      J’arrive pas à insérer une variable qui compte le changement de sens

                      Pour l’IA, j’ai pensé à une table mais bon, sa me parait trop simple, sûr qu’il y a une autre méthode

                      Yomgui

                        #129944

                        Et pourquoi vous vous mettez pas ensemble? c’est plus facile à plusieurs !?

                        Anonyme

                          #129945

                          Perso, c’est se que je fais avec Tarzin, mais en se moment on a tous les 2 des projets autre que le code, d’ailleurs, on recherche tjrs des coders francophone sur hollywood

                          V’la le code source, sa peut aider pour d’autre langage:

                          ; Hollywood port of the

                          ;

                          ; A* algorithm For LUA

                          ; Ported To LUA by Altair

                          ; 21 septembre 2006

                          ;

                          ;

                          ; Ported to Hollywood by jalih, it took 20 mins and two beers.

                          ;

                          ; Bugs are mine naturally.

                          ;

                          ;

                          Function CalcMoves(mapmat, px, py, tx, ty)

                          Local openlist = {}

                          Local closedlist = {}

                          Local listk = 0

                          Local closedk = -1

                          Local tempH = Abs(px - tx) + Abs(py - ty)

                          Local tempG = 0

                          Local xsize = ListItems(mapmat[0]) - 1

                          Local ysize = ListItems(mapmat) - 1

                          Local curbase = {}

                          Local basis = 0

                          InsertItem(openlist, { x = px, y = py, g = 0, h = tempH, f = 0 + tempH, par = 0 } )

                          While listk > -1

                          Local lowestF = openlist[listk].f

                          basis = listk

                          For Local k = listk To 0 Step -1

                          If openlist[k].f < lowestF lowestF = openlist[k].f basis = k EndIf Next closedk = closedk + 1 InsertItem(closedlist, openlist[basis], closedk) curbase = closedlist[closedk] Local rightOK = True Local leftOK = True Local downOK = True Local upOK = True If closedk > -1

                          For k = 0 To closedk

                          If closedlist[k].x = curbase.x + 1 And closedlist[k].y = curbase.y Then rightOK = False

                          If closedlist[k].x = curbase.x - 1 And closedlist[k].y = curbase.y Then leftOK = False

                          If closedlist[k].x = curbase.x And closedlist[k].y = curbase.y + 1 Then downOK = False

                          If closedlist[k].x = curbase.x And closedlist[k].y = curbase.y - 1 Then upOK = False

                          Next

                          EndIf

                          If curbase.x + 1 > xsize Then rightOK = False

                          If curbase.x - 1 < 0 Then leftOK = False If curbase.y + 1 > ysize Then downOK = False

                          If curbase.y - 1 < 0 Then upOK = False If curbase.x + 1 <= xsize And mapmat[curbase.y][curbase.x + 1] <> 0 Then rightOK = False

                          If curbase.x - 1 >= 0 And mapmat[curbase.y][curbase.x - 1] <> 0 Then leftOK = False

                          If curbase.y + 1 <= ysize And mapmat[curbase.y + 1][curbase.x] <> 0 Then downOK = False

                          If curbase.y - 1 >= 0 And mapmat[curbase.y - 1][curbase.x] <> 0 Then upOK = False

                          tempG = curbase.g + 1

                          For Local k = 1 To listk

                          If rightOK And openlist[k].x = curbase.x + 1 And openlist[k].y = curbase.y And openlist[k].g > tempG

                          tempH = Abs((curbase.x + 1) - tx) + Abs(curbase.y - ty)

                          InsertItem(openlist, {x = curbase.x + 1, y = curbase.y, g = tempG, h = tempH, f = tempG + tempH, par = closedk}, k)

                          rightOK = False

                          EndIf

                          If leftOK And openlist[k].x = curbase.x - 1 And openlist[k].y = curbase.y And openlist[k].g > tempG

                          tempH = Abs((curbase.x - 1) - tx) + Abs(curbase.y - ty)

                          InsertItem(openlist, {x = curbase.x - 1, y = curbase.y, g = tempG, h = tempH, f = tempG + tempH, par = closedk}, k)

                          leftOK = False

                          EndIf

                          If downOK And openlist[k].x = curbase.x And openlist[k].y = curbase.y + 1 And openlist[k].g > tempG

                          tempH = Abs(curbase.x - tx) + Abs((curbase.y + 1) - ty)

                          InsertItem(openlist, {x = curbase.x, y = curbase.y + 1, g = tempG, h = tempH, f = tempG + tempH, par = closedk}, k)

                          downOK = False

                          EndIf

                          If upOK And openlist[k].x = curbase.x And openlist[k].y = curbase.y - 1 And openlist[k].g > tempG

                          tempH = Abs(curbase.x - tx) + Abs((curbase.y - 1) - ty)

                          InsertItem(openlist, {x = curbase.x, y = curbase.y - 1, g = tempG, h = tempH, f = tempG + tempH, par = closedk}, k)

                          upOK = False

                          EndIf

                          Next

                          If rightOK

                          listk = listk + 1

                          tempH = Abs((curbase.x + 1) - tx) + Abs(curbase.y - ty)

                          InsertItem(openlist, {x = curbase.x + 1, y = curbase.y, g = tempG, h = tempH, f = tempG + tempH, par = closedk }, listk)

                          EndIf

                          If leftOK

                          listk = listk + 1

                          tempH = Abs((curbase.x - 1) - tx) + Abs(curbase.y - ty)

                          InsertItem(openlist, {x = curbase.x - 1, y = curbase.y, g = tempG, h = tempH, f = tempG + tempH, par = closedk }, listk)

                          EndIf

                          If downOK

                          listk = listk + 1

                          tempH = Abs(curbase.x - tx) + Abs((curbase.y + 1)- ty)

                          InsertItem(openlist, {x = curbase.x, y = curbase.y + 1, g = tempG, h = tempH, f = tempG + tempH, par = closedk }, listk)

                          EndIf

                          If upOK

                          listk = listk + 1

                          tempH = Abs(curbase.x - tx) + Abs((curbase.y - 1)- ty)

                          InsertItem(openlist, {x = curbase.x, y = curbase.y - 1, g = tempG, h = tempH, f = tempG + tempH, par = closedk }, listk)

                          EndIf

                          RemoveItem(openlist, basis)

                          listk = listk - 1

                          If closedlist[closedk].x = tx And closedlist[closedk].y = ty Then Return(closedlist)

                          Wend

                          Return(Nil)

                          EndFunction

                          Function CalcPath(closedlist)

                          If closedlist = Nil Then Return(Nil)

                          Local path = {}

                          Local pathIndex = {}

                          Local last = ListItems(closedlist) - 1

                          InsertItem(pathIndex, last, 0)

                          Local i = 0

                          While pathIndex > 0

                          i = i + 1

                          InsertItem(pathIndex, closedlist[pathIndex].par, i)

                          Wend

                          For Local n = ListItems(pathIndex) - 1 To 0 Step -1

                          InsertItem(path, { x = closedlist[pathIndex[n]].x, y = closedlist[pathIndex[n]].y })

                          Next

                          closedlist = Nil

                          Return(path)

                          EndFunction

                          map = {}

                          map[0] = { 0, 1, 0, 0, 0 }

                          map[1] = { 0, 1, 0, 0, 0 }

                          map[2] = { 0, 1, 0, 0, 0 }

                          map[3] = { 0, 1, 0, 1, 0 }

                          map[4] = { 0, 0, 0, 1, 0 }

                          moves = CalcMoves(map, 0, 0, 4, 4)

                          path = CalcPath(moves)

                          If path <> Nil

                          For i = 0 To ListItems(path) - 1

                          DebugPrint("move:", "(", path.x, ",", path.y, ")")

                          Next

                          Else

                          DebugPrint("Sorry, no path to target")

                          EndIf

                          AmiDARK

                            #129946

                            @ArtBlink :

                            Motor092399d.Amos … Oui effectivement … ça semble bien à moi ça :p MDR

                            Je vais jeter un oeil à ça demain après-midi ;)

                            @ +

                            AmiDARK

                            Anonyme

                              #129947

                              @Amidark:Par contre, comment sa va se passer le passage à Gallium 3D? ton outil ne fonctionnera plus?!!!

                              T’a des news la dessus ou on risque d’avoir plusieurs driver 3D, sa risque d’être chiant surtout quand on y connais pas grand chose (comme moi). On risque de se perdre… Lequel choisir?

                              Screetch

                                #129948

                                En tout cas, je suis content d’avoir lancé ce petit boost à vos projets de moteur 3D ^^. Cela me donne encore plus envie de continuer le mien :)

                                Abonnez-vous à ma nouvelle chronique "En Route vers le Futur" sur Youtube !

                                Anonyme

                                  #129949

                                  @screetch: C’est un moteur 3D ou raycast que tu fais?

                                15 sujets de 16 à 30 (sur un total de 40)

                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement [WIP] Moteur 3D Towanda en direct Live !

                                Amiga Impact