Raum bei 2D-spielen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ich hatte auch mal (zuerst) versucht das einfach über geometrie zu berechnen, das wurde aber komplizierter als es auf den ersten blick aussieht - oder ich hab den kniff einfach nich gerafft. jedenfalls wollte ich keine glatze bekommen und mach das jetz immer so...wenn ich mal irgendwann speed brauch ist das mit dem array schonmal ein guter versuch wert.
:allright:
..aber wenn man zum beispiel mehere ebenen verwendet - z.b. wenn ein baum-tile über einem boden-tile gezeichnet wird ect. - dann hat man mit den koll.-funtionen halt noch detailiertere 'selektions-möglichkeiten' (auch wenn man für jedes tiles ein koll.-array erstellen könnte)
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

dann hättest du aber wohl ein problem, wenn in nem wald sich bäume überschneiden.

ganz allgemein ist mir unwohl bei verwendung von PixelCollision, weil es sehr viel zeit frisst.
ich bin der meinung, man sollte so optimiert wie möglich programmieren, damit das game nicht in die knie geht,
wenn man wirklich zeitaufwendiges hinzufügt wie z.b. komplexe KI-routinen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Tschuldige,
ich blick gar nicht mehr durch.
Ich würde mich freuen, wenn jemand, der sowas schon programmiert hat, mir einen komletten Code (am besten den von dem "isodemo") schicken könnte. :D
v6.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich denke, auch oder gerade bei nem kompletten code würdest du auch nicht durchblicken.

fang doch ne nummer kleiner an, und mach erstmal ne senkrechte matrix für die map.
also klassische kacheln, wie im RPG-maker.

wenn du das vernünftig hingekommst, biste nen schritt weiter.

ISO-Map ist kein anfängerthema, das ist schwieriger als billig-3D.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Kaeru Gaman hat geschrieben:ich denke, auch oder gerade bei nem kompletten code würdest du auch nicht durchblicken.

fang doch ne nummer kleiner an, und mach erstmal ne senkrechte matrix für die map.
also klassische kacheln, wie im RPG-maker.
????????????????????
v6.00
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Ich hab mal den sourcecode meines leveleditors hochgeladen, aber ich habe keinen Bock groß support zu liefern, also guckt in den quellcode wenn es euch interessiert, aber erwartet keine langen erklärungen.

hier ist die URL http://home.snafu.de/~alizta/src_base_editor.zip
brauch PB4.0, wenn ihr es für 3.x, 2.x, 1.x, für den Mac, Linux, Amiga, C64, ... haben wollt, müßt ihr selbst rann.

Ist ganz schön gefrikelt, typisches Beispiel für Programmieren ohne nach zu denken, funktioniert aber ganz brauchbar und sollte alle nötigen techniken demonstrieren.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Ok, danke

werds mir mal ansehen. :D
v6.00
Benutzeravatar
C4rizz
Beiträge: 223
Registriert: 01.05.2006 12:43
Computerausstattung: Desktop : Amd Athlon X2 3,2 ghz Black Edition. 4GB Corsair XMS DDR2, nVidia 460 gtx Sonic Extreme

Notebook : [Asus] i5 @ 2,9 ghz, 8GB Corsair DDR3, nVidia gt 540m

Internet : DSL - 16 Mbit | HSDPA - 7,2 Mbit
Wohnort: Celle

Beitrag von C4rizz »

Mal ne Frage zu dem Code

Code: Alles auswählen

InitSprite() 
InitKeyboard() 
OpenScreen(1024,768,32,"fllscrn") 

CreateSprite(0,64,64) 
  StartDrawing( SpriteOutput(0) ) 
    Circle(32,32,16,$ff0000) 
  StopDrawing() 
CreateSprite(1,64,64) 
  StartDrawing( SpriteOutput(1) ) 
    Box(2,2,60,60,$aa3333) 
  StopDrawing() 
CreateSprite(2,64,64) 
  StartDrawing( SpriteOutput(2) ) 
    Box(2,2,60,60,$aa6666) 
  StopDrawing() 
w=40-1 
Dim map.l(w,w) 
For i=0 To w 
  For k=0 To w 
    map(i,k)=Random(1)+1 
  Next 
Next 

Repeat 
  ExamineKeyboard() 
  StartDrawing( ScreenOutput() ) 
    ;DrawText(100,100, Str(MouseDeltaX())+", "+Str(MouseDeltaY()) ) 
    ;Circle(MouseX(),MouseY(),5,$770000) 
  StopDrawing() 
  
  If KeyboardPushed(#PB_Key_Right) 
    offX-64 
  EndIf 
  If KeyboardPushed(#PB_Key_Left) 
    offX+64 
  EndIf 
  If KeyboardPushed(#PB_Key_Up) 
    offY+64 
  EndIf 
  If KeyboardPushed(#PB_Key_Down) 
    offY-64 
  EndIf 
  
  For i=0 To w 
    For k=0 To w 
      DisplaySprite( map(i,k), offX+i*64, offY+k*64) 
    Next 
  Next 
  DisplayTransparentSprite(0, 64*7,64*6) 


  FlipBuffers() 
  ClearScreen(0) 
  Delay(30) 
Until KeyboardReleased(#PB_Key_Escape)
Wie kann ich da jetzt eine Kollisionsabfrage starten, zwischen dem Kreis und der einen Farbe von Blöcken?
Sprich ich will die hellen Blöcke als passierbar setzen und die Dunklen als nicht passierbar?
Kann mir bitte wer sagen wie ich das hinbekomme?
PB 3.94/4.10
Meine Hompage
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

der code ist nicht unbedingt geeignet dafür.
da wär' es besser bei tastendruck die spielfigur zu bewegen, aber nicht
in pixeln (wie es hier für die map geschieht), sondern in array feldern.
vor dem bewegen prüfst du dann, ob das neue array-feld z.b. die nummer
hat, auf dessen sprite man laufen darf.
das scrolling musst du dann genau andersherum umsetzten als wie in diesem beispiel. nämlich ausgehend vom player.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
C4rizz
Beiträge: 223
Registriert: 01.05.2006 12:43
Computerausstattung: Desktop : Amd Athlon X2 3,2 ghz Black Edition. 4GB Corsair XMS DDR2, nVidia 460 gtx Sonic Extreme

Notebook : [Asus] i5 @ 2,9 ghz, 8GB Corsair DDR3, nVidia gt 540m

Internet : DSL - 16 Mbit | HSDPA - 7,2 Mbit
Wohnort: Celle

Beitrag von C4rizz »

Mhm ok danke dann werd ich ma gucken wie ich das am besten umsetzen kann.
PB 3.94/4.10
Meine Hompage
Antworten