Isometrische 2D Spiele-Engine

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Isometrische 2D Spiele-Engine

Beitrag 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. :)
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Isometrische 2D Spiele-Engine

Beitrag 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.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1754
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Re: Isometrische 2D Spiele-Engine

Beitrag von Andre »

Auch dir viel Glück + Durchhaltevermögen :allright:
Tolle Entwicklungen hier... :D
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Isometrische 2D Spiele-Engine

Beitrag von Mijikai »

Andre hat geschrieben:Auch dir viel Glück + Durchhaltevermögen :allright:
Tolle Entwicklungen hier... :D
Danke, werde beides brauchen :)
Benutzeravatar
Sebastian
Beiträge: 320
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: Isometrische 2D Spiele-Engine

Beitrag von Sebastian »

Nanu? Wurde das Projekt beendet? Da war doch gerade die Rede von Durchhaltevermögen und dann ... :oops:
(Win 10 64-bit, PB 5.31)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Isometrische 2D Spiele-Engine

Beitrag 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. :)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Isometrische 2D Spiele-Engine

Beitrag 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.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Isometrische 2D Spiele-Engine

Beitrag 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 :)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Isometrische 2D Spiele-Engine

Beitrag von RSBasic »

:allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten