BEENi 08Beta EOL (LUCY EOL)

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
darius676
Beiträge: 502
Registriert: 08.03.2010 22:12
Computerausstattung: Intel i5 16GB RAM nVidia 1050, Win11
Atari Jaguar, Surface Pro 5,Surface Laptop i5 7200, XBOX ONE X, XBOX Series X
Wohnort: AT
Kontaktdaten:

Re: "BEENI ALPHA42"HOTFIX

Beitrag von darius676 »

Hab den LevelLoader wieder an "alte" Verhältnisse angepasst. Die neue Routine erzeugt offensichtlich ein Speicherleck bei den _3DSprites.
Der Hotfix sollte jetzt wieder ein ungetrübtes Spiel ermöglichen (mit 60FPs)
Danke Drago! für Feedback :mrgreen:

neuer Downloadlink im ersten Post.

PS:
Das Problem mit den Spielgeschwindigkeit ist mir nicht aufgefallen, da ich immer nur den jeweiligen Level gespielt hab, nie das komplette Spiel......
Die Anzeige der geretteten Beena´s ist falsch.

:praise: :coderselixir:
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: "BEENI ALPHA42" UPDate

Beitrag von Drago »

:( Tut mir leid, aber bei mir immer noch 9-10 FPS.
Wäre mal gut, wenn es noch andere testen würden.
Was mir noch aufgefallen ist, die Tastatursteuerung ist sehr träge.
Muß oftmals zig mal die Spacetaste quälen, bevor irgendein hupser gemacht wird.....
Benutzeravatar
darius676
Beiträge: 502
Registriert: 08.03.2010 22:12
Computerausstattung: Intel i5 16GB RAM nVidia 1050, Win11
Atari Jaguar, Surface Pro 5,Surface Laptop i5 7200, XBOX ONE X, XBOX Series X
Wohnort: AT
Kontaktdaten:

Re: "BEENI PAUSSIERT (LUCY/iGORE ENGINE WORKUP)"

Beitrag von darius676 »

Danke!

Hab die Version hier auf unterschiedlichen Rechnern testen können. 60FPS.
Worans auch immer liegt. Werde am WE daran arbeiten.

SpaceTaste: Ist im Moment suboptimal gelöst. Der Spieler darf keine andere Taste gedrückt halten.
JoyPad währe zu empfehlen. (alle Keyboadeingaben werden werden als "Joypadeingaben" verwaltet/gemappt.)

Danke! Nochmals. :mrgreen:

Edit:
Problem wurde eingekreist: Laderoutine/2D/3DSprite:
mehrmaliges Laden der Levels erzeugt slowdown. Irgendwo wird Speicher verbraten und nicht mehr freigegeben.
Problem/Fehler müsste schon länger bestehen, fiel aber nie auf??.
Downloadlink wird für die Dauer der Reparatur vom Netz genommen...
Benutzeravatar
darius676
Beiträge: 502
Registriert: 08.03.2010 22:12
Computerausstattung: Intel i5 16GB RAM nVidia 1050, Win11
Atari Jaguar, Surface Pro 5,Surface Laptop i5 7200, XBOX ONE X, XBOX Series X
Wohnort: AT
Kontaktdaten:

Re: "BEENI ClosedALPHA"

Beitrag von darius676 »

:?
Bild

diesen Screen erhalte ich nach ca. 15x level neuladen.betrifft zu begin nur animierte objekte. animation sind einzelbilder:

Structure _DDDGFX ;3DSprite Struktur
worldFTileGFX.l[256] ;speicherbereich/frame-nummer der animframes frames
worldFH.f
worldFV.f
worldFTileMaterialIndex.l
worldFTileCollision.b
worldFTileW.f
worldFTileH.f
.
.
.
EndStructure

ich nehme an, dass hier der Speicher nicht mehr reicht. (ich verbrate irgentwo speicher und finds nicht raus....)

hab das spritemanangement sogar komplettt überarbeitet, der fehler ist in früheren spielen nicht zu sehen, die benutzen nicht so viele level und auch keine animationen.
wenn ich die animation abschalte verschlept sich das problem bis auf ca 30 x level neu laden.
es werden alle 3Dsprites "befreit" und der level wird neu geladen,
dann die 2Dsprites (anim) entfernt
die 2dsprites neu geladen
und die 3dsprites neu erstellt....

das komplette löschen und wiederherstellen der sprites ist notwendig. (dadurch wird das verzweigen auf andere grafikverzeichnisse möglich, um grössere projekte zu realisieren)

wenn ich nun alles lösche und wieder lade, warum verbrat ich speicher? oder ??? Stimmt meine vermutung überhaupt?

danke für post/info
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: "BEENI ALPHA42" UPDate

Beitrag von Drago »

Ist nur eine Vermutung.

Du benutzt GrabSprite() und CreateSprite3D() ?
Benutzeravatar
darius676
Beiträge: 502
Registriert: 08.03.2010 22:12
Computerausstattung: Intel i5 16GB RAM nVidia 1050, Win11
Atari Jaguar, Surface Pro 5,Surface Laptop i5 7200, XBOX ONE X, XBOX Series X
Wohnort: AT
Kontaktdaten:

Re: "BEENI ALPHA42" UPDate

Beitrag von darius676 »

Guten Morgen.


inoffzielle version: download:
http://hosting.alexander-n.de/=NTUzLjEyOTg3ODkwNTQ=
Sollte die max Frames bringen ....



Nö:

Hier werden die 2DSprites geladen:

Code: Alles auswählen

Procedure TileInit()  

Global tilepath$=""


i.l=0 ;set the helper variable to zero

ok= ReadFile(#PB_Any,_tileIniPath$)

If ok<>0

While Not Eof(ok) And i.l<_dpointer.l

keyword$=ReadString(ok)  ;keyword
brace$=ReadString(ok)    ;openbrace
value$=ReadString(ok)    ;what to do (value)
brace$=ReadString(ok)    ;closebrace
objectname$=ReadString(ok)     
brace$=ReadString(ok)
objectID$=ReadString(ok)
brace$=ReadString(ok)
blank$=ReadString(ok)


tilepath$=value$

If value$>""
   
   
   okok=LoadSprite(#PB_Any,gfxPath$+tilepath$+codec$,#PB_Sprite_Texture|#PB_Sprite_Memory)
   
                         If okok<>0
                         
                         TransparentSpriteColor(okok, RGB(255,255,255))
                            GGFX(i.l)\_spriteID=okok      
                           _gfxW(i.l)=SpriteWidth(GGFX(i.l)\_spriteID)
                           _gfxH(i.l)=SpriteHeight(GGFX(i.l)\_spriteID)
                           _gfxR(i.l)=0
                           _2DSPRITEMAX=i.l  ;the internal counter/for special handling
                           _dummy2DSprite.l= i.l                   
                            i.l+1
                                
                          Else
  
                          
                          
                        okok=LoadSprite(#PB_Any,gfxPath$+"dummy"+codec$,#PB_Sprite_Texture|#PB_Sprite_Memory)  ;try to load default/error gfx...
   
                         If okok<>0
                         
                         TransparentSpriteColor(okok, RGB(255,255,255))
                            GGFX(i.l)\_spriteID=okok   
                           _gfxW(i.l)=SpriteWidth(GGFX(i.l)\_spriteID)
                           _gfxH(i.l)=SpriteHeight(GGFX(i.l)\_spriteID)
                           _gfxR(i.l)=0
                           _2DSPRITEMAX=i.l  ;the internal counter/for special handling
                           _dummy2DSprite.l= i.l                   
                          i.l+1
                                                                  
    EndIf                       
                                                 
                        EndIf
EndIf
        


Wend

CloseFile(ok)

Else
PEACEFILEERROR()   
End

EndIf

hier werden diese den 3DSprites zugewiesen:

Code: Alles auswählen

Procedure FSortLoadLEVEL(llevel$,_doscale,_doClearMEM)
; 
; a1=1
; b1=0
; c1=a1/b1

_failedLoadSprite.l=0 ;debugvar
_filesprite.l=0

If  _doClearMEM=1 
    CLEARMEM()
    LOADGAMEMUSIC(actualLEVEL) ;am anfang der mapladeroutine (_doClear = 1 =  auch sound laden...)
    LOADSFXSND()
EndIf

xlevel$=llevel$

For i=0 To 8 ;maxlayer used in this version of the engine....(hardcoded for now..)

ok= ReadFile(#PB_Any,xlevel$ ) ;openfile for reading the data of world

If ok<>0


Repeat 

   dummy$=ReadString(ok)
 
 If dummy$="TILE"
      ;*********************** THIS VALUES ARE Not IN THE LEVEL FILE!!! THIS Data IS GENERATED USING THE INITIAL ID# OF GFX And GIVEN To THE ACTUAL LEVEL GFXID# (PARENT->CHILD)
      gfx$=ReadString(ok)  ;gfx#
      xxx$=ReadString(ok)  ;x
      yyy$=ReadString(ok)  ;y
      www$=ReadString(ok)  ;width
      hhh$=ReadString(ok)  ;height
      lll$=ReadString(ok)  ;layer
      
      
      _filesprite.l=Val(gfx$) ;2DTile ID
      xxx=Val(xxx$)
      yyy=Val(yyy$)
      www=Val(www$)
      hhh=Val(hhh$)
      lll=Val(lll$)
      
     

 If IsSprite(GGFX(_filesprite.l)\_spriteID) And lll=i
            
            ;INTERNALS
            ;some baseinits for the internals:
          _3DGFXOBJECT(_worldftile.l)\worldFTileERROR="" ;default!
          _3DGFXOBJECT(_worldftile.l)\animFrame=0 ;the actual frame -setting
          _3DGFXOBJECT(_worldftile.l)\animDirection=1 ;default direction  for animplay = forward (-1 = rewind)
     
     
          _3DGFXOBJECT(_worldftile.l)\worldFTileGFX[_3DGFXOBJECT(_worldftile.l)\animFrame]= CreateSprite3D(#PB_Any,GGFX(_filesprite.l)\_spriteID)
          _3DGFXOBJECT(_worldftile.l)\worldFTileMaterialIndex=_filesprite.l
          _3DGFXOBJECT(_worldftile.l)\worldFTileRotate=GGFX(_filesprite.l)\_rotate
          _3DGFXOBJECT(_worldftile.l)\worldFTileFollow=GGFX(_filesprite.l)\_followpointer
          _3DGFXOBJECT(_worldftile.l)\worldFTileTransparency=GGFX(_filesprite.l)\_transparency
          _3DGFXOBJECT(_worldftile.l)\worldFTileGOBACK=GGFX(_filesprite.l)\_goback
          _3DGFXOBJECT(_worldftile.l)\worldFTileTouchMove=GGFX(_filesprite.l)\_touchmove
          _3DGFXOBJECT(_worldftile.l)\worldFTileTouchTransparency=GGFX(_filesprite.l)\_touchtransparency
          _3DGFXOBJECT(_worldftile.l)\worldFTilePlayerID=GGFX(_filesprite.l)\_playerID
          _3DGFXOBJECT(_worldftile.l)\worldFTileExpansionValue=GGFX(_filesprite.l)\_expansion
          _3DGFXOBJECT(_worldftile.l)\worldFTileIsGUI=GGFX(_filesprite.l)\_worldFTileIsGUI
          _3DGFXOBJECT(_worldftile.l)\worldFStretch=GGFX(_filesprite.l)\_stretch
          _3DGFXOBJECT(_worldftile.l)\animAutoPlay=GGFX(_filesprite.l)\_animAutoPlay
          _3DGFXOBJECT(_worldftile.l)\animTimer=GGFX(_filesprite.l)\_animTimer
          _3DGFXOBJECT(_worldftile.l)\worldFTileMove=GGFX(_filesprite.l)\_moveGFXV
          _3DGFXOBJECT(_worldftile.l)\worldFTileVELO=GGFX(_filesprite.l)\_playerVELO
          _3DGFXOBJECT(_worldftile.l)\worldFTileVeloV=_3DGFXOBJECT(_worldftile.l)\worldFTileVELO   ;for the Parabl
          _3DGFXOBJECT(_worldftile.l)\worldFTileVeloH=_3DGFXOBJECT(_worldftile.l)\worldFTileVELO  ;for the Parable
          _3DGFXOBJECT(_worldftile.l)\worldFTilePlayerMOVE=GGFX(_filesprite.l)\_playerMOVE
          _3DGFXOBJECT(_worldftile.l)\worldFTilePLINKI=GGFX(_filesprite.l)\_plinki
          _3DGFXOBJECT(_worldftile.l)\worldFTileGravity=GGFX(_filesprite.l)\_gravity
          _3DGFXOBJECT(_worldftile.l)\worldFTileCollision=GGFX(_filesprite.l)\_collision
          _3DGFXOBJECT(_worldftile.l)\worldFTileScrollH=GGFX(_filesprite.l)\_scrollH
          _3DGFXOBJECT(_worldftile.l)\worldFTileScrollV=GGFX(_filesprite.l)\_scrollV
          _3DGFXOBJECT(_worldftile.l)\worldFTileCollisionDestroy=GGFX(_filesprite.l)\_collsiondestroy
          _3DGFXOBJECT(_worldftile.l)\worldFTileIsActive=GGFX(_filesprite.l)\_isActive
          _3DGFXOBJECT(_worldftile.l)\worldFTileLaunch=GGFX(_filesprite.l)\_launch
          _3DGFXOBJECT(_worldftile.l)\worldFTileGlobalGravity=GGFX(_filesprite.l)\_globalgravity
          _3DGFXOBJECT(_worldftile.l)\worldFtileFollowObject=GGFX(_filesprite.l)\_tilefollow
          _3DGFXOBJECT(_worldftile.l)\worldFTileMoveH=GGFX(_filesprite.l)\_tilemoveH
          _3DGFXOBJECT(_worldftile.l)\worldFTileMoveV=GGFX(_filesprite.l)\_tilemoveV
          _3DGFXOBJECT(_worldftile.l)\lastMoveX = _3DGFXOBJECT(_worldftile.l)\worldFTileMoveH  ;for AI
          _3DGFXOBJECT(_worldftile.l)\lastMoveY = _3DGFXOBJECT(_worldftile.l)\worldFTileMoveV  ;for AI
          _3DGFXOBJECT(_worldftile.l)\worldFTileIsEMUMousePointer=GGFX(_filesprite.l)\_mousepointer
          _3DGFXOBJECT(_worldftile.l)\worldFTileKeyboardControl=GGFX(_filesprite.l)\_keyboard
          _3DGFXOBJECT(_worldftile.l)\worldFTileIsHWMousePointer=GGFX(_filesprite.l)\_hwmousepointer
          _3DGFXOBJECT(_worldftile.l)\worldFTileTouchRotate=GGFX(_filesprite.l)\_touchrotate
          _3DGFXOBJECT(_worldftile.l)\useLayerScroll=GGFX(_filesprite.l)\_useLayerScroll
          _3DGFXOBJECT(_worldftile.l)\worldFTilePattern=GGFX(_filesprite.l)\_worldFTilePattern
          _3DGFXOBJECT(_worldftile.l)\worldGlobalScrollH=GGFX(_filesprite.l)\_worldGlobalScrollH
          _3DGFXOBJECT(_worldftile.l)\worldGlobalScrollV=GGFX(_filesprite.l)\_worldGlobalScrollV
          _3DGFXOBJECT(_worldftile.l)\worldFTileTransport=GGFX(_filesprite.l)\_worldFTileTransport
          _3DGFXOBJECT(_worldftile.l)\worldFTileFadeOUT=0
          _3DGFXOBJECT(_worldftile.l)\worldFTileShadow=GGFX(_filesprite.l)\_worldFTileShadow
          _3DGFXOBJECT(_worldftile.l)\worldFTileReflection=GGFX(_filesprite.l)\_worldFTileReflection
          _3DGFXOBJECT(_worldftile.l)\worldFTileFlire=GGFX(_filesprite.l)\_worldFTileFlire
          _3DGFXOBJECT(_worldftile.l)\worldFTileID=GGFX(_filesprite.l)\_worldFTileID
          _3DGFXOBJECT(_worldftile.l)\worldFTileIDString=GGFX(_filesprite.l)\_worldFTileIDString
          _3DGFXOBJECT(_worldftile.l)\hp=GGFX(_filesprite.l)\_hp
          _3DGFXOBJECT(_worldftile.l)\worldFTileLifeTime=GGFX(_filesprite.l)\_worldFTileLifeTime
          _3DGFXOBJECT(_worldftile.l)\noSmooth=GGFX(_filesprite.l)\_noSmooth
          _3DGFXOBJECT(_worldftile.l)\worldFTileAutoMove=0  ;default!!!! do not move without "control"
          _3DGFXOBJECT(_worldftile.l)\worldFTileUSEFX=GGFX(_filesprite.l)\_worldFTileUSEFX
          _3DGFXOBJECT(_worldftile.l)\animOffset=GGFX(_filesprite.l)\_animOffset; used for the animframes (directions) a simple but working solution
          _3DGFXOBJECT(_worldftile.l)\worldFTileHideOnStart=GGFX(_filesprite.l)\_worldFTileHideOnStart
          
          ; ;////////////////////////////////////////////////////////////////////////////
          ; ;SPECIAL FOR PLAYERHP HANDLING
          ; 
          ; If _mplayerHP.l>0 And _3DGFXOBJECT(_worldftile.l)\worldFTilePlayerID<>0
          ; _3DGFXOBJECT(_worldftile.l)\hp=_mplayerHP.l
          ; EndIf
          ; 
          ; ;//////////////////////////////////////////////////////////////////////////////
          
          _3DGFXOBJECT(_worldftile.l)\useWeapon=GGFX(_filesprite.l)\_useWeapon
          _3DGFXOBJECT(_worldftile.l)\worldFTileObjectShadowOffsetX=GGFX(_filesprite.l)\_objectShadowOffsetX
          _3DGFXOBJECT(_worldftile.l)\worldFTileObjectShadowOffsetY=GGFX(_filesprite.l)\_objectShadowOffsetY
          _3DGFXOBJECT(_worldftile.l)\worldFTileObjectShadowZoom=GGFX(_filesprite.l)\_objectShadowZoom
          _3DGFXOBJECT(_worldftile.l)\worldFTileJumpSize=GGFX(_filesprite.l)\_worldFTileJumpSize
          _3DGFXOBJECT(_worldftile.l)\postEFFECT=GGFX(_filesprite.l)\_postEFFECT
          _3DGFXOBJECT(_worldftile.l)\worldFTileRandomMove=GGFX(_filesprite.l)\_worldFTileRandomMove
          _3DGFXOBJECT(_worldftile.l)\worldFTileLoopH=GGFX(_filesprite.l)\_worldFTileLoopH
          _3DGFXOBJECT(_worldftile.l)\worldFTileLoopV=GGFX(_filesprite.l)\_worldFTileLoopV
          _3DGFXOBJECT(_worldftile.l)\worldFTileParableH=GGFX(_filesprite.l)\_worldFTileParableH
          _3DGFXOBJECT(_worldftile.l)\worldFTileParableV=GGFX(_filesprite.l)\_worldFTileParableV
          _3DGFXOBJECT(_worldftile.l)\worldFTileBounceTopDown=GGFX(_filesprite.l)\_worldFTileBounceTopDown
          _3DGFXOBJECT(_worldftile.l)\worldFTileDoCrushH=GGFX(_filesprite.l)\_worldFTileDoCrushH
          _3DGFXOBJECT(_worldftile.l)\worldFTileCollisionSize=GGFX(_filesprite.l)\_worldFTileCollisionSize
                              
                              
                              If _3DGFXOBJECT(_worldftile.l)\worldFTileCollisionSize>0
                              _3DGFXOBJECT(_worldftile.l)\worldFTileCollideBoxSize=_3DGFXOBJECT(_worldftile.l)\worldFTileCollisionSize/100
                              Else
                              _3DGFXOBJECT(_worldftile.l)\worldFTileCollideBoxSize=1
                              EndIf
                                            ;----------------------- set special effects and object behavior
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileActualNESW=GGFX(_filesprite.l)\_worldFTileActualNESW
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileNewNESW=GGFX(_filesprite.l)\_worldFTileNewNESW
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileAngle=GGFX(_filesprite.l)\_worldFTileAngle
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileCompasSpeed=GGFX(_filesprite.l)\_worldFTileCompasSpeed
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileOrientation=GGFX(_filesprite.l)\_worldFTileOrientation
                                            _3DGFXOBJECT(_worldftile.l)\geneseID=GGFX(_filesprite.l)\_geneseID
                                                  ;horizontal position
                                            _3DGFXOBJECT(_worldftile.l)\worldFH=xxx
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileXPOS=_3DGFXOBJECT(_worldftile.l)\worldFH
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileORIGX=_3DGFXOBJECT(_worldftile.l)\worldFH
                                            ;+++++++++++++++++++++++++++++++++++++++++++++++++++++
                                            _3DGFXOBJECT(_worldftile.l)\worldFV=yyy
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileYPOS=_3DGFXOBJECT(_worldftile.l)\worldFV
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileORIGY=_3DGFXOBJECT(_worldftile.l)\worldFV
                                            ;----------------------------------------------------------------
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileW=www
                                            ;----------------------------------------------------------------
                                            _3DGFXOBJECT(_worldftile.l)\worldFTileH=hhh
                                            ;----------------------------------------------------------------
                                            ;//////////////////////////////LAYER SETTINGS //////
                                            _3DGFXOBJECT(_worldftile.l)\FTileLayer=lll
                                                               
                                                               
                                                                If _maxUsedLayer<=_3DGFXOBJECT(_worldftile.l)\FTileLayer
                                                                _maxUsedLayer=_3DGFXOBJECT(_worldftile.l)\FTileLayer   
                                                                EndIf

                                          
                                          _3DGFXOBJECT(_worldftile.l)\worldFTileORIGW =_3DGFXOBJECT(_worldftile.l)\worldFTileW ;internal systemvaribale to use with some effects
                                          _3DGFXOBJECT(_worldftile.l)\worldFTileORIGH=_3DGFXOBJECT(_worldftile.l)\worldFTileH  ;internal systemvaribale to use with some effects
                                          _3DGFXOBJECT(_worldftile.l)\worldFTileActionON=0 ;default for levele/gamestart. actions off...(is used to activate some A.I. controls) To activate switch 0 to 1 :-)
                                          ;//////////////////////////////INTERNALS////////////////////////////////////
                                          _3DGFXOBJECT(_worldftile.l)\goONX.b=1 ;default object moving is on
                                          _3DGFXOBJECT(_worldftile.l)\goONY.b=1 ;default object moving is on
                                          ;SPECIALGFX(_worldftile.l)

                                          If _3DGFXOBJECT(_worldftile.l)\worldGlobalScrollH<>0
                                          _GLOBALSCROLLH.f=_3DGFXOBJECT(_worldftile.l)\worldGlobalScrollH
                                          EndIf
                                                  If _3DGFXOBJECT(_worldftile.l)\worldGlobalScrollV<>0
                                                  _GLOBALSCROLLV.f=_3DGFXOBJECT(_worldftile.l)\worldGlobalScrollV
                                                  EndIf
                                                        ;POSITION FOR THE ENERGYBAR ICON
                                                        If _3DGFXOBJECT(_worldftile.l)\worldFTileIDString="ENERGYBAR"
                                                        _3DGFXOBJECT(_worldftile.l)\worldFH=8
                                                        _3DGFXOBJECT(_worldftile.l)\worldFV=_height.f-_3DGFXOBJECT(_worldftile.l)\worldFTileH-8
                                                         _energybarXOFF.f=_3DGFXOBJECT(_worldftile.l)\worldFH+_3DGFXOBJECT(_worldftile.l)\worldFTileW/4
                                                         _energybarYOFF.f=_3DGFXOBJECT(_worldftile.l)\worldFTileH/8
                                                        EndIf






;special value for jump limit:
;_3DGFXOBJECT(_worldftile.l)\ worldFTileJumpLimmit=_height.f/4  ;maximal 1/4 height of the screen: base =last save position/plattform!
;**************************************************************

;do some internals for the game.....delete this if yiu do not use in this way...there is NO important data stored in this section (its for private use)
; 
                                          Select _3DGFXOBJECT(_worldftile.l)\worldFTileIDString  ;count our bosses
                                                Case "BEENA"
                                                _boss+1
                                          EndSelect
                                                    _bosscheck=_boss

                                                  ;SUPERSOOM(_worldftile.l)
                                                  If _doscale=1
                                                        SCALER(_worldftile.l) ;objectsize....do NOT change if already scaled and saved...
                                                        VELOSCALER(_worldftile.l);for the objectspeeds
                                                  EndIf 


;----------CHECK FOR BEENI GUI GFXTEXT 
; Global _timex.f=0
; Global _timey.f=0
; Global _lifex.f=0
; Global _lifey.f=0
; Global _beenax.f=0
; Global _beenay.f=0
; Global _scorex.f=0
; Global _scorey.f=0

                  Select _3DGFXObJEcT(_worldftile.l)\worldFTileIDString

                                  Case "SAVEDBEENAS"
                                         _beenax.f=_3DGFXOBJECT(_worldftile.l)\worldFH+_3DGFXOBJECT(_worldftile.l)\worldFTileW
                                         _beenay.f=_3DGFXOBJECT(_worldftile.l)\worldFV*1.1
                                   
                                   
                                   Case "TIMELEFT"
                                         _timex.f=_3DGFXOBJECT(_worldftile.l)\worldFH+_3DGFXOBJECT(_worldftile.l)\worldFTileW
                                         _timey.f=_3DGFXOBJECT(_worldftile.l)\worldFV+1.1
                                        
                                  Case "LIFES"
                                       _lifex.f=_3DGFXOBJECT(_worldftile.l)\worldFH+_3DGFXOBJECT(_worldftile.l)\worldFTileW
                                       _lifey.f=_3DGFXOBJECT(_worldftile.l)\worldFV+1.1
                                      
                                  
                                  Case "SCORE"
                                         _scorex.f=_3DGFXOBJECT(_worldftile.l)\worldFH+_3DGFXOBJECT(_worldftile.l)\worldFTileW
                                         _scorey.f=_3DGFXOBJECT(_worldftile.l)\worldFV+1.1

                      EndSelect


;------ THE ANIMSYSTEM CALL!!!!


                     _3DGFXOBJECT(_worldftile.l)\animContainer=GGFX(_filesprite.l)\_animContainer
                  If _3DGFXOBJECT(_worldftile)\animContainer<>"" And _3DGFXOBJECT(_worldftile)\animContainer<>"NOPE"
                      FANIMLOAD(_worldftile.l,_animPath$+_3DGFXOBJECT(_worldftile.l)\animContainer+"\")
                  EndIf


                      ;////////////////////////////////////////////////////////////
                      ;            CALL OBJECTMEMORY/INDEXSTORAGE
                      OBJECTBRAIN(_worldftile.l)
                      ;///////////////////////////////////////////////////////////
                      ;----CALL THE IDMANAGER!!!
                      LUCYHELP_ID(_worldftile.l)
                       
                      ; If _3DGFXOBJECT(_worldftile.l)\worldFTileIDString="GETREADY" ;special ID to stop game...wait for start...show player  that game is on the way to start :-)
                      ; gameON=0
                      ; EndIf
                      _worldftile.l+1
                   
                      
                 
                EndIf  ;is it sprite
          
          
              EndIf ;TILE:dummy$

Until dummy$="ENGINETILEINFOEND" Or Eof(ok)

CloseFile(ok)
            
            Else
            ;_gameover.b=1
            ;actualLEVEL=-1   ;The end? Wrong level? Go for theHigscore...maybe we have reached the last stage...
            ; 
            ; EndIf ;loop..

        EndIf ;file


Next   ;layer

; If _worldftile.l>0
; _worldftile.l-1 ;correction !!!!!
; EndIf

;/////////////////////////////////////
;
;  LOAD THE LEVEL FONT
;
;////////////////////////////////////

;scale the gfxfont if possible
If _gfxFONTisScaled.b=0
GFXTEXTSCALER()
EndIf

EndProcedure  
hier werden die objekte gelöscht....

Code: Alles auswählen

Procedure CLEARMEM()

If _worldftile.l>0
;
;DO A CLEAN START/NEW LEVEL/SO WE DO NOT WASTE MEMORY OR USE MORE MEMORY THAN NEEDED/ACTIVATE ALL STANDARD SETTINGS FOR OUR GAME
For killmee=0 To _worldftile.l

      If IsSound(killmee)<>0
            StopSound(killmee)
            FreeSound(killmee)
      EndIf
      
                
                If IsModule(killmee)<>0
                      StopModule(killmee)
                      FreeModule(killmee)
                EndIf
    
                        For a=0 To 256
                    
                               If IsSprite3D(_3DGFXOBJECT(killmee)\worldFTileGFX[a])<>0 ;kill all 3DAnimSprites
                               FreeSprite3D(_3DGFXOBJECT(killmee)\worldFTileGFX[a])
                               EndIf  
                            
                        Next
                
                
                                     
     If IsSprite(_3DGFXOBJECT(killmee)\animSPRITEID)<>0
      FreeSprite(_3DGFXOBJECT(killmee)\animSPRITEID)
     EndIf                                                
                       
     
     
      
Next

      

    ;clear all 2DBASESprites!!!!!
      For a=0 To _2DSPRITEMAX
      If IsSprite(GGFX(a)\_spriteID)<>0  
      FreeSprite(GGFX(a)\_spriteID)
      EndIf
      Next

; For igli.l=0 To  _lastFONT.l
; If IsSprite3D(_3DFONTOBJECT(igli.l)\fontGFX)
; FreeSprite3D(_3DFONTOBJECT(igli.l)\fontGFX)
; EndIf
; Next

EndIf
_worldftile.l=0
LevelSndIsLoaded.b=0
levelsndIsPlaying.b=0
gameON=0 ;switch OFF gameACtion...so we can USE "GET READY..."
; _doScroll.b=1
;_bosscheck=4
_gameover.b=0
gameStarter.l=0
_superTIMER.l=0
_GLOBALSCROLLH.f=0
_GLOBALSCROLLV.f=0
my_LUCY_smooth=_LUCY_smooth
_actualLUCY_ID.l=0 ;reset the LUCYID-Helpersystem
_maxLUCY_ID.l=0
_3DGFX\xoffset=0
_3DGFX\yoffset=0


TileInit() ;restore the tiles (2DSprites for use as 3DSprites)  ---LUCYWORLD.inc

EndProcedure
hier werden die animframes geladen:

Code: Alles auswählen

Procedure FANIMLOAD(_tile.l,appath$)


 _dummy$=appath$;debuginfo
 _3DGFXOBJECT(_tile.l)\animFrame=1
 _3DGFXOBJECT(_tile.l)\animEndFrame=1
Repeat
        
       _3DGFXOBJECT(_tile.l)\animSPRITEID=LoadSprite(#PB_Any,appath$+Str( _3DGFXOBJECT(_tile.l)\animFrame)+codec$,#PB_Sprite_Texture)
       
       
         If  _3DGFXOBJECT(_tile.l)\animSPRITEID<>0
         
           TransparentSpriteColor(_3DGFXOBJECT(_tile.l)\animSPRITEID, RGB(255,255,255))
               
            
              
                       duw.f=_3DGFXOBJECT(_tile.l)\worldFTileW 
                       duh.f=_3DGFXOBJECT(_tile.l)\worldFTileH 
                       
                                             
                       _3DGFXOBJECT(_tile.l)\worldFTileGFX[_3DGFXOBJECT(_tile.l)\animFrame]=CreateSprite3D(#PB_Any,_3DGFXOBJECT(_tile.l)\animSPRITEID)
                       If _3DGFXOBJECT(_tile.l)\worldFTileGFX[_3DGFXOBJECT(_tile.l)\animFrame]=0
                       _3DGFXOBJECT(_tile.l)\worldFTileERROR="Error : GFXID#"+Str(_tile)+" FrameID#"+Str(_3DGFXOBJECT(_tile.l)\animFrame)
                       EndIf
                       ZoomSprite3D( _3DGFXOBJECT(_tile.l)\worldFTileGFX[_3DGFXOBJECT(_tile.l)\animFrame],duw.f,duh.f)
                       _3DGFXOBJECT(_tile.l)\animEndFrame=_3DGFXOBJECT(_tile.l)\animFrame
                       _3DGFXOBJECT(_tile.l)\animFrame+1
              EndIf
              
                
Until  _3DGFXOBJECT(_tile.l)\animSPRITEID=0 Or  _3DGFXOBJECT(_tile.l)\animFrame>255

_3DGFXOBJECT(_tile.l)\animFrame=0 ;reset to start!!!!
_3DGFXOBJECT(_tile.l)\animStartTime=ElapsedMilliseconds() ;init the timer for animframes
_3DGFXOBJECT(_tile.l)\animNextTime=_3DGFXOBJECT(_tile.l)\animStartTime+_3DGFXOBJECT(_tile.l)\animTimer  ;time for the nextframe!!!!

EndProcedure  
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: "BEENI ALPHA42" UPDate

Beitrag von super_castle »

hmmm..., na dann spiel mal alleine mit deinem bekannten.... :D
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: "BEENI ALPHA42" UPDate

Beitrag von Drago »

Zitat DrFalko:
Man suppen_caspar wenn man keine Ahnung hat, einfach mal ... (D. Nuhr) :freak:
Drago
Beiträge: 148
Registriert: 02.02.2010 18:22
Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
Wohnort: Westerwald

Re: "BEENI ALPHA42" UPDate

Beitrag von Drago »

Also, meiner Meinung nach muß das ClearMem() in die Procedure für das laden der 2D Sprites, da du diese ja vor den 3D Sprites in den Speicher laden mußt.

Code: Alles auswählen

_3DGFXOBJECT(_tile.l)\worldFTileGFX[_3DGFXOBJECT(_tile.l)\animFrame]=CreateSprite3D(#PB_Any,_3DGFXOBJECT(_tile.l)\animSPRITEID)
Dies ist mir schon aufgefallen. Hier diese Frames mußt du auch noch in deiner Routine ClearMem löschen!
Benutzeravatar
darius676
Beiträge: 502
Registriert: 08.03.2010 22:12
Computerausstattung: Intel i5 16GB RAM nVidia 1050, Win11
Atari Jaguar, Surface Pro 5,Surface Laptop i5 7200, XBOX ONE X, XBOX Series X
Wohnort: AT
Kontaktdaten:

Re: "BEENI ALPHA42" UPDate

Beitrag von darius676 »

Erstmal Danke.
Hab das überprüft. Leider keine Änderung.
ClearMem() wird (wurde hauptsächlich) verwendet um die 3DSprites zu löschen. Abhängig von der Programmeinstellung:
Bei Wert 0 würde die Routine die Objektzähler "_worldftile.l" erweitern. Bei 1 wieder von 0 hochzählen. (das setzt Löschen der 3DSprites voraus)

werde weitere Routinen durchforsten, kann ja irgentwo eine var-schreibfehler sein......

:mrgreen:


PS: werd mir die Engine mit etwas Abstand die nächsten Tage wieder "vorknöpfen".
Antworten