MapEditor laggt

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

TheMatrix

Betreff: MapEditor laggt

BeitragDi, Sep 26, 2006 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht woran es liegen kann, aber wenn ich ich die Map größer als x640 und y480 setze und ein Objekt erstelle, dann hackt das Prog ganz böse. Es liegt warscheinlich an Setbuffer imagebuffer(bground). Aber wie soll ich denn sonst Objekte auf den Hintergrund schnell zeichnen???

(Der Fehler wird sicherlich beim Map erstellen später nervig sein Sad )

Hier mal der Code: [AUSKLAPPEN]

Global wx = 640, wy = 480
Global map_x = 1000, map_y = 1000
Global scroll_x = 0, scroll_y = 0

Const key_up = 200, key_down = 208, key_right = 205, key_left = 203
Const key_return = 28, key_space = 57


Graphics wx,wy,16,2

; -------------------Vorschau Grafik laden---------------------
block = CreateImage(50,50) : SetBuffer ImageBuffer(block)
Color 100,0,100 : Rect 0,0,50,50
Color 220,50,220 : Rect 1,1,48,48

; -------------------Hintergrund erstellen---------------------
bground = CreateImage(map_x,map_y) : SetBuffer ImageBuffer(bground)
ClsColor 80,210,80 : Cls
Color 0,150,0 : For a=1 To 1000 : Rect Rnd(map_x), Rnd(map_y),2,2 : Next

SetBuffer BackBuffer()

action = 1
fps = CreateTimer(50)

; ------------------------- Schleife ---------------------------
While Not KeyHit(1)
   WaitEvent(fps)
   mx = MouseX() : my = MouseY()
   posx = mx + scroll_x : posy = my + scroll_y
   steuerung

   ; -- Hintergrund
   DrawBlockRect bground,0,0,scroll_x,scroll_y,wx,wy
   imgw = ImageWidth(block) : imgh = ImageHeight(block)

   ; -- Objekt am Mousezeiger zentriert zeichnen
   DrawImage block,mx-imgw/2,my-imgh/2

   ; -- Bei Mousetaste Objekt an den mom. Koordinaten zeichnen
   If MouseDown(1) And action=1
       SetBuffer ImageBuffer(bground)
       DrawImage block, posx-imgw/2,posy-imgh/2
       SetBuffer BackBuffer()
   End If

Flip BackBuffer()
Wend


Function steuerung()
 If KeyDown(key_up) Then scroll_y=scroll_y-5
 If KeyDown(key_down) Then scroll_y=scroll_y+5

 If KeyDown(key_left) Then scroll_x=scroll_x-5
 If KeyDown(key_right) Then scroll_x=scroll_x+5

 If scroll_x<0 Then scroll_x=0
 If scroll_y<0 Then scroll_y=0

 If scroll_x+wx>map_x Then scroll_x=map_x-wx
 If scroll_y+wy>map_y Then scroll_y=map_y-wy
End Function
°_° °.° °~° °v° .. -.-

Jan_

Ehemaliger Admin

BeitragDi, Sep 26, 2006 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
zeichne die Tiles cniht in die Grafik, sondern hate sie in einem Array!

www.mapeditor.de.vu
between angels and insects

TheMatrix

BeitragDi, Sep 26, 2006 11:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber wenn der Map-Editor tausende von Objekten hat, dann wird es
später sicherlich beim Erstellen extrem laggen, da ich die Objekte immer wieder neuzeichne.

Zitat:
http://www.mapeditor.de.vu/


Will keinen kommerziellen Editor schreiben. Der soll nur für meine Zwecke dienen...
°_° °.° °~° °v° .. -.-
 

Dreamora

BeitragDi, Sep 26, 2006 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö wird er nicht.

Da immer nur 30x30 tiles auf dem bildschirm sind, müssen auch nur die gezeichnet werden.

Solange du meinst du müsstest alle zeichnen, wird der editor sowieso nie funktionieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

DerHase

BeitragDi, Sep 26, 2006 11:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hilft Dir dies weiter.

TheMatrix

BeitragDi, Sep 26, 2006 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Also in Arrays werd ich sie schon später packen. Um Position und Typ abzufragen. Diese Mini-Prog sollte erstmal nur als Grundlage dafür dienen.

Ich habe schonmal so einen Editor in Dark Basic geschrieben, und da hat es nachher bei sovielen Objekten angefangen zu stocken.

Bei SNES Spielen ist es doch genauso. Wegen der geringen CPU, sind die Objekte doch auch auf den Hintergrund gezeichnet.
°_° °.° °~° °v° .. -.-

DerHase

BeitragDi, Sep 26, 2006 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab keine Ahnung von SNES Programmierung, ich kann Dir nur sagen, dass mit der oben genannten Methode, Du locker Spielfelder von 1000x1000 Tiles erstellen kannst.

Jan_

Ehemaliger Admin

BeitragDi, Sep 26, 2006 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
moin the Matrix,

höhre auf den Hasen.

SNES ist ganz anders zu Coden als aufm PC,
hängt auch an der Architekture.
between angels and insects

TheMatrix

BeitragDi, Sep 26, 2006 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nagut, ich glaub ich Gewinn da eh nicht mit meiner Ausage Confused

Dann werd ich mal beugen und die Grafik über Arrays zeichnen lassen. Werde vielleicht mal demnächst meinen Editor vorstellen.

