Seite 2 von 5

Re: Isometrische 2D Spiele-Engine

Verfasst: 09.06.2018 10:22
von diceman
Mijikai hat geschrieben:Mir graut schon vor der Pfadfindung [...]
Was Pfadfindung angeht, habe ich einen sehr schnellen A*-Star-Algorithmus an der Hand, den ich ich über die Jahre (bereits in Blitzbasic) immer weiter verfeinert habe; die Routine ist gut wartbar, und man kann sie auf eigene Bedürfnisse hin tweaken. Im Prinzip mußt nur die Prozedur aufrufen und ihr ein paar Parameter mitteilen, also Start/Zielpunkt, wie groß die Ausdehnung deines Spielfeldes ist, etc. Die Routine gibt dir dann entweder eine 0 oder eine Zahl (= Anzahl der Schritte) zum Ziel zurück. Außerdem brauchst du eine sogenannte collisionMap, die nur aus 0en und 1en besteht als Referenz für den Algorithmus, welche Felder blockieren und welche "offen" sind.
Wahlweise kannst du sämtliche pathNode-Koordinaten in einer globalen LinkedList aufzeichnen lassen, oder dir einfach nur die nächste Koordinate mitteilen lassen. Und es gibt eine optionale Regel, ob "Ecken abgeschnitten" werden dürfen (also diagonale Schritte an kollidierender Architektur vorbei).
Ich bin bis morgen früh auf der Arbeit, kann heute also keinen Code hier reinstellen, aber wennst magst, kann ich dir die Routine gerne zukommen lassen. :)

Re: Isometrische 2D Spiele-Engine

Verfasst: 09.06.2018 13:10
von Mijikai
diceman hat geschrieben:
Mijikai hat geschrieben:Mir graut schon vor der Pfadfindung [...]
Was Pfadfindung angeht, habe ich einen sehr schnellen A*-Star-Algorithmus an der Hand...
Ich bin bis morgen früh auf der Arbeit, kann heute also keinen Code hier reinstellen, aber wennst magst, kann ich dir die Routine gerne zukommen lassen. :)
:shock:

Das würde mir ungemein weiterhelfen :D

Gerne nehme ich das Angebot an, es hat aber keine Eile.
Mach dir bitte keine Umstände wegen mir.

Re: Isometrische 2D Spiele-Engine

Verfasst: 09.06.2018 22:14
von Mijikai
Click-Move Test:
Bild

Re: Isometrische 2D Spiele-Engine

Verfasst: 10.06.2018 23:11
von Andre
Auch dir viel Glück + Durchhaltevermögen :allright:
Tolle Entwicklungen hier... :D

Re: Isometrische 2D Spiele-Engine

Verfasst: 12.06.2018 10:35
von Mijikai
Andre hat geschrieben:Auch dir viel Glück + Durchhaltevermögen :allright:
Tolle Entwicklungen hier... :D
Danke, werde beides brauchen :)

Re: Isometrische 2D Spiele-Engine

Verfasst: 16.01.2019 15:37
von Sebastian
Nanu? Wurde das Projekt beendet? Da war doch gerade die Rede von Durchhaltevermögen und dann ... :oops:

Re: Isometrische 2D Spiele-Engine

Verfasst: 16.01.2019 15:54
von RSBasic
Ist bei meinem Spiel leider nicht anders, da ich derzeit ein anderes Hobby habe, wo ich dran bin. Ich vermute mal, das ist bei Mijikai ähnlich oder hat einfach aus anderen Gründen keine Zeit.
Mijikai wird sein Projekt bestimmt bald wieder fortsetzen. :)

Re: Isometrische 2D Spiele-Engine

Verfasst: 16.01.2019 16:14
von Mijikai
Hab noch nicht aufgegeben :)
Soweit es meine Zeit erlaubt arbeite ich weiter an der OpenGL-library (Engine - mein 2ter Versuch).
Sobald es nennenswerte Neuigkeiten gibt werde ich den thread auch wieder updaten.

Re: Isometrische 2D Spiele-Engine

Verfasst: 26.01.2019 12:49
von Mijikai
Kleines Update,
jetzt gibt es ein neues Sprite Interface für die Engine :)

Features:
  • - get size
    - get center
    - size (global + reset)
    - scale
    - draw offset switch (image center / image origin)
    - rotation (center point)
    - alpha
    - tint
    - light (use sprite as light source - blending)
    - push (will push the sprite into a layer - 10 layers are available - its possible to draw another 10 layers over the 10 layers before!)
Alles ist in mehrere Funktionen aufgeteilt damit die Ausführung schneller wird je weniger Optionen benötigt werden.

So sieht das Interface aus:

Code: Alles auswählen

;PureBasic v.5.62

Interface SPRITE
  SpriteWidth.f()
  SpriteHeight.f()
  SpriteCenterX.f()
  SpriteCenterY.f()
  SpriteSize.i(Width.f,Height.f)
  SpriteSizeReset.i()
  SpriteDraw(X.f,Y.f,Center.b = #False,Alpha.a = #Null)
  SpriteDrawFx(X.f,Y.f,Center.b = #False,Alpha.a = #Null,Angle.f= #Null,Tint.l = #Null)
  SpritePushDraw(Layer.i,X.f,Y.f,Center.b = #False,Alpha.a = #Null)
  SpritePushDrawFx(Layer.i,X.f,Y.f,Center.b = #False,Alpha.a = #Null,Angle.f= #Null,Tint.l = #Null)
  SpriteShape(X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Alpha.a = #Null)
  SpriteShapeFx(X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Alpha.a = #Null,Angle.f= #Null,Tint.l = #Null)
  SpritePushShape(Layer.i,X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Alpha.a = #Null)
  SpritePushShapeFx(Layer.i,X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Alpha.a = #Null,Angle.f= #Null,Tint.l = #Null)
  SpriteLight(X.f,Y.f,Center.b = #False,Tint.l = #Null)
  SpriteLightFx(X.f,Y.f,Center.b = #False,Angle.f= #Null,Tint.l = #Null)
  SpritePushLight(Layer.i,X.f,Y.f,Center.b = #False,Tint.l = #Null)
  SpritePushLightFx(Layer.i,X.f,Y.f,Center.b = #False,Angle.f= #Null,Tint.l = #Null)
  SpriteShapeLight(X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Tint.l = #Null)
  SpriteShapeLightFx(X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Angle.f= #Null,Tint.l = #Null)
  SpritePushShapeLight(Layer.i,X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Tint.l = #Null)
  SpritePushShapeLightFx(Layer.i,X.f,Y.f,Width.f = #Null,Height.f = #Null,Center.b = #False,Angle.f= #Null,Tint.l = #Null)
  Release.i()
EndInterface
Beispiel Licht:

Bild

Bild

Als nächstes ist das Tile Interface dran :)

Re: Isometrische 2D Spiele-Engine

Verfasst: 28.01.2019 13:16
von RSBasic
:allright: