Z Buffer Sorting Problem

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Xaymar

ehemals "Cgamer"

Betreff: Z Buffer Sorting Problem

BeitragSa, Feb 07, 2009 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe neuerdings einen echt seltsamen fehler in B3D. Um es genau zu sagen es kotzt mich inzwischen an, da ich nicht weiß warum es passiert.

Ein Bild:
user posted image

Der Code: [AUSKLAPPEN]

;Load the Config--------------------------------------------
Global GrW=1024,GrH=768,GrD=32,GrM=2,Version$="V0.15"
LoadConfig()
AppTitle "Wenan " + Version$
SeedRnd MilliSecs()

;Init Graphics----------------------------------------------
Graphics3D GrW,GrH,GrD,GrM
SetBuffer BackBuffer()
HidePointer
Timer = CreateTimer(60)

;Includes---------------------------------------------------
Include "ParticleSystem.bb"

;Variables--------------------------------------------------
Global GameState=0,MX,MY,ML,MR
Global LastMission$, Mission$ = "Tutorial"
Global Pointer,ButtonN,ButtonH,ButtonD
Global BitmapFont
Global PLX#,PLY#, PSX, PSY

Const MapVersionByte = 2
Global MapType, MapW, MapH, UsedTileSet, UsedTileSetFrames, MapVersion, HeaderSize
Global MapTiles
Global WorldPiv

Dim EventText$(999)
Dim Briefing$(24)

Dim Tip$(9)
Tip$(0) = "Mit den Pfeiltasten können sie sich bewegen"
Tip$(1) = "Springen können sie mit der Leertaste"
Tip$(2) = "Weitsprünge(Umschalt und Leertaste) können bei größeren Lücken helfen"
Tip$(3) = "Mit der linken Steuerungs Taste können sie schießen"
Tip$(4) = "Manche Waffen haben ein Sekundärfeuermodus. Drücken sie Alt um zwischen den Modi zu wechseln"
Tip$(5) = "Im Tutorial werden die Gegner nicht auf Sie schießen"
Tip$(6) = "Gegner schießen im Normalfall auf Sie. Vermeiden Sie also Sichtkontakt mit Gegnern"
Tip$(7) = "Vermeiden sie Kontakt mit Feuer oder Lava"
Tip$(8) = ""
Tip$(9) = ""

;Images-----------------------------------------------------
Pointer = LoadImage("GFX/Menu/Pointer.png      "):MaskImage Pointer,255,0,255
ButtonN = LoadImage("GFX/Menu/Button_Normal.png"):MaskImage ButtonN,255,0,255
ButtonH = LoadImage("GFX/Menu/Button_Hover.png "):MaskImage ButtonH,255,0,255
ButtonD = LoadImage("GFX/Menu/Button_Down.png  "):MaskImage ButtonD,255,0,255
BackGround  = LoadImage("GFX/Menu/Background.png    ")
BackGround2 = LoadImage("GFX/Briefing/Background.png")
BitmapFont  = LoadAnimImage("GFX/Menu/Font.bmp",42,61,0,63):MaskImage BitmapFont,255,0,255

PHB = LoadAnimImage("GFX/Player/HealthBar.png",192,24,0,4):MaskImage PHB,255,0,255
PSB = LoadAnimImage("GFX/Player/StaminaBar.png",192,24,0,4):MaskImage PSB,255,0,255
PAB = LoadAnimImage("GFX/Player/AmmoBar.png",192,24,0,4):MaskImage PAB,255,0,255

;----Bitmap Font Wizard
Global bmpf_frames=62
Dim bmpf_c(bmpf_frames)
bmpf_c(0)=48
bmpf_c(1)=49:bmpf_c(2)=50:bmpf_c(3)=51:bmpf_c(4)=52:bmpf_c(5)=53:bmpf_c(6)=54:bmpf_c(7)=55:bmpf_c(8)=56:bmpf_c(9)=57:bmpf_c(10)=48
bmpf_c(11)=65:bmpf_c(12)=66:bmpf_c(13)=67:bmpf_c(14)=68:bmpf_c(15)=69:bmpf_c(16)=70:bmpf_c(17)=71:bmpf_c(18)=72:bmpf_c(19)=73:bmpf_c(20)=74
bmpf_c(21)=75:bmpf_c(22)=76:bmpf_c(23)=77:bmpf_c(24)=78:bmpf_c(25)=79:bmpf_c(26)=80:bmpf_c(27)=81:bmpf_c(28)=82:bmpf_c(29)=83:bmpf_c(30)=84
bmpf_c(31)=85:bmpf_c(32)=86:bmpf_c(33)=87:bmpf_c(34)=88:bmpf_c(35)=89:bmpf_c(36)=90:bmpf_c(37)=97:bmpf_c(38)=98:bmpf_c(39)=99:bmpf_c(40)=100
bmpf_c(41)=101:bmpf_c(42)=102:bmpf_c(43)=103:bmpf_c(44)=104:bmpf_c(45)=105:bmpf_c(46)=106:bmpf_c(47)=107:bmpf_c(48)=108:bmpf_c(49)=109:bmpf_c(50)=110
bmpf_c(51)=111:bmpf_c(52)=112:bmpf_c(53)=113:bmpf_c(54)=114:bmpf_c(55)=115:bmpf_c(56)=116:bmpf_c(57)=117:bmpf_c(58)=118:bmpf_c(59)=119:bmpf_c(60)=120
bmpf_c(61)=121:bmpf_c(62)=122:
Dim bmpf_w(bmpf_frames)
bmpf_w(0)=27
bmpf_w(1)=18:bmpf_w(2)=28:bmpf_w(3)=27:bmpf_w(4)=27:bmpf_w(5)=27:bmpf_w(6)=26:bmpf_w(7)=25:bmpf_w(8)=27:bmpf_w(9)=26:bmpf_w(10)=27
bmpf_w(11)=30:bmpf_w(12)=29:bmpf_w(13)=29:bmpf_w(14)=31:bmpf_w(15)=27:bmpf_w(16)=26:bmpf_w(17)=32:bmpf_w(18)=30:bmpf_w(19)=11:bmpf_w(20)=23
bmpf_w(21)=32:bmpf_w(22)=26:bmpf_w(23)=37:bmpf_w(24)=28:bmpf_w(25)=31:bmpf_w(26)=28:bmpf_w(27)=32:bmpf_w(28)=30:bmpf_w(29)=28:bmpf_w(30)=27
bmpf_w(31)=29:bmpf_w(32)=30:bmpf_w(33)=42:bmpf_w(34)=31:bmpf_w(35)=32:bmpf_w(36)=30:bmpf_w(37)=30:bmpf_w(38)=29:bmpf_w(39)=29:bmpf_w(40)=31
bmpf_w(41)=27:bmpf_w(42)=26:bmpf_w(43)=32:bmpf_w(44)=30:bmpf_w(45)=11:bmpf_w(46)=23:bmpf_w(47)=32:bmpf_w(48)=26:bmpf_w(49)=37:bmpf_w(50)=28
bmpf_w(51)=31:bmpf_w(52)=28:bmpf_w(53)=32:bmpf_w(54)=30:bmpf_w(55)=28:bmpf_w(56)=27:bmpf_w(57)=29:bmpf_w(58)=30:bmpf_w(59)=42:bmpf_w(60)=31
bmpf_w(61)=32:bmpf_w(62)=30:
;----End