Thx für die Hilfe.

TheMatrix
°_° °.° °~° °v° .. -.-

PSY

BeitragDi, Sep 26, 2006 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
TheMatrix hat Folgendes geschrieben:

Ich habe schonmal so einen Editor in Dark Basic geschrieben, und da hat es nachher bei sovielen Objekten angefangen zu stocken.


DB war im 2D-Bereich grottenlangsam. Obs immer noch so ist, weiss ich net. Bin damals aus diesem Grund auf Blitz umgestiegen...

l8er,
psy

StepTiger

BeitragDi, Sep 26, 2006 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
DB ist allgemein grottenlangsam ^^

ES LEBE BLITZ!

zu der Frage:
habs mal auf 1280x960 gemacht. Lief total flüssig
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

TheMatrix

BeitragDi, Sep 26, 2006 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, deswegen bin ich dann ja auch umgestiegen. Vor alledem war die CPU Auslastung immer bei 99%. Selbst wenn man nur print "Hallo" ausgegeben hat ^^.

Es läuft ja auch flüssig, nur beim Objekte-Einfügen hackt es wie irre. Das hatte ich kommischerweise bei DarkBasic garnicht. Wenn ich da ein Bitmap mit x10000 und y10000 gemacht habe und darauf gezeichnet habe, lief alles blitzschnell.

(Da kann man ja gar kein Paint auf nach BB+ nachprogen, wenn die Bilder zu groß werden Laughing )
°_° °.° °~° °v° .. -.-

BladeRunner

Moderator

BeitragDi, Sep 26, 2006 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit verlaub, aber es ist Irrsinn sich den Grakaspeicher mit solch riesigen Bildern zuzumüllen.
10k * 10k *4 byte -> 400.000.000 byte, das sind 382 Megabyte Speicher. Das bringt jeden Rechner zum kotzen.
Nimm Tiles und berechne vorher welche wirklich zu sehen sind und Du solltest alle Speedsorgen los sein.
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

TheMatrix

BeitragDi, Sep 26, 2006 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
War ja auch nur ein Beispiel....
Nagut, ihr habt mich alle überzeugt Rolling Eyes

Muss ich eigentlich jedes Objekt in Rastergröße kleinhacken und dann die einzelteile wieder später zusammenfügen oder kann ich auch ganze Objekte hineinfügen? Wie frag ich da die Kollision ab? Wenn der bei jedem Durchlauf immer 2000 Objekte durchgeht, dann is das doch schon Resourcen fressend...
°_° °.° °~° °v° .. -.-
 

Dreamora

BeitragDi, Sep 26, 2006 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Kollision: Du prüfst nur das auf kollision, was potentiell auch kollidieren kann. Sprich das was direkt um deine Figur rum ist oder so. Das sind +- 3x3 also 9 Tiles.

grosse Objekte: jopp die musst du in Tile Grösse zerhacken und dann wieder zusammensetzen. Allerdings kannst du mit einem "intelligenten" Editor brushes definieren, so dass du zb das objekt dann auch direkt wieder zeichnen kannst und der Brush das manuelle setzen der 3x3 oder 4x4 tiles und so übernimmt.

Das ist also alles primär eine Frage der Editorfunktionalität. Nur weils intern zerhackt ist, heisst das nicht, dass das Objekt für den User des Editors auch "zerhackt" sein muss Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheMatrix

BeitragMi, Sep 27, 2006 1:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube das mit dem nicht zerhackt sein für den User is kein Problem.

D.H. aber, das man Objekte nicht frei im Feld positionieren kann, oder würde das doch gehen?
°_° °.° °~° °v° .. -.-

DerHase

BeitragMi, Sep 27, 2006 1:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst ja zu jedem Tile noch ein Offset dazu speichern. Aber Spielwelten kann man auch sehr gute ohne erstellen.
Spielobjekte würde ich mit Types lösen. So kannst Du jedem dieser Objekte eine genaue Position geben.

TheMatrix

BeitragMi, Sep 27, 2006 9:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Währen Types nicht an dieser Stelle völlig unpraktisch, da man ja die Objekte meistens wegen ihrer Y-Koordinaten umsortieren muss, damit sich nicht überlappen.?
°_° °.° °~° °v° .. -.-
 

Dreamora

BeitragMi, Sep 27, 2006 10:58
Antworten mit Zitat
Benutzer-Profile anzeigen
nein eigentlich nicht.

Wo müsstest du denn etwas umsortieren?

Gezeichnet wird ja von oben links nach unten rechts (ausser du hast iso, dann würd ich oben rechts nach unten links). Dadurch wird das was hinten ist, immer von dem was vorne ist, überzeichnet.

Das einzige Problem das auftreten kann, ist wenn du mehrere ebenen hast.
aber da würd ich zu einem Dim pro Ebene raten, da du dann erst wie oben beschrieben die unterste ebene zeichnest, dann die 2 unterste etc. Dann stimmt das mit dem vorne - hinten auch wieder Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheMatrix

BeitragMi, Sep 27, 2006 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, also ich rede jetzt eigentlich vom Editor.

Angenommen:
Objekt 1 = y20
Objekt 2 = y50

Beide sind y25 lang und ich will jetzt ein Objekt auf Pos y30 Einfügen. Da muss Objekte 3 doch vor Objekt 2?
°_° °.° °~° °v° .. -.-

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group