Level schneller laden

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

MCWulf

Betreff: Level schneller laden

BeitragSa, Jun 25, 2005 9:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich und mein Freund proggen derzeit an einem kleinen 3D-Spiel, bei dem eine Art Tile-Map aus einer Text-Datei gelesen und in Meshes umgesetzt wird.. Doch das dauert mir bei einer 100x100 felder großen Map viieeel zu lange... Wie könnte man den folgenden Code verbessern/beschleunigen?

Ich danke euch schonmal vielmals!!

Code: [AUSKLAPPEN]
   For i = 1 To MapWidth
      For i2 = 1 To MapHeight
         Select SpielfeldData$(i,i2)
            
            Case "1", "5"
               l$ =SpielfeldData$(i-1,i2):lo$=SpielfeldData$(i-1,i2-1)
               o$ =SpielfeldData$(i,i2-1):ro$=SpielfeldData$(i+1,i2-1)
               r$ =SpielfeldData$(i+1,i2):ru$=SpielfeldData$(i+1,i2+1)
               u$ =SpielfeldData$(i,i2+1):lu$=SpielfeldData$(i-1,i2+1)
               If l ="1" Or l ="5" Then l ="a" Else l ="s"
               If lo="1" Or lo="5" Then lo="a" Else lo="s"
               If o ="1" Or o ="5" Then o ="a" Else o ="s"
               If ro="1" Or ro="5" Then ro="a" Else ro="s"
               If r ="1" Or r ="5" Then r ="a" Else r ="s"
               If ru="1" Or ru="5" Then ru="a" Else ru="s"
               If u ="1" Or u ="5" Then u ="a" Else u ="s"
               If lu="1" Or lu="5" Then lu="a" Else lu="s"
               str1$=l+lo+o: str2$=o+ro+r: str3$=r+ru+u: str4$=u+lu+l
               pfad1$="":    pfad2$="":    pfad3$="":    pfad4$=""
               com1$="aaa":  com2$="aas":  com3$="asa":  com4$="saa"
               com5$="ass":  com6$="sas":  com7$="ssa":  com8$="sss"
               drehung1=0:   drehung2=0:   drehung3=0:   drehung4=0
               x1#=0:        x2#=0:        x3#=0:        x4#=0
               y1#=0:        y2#=0:        y3#=0:        y4#=0
               If str1=com1 Then pfad1="gel2.3ds"
               If str2=com1 Then pfad2="gel2.3ds"
               If str3=com1 Then pfad3="gel2.3ds"
               If str4=com1 Then pfad4="gel2.3ds"
               If str1=com2 Then pfad1="gel3.3ds" :drehung1=90 : x1=-0.5
               If str2=com2 Then pfad2="gel3.3ds" :drehung2=90 : y2=-0.5
               If str3=com2 Then pfad3="gel3.3ds" :drehung3=90 : x3=0.5
               If str4=com2 Then pfad4="gel3.3ds" :drehung4=90 : y4=0.5
               If str1=com3 Then pfad1="gel4.3ds"
               If str2=com3 Then pfad2="gel4.3ds"   
               If str3=com3 Then pfad3="gel4.3ds"
               If str4=com3 Then pfad4="gel4.3ds"
               If str1=com4 Then pfad1="gel5.3ds" :drehung1=-90 : y1=-0.5
               If str2=com4 Then pfad2="gel5.3ds" :drehung2=-90 : x2=0.5
               If str3=com4 Then pfad3="gel5.3ds" :drehung3=-90 : y3=0.5
               If str4=com4 Then pfad4="gel5.3ds" :drehung4=-90 : x4=-0.5
               If str1=com5 Then pfad1="gel6.3ds" :drehung1=90 : x1=-0.5
               If str2=com5 Then pfad2="gel6.3ds" :drehung2=90   : y2=-0.5
               If str3=com5 Then pfad3="gel6.3ds" :drehung3=90 : x3=0.5
               If str4=com5 Then pfad4="gel6.3ds" :drehung4=90 : y4=0.5
               If str1=com6 Then pfad1="gel7.3ds"
               If str2=com6 Then pfad2="gel7.3ds"   
               If str3=com6 Then pfad3="gel7.3ds"
               If str4=com6 Then pfad4="gel7.3ds"
               If str1=com7 Then pfad1="gel8.3ds" :drehung1=-90 : y1=-0.5
               If str2=com7 Then pfad2="gel8.3ds" :drehung2=-90 : x2=0.5
               If str3=com7 Then pfad3="gel8.3ds" :drehung3=-90 : y3=0.5
               If str4=com7 Then pfad4="gel8.3ds" :drehung4=-90 : x4=-0.5
               If str1=com8 Then pfad1="gel9.3ds"
               If str2=com8 Then pfad2="gel9.3ds"   
               If str3=com8 Then pfad3="gel9.3ds"
               If str4=com8 Then pfad4="gel9.3ds"
               Untergrund1(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad1)
               Untergrund2(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad2)
               Untergrund3(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad3)
               Untergrund4(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad4)
               EntityTexture  Untergrund1(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund1(((i-1)*mapwidth)+i2), (i+x1)*10,0,(i2+y1)*10
               RotateEntity   Untergrund1(((i-1)*mapwidth)+i2), 0,drehung1+90,0
               EntityTexture  Untergrund2(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund2(((i-1)*mapwidth)+i2), (i+x2)*10,0,(i2+y2)*10
               RotateEntity   Untergrund2(((i-1)*mapwidth)+i2), 0,drehung2+180,0
               EntityTexture  Untergrund3(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund3(((i-1)*mapwidth)+i2), (i+x3)*10,0,(i2+y3)*10
               RotateEntity   Untergrund3(((i-1)*mapwidth)+i2), 0,drehung3+270,0
               EntityTexture  Untergrund4(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund4(((i-1)*mapwidth)+i2), (i+x4)*10,0,(i2+y4)*10
               RotateEntity   Untergrund4(((i-1)*mapwidth)+i2), 0,drehung4,0
            Default
               Untergrund(((i-1)*mapwidth)+i2) = LoadMesh("Objects\Ground1.x")
               EntityTexture Untergrund(((i-1)*mapwidth)+i2), Textur(1)
               PositionEntity Untergrund(((i-1)*mapwidth)+i2),i*10,0,i2*10
               EntityPickMode Untergrund(((i-1)*mapwidth)+i2),2
         End Select
      Next
   Next

Mr.Keks

BeitragSa, Jun 25, 2005 10:02
Antworten mit Zitat
Benutzer-Profile anzeigen
omg ^^.

mein vorschlag: schau dir mal copymesh, types und arrays (dim) an! damit würde sich das laden erheblich beschleunigen lassen und übersichtlicher werden.

abgesehen davon ist es eher unklug, 10 000 entities zu erstellen! lies dir die surfacebefehle auf blitzbase.de durch!
MrKeks.net

MCWulf

BeitragSa, Jun 25, 2005 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
mit copymesh hab ichs schonmal versucht, aber hat nix gebracht Confused

Danke für die Tipps aber trotzdem, werd ich mir gleich mal durchlesen!

MCWulf

BeitragMi, Jun 29, 2005 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
so, hab jetzt alles versucht, aber es will einfach nicht schneller werden Confused bin wohl zu dumm dazu... könntet ihr noch n paar vorschläge machen? vielen dank!
 

Dreamora

BeitragMi, Jun 29, 2005 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Was verstehst du genau unter viel zu lange?
Je nach system kann das durchaus 30-60s gehen und das is eigentlich auch normal in anbetracht der menge die du da versuchst ins system zu stampfen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

MCWulf

BeitragMi, Jun 29, 2005 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon, aber solange ist eben zu lange für ein spiel imo... könnte ich denn dann das level anders laden? damits schneller geht?

MCWulf

BeitragMi, Jun 29, 2005 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
also gut, habs jetzt geschafft ne 100x100 große map auf 17 sekunden zu reduzieren, ist noch mehr drinnen?
(Edit: da ist jetzt noch unnötiges zeugs drinnen, wo ich zu faul war es rauszulöschen..)

Code: [AUSKLAPPEN]
   For i = 1 To MapWidth
      For i2 = 1 To MapHeight
         Select SpielfeldData$(i,i2)
            Case "1"
               ;Gelände formen
               map(i,i2)\typ=1
               l$ =SpielfeldData$(i-1,i2):lo$=SpielfeldData$(i-1,i2-1)
               o$ =SpielfeldData$(i,i2-1):ro$=SpielfeldData$(i+1,i2-1)
               r$ =SpielfeldData$(i+1,i2):ru$=SpielfeldData$(i+1,i2+1)
               u$ =SpielfeldData$(i,i2+1):lu$=SpielfeldData$(i-1,i2+1)
               If l ="1" Or l ="5" Then l ="a" Else l ="s"
               If lo="1" Or lo="5" Then lo="a" Else lo="s"
               If o ="1" Or o ="5" Then o ="a" Else o ="s"
               If ro="1" Or ro="5" Then ro="a" Else ro="s"
               If r ="1" Or r ="5" Then r ="a" Else r ="s"
               If ru="1" Or ru="5" Then ru="a" Else ru="s"
               If u ="1" Or u ="5" Then u ="a" Else u ="s"
               If lu="1" Or lu="5" Then lu="a" Else lu="s"
               str1$=l+lo+o: str2$=o+ro+r: str3$=r+ru+u: str4$=u+lu+l
               pfad1$="":    pfad2$="":    pfad3$="":    pfad4$=""
               
               drehung1=0:   drehung2=0:   drehung3=0:   drehung4=0
               x1#=0:        x2#=0:        x3#=0:        x4#=0
               y1#=0:        y2#=0:        y3#=0:        y4#=0
               If str1=com1 Then pfad1="gel2.3ds" :Goto bitterestnext
               If str1=com2 Then pfad1="gel3.3ds" :drehung1=90 : x1=-0.5 :Goto bitterestnext
               If str1=com3 Then pfad1="gel4.3ds" :Goto bitterestnext
               If str1=com4 Then pfad1="gel5.3ds" :drehung1=-90 : y1=-0.5 :Goto bitterestnext
               If str1=com5 Then pfad1="gel6.3ds" :drehung1=90 : x1=-0.5 :Goto bitterestnext
               If str1=com6 Then pfad1="gel7.3ds" :Goto bitterestnext
               If str1=com7 Then pfad1="gel8.3ds" :drehung1=-90 : y1=-0.5 :Goto bitterestnext
               If str1=com8 Then pfad1="gel9.3ds"
               .bitterestnext
               
               If str2=com1 Then pfad2="gel2.3ds" :Goto bitttrestnext
               If str2=com2 Then pfad2="gel3.3ds" :drehung2=90 : y2=-0.5 :Goto bitttrestnext
               If str2=com3 Then pfad2="gel4.3ds"    :Goto bitttrestnext
               If str2=com4 Then pfad2="gel5.3ds" :drehung2=-90 : x2=0.5 :Goto bitttrestnext
               If str2=com5 Then pfad2="gel6.3ds" :drehung2=90   : y2=-0.5 :Goto bitttrestnext
               If str2=com6 Then pfad2="gel7.3ds"    :Goto bitttrestnext
               If str2=com7 Then pfad2="gel8.3ds" :drehung2=-90 : x2=0.5 :Goto bitttrestnext
               If str2=com8 Then pfad2="gel9.3ds"
               .bitttrestnext
               
               If str3=com1 Then pfad3="gel2.3ds" :Goto bittetestnext
               If str3=com2 Then pfad3="gel3.3ds" :drehung3=90 : x3=0.5 :Goto bittetestnext
               If str3=com3 Then pfad3="gel4.3ds" :Goto bittetestnext
               If str3=com4 Then pfad3="gel5.3ds" :drehung3=-90 : y3=0.5 :Goto bittetestnext
               If str3=com5 Then pfad3="gel6.3ds" :drehung3=90 : x3=0.5 :Goto bittetestnext
               If str3=com6 Then pfad3="gel7.3ds" :Goto bittetestnext
               If str3=com7 Then pfad3="gel8.3ds" :drehung3=-90 : y3=0.5 :Goto bittetestnext
               If str3=com8 Then pfad3="gel9.3ds"
               .bittetestnext
               
               If str4=com1 Then pfad4="gel2.3ds" :Goto bittertstnext
               If str4=com2 Then pfad4="gel3.3ds" :drehung4=90 : y4=0.5 :Goto bittertstnext               
               If str4=com3 Then pfad4="gel4.3ds"  :Goto bittertstnext               
               If str4=com4 Then pfad4="gel5.3ds" :drehung4=-90 : x4=-0.5 :Goto bittertstnext               
               If str4=com5 Then pfad4="gel6.3ds" :drehung4=90 : y4=0.5 :Goto bittertstnext               
               If str4=com6 Then pfad4="gel7.3ds" :Goto bittertstnext               
               If str4=com7 Then pfad4="gel8.3ds" :drehung4=-90 : x4=-0.5 :Goto bittertstnext               
               If str4=com8 Then pfad4="gel9.3ds"
               .bittertstnext
               
               Untergrund1(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad1)
               Untergrund2(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad2)
               Untergrund3(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad3)
               Untergrund4(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad4)
               EntityTexture  Untergrund1(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund1(((i-1)*mapwidth)+i2), (i+x1)*fieldwidth,0,(i2+y1)*fieldheight
               RotateEntity   Untergrund1(((i-1)*mapwidth)+i2), 0,drehung1+90,0
               EntityTexture  Untergrund2(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund2(((i-1)*mapwidth)+i2), (i+x2)*fieldwidth,0,(i2+y2)*fieldheight
               RotateEntity   Untergrund2(((i-1)*mapwidth)+i2), 0,drehung2+180,0
               EntityTexture  Untergrund3(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund3(((i-1)*mapwidth)+i2), (i+x3)*fieldwidth,0,(i2+y3)*fieldheight
               RotateEntity   Untergrund3(((i-1)*mapwidth)+i2), 0,drehung3+270,0
               EntityTexture  Untergrund4(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund4(((i-1)*mapwidth)+i2), (i+x4)*fieldwidth,0,(i2+y4)*fieldheight
               RotateEntity   Untergrund4(((i-1)*mapwidth)+i2), 0,drehung4,0
               ;---------------
            Case "5"
               ;Gelände formen
               map(i,i2)\typ=1
               l$ =SpielfeldData$(i-1,i2):lo$=SpielfeldData$(i-1,i2-1)
               o$ =SpielfeldData$(i,i2-1):ro$=SpielfeldData$(i+1,i2-1)
               r$ =SpielfeldData$(i+1,i2):ru$=SpielfeldData$(i+1,i2+1)
               u$ =SpielfeldData$(i,i2+1):lu$=SpielfeldData$(i-1,i2+1)
               If l ="1" Or l ="5" Then l ="a" Else l ="s"
               If lo="1" Or lo="5" Then lo="a" Else lo="s"
               If o ="1" Or o ="5" Then o ="a" Else o ="s"
               If ro="1" Or ro="5" Then ro="a" Else ro="s"
               If r ="1" Or r ="5" Then r ="a" Else r ="s"
               If ru="1" Or ru="5" Then ru="a" Else ru="s"
               If u ="1" Or u ="5" Then u ="a" Else u ="s"
               If lu="1" Or lu="5" Then lu="a" Else lu="s"
               str1$=l+lo+o: str2$=o+ro+r: str3$=r+ru+u: str4$=u+lu+l
               pfad1$="":    pfad2$="":    pfad3$="":    pfad4$=""
               drehung1=0:   drehung2=0:   drehung3=0:   drehung4=0
               x1#=0:        x2#=0:        x3#=0:        x4#=0
               y1#=0:        y2#=0:        y3#=0:        y4#=0
                              If str1=com1 Then pfad1="gel2.3ds" :Goto bittttestnext
               If str1=com2 Then pfad1="gel3.3ds" :drehung1=90 : x1=-0.5 :Goto bittttestnext
               If str1=com3 Then pfad1="gel4.3ds" :Goto bittttestnext
               If str1=com4 Then pfad1="gel5.3ds" :drehung1=-90 : y1=-0.5 :Goto bittttestnext
               If str1=com5 Then pfad1="gel6.3ds" :drehung1=90 : x1=-0.5 :Goto bittttestnext
               If str1=com6 Then pfad1="gel7.3ds" :Goto bittttestnext
               If str1=com7 Then pfad1="gel8.3ds" :drehung1=-90 : y1=-0.5 :Goto bittttestnext
               If str1=com8 Then pfad1="gel9.3ds"
               .bittttestnext
               
               If str2=com1 Then pfad2="gel2.3ds" :Goto bitttttttnext
               If str2=com2 Then pfad2="gel3.3ds" :drehung2=90 : y2=-0.5 :Goto bitttttttnext
               If str2=com3 Then pfad2="gel4.3ds"    :Goto bitttttttnext
               If str2=com4 Then pfad2="gel5.3ds" :drehung2=-90 : x2=0.5 :Goto bitttttttnext
               If str2=com5 Then pfad2="gel6.3ds" :drehung2=90   : y2=-0.5 :Goto bitttttttnext
               If str2=com6 Then pfad2="gel7.3ds"    :Goto bitttttttnext
               If str2=com7 Then pfad2="gel8.3ds" :drehung2=-90 : x2=0.5 :Goto bitttttttnext
               If str2=com8 Then pfad2="gel9.3ds"
               .bitttttttnext
               
               If str3=com1 Then pfad3="gel2.3ds" :Goto bitttttttttnext
               If str3=com2 Then pfad3="gel3.3ds" :drehung3=90 : x3=0.5 :Goto bitttttttttnext
               If str3=com3 Then pfad3="gel4.3ds" :Goto bitttttttttnext
               If str3=com4 Then pfad3="gel5.3ds" :drehung3=-90 : y3=0.5 :Goto bitttttttttnext
               If str3=com5 Then pfad3="gel6.3ds" :drehung3=90 : x3=0.5 :Goto bitttttttttnext
               If str3=com6 Then pfad3="gel7.3ds" :Goto bitttttttttnext
               If str3=com7 Then pfad3="gel8.3ds" :drehung3=-90 : y3=0.5 :Goto bitttttttttnext
               If str3=com8 Then pfad3="gel9.3ds"
               .bitttttttttnext
               
               If str4=com1 Then pfad4="gel2.3ds" :Goto bittttttaatttnext
               If str4=com2 Then pfad4="gel3.3ds" :drehung4=90 : y4=0.5 :Goto bittttttaatttnext               
               If str4=com3 Then pfad4="gel4.3ds"  :Goto bittttttaatttnext               
               If str4=com4 Then pfad4="gel5.3ds" :drehung4=-90 : x4=-0.5 :Goto bittttttaatttnext               
               If str4=com5 Then pfad4="gel6.3ds" :drehung4=90 : y4=0.5 :Goto bittttttaatttnext               
               If str4=com6 Then pfad4="gel7.3ds" :Goto bittttttaatttnext               
               If str4=com7 Then pfad4="gel8.3ds" :drehung4=-90 : x4=-0.5 :Goto bittttttaatttnext               
               If str4=com8 Then pfad4="gel9.3ds"
               .bittttttaatttnext
               
               Untergrund1(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad1)
               Untergrund2(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad2)
               Untergrund3(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad3)
               Untergrund4(((i-1)*mapwidth)+i2)=LoadMesh("Objects\RGel\"+pfad4)
               EntityTexture  Untergrund1(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund1(((i-1)*mapwidth)+i2), (i+x1)*fieldwidth,0,(i2+y1)*fieldheight
               RotateEntity   Untergrund1(((i-1)*mapwidth)+i2), 0,drehung1+90,0
               EntityTexture  Untergrund2(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund2(((i-1)*mapwidth)+i2), (i+x2)*fieldwidth,0,(i2+y2)*fieldheight
               RotateEntity   Untergrund2(((i-1)*mapwidth)+i2), 0,drehung2+180,0
               EntityTexture  Untergrund3(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund3(((i-1)*mapwidth)+i2), (i+x3)*fieldwidth,0,(i2+y3)*fieldheight
               RotateEntity   Untergrund3(((i-1)*mapwidth)+i2), 0,drehung3+270,0
               EntityTexture  Untergrund4(((i-1)*mapwidth)+i2), Textur(2)
               PositionEntity Untergrund4(((i-1)*mapwidth)+i2), (i+x4)*fieldwidth,0,(i2+y4)*fieldheight
               RotateEntity   Untergrund4(((i-1)*mapwidth)+i2), 0,drehung4,0
               ;---------------
               
               ;AufsammlerStarts reinmachen
               AufsammlerStart.AufsammlerStartA = New AufsammlerStartA
               AufsammlerStart\X   = i  * fieldwidth
               AufsammlerStart\Y   = i2 * fieldheight
               AufsammlerStart\Ent = CreateCube()
               PositionEntity AufsammlerStart\Ent,i*fieldwidth,10,i2*fieldheight
               ScaleEntity AufsammlerStart\Ent,5,2,5
               ;---------------
            Case "2"
               ;Beamer/Start reinmachen
               map(i,i2)\typ=303
               Beamer.BeamerA = New BeamerA
               Beamer\X=i*Fieldwidth
               Beamer\Y=i2*Fieldheight
               Beamer\Ent1=LoadMesh("Objects\Tele1.x")
               PositionEntity Beamer\Ent1,Beamer\X,0,Beamer\Y
               Beamer\Ent2=LoadMesh("Objects\Tele2.x")
               PositionEntity Beamer\Ent2,Beamer\X,0,Beamer\Y
               Beamer\Ent3=LoadMesh("Objects\Tele2.x")
               PositionEntity Beamer\Ent3,Beamer\X,0,Beamer\Y
               FlipMesh Beamer\Ent3
               PaintMesh Beamer\Ent2,Brush(1)
               PaintMesh Beamer\Ent3,Brush(1)
               Beamer\Ent4=CreateLight(2)
               LightRange Beamer\Ent4,5
               LightColor Beamer\Ent4,255,10,10
               PositionEntity Beamer\Ent4,Beamer\X,10,Beamer\Y ;Die 10 steht hier nur für das Licht und kann imo so bleiben
               ;---------------
            Case "3"
               ;-Tor reinmachen
               map(i,i2)\typ=304
               Tor.TorA = New TorA
               Tor\X=i*Fieldwidth
               Tor\Y=i2*Fieldheight
               Tor\Gesundheit=20
               Tor\Ent=LoadMesh("Objects\Tor1.x")
               If SpielfeldData$(i-1,i2)="0" And SpielfeldData$(i+1,i2)="3" Then
                  RotateEntity Tor\Ent,0,90,0
               ElseIf SpielfeldData$(i-1,i2)="3" And SpielfeldData$(i+1,i2)="0" Then
                  RotateEntity Tor\Ent,0,90,0
               EndIf
               PositionEntity Tor\Ent,Tor\X,0,Tor\Y
               EntityPickMode Tor\Ent,2
               ;---------------
            Case "4"
               ;Gefangenen reinmachen
               map(i,i2)\typ=Prison
               Gefangener.GefangeneA = New GefangeneA
               Gefangener\X=i*Fieldwidth
               Gefangener\Y=i2*Fieldheight
               Gefangener\Ent=LoadMesh("Objects\Gefangener1.x")
               PositionEntity Gefangener\Ent,Gefangener\X,0,Gefangener\Y
               EntityPickMode Gefangener\Ent,2
               ;---------------
         End Select
      Next
   Next
 

Dreamora

BeitragMi, Jun 29, 2005 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Hauptbeschleunigung wäre ohne Frage den Untergrund fix als Model zu laden. Das ginge dann ruck zuck. Das ist das was aktuell am meisten Zeit verbraucht.

Und dann natürlich die Meshes vorher zu laden ...
Aktuell lädst du mitten in der Loop zig hundert mal das gleiche Mesh immer wieder und wieder anstatt es nur 1x zu laden und kopieren / klonen, was definitiv schneller geht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

MCWulf

BeitragMi, Jun 29, 2005 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hätte ich eben auch gedacht! Also hab ichs mal ausprobiert, aber es hat seltsamerweise keine beschleunigung gebracht!
 

Dreamora

BeitragMi, Jun 29, 2005 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann wirst du dich, bis du das ganze als 1 Mesh lädst, wohl mit der jetzigen Ladezeit zufrieden geben müssen ...
Die Ladezeit ist ja relativ kurz ...

Die einzige alternative wäre das Mesh selber mit AddVertex und AddTriangle zu erzeugen, da dadurch bedeutend weniger Objekte entstehen.
Hast du eventuell schonmal mit AddMesh versucht das ganze zu optimieren? (kann da allerdings nicht sagen wieviel es bringt)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

MCWulf

BeitragMi, Jun 29, 2005 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, kenn den befehl nicht, aber werd ihn mir heute mal anschaun...
und in dem zuletzt geposteten code hab ich was vergessen (den boden) und da ich später noch was drauf bauen will muss ich noch pickmode dazuschreiben, d.h. alles als 1 mesh zu laden würde ja dann nicht gehn, oder sehe ich das falsch?
 

Dreamora

BeitragMi, Jun 29, 2005 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Handelt es sich dabei um quadrate?
In diesem Falle würde ich einen Datenarray halten wo drin steht wo du bauen kannst und dem ganzen Mesh einfach den PickMode geben und gucken "worauf gepickt" wird
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

MCWulf

BeitragMi, Jun 29, 2005 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ach, geht das auch? is ja cool, thx!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group