;Sounds-----------------------------------------------------

;Font-------------------------------------------------------
NormalFont = LoadFont("", 16)
BriefingFont = LoadFont("Times New Roman", 18, 0, 1)

;3D---------------------------------------------------------
Global Player,PlayerB

PlTex = LoadAnimTexture("GFX/Player/Player.png", 2, 64, 64, 0, 16)

Player = CreateSprite():SpriteViewMode Player,2
ScaleEntity Player, .5, .5, .5
EntityType Player, 1
EntityRadius Player, .25, .4
EntityTexture Player, PlTex, 1

PlayerB = CreateSphere(8, Player)
PositionEntity PlayerB, 0, -.5, 0, 1
EntityAlpha PlayerB, 0
EntityType PlayerB, 1
EntityRadius PlayerB, .2, .1

PlayerT = CreateSphere(8, Player)
PositionEntity PlayerT, 0, .5, 0, 1
EntityAlpha PlayerT, 0
EntityType PlayerT, 1
EntityRadius PlayerT, .2, .1

Cam = CreateCamera(Player)
CameraRange Cam,1,1000
CameraClsMode Cam, 1, 1
ScaleEntity Cam, 2, 2, 2
PositionEntity Cam, 0, 0, -10, 1

Collisions 1, 2, 2, 3

;Particle Textures------------------------------------------
Global Flare
Flare = LoadTexture("GFX/Particle/Flare.png", 2)

;Weapons
Ammo = 1
MaxAmmo = 1
Dim WeaponAmmo(4)
Dim WeaponMaxAmmo(4)

;Pistol
WeaponAmmo(0) = 10
WeaponMaxAmmo(0) = 10

;Throwing Knife
WeaponAmmo(1) = 0
WeaponMaxAmmo(1) = 3

;MG
WeaponAmmo(2) = 0
WeaponMaxAmmo(2) = 60

;Grenade
WeaponAmmo(3) = 0
WeaponMaxAmmo(3) = 3

;Grenade Launcher
WeaponAmmo(4) = 0
WeaponMaxAmmo(4) = 6

