BEENi 08Beta EOL (LUCY EOL)
- 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
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
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.
Der Hotfix sollte jetzt wieder ein ungetrübtes Spiel ermöglichen (mit 60FPs)
Danke Drago! für Feedback
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.
-
- 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
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.....
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.....
- 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)"
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.
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...
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.
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...
- 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"
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
-
- 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
Ist nur eine Vermutung.
Du benutzt GrabSprite() und CreateSprite3D() ?
Du benutzt GrabSprite() und CreateSprite3D() ?
- 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
Guten Morgen.
inoffzielle version: download:
http://hosting.alexander-n.de/=NTUzLjEyOTg3ODkwNTQ=
Sollte die max Frames bringen ....
Nö:
Hier werden die 2DSprites geladen:
hier werden diese den 3DSprites zugewiesen:
hier werden die objekte gelöscht....
hier werden die animframes geladen:
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
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
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
-
- Beiträge: 557
- Registriert: 29.11.2005 15:05
Re: "BEENI ALPHA42" UPDate
hmmm..., na dann spiel mal alleine mit deinem bekannten....
-
- 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
Zitat DrFalko:
Man suppen_caspar wenn man keine Ahnung hat, einfach mal ... (D. Nuhr)
Man suppen_caspar wenn man keine Ahnung hat, einfach mal ... (D. Nuhr)
-
- 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
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.
Dies ist mir schon aufgefallen. Hier diese Frames mußt du auch noch in deiner Routine ClearMem löschen!
Code: Alles auswählen
_3DGFXOBJECT(_tile.l)\worldFTileGFX[_3DGFXOBJECT(_tile.l)\animFrame]=CreateSprite3D(#PB_Any,_3DGFXOBJECT(_tile.l)\animSPRITEID)
- 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
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......
PS: werd mir die Engine mit etwas Abstand die nächsten Tage wieder "vorknöpfen".
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......
PS: werd mir die Engine mit etwas Abstand die nächsten Tage wieder "vorknöpfen".