Too much!!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Iguan

Betreff: Too much!!

BeitragDi, Jan 24, 2006 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich stehe wieder mal vor einem riesen Problem! ich bin ja dabei, einen Horizontal Shooter zu proggen;

die kollision Schüsse/Gegner kontrolliere ich etwa so:

Code: [AUSKLAPPEN]



Durchlauf = 0

For Gegner = Each GegnerWerte
  Gosub GegnerZeichnen

  If ImagesCollide(Gegner\Bild, Gegner\X#, Gegner\Y#, Gegner\Anim, Rship, RshipX, RshipY, 0) Then Gosub RshipTod
 

  Durchlauf = Durchlauf + 1

  For Schuss = Each SchussWerte

    If Durchlauf = 1 Then Gosub SchuesseZeichnen 
   
    If ImagesCollide(Gegner\Bild, Gegner\X#, Gegner\Y#, Gegner\Anim, Schuss\Bild, Schuss\X#, Schuss\Y#, Schuss\Anim) Then Gosub GegnerGetroffen
  next
next

;Wenn keine Gegner vorhanden waren (Durchlauf = 0), dennoch Schüsse bewegen und zeichnen
If Durchlauf = 0 Then   
  For Schuss = Each SchussWerte
    Gosub SchuesseZeichnen
  Next
End If






nun soweit so gut... das funktioniert alles...
jetzt habe ich aber einen Editor programmiert, mit dem man die vorbeiscrollende Landschaft editieren kann. Dabei werden die daten in ein Type gespeichert (X, Y, BildNr). In diesem Editor gibt es kein Raster- man kann die bilder frei platzieren. Beim Abspeichern werden Die Bilder im Type der X-Koordinate nach sortiert und in ein TXT file geschrieben. (Sortieren desshalb, damit ich nachher nicht immer das ganze Type abackern muss, um nur einen Bildschirm zu zeichnen)

Im Space Shooter selbst, wird dann während dem scrollen, laufend vom TXT file gelesen (Nur aktueller Bildschirm), und die benötigten Bilder mit ihren Koordinaten wieder in ein Type geschieben.

Wenn ich nun jeden Schuss, der auf dem Bildschirm zu sehen ist, zuerst mit allen Gegnern nach Kollisionen abfragen muss, und anschliessend jeden Schuss, mit jedem Bildchen der Scroll-Map-Bildausschnittes, dann wird das ein bisschen viel. Das Game wird dann enorm langsam!

wie mach ich das jetzt am besten? Währe es vielleicht besser, gar kein Editor zu benutzen, und stattdessen einfach grosse Bilder zu laden?
Oder wie könnte man dieses problem am besten lösen, damit so mindestens 70 Schüsse und 50 Gegner auf dem Bildschirm möglich währen? Dabei sollte noch eine grosse Map vorbei scrollen (für die man so ca. 3 Min braucht, um sie zu durchqueren, bei der Geschw. 1 Pixel pro Durchlauf). Die Schüsse sollten dann noch gelöscht werden, wenn sie mit der Map kollidieren.


bin echt verzweifelt.. Sad

danke für eure Hilfe!


Iguan

5k41

BeitragDi, Jan 24, 2006 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub ich würd erstmal alle werte der text datei irgendwo speichern...z.b:
Code: [AUSKLAPPEN]

lesen=readline("lesen.tcxt")
repeat
 counter=counter+1
until EoF(lesen)
dim array(counter)
for i=0 to counter
 array(i)=readline(lesen)
next

nun musst du im hauptcode nur noch den abschnitt aus dem array laden, welcher grad benötigt wird!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Ava

Gast

BeitragMi, Jan 25, 2006 0:12
Antworten mit Zitat
Und beim Austesten der Kollisionen empfehle ich Dir:
    - zuerst ImagesOverlap
    - dann ImagesCollide
Damit lässt sich dann auch eine Unzahl von Objekten eigentlich recht flink auf Kollisionen überprüfen.

Iguan

BeitragMi, Jan 25, 2006 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
@ AVA: Hi, habe mal kurz den BattleBlock angeschaut! Gefällt mir!!
Razz

Wie hast du das mit dem verzerrendem Titelbild gemacht? SCALEIMAGE ist ja enorm langsam! Hast du da mit BlitzBasic 3D (kenne BB3D nicht) gearbeitet, und irgendwie ein 3d Sprite genommen? kann man mit BB3D schneller und besser Bilder drehen, skalieren und zeichnen? und vielleicht auch noch transparent(schnell) darstellen?

Wenn ja, könnte ich ja meine Scroll-Map so machen..!? Gibt es in BB3D sonst noch brauchbare Grafikbefehle für einen netten 2D horizontal shooter Question



Grüsse


Iguan
 

Ava

Gast

BeitragDo, Jan 26, 2006 0:32
Antworten mit Zitat
Bei Battleblocks war ich nur für's Grafikdesign verantwortlich, der Code ist von c64. Geschrieben ist es in Bmax, aber mit etwas Aufwand kannst Du solche Effekte auch in B3D umsetzen. Die müsstest Du Dir dort dann allerdings erstmal selbst programmieren oder Dir irgendwo die passenden Funktionen für zusammen suchen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group