;Main-------------------------------------------------------
Repeat
   MX = MouseX()
   MY = MouseY()
   ML = MouseDown(1)
   MR = MouseDown(2)
   Select GameState
      Case 0         ;Intro
         GameState = 1
      Case 1         ;Menu
         Cls
         
         ;Background
         DrawImage Background, 0, 0
         Text 1024-StringWidth(Version$),0,Version$
         
         ;Buttons
         StartGame = DrawButton(412,484,"Neues Spiel Starten")
         LoadGame = DrawButton(412,534,"Spiel Fortsetzen")
         ExitGame = DrawButton(412,584,"Spiel Beenden")
         
         ;Buttons Check
         If StartGame = 2
            Color 153,153,204
            Rect MX, MY-15, StringWidth("Startet die erste Mission")+4, 19
            Color 0,0,0
            Rect MX, MY-15, StringWidth("Startet die erste Mission")+4, 19, 0
            Color 255,255,255
            Text MX+2, MY-13, "Startet die erste Mission"
         ElseIf StartGame = 1
            Mission$ = "Tutorial"
            LoadBriefing()
            RandomTipNr = Rand(9)
            GameState = 2
         EndIf

         If LoadGame = 2
            Color 153,153,204
            Rect MX, MY-15, StringWidth("Lädt die zuletzt gespielte Mission("+LastMission$+")")+4, 19
            Color 0,0,0
            Rect MX, MY-15, StringWidth("Lädt die zuletzt gespielte Mission("+LastMission$+")")+4, 19, 0
            Color 255,255,255
            Text MX+2, MY-13, "Lädt die zuletzt gespielte Mission("+LastMission$+")"
         ElseIf LoadGame = 1
            Mission$ = LastMission$
            LoadBriefing()
            RandomTipNr = Rand(9)
            GameState = 2
         EndIf

         If ExitGame = 2
            Color 153,153,204
            Rect MX, MY-15, StringWidth("Beendet dieses Spiel und speichert ihren Fortschritt")+4, 19
            Color 0,0,0
            Rect MX, MY-15, StringWidth("Beendet dieses Spiel und speichert ihren Fortschritt")+4, 19, 0
            Color 255,255,255
            Text MX+2, MY-13, "Beendet dieses Spiel und speichert ihren Fortschritt"
         ElseIf ExitGame = 1
            SaveConfig()
            End
         EndIf
         
         ;Pointer
         DrawImage Pointer, MX, MY
         
         ;Flip & Waittimer
         Flip 0
         WaitTimer Timer
      Case 2         ;Mission Briefing
         Cls
         
         ;Background
         DrawImage Background2, 0, 0
         Text 1024-StringWidth(Version$),0,Version$
         
         ;Mission Briefing Text Titel
         BMP_Text 512-BMPWidth(Mission$)/2,64,Mission$
         
         ;Mission Briefing Text
         SetFont BriefingFont
         For Lin = 0 To 24
            Text 128, 128+Lin*(FontHeight()+5), Briefing$(Lin)
         Next
         SetFont NormalFont
         
         ;Tip
         Color 255,255,255
         Text 512,768-32,"Tipp: " + Tip$(RandomTipNr), 1, 1
         
         Text 512,768-64,"Lade...", 1, 1
         Color 0,0,0
         
         Flip
         
         ;Load Mission
         If LoadMap() = 0
            RuntimeError "Crashed due to Errors in the Map"
         EndIf
         
         ;Wait for any key
         Cls

         ;Background
         DrawImage Background2, 0, 0
         Text 1024-StringWidth(Version$),0,Version$
         
         ;Mission Briefing Text Titel
         BMP_Text 512-BMPWidth(Mission$)/2,64,Mission$
         
         ;Mission Briefing Text
         SetFont BriefingFont
         For Lin = 0 To 24
            Text 128, 128+Lin*(FontHeight()+5), Briefing$(Lin)
         Next
         SetFont NormalFont
         
         ;Tip
         Color 255,255,255
         Text 512,768-32,"Tipp: " + Tip$(RandomTipNr), 1, 1
         
         Color 0,0,0
         
         BMP_Text(512-BMPWidth("Taste Druecken...")/2, 384, "Taste Druecken...")
         Flip
         WaitKey()
         
         GameState = 3
         Grav# = 0:Jump = 0
         Health = 99:Sta# = 99
         Ammo = WeaponAmmo(0):MaxAmmo = WeaponMaxAmmo(0)
         Die = 0
         FlushKeys():FlushMouse()
      Case 3         ;Mission
         Cls
         ClearCollisions
         PositionEntity PlayerB, EntityX(Player), EntityY(Player)-.5, EntityZ(Player), 1
         PositionEntity PlayerT, EntityX(Player), EntityY(Player)+.5, EntityZ(Player), 1
         Collisions 1, 2, 2, 2
         
         PLX# = EntityX(Player, 1)
         PLY# = EntityY(Player, 1)
         
         A = A + 1
         If A = 2 Or A = 4
            UpdateParticleSources()
         ElseIf A = 5
            PHBF = Max((PHBF+1), 3)
            PSBF = Max((PSBF+1), 3)
            PABF = Max((PABF+1), 3)
            A = 0
            Health = Health - 5 * CheckDeath(PLX, -PLY)
            If LHealth <> Health
               PHBF = 0
               LHealth = Health
            EndIf
            PlFrame2 = (PlFrame2 + 1) Mod 4
         EndIf
         
         If CheckWater(PLX, -PLY) = 1
            If Jump = 1 And Grav# < 0
               Grav# = Grav#  + .001
            ElseIf Jump = 1
               Jump = 0
            EndIf
            
            MoveX = 0:MoveY = 0
            
            Grav# = Grav# + .0001
            If KeyDown(31)
               YSpe# = YSpe# - .0075
               MoveY = 1
            EndIf
            If KeyDown(30) = 1
               XSpe# = XSpe# - .01
               MoveX = 1
               PlFrame = PlFrame2 + 7
            EndIf
            If KeyDown(32) = 1
               XSpe# = XSpe# + .01
               MoveX = 1
               PlFrame = PlFrame2 + 11
            EndIf
            If KeyDown(17)
               YSpe# = YSpe# + .0075
               MoveY = 1
               Grav# = 0
            EndIf
            
            If MoveX=0 XSpe#=XSpe#*.75
            If MoveY=0 YSpe#=YSpe#*.75
            
            If XSpe# > .05:XSpe# = .05:ElseIf XSpe# < -.05:XSpe# = -.05:EndIf
            If YSpe# > .04:YSpe# = .04:EndIf
            
            TranslateEntity Player, XSpe# * DeltaT#, YSpe# * DeltaT#, 0, 1
         Else
            XSpe# = 0:YSpe# = 0
            Grav# = Grav# + .01
            Spe# = .075 * DeltaT#
            If KeyDown(42) And Sta# > .5
               Spe# =.125 * DeltaT#
            EndIf
            
            PlFrame = 0
            
            Sta# = Max2((Sta# + .25), 99)
            If KeyDown(30) = 1
               TranslateEntity Player, -Spe#, 0, 0
               PlFrame = PlFrame2
               If Spe# > .1
                  Sta = Sta-1
                  PSBF = 0
               EndIf
            EndIf
            If KeyDown(32) = 1
               TranslateEntity Player, Spe#, 0, 0
               PlFrame = PlFrame2 + 3
               If Spe# > .1
                  Sta = Sta-1
                  PSBF = 0
               EndIf
            EndIf
            If KeyDown(57) = 1 And Jump = 0
               Grav# = -.1
               Jump = 1
            EndIf
         EndIf
         
         PositionEntity Player, EntityX(Player, 1), EntityY(Player)-(Grav# * DeltaT#), 10
         
         If EntityCollided(PlayerB, 2) > 0
            Grav# = 0
            Jump = 0
         EndIf
         
         If EntityCollided(PlayerT, 2) > 0
            Grav# = 0
         EndIf
         
         If Health <= 0
            Die = 1
         EndIf
         
         EntityTexture Player, PlTex, PlFrame
         UpdateParticles()
         UpdateWorld
         RenderWorld
         
         If Die = 1
            RenderWorld
            ClearCollisions
            PositionEntity Player, PLX, PLY, 0, 1
            PositionEntity PlayerB, PLX, PLY-.5, 0, 1
            FlushKeys()
            GameState = 4
            BMP_Text(512-BMPWidth("Sie sind gestorben")/2,300,"Sie sind gestorben")
            BMP_Text(512-BMPWidth("Taste Druecken...")/2, 384, "Taste Druecken...")
            Flip 0
            WaitKey()
            DeleteParticleSources()
         EndIf
         
         DrawImageRect PHB, 0, 768-72, 0, 0, Health*2.56, 24, PHBF
         DrawImageRect PSB, 0, 768-48, 0, 0, Sta#*2.56, 24, PSBF
         DrawImageRect PAB, 0, 768-24, 0, 0, Ammo*(256/MaxAmmo), 24, PABF
         
         Color 255,255,255
         
         Flip 0
         WaitTimer Timer
      Case 4         ;Mission Report
         Cls
         GameState = 0
         Flip 0
   End Select
Forever

;Functions--------------------------------------------------
Function LoadConfig()
   Local Stream
   If FileType("Config.CFG") = 1
      Stream = ReadFile("Config.CFG")
      LastMission$ = ReadLine(Stream)
      CloseFile Stream
   EndIf
End Function

Function SaveConfig()
   Local Stream
   Stream = WriteFile("Config.CFG")
   WriteLine Stream, Mission$
   CloseFile Stream
End Function

Function LoadBriefing()
   Local Lin
   For Lin = 0 To 24
      Briefing$(Lin) = ""
   Next
   If FileType("LVL/"+Mission$+".brf") = 1
      Stream = ReadFile("LVL/"+Mission$+".brf")
      For Lin = 0 To 24
         Briefing$(Lin) = ReadLine(Stream)
      Next
      CloseFile Stream
   Else
      Briefing$(0) = "Keine Missionsbeschreibung"
   EndIf
End Function

Function LoadMap()
   ;Load
   If Not ReadDataFromFile() Then Return False
   
   ;Check
   If MapType < 1 And MapType > 2 Then Return False
   If Not MapW > 0 Then Return False
   If Not MapH > 0 Then Return False
   If UsedTileSet = 0 Then Return False
   If Not MapVersion = MapVersionByte Then Return False
   
   ;Load
   MapTiles = ReadMapFromFile()
   If MapTiles = 0 Then Return False
   
   ;Events
   LoadEvents()
   
   ;ParticleSources & World
   CreateParticleSources()
   GetSpawn()
   ClearCollisions
   PositionEntity Player, 0, 0, 0, 1
   PositionEntity Player, PSX, -PSY, 10, 1
   PositionEntity PlayerB, 0, 0, 0, 1
   PositionEntity PlayerB, PSX, -PSY-.5, 10, 1
   ;UpdateWorld
   Collisions 1, 2, 2, 2
   CreateWorld()
   
   Return True
End Function

Function ReadDataFromFile()
   Local Stream, MapTileSet$, TempLoad
   If FileType("LVL/"+Mission$+".mis") = 1
      Stream = ReadFile("LVL/"+Mission$+".mis")
      MapType = ReadByte(Stream)
      MapW = ReadShort(Stream)
      MapH = ReadShort(Stream)
      MapTileSet$ = ReadString(Stream)
      
      If Not UsedTileSet = 0 FreeTexture UsedTileSet
      TempLoad = LoadImage("GFX/Tileset/"+Trim(MapTileSet$))
      Frames = ImageWidth(TempLoad)/64 * ImageHeight(TempLoad)/64
      FreeImage TempLoad
      UsedTileSet = LoadAnimTexture("GFX/Tileset/"+Trim(MapTileSet$), 2, 64, 64, 0, Frames-1)
      UsedTileSetFrames = Frames
      
      SeekFile Stream,31
      MapVersion = ReadByte(Stream)
      
      HeaderSize = FilePos(Stream)
      
      CloseFile Stream
   Else
      Return False
   EndIf
   Return True
End Function

Function ReadMapFromFile()
   Local Stream, MapBank
   If FileType("LVL/"+Mission$+".mis") = 1
      Stream = ReadFile("LVL/"+Mission$+".mis")
      SeekFile Stream, HeaderSize
      
      If Not MapBank = 0 FreeBank MapBank
      MapBank = CreateBank((MapW*9)*MapH+9)
      
      For Pos = 0 To BankSize(MapBank)-9
         If Eof(Stream) Exit
         PokeByte MapBank, Pos, ReadByte(Stream)
      Next
      
      CloseFile Stream
   Else
      Return 0
   EndIf
   Return MapBank
End Function

Function LoadEvents()
   Local Stream, A
   If FileType("LVL/"+M$+".vnt") = 1
      Stream = ReadFile("LVL/"+M$+".vnt")
      For A = 0 To 999
         If Eof(Stream) Exit
         EventText$(A) = ReadLine(Stream)
      Next
      CloseFile Stream
   EndIf
End Function

Type AutoParticleSources
   Field Han
   Field EID
End Type

Function GetSpawn()
   For Y2 = 0 To MapH-1
      For X2 = 0 To MapW-1
         EID = PeekShort(MapTiles, Pos+7)
         Select EID
            Case 1
               PSX = X2
               PSY = Y2
         End Select
         Pos = Pos+9
      Next
   Next
End Function

Function CreateParticleSources()
   For Y2 = 0 To MapH-1
      For X2 = 0 To MapW-1
         EID = PeekShort(MapTiles, Pos+7)
         Select EID
            Case 10
               APS.AutoParticleSources = New AutoParticleSources
               APS\Han = CreateParticleSource(X2, -Y2-.5, 10)
               SetParticleSourceTex(APS\Han, Flare)
               SetParticleSourceColorStart(APS\Han, 255, 255, 51, .25)
               SetParticleSourceColorEnd(APS\Han, 255, 0, 0, .1)
               SetParticleSourceLifetime(APS\Han, 2000)
               SetParticleSourceScale(APS\Han, .5, .25)
               SetParticleSourceMovement(APS\Han, 90, .01, 90, .01)
               SetParticleSourceQuadraticSpawn(APS\Han, .9, 0, .9)
               APS\EID = EID
            Case 11
               APS.AutoParticleSources = New AutoParticleSources
               APS\Han = CreateParticleSource(X2-.5, -Y2-.125, 10)
               SetParticleSourceTex(APS\Han, Flare)
               SetParticleSourceColorStart(APS\Han, 255, 255, 0, .25)
               SetParticleSourceColorEnd(APS\Han, 255, 0, 0, .25)
               SetParticleSourceLifetime(APS\Han, 1000)
               SetParticleSourceScale(APS\Han, .5, .5)
               SetParticleSourceMovement(APS\Han, 0, .015, 0, .015)
               SetParticleSourceQuadraticSpawn(APS\Han, 0, .75, 1)
               APS\EID = EID
            Case 12
               APS.AutoParticleSources = New AutoParticleSources
               APS\Han = CreateParticleSource(X2-.5, -Y2, 10)
               SetParticleSourceTex(APS\Han, Flare)
               SetParticleSourceColorStart(APS\Han, 0, 128, 255, .25)
               SetParticleSourceColorEnd(APS\Han, 0, 128, 255, .25)
               SetParticleSourceLifetime(APS\Han, 1000)
               SetParticleSourceScale(APS\Han, .5, .5)
               SetParticleSourceMovement(APS\Han, 0, .015, 0, .015)
               SetParticleSourceQuadraticSpawn(APS\Han, 0, 1, 1)
               APS\EID = EID
         End Select
         Pos = Pos+9
      Next
   Next
End Function

Function UpdateParticleSources()
   For APS.AutoParticleSources = Each AutoParticleSources
      If APS\EID = 10
         CreateParticle(APS\Han, 3)
         SetParticleSourceLifetime(APS\Han, Rand(1000, 3000))
      ElseIf APS\EID = 11
         CreateParticle(APS\Han, 3)
         R = Rand(0,2)
         If R = 0
            SetParticleSourceColorStart(APS\Han, 255, 255, 0, .25)
            SetParticleSourceColorEnd(APS\Han, 255, 128, 0, .25)
         ElseIf R = 1
            SetParticleSourceColorStart(APS\Han, 255, 128, 0, .25)
            SetParticleSourceColorEnd(APS\Han, 255, 255, 0, .25)
         Else
            SetParticleSourceColorStart(APS\Han, 255, 128, 0, .25)
            SetParticleSourceColorEnd(APS\Han, 128, 0, 0, .25)
         EndIf
      ElseIf APS\EID = 12
         CreateParticle(APS\Han, 3)
         SetParticleSourceColorStart(APS\Han, 0, Rand(0,128), Rand(128,255), .25)
         SetParticleSourceColorEnd(APS\Han, 0, Rand(0,128), Rand(128,255), .25)
      EndIf
   Next
End Function

Function DeleteParticleSources()
   For APS.AutoParticleSources = Each AutoParticleSources
      DeleteParticleSource(APS\Han)
      Delete APS.AutoParticleSources
   Next
End Function

Function CreateWorld()
   If WorldPiv <> 0 FreeEntity WorldPiv
   WorldPiv = CreatePivot()
   MoveEntity WorldPiv, 0, 0, 10
   
   Temp = CreateBG(.55, MapW, MapH, WorldPiv)
   EntityTexture Temp, UsedTileSet, 0
   ScaleEntity Temp, MapW/2, MapH/2, 1
   PositionEntity Temp, MapW/2-.5, -MapH/2+.5, .01
   
   For Y2 = 0 To MapH-1
      For X2 = 0 To MapW-1
         Use = PeekByte(MapTiles, Pos)
         L1 = PeekShort(MapTiles, Pos+1)
         L2 = PeekShort(MapTiles, Pos+3)
         L3 = PeekShort(MapTiles, Pos+5)
         
         Sc# = .5
         If L1 > 0 And L2 = 0
            Temp = CreateBG(0, 1, 1, WorldPiv)
            PositionEntity Temp, X2, -Y2, 10.5, 1
            ScaleEntity Temp, Sc#, Sc#, Sc#
            EntityTexture Temp, UsedTileSet, L1-1
         EndIf
         If L2 > 0
            Temp = CreateCube2(1-L2(X2-1, Y2), 1-L2(X2+1, Y2), 1-L2(X2, Y2-1), 1-L2(X2, Y2+1), 1-L3, WorldPiv)
            PositionEntity Temp, X2, -Y2, 0
            ScaleEntity Temp, Sc#, Sc#, Sc#
            EntityTexture Temp, UsedTileSet, L2-1
            If Use = 2
               EntityType Temp, 2
            EndIf
         Else
            If Use = 2
               Temp = CreateCube2(0, 0, 1, 0, 0, WorldPiv)
               PositionEntity Temp, X2, -Y2, 0
               ScaleEntity Temp, Sc#, Sc#, Sc#
               EntityAlpha Temp, 0
               EntityType Temp, 2
            EndIf
         EndIf
         If L3 > 0
            Temp = CreateBG(0, 1, 1, WorldPiv)
            PositionEntity Temp, X2, -Y2, 9.5, 1
            ScaleEntity Temp, Sc#, Sc#, Sc#
            EntityTexture Temp, UsedTileSet, L3-1
         EndIf
         Pos = Pos+9
      Next
   Next
End Function

Function CreateCube2(L, R, T, B, F, Parent)
   m = CreateMesh(Parent)
   
   If L > 0
      ;Left
      Surf = CreateSurface(m)
      V0 = AddVertex(Surf, -1, +1, -1, 1, 0)
      V1 = AddVertex(Surf, -1, -1, -1, 1, 1)
      V2 = AddVertex(Surf, -1, +1, +1, 0, 0)
      V3 = AddVertex(Surf, -1, -1, +1, 0, 1)
      AddTriangle(Surf, V0, V1, V2)
      AddTriangle(Surf, V2, V1, V3)
   EndIf
   
   If R > 0
      ;Right
      Surf = CreateSurface(m)
      V0 = AddVertex(Surf, +1, -1, -1, 1, 1)
      V1 = AddVertex(Surf, +1, +1, -1, 1, 0)
      V2 = AddVertex(Surf, +1, -1, +1, 0, 1)
      V3 = AddVertex(Surf, +1, +1, +1, 0, 0)
      AddTriangle(Surf, V0, V1, V2)
      AddTriangle(Surf, V2, V1, V3)
   EndIf
   
   If T > 0
      ;Top
      Surf = CreateSurface(m)
      V0 = AddVertex(Surf, +1, +1, -1, 1, 1)
      V1 = AddVertex(Surf, -1, +1, -1, 0, 1)
      V2 = AddVertex(Surf, +1, +1, +1, 1, 0)
      V3 = AddVertex(Surf, -1, +1, +1, 0, 0)
      AddTriangle(Surf, V0, V1, V2)
      AddTriangle(Surf, V2, V1, V3)
   EndIf
   
   If B > 0
      ;Bottom
      Surf = CreateSurface(m)
      V0 = AddVertex(Surf, -1, -1, -1, 0, 0)
      V1 = AddVertex(Surf, +1, -1, -1, 1, 0)
      V2 = AddVertex(Surf, -1, -1, +1, 0, 1)
      V3 = AddVertex(Surf, +1, -1, +1, 1, 1)
      AddTriangle(Surf, V0, V1, V2)
      AddTriangle(Surf, V2, V1, V3)
   EndIf
   
   If F > 0
      ;Front
      Surf = CreateSurface(m)
      V0 = AddVertex(Surf, -1, +1, -1, 0, 0)
      V1 = AddVertex(Surf, +1, +1, -1, 1, 0)
      V2 = AddVertex(Surf, -1, -1, -1, 0, 1)
      V3 = AddVertex(Surf, +1, -1, -1, 1, 1)
      AddTriangle(Surf, V0, V1, V2)
      AddTriangle(Surf, V2, V1, V3)
   EndIf
   
   Return m
End Function

Function CreateBG(Z#, U=1, V=1, Parent=0)
   M = CreateMesh(Parent)
   
   Surf = CreateSurface(M)
   V0 = AddVertex(Surf, -1, +1, Z#, 0, 0)
   V1 = AddVertex(Surf, +1, +1, Z#, U, 0)
   V2 = AddVertex(Surf, -1, -1, Z#, 0, V)
   V3 = AddVertex(Surf, +1, -1, Z#, U, V)
   AddTriangle(Surf, V0, V1, V2)
   AddTriangle(Surf, V2, V1, V3)
   
   Return M
End Function

Function L2(X, Y)
   If X >= 0 And Y >= 0 And X<MapW And Y<MapH
      Pos = (Y*MapW*9) + X*9
      L2 = PeekShort(MapTiles, Pos+3)
      If L2 > 0 Return 1
      Return 0
   Else
      Return 1
   EndIf
End Function

Function Max2#(A#,B#)
   If A>B Return B
   Return A
End Function

Function Min#(A#,B#)
   If A<B Return B
   Return A
End Function

;Game Related Function--------------------------------------------------------------------

Function CheckDeath(X, Y)
   If X >= 0 And Y >= 0 And X<MapW And Y<MapH
      Pos = (Y*MapW*9) + X*9
      EID = PeekShort(MapTiles, Pos+7)
      If EID = 10 Return 1
      If EID = 11 Return 2
      Return 0
   Else
      Return 0
   EndIf
End Function

Function CheckWater(X, Y)
   If X >= 0 And Y >= 0 And X<MapW And Y<MapH
      Pos = (Y*MapW*9) + X*9
      EID = PeekShort(MapTiles, Pos+7)
      If EID = 12 Return 1
      Return 0
   Else
      Return 0
   EndIf
End Function


Ich hab keine Ahnung woran es liegt. Habe nur meinem Tileset alpha verpasst und dann war das auf einmal
Warbseite

Noobody

BeitragSa, Feb 07, 2009 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht wäre es ein wenig hilfreicher, wenn du angibst, was denn genau das Problem ist. Wink
Auf dem Screenshot sehe ich jetzt nicht wirklich einen Fehler.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Xaymar

ehemals "Cgamer"

BeitragSa, Feb 07, 2009 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Steht im Titel. außerdem musst du nur genauer hingucken(wahrscheinlich nur überflogen-.-) ganz rechts siehst du mein Problem. aUßerdem -> mein Worklog -> Screen
user posted image

die Objecte verschwinden hinter etwas was eigentlich hinter den objecten sein sollte
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Feb 07, 2009 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich habe mir nun beide deiner Bilder angesehen und konnte auch nichts finden. Nur so, es wäre vielleicht mal angebracht, du zeichnest mal ein Pfeil oder sonst was ein. Denn das einzige was auf ''Fehler'' deuten könnte sind die Flammen, und diese sehen für mich in Ordnung aus. Die Flammen erstellst du anscheinend in mehreren Ebenen innerhalb einer Würfeltiefe. Also der Ebene, auf welchem auch der Spieler steht. Selbst diese werden richtig dargestellt.

Noch so ein paar Tipps:

- Du erstellst jeden Würfel zwar zu Fuß. Also per CreateMesh, AddVertex ... aber du hast da was falsch verstanden. Bei dir besitzt jeder Würfel 5 Surfaces. Selbst CreateCube wäre hier besser aufgehoben. Also bereits hier hast du erheblichen Nachholbedarf zu bewergstelligen, denn sonst läuft so ein einfaches Spiel nur noch auf High-End-Rechnern der Zukunft.

- Da du dein 3D eher wie 2D bearbeitest, sollte CameraRange so gewählt werden, dass gerade mal alles abgedekt wird. So wie ich es sehe, würde ein CameraRange von 1 bis 11 schon reichen. Das würde sich sicherlich nicht negativ auf ein Z-Oder-Problem auswirken. Eventuell ist dein Problem aber auch mit einem Startwert von 0.5 schon behoben. Ich steige nämlich mit deinen ganzen Child/Parent-Verbindungen noch nicht ganz durch.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Noobody

BeitragSa, Feb 07, 2009 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, ich hab den Titel gesehen und lese auch regelmässig Worklogs, sehe den Fehler aber trotzdem nicht.
Bei dir scheint ja alles in der richtigen Reihenfolge gezeichnet zu werden? Sonst kreis mal die Problemstelle ein (viele Dinge fallen ja in einem statischen Bild nicht besonders auf, während es im bewegten Spiel sehr auffällig ist).
Sortierungsfehler entstehen generell, wenn zwei Objekte mit Alpha übereinander liegen - die Zeichenfolge kommt dann einfach auf die Erstellungsreihenfolge an.
Problemlösung wäre dann, die Erstellungsreihenfolge anzupassen - oder man vezichtet halt auf Transparenz.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

The_Nici

BeitragSa, Feb 07, 2009 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ganz rechts am Rand fehlt ein Teil der Blöcke. Kann gerade keinen Pfeil einzeichnen, da Paint die Datei nicht öffnen kann.
MfG

Xaymar

ehemals "Cgamer"

BeitragSa, Feb 07, 2009 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
hab mal ein paar bildchen erstellt

user posted image
user posted image

ich hoffe das erklärt mein Problem:/
Warbseite

DAK

BeitragSa, Feb 07, 2009 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
es heißt zwar, ein bild sagt mehr als 1000 worte, allerdings steig ich da immer noch nicht durch, was das problem ist. vll solltest du doch ein paar mehr worte dazu verlieren, und uns nicht nur die ganze zeit bilder hin klatschen und uns fehlersuchbild spielen lassen...
Gewinner der 6. und der 68. BlitzCodeCompo

the FR3AK

BeitragSa, Feb 07, 2009 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube er meint das manchmal der Braune Hintergrund über den Blöcken liegt? Sieht zumindest danach aus...

Holzchopf

Meisterpacker

BeitragSa, Feb 07, 2009 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, auf dem ersten Screen von Cgamers letztem Beitrag sieht man, wie die Figur zur Hälfte verdeckt wird. Und Cgamer: Wir sind zum "Wo ist Walter?"-Alter raus, kreise in Zukunft Grafikfehler ein oder markiere sie irgendwie. Wenn du Hilfe möchtest, darfst du deinen Helfern ruhig etwas entgegen kommen.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

The_Nici

BeitragSa, Feb 07, 2009 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
DAK hat Folgendes geschrieben:
es heißt zwar, ein bild sagt mehr als 1000 worte, allerdings steig ich da immer noch nicht durch, was das problem ist. vll solltest du doch ein paar mehr worte dazu verlieren, und uns nicht nur die ganze zeit bilder hin klatschen und uns fehlersuchbild spielen lassen...


*hüstel* das Problem ist schon ersichtlich, man muss einfach die Augen öffnen. Guck mal beim ersten Bild die Reihe an, ganz Rechts, im Threadbeginn-Post. Fällt dir was auf?

Noobody

BeitragSa, Feb 07, 2009 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
The_Nici hat Folgendes geschrieben:
*hüstel* das Problem ist schon ersichtlich, man muss einfach die Augen öffnen.


Offenbar nicht, wenn mehr als die Hälfte das Problem nicht sieht und allgemeines Rätselraten herrscht.
Ein einfaches 'einige Blöcke werden über den anderen gezeichnet, wie zum Beispiel rechts im Bild' oder gleich das Bild, wo der Charakter halb verschwindet, hätten ja schon gereicht.

Zu deinem Problem: Wie oben bereits erwähnt, kommt es bei der Sortierung von Alphaobjekten auf die Erstellungsreihenfolge an.
Bei dir ist das Problem aber noch viel prekärer, wie hectic bereits gesagt hat: Du erstellst pro Tilewürfel 5(!) Surfaces.
Dabei steigt die Sortierung logischerweise komplett aus. Ausserdem zwingt das so ziemlich jeden Rechner in die Knie - du musst dich dringend mit SingleSurface auseinandersetzen, sprich, pro Tileart ein Mesh und eine Surface, und immer zu dieser Surface die Vertices hinzufügen, anstatt immer eine neue zu erstellen.
Ausserdem kannst du, wenn die Sortierung immer noch nicht geht, auf die einzelnen Meshs EntityOrder anwenden, um das richtig hinzubiegen.
Aber so, wie du die Maps jetzt erstellst, wirst du das kaum hinbekommen (ausser, du verzichtest auf Transparenz).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Xaymar

ehemals "Cgamer"

BeitragSa, Feb 07, 2009 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
...ich hab das spiel nicht einmal fertig und das problem geht auch ohne alpha-channel nicht weg. und das mit den Surfaces hab ich bereits geändert(nur 1ne surface pro mesh)

[edit]kleiner tipp: ein wenig die augen aufmachen und mehr lesen. vlt sieht man dann die fehler? außerdem konnte paint die png dateien net öffnen
Warbseite

NightPhoenix

BeitragSa, Feb 07, 2009 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
kleiner tipp: ein wenig die augen aufmachen und mehr lesen. vlt sieht man dann die fehler?

Sagmal was willst du eigentlich? Sehen wir aus wie Hellseher? Erklär es uns einfach richtig, da brauchen wir auch kein Philosophiebuch vorholen um was in deine mangelhaften Erklärungen reinzuinterpretieren.

Das Problem ist wie Noobody das schon treffend formulierte einfach mit EntityOrder zu lösen. Du brauchst in deinem 2D Spiel theoretisch keinen Z-Buffer, also leg doch per EntityOrder einfach selbst die Renderreihenfolge fest.

Xaymar

ehemals "Cgamer"

BeitragSa, Feb 07, 2009 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
NightPhoenix hat Folgendes geschrieben:
Zitat:
kleiner tipp: ein wenig die augen aufmachen und mehr lesen. vlt sieht man dann die fehler?

Sagmal was willst du eigentlich? Sehen wir aus wie Hellseher? Erklär es uns einfach richtig, da brauchen wir auch kein Philosophiebuch vorholen um was in deine mangelhaften Erklärungen reinzuinterpretieren.

Das Problem ist wie Noobody das schon treffend formulierte einfach mit EntityOrder zu lösen. Du brauchst in deinem 2D Spiel theoretisch keinen Z-Buffer, also leg doch per EntityOrder einfach selbst die Renderreihenfolge fest.


1.Den Fehler finden, beheben
2.manchmal ja manchmal nein
3. verdammte scheiße nochmal... es regt einen auf wenn jemand scheiße postet ohne den thread gelesen zu haben.(und ich hab das gefühl, man will den thread gar nicht erst lesen)
4.Mit entityorder klappts auch nich.
5.Das spiel ist zu 7/8 3D
6.Dann hab ich son drecks ergebnis, das wenn man einen block von links sieht(d.h. die linke seite sieht) der block über alles gezeichnet wird.
7.Im ersten Post hab ich gesagt das ich nicht weiß woher und warum es zu diesem fehler kommt
Warbseite

Holzchopf

Meisterpacker

BeitragSa, Feb 07, 2009 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Cgamer, auch wenn du mich grad so ein kleines (wirklich nur ganz MIMIMIMINIklitzekleines bisschen) mit deiner unfreundlichen Art aufregst, geb ich dir jetzt noch mal eine Antwort, die um einiges korrekter ist, als deine Fragestellung und übrigens von Noobody schon genannt wurde.

Cgamer hat Folgendes geschrieben:
Habe nur meinem Tileset alpha verpasst und dann war das auf einmal

Das. Ist. Das. Problem.

Faces, die beide Alphachanneltexturen haben, werden nicht ge-Z-puffert. Face it. Du kannst dir gerne mal vorstellen, welchen Speichermehraufwand das bedeuten würde, an jedem Pixel sämtliche Texelpositionen zu speichern, um halbtransparente Texel, die später gerendert werden, richtig mit den anderen zu überblenden. Dieses Problem hatte ich auch, und die Forensuche hat mich dann traurigerweise darauf hingewiesen, dass das nunmal nicht direkt zu umgehen ist.

Wenn du mehrere Alphachanneltexturen (also, mit Flag 2 geladen, scheissegal, ob die PNG nen alphakanal hat), zeichnest, entscheidet die erstell-Reihenfolge, welches Face über welchem liegt.

Cgamer hat Folgendes geschrieben:
das problem geht auch ohne alpha-channel nicht weg
Entweder das oder die Aussage in deinem ersten Post ist somit schlicht und einfach.... *trommelwirbel* falsch. Wenn "Keinproblem" = Keine Fehler, "Keinproblem" +"Irgendwas" = Fehler und "Keinproblem" +"Irgendwas" -"Irgendwas" = Fehler ist, dann machst DU irgendwas falsch. Und übrigens: Paint kann deine PNGs nicht laden, weil es gottverfluchte JPGs sind.
UND JA! Ich reg mich hier grad tierisch auf!

Cgamer hat Folgendes geschrieben:
7.Im ersten Post hab ich gesagt das ich nicht weiß woher und warum es zu diesem fehler kommt

Lüge! Genau das GEGENTEIL ist der Fall!

>.< hör auf dich hier zum Affen zu machen.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Xaymar

ehemals "Cgamer"

BeitragSo, Feb 08, 2009 3:33
Antworten mit Zitat
Benutzer-Profile anzeigen
hör auf mich hier wie ein depp darzustellen.

Wenn ich verdammt nochmal nicht weiß woher das kommt weil ich nich nur eben meinem tileset nur alpha verpasst habe(kann ja auch am grafik programm liegen).

Zitat:
Cgamer hat Folgendes geschrieben:
7.Im ersten Post hab ich gesagt das ich nicht weiß woher und warum es zu diesem fehler kommt

Lüge! Genau das GEGENTEIL ist der Fall!


kann gar keine Lüge sein DENN zu dem zeitpunkt wusste ich eben nicht woher der fehler kam.
und wie du siehst werden ja nicht nur alphatextured blöcke beeinflusst sondern gleich die ganze 3d-Welt.(inklusive overlay)

Zitat:
Cgamer hat Folgendes geschrieben:
das problem geht auch ohne alpha-channel nicht weg
Entweder das oder die Aussage in deinem ersten Post ist somit schlicht und einfach.... *trommelwirbel* falsch. Wenn "Keinproblem" = Keine Fehler, "Keinproblem" +"Irgendwas" = Fehler und "Keinproblem" +"Irgendwas" -"Irgendwas" = Fehler ist, dann machst DU irgendwas falsch. Und übrigens: Paint kann deine PNGs nicht laden, weil es gottverfluchte JPGs sind.
UND JA! Ich reg mich hier grad tierisch auf!


dann sag/zeig mir WAS ich falsch mache... und das hat hier bisher NIEMAND gemacht.

PS: reg dich ruhig auf...
PPS: wegen dir muss meine Tastatur leiden...

Zitat:
Paint kann deine PNGs nicht laden, weil es gottverfluchte JPGs sind.

es sind PNGs... ich muss es ja wissen da ich die screens gemacht habe...

Solangsam fängt mich diese Community mit diesen Usern an auf die Nerven zu gehen. Fast jeder 2.Post in einem Thread hat aggressive Ausdrücke/Formulierung. Es geht einem echt auf den ... ! ES KOTZT MICH EINFACH AN!

[edit]hab nobody's posts, überlesen. half mir aber nicht weiter.
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 08, 2009 5:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Bereits mit der Außage ''Ich hab keine Ahnung woran es liegt. Habe nur meinem Tileset alpha verpasst und dann war das auf einmal'' zeigt man doch, dass man weiß woran das liegt (Stichwort: +Tileset +Alpha +Verpasst). Das wollte wohl Holzchopf damit ausdrücken. Außerdem finde ich bereits den Eröffnungsbeitrag recht unfreundlich, was dann nicht selten eben so eskalliert.

Nur so nebenbei. Wenn mein Vorschlag und vor allem der Vorschlag von Noobody nicht das Problem löst, dann ist der Fehler bereits ganz wo anders zu suchen. Denn, Blitz3D zeichnet nicht nach Lust und Laune, sondern das was man vorgibt. Lediglich die bereits genannten Punkte können durch die 3D-Technik beeinflusst sein.

Paar Dinge, die mir auffallen:

- Bei Sprites nicht ScaleEntity, sondern ScaleSprite benutzen.

- CreateBG erstellst du auf Z=0.55 und verschiebst es später noch um Z=Z+0.01. Dann später erstellst du CreateBG auf Z=0 und verschiebst es noch um Z=Z+10.5. Auch noch einmal auf Z=9.5, und das alles auf CameraRange-Faktor 1/1000. Außerdem lädst du Alphatexturen und das auch noch als animierte Texturen, welche nicht selten zusätzlich noch Probleme bereiten.

- Du skallierst die Kamera. Das geht zwar, sollte aber doch lieber mit CameraZoom gemacht werden. Außerdem komplett unnötig, da eine Kameraskallierung um 2,2,2 keine sichtbaren Ergebnise liefert, als nur, dass man die Kontrolle zu CameraRange verliert.

- Du positionierst den Player an manchen Stellen immer gleich doppelt. Grund?



Naja, der Code ist für mich zu unübersichtlich. Zu viele nichts aussagende ''Zahlenkodierungen'' um irgendwas zu machen etc... Ich würde den Code an sich komplett neu struktuieren. Sachen werden zwischendurch mal geladen etc... So verliert man schnell die Kontrolle zum Programm. Nur so als Anregung.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

tft

BeitragSo, Feb 08, 2009 9:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ....

hir wurde ja fiel erzählt ...... aber das wesentliche habt ihr noch garnicht erwähnt . Smile Er soll mal die Objecte mit EntityOrder() sortieren. Dann gibt es das problem womöglich nicht mer. Denn dann wird nicht mer auf ZBuffer geachtet. Die reihenfolge muss natürlich mit jedem neuen durchlauf neu berechnet werden. Von Aussen nach innen und Hinten nach vorne.

Gruss TFT

PS: Ich lieb EntityOrder()

PS2: Und ohne Include ... kann man den Code nichtmal testen.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Xaymar

ehemals "Cgamer"

BeitragSo, Feb 08, 2009 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
@tft: Du kannst den Code sowieso nicht testen da ich funktionierende functions rausgenommen habe aber die 3d functions drin gelassen hab.

@hectic: Sprites haben SpriteViewMode 2, Camera skalieren war eigentlich nur ein test, 'CreateBG() Z verschiebung funzt nicht

Zwischendurch wird gar nichts geladen, nur beim Level change wird etwas geladen(neues Tileset)
Warbseite

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group