Type-Erstellung zieht fps runter
Übersicht

Bloxel93Betreff: Type-Erstellung zieht fps runter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen,
Ich habe ein Problem mit meinem 2D-Programm und zwar will ich ein sichtbares Objekt erstellen, bzw ein Npc mit den Eigenschaften X und Y erstma nur. Dazu habe ich ein Type erstellt und es so gemacht das auf Mausklick der Npc gezeichnet wird also das objekt. nebenbei ich arbeite mit Tiles. Das Problem is jetzt dass das Objekt zwar entsteht und auch gezeichnet wird aber die Fps extrem nach unten fällt. Hier der dafür zuständige Code: Code: [AUSKLAPPEN] Type Npc
Field NpcX Field NpcY End Type Global Holz.Npc Repeat If KeyHit(2) Then ;Bilder editmode = 1 Tile = 0 EndIf If KeyHit(3) Then ;Kollision-Tile editmode = 2 Tile = 0 EndIf If KeyHit(4) Then ;Objekte editmode = 3 Tile = 0 EndIf If KeyHit(5) Then ;Lebewesen editmode = 4 Tile = 0 EndIf If editmode = 1 Then show1 = 1 show2 = 0 show3 = 0 show4 = 0 EndIf If editmode = 2 Then show1 = 0 show2 = 1 show3 = 0 show4 = 0 EndIf If editmode = 3 Then show1 = 0 show2 = 0 show3 = 1 show4 = 0 EndIf If editmode = 4 Then show1 = 0 show2 = 0 show3 = 0 show4 = 1 EndIf If MouseHit(1) Then If show1 = 1 Then map(MausX/tilesize, MausY/tilesize, 0) = tile ;Bilder EndIf If show2 = 1 Then map(MausX/tilesize, MausY/tilesize, 1) = 1 ;Kollision EndIf If show3 = 1 Then map(MausX/tilesize, MausY/tilesize, 2) = objects ;Objekte EndIf If show4 = 1 Holz.Npc = New Npc a = a+1 x = MausX/tilesize y = MausY/tilesize Holz\NpcX = x*tilesize Holz\NpcY = y*tilesize EndIf EndIf ;---[Zeichnen]--- For x = 0 To mapx For y = 0 To mapy DrawImage tileset, x*tilesize-scrollx, y*tilesize-scrolly, map(x,y,0) If show2 = 1 And map(x,y,1) = 1 Then DrawImage Kollision, x*tilesize-scrollx, y*tilesize-scrolly EndIf If map(x,y,2) = objects Then DrawImage Baumstamm, x*tilesize-scrollx, y*tilesize-scrolly EndIf For Holz.Npc = Each Npc DrawImage npc, Holz\NpcX-scrollx, Holz\NpcY-scrolly Next Next Next wichtig unter repeat ist eig nur : editmode = 4 , if mousehit(1) if show4 = 1 ...etc und halt in der for schleife die Npc Zeichnung. Wie gesagt es geht um den Type ... und die Fps geht stark runter wenn der Npc erstellt und gezeichnet wird. Danke schonmal für jede hilfreiche Antwort. Falls der gegebene Code nicht reichen sollte kann ich auf Wunsch auch den ganzen senden |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sobald Du mode4 erreichst wird in jedem Durchlauf der Mainloop ein neuer NPC erstellt, da Du ja den Mode nicht wieder auf 0 stellst.
Und ohne mehr von deinem Code gesehen zu haben glaube ich Dir sagen zu können dass Du sehr vieles vereinfachen könntest - es ist zB unnötig 4 Mode-Variablen zu benutzen, du kannst eine nutzen und ihr einen passenden Wert aus einer Konstante zuweisen: const EDIT_NPC = 1 Const EDTI_NONE=0 ... ... if keyhit(bla) then Mode=EDIT_NPC EDIT: Hab übersehen dass da ein if mousehit drumherum steckt, dann muss der Fehler doch woanders liegen. Den Code vereinfachen kannst Du dennoch. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieviele Objekte erstellst du denn? Du zählst ja mit der variable a mit.
Selbst bei wenigen Objekten wird ein Rechner in die Knie gehen, da du For..each in zwei verschachtelt Schleifen ausführst... Multiplizier mal aus, wie oft du damit Drawimage aufrufst. Die Variablennamen solltest du überarbeiten. Type Npc und Bild npc lässt BB vielleicht zu, aber mach dir nicht selbst solche Probleme - nenn sie unterschiedlich und eindeutig. Die Variablen show1 bis show4 können auch locker zu einer eingedampft werden. Benutze lieber Konstanten, um den Status zu setzen... Code: [AUSKLAPPEN] Const SHOW_TILES=1, SHOW_IMG=2, SHOW_TYPE=3
Local ShowStat=SHOW_TILES |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kleiner Tipp am Rande: Du hast eine Variable "editmode" in der gespeichert wird was angezeigt bzw. Editiert werden soll. Dann fragst du welchen wert diese Variable hat und setzt dann die ensprechenden "Show" Variablen nur für die Überprüfung was angezeigt werden soll. Um das ganze ein wenig Übersichtlicher zu machen prüf doch einfach direkt die Variable "Editmode" auf den Wert..
Code: [AUSKLAPPEN] Type Npc
Field NpcX Field NpcY End Type Global Holz.Npc Repeat If KeyHit(2) Then ;Bilder editmode = 1 Tile = 0 EndIf If KeyHit(3) Then ;Kollision-Tile editmode = 2 Tile = 0 EndIf If KeyHit(4) Then ;Objekte editmode = 3 Tile = 0 EndIf If KeyHit(5) Then ;Lebewesen editmode = 4 Tile = 0 EndIf If MouseHit(1) Then If editmode = 1 Then map(MausX/tilesize, MausY/tilesize, 0) = tile ;Bilder EndIf If editmode = 2 Then map(MausX/tilesize, MausY/tilesize, 1) = 1 ;Kollision EndIf If editmode = 3 Then map(MausX/tilesize, MausY/tilesize, 2) = objects ;Objekte EndIf If editmode = 4 then Holz.Npc = New Npc a = a+1 x = MausX/tilesize y = MausY/tilesize Holz\NpcX = x*tilesize Holz\NpcY = y*tilesize EndIf EndIf ;---[Zeichnen]--- For x = 0 To mapx For y = 0 To mapy DrawImage tileset, x*tilesize-scrollx, y*tilesize-scrolly, map(x,y,0) If show2 = 1 And map(x,y,1) = 1 Then DrawImage Kollision, x*tilesize-scrollx, y*tilesize-scrolly EndIf If map(x,y,2) = objects Then DrawImage Baumstamm, x*tilesize-scrollx, y*tilesize-scrolly EndIf For Holz.Npc = Each Npc DrawImage npc, Holz\NpcX-scrollx, Holz\NpcY-scrolly Next Next Next |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Bloxel93 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke für die schnellen Antworten ![]() Also ich hab jetzt die for.each schleife aus der normalen forschleife rausgeholt und einfach so eingefügt und es geht und hab keinen fps verlust mehr danke dafür ![]() Zu den Vereinfachungen : Also ich weiß ich kann den code vereinfachen... eig bräuchte ich nicht mal zurzeit die show variablen und könnte alles mit editmode= 1,2,3 oder 4 beschreiben was ich auch erstma machen werde ... hatte gedacht das könnte ich später nochma gebrauchen aber dann kann ich das ja immernoch ändern. Den variablenamen vom npc bild werd auch mal ändern. Danke für die Ratschläge Edit : ToeB du hast natürlich Recht genau das meinte ich ^^ sieht natürlich jetzt komisch aus weil mein post später kam als deiner das liegt daran dass ich solange an meiner antwort gefeilt hab und immer zwischendruch am programm rumprobiert hab ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group