Dienstag, 22. Juli 2014

Separating Axis Theorem statt farseer-Engine

Da ich mich mal wieder nach Alternativen zur farseer-Engine umgesehen habe ( war mir doch wein wenig zu komplex ;) ), bin ich auch das SAT ( Separating Axis Theorem ) gestoßen und es war genau das, was ich brauche.

Wie funktioniert es?
Der Grundgedanke ich einfach: Sobald ich eine Linie zwischen zwei Körpern zeichnen kann und die Linie diese Körper nicht berührt, berühren sich auch die Körper nicht ( s. Abb1 ).

Abb1.: Es wird eine Linie zwischen zwei Objekten gebildet, ergo berühren sie sich nicht.

Wenn es jedoch keine Lücke gibt, also von allen Seiten ( man bildet diese Linie immer entlang zweier Eckpunkte eines Polygons ) die Projektionen ( blaue Linien oben ) überlappen, so berühren/schneiden sich die Polygone ( s. Abb2 ).
Abb2.: Alle Projektionen ( pinke und blaue Linien ) auf den gestrichelten Linien überlappen sich.

Wenn ihr mehr wissen möchtet, könnt ihr gerne bei der Suchmaschine eures Vertrauens suchen, ihre werdet bestimmt was finden. Das Prinzip ist eigentlich einfach, nur wirkt es im ersten Moment sehr abtrakt.

Wann ich das ganze im Map-Editor einbauen werde weiß ich noch nicht ganz genau, aber erstmal wollte ich die Einstellungen/Eigenschaften der Objekte unterbringen ( sprich Änderung der Position, etc. ).
In der nächsten Version ( 0.0.4 ) wird dieses System aber definitiv vorhanden sein.

mfg
Hauke

Quellen:
Abb1.: http://back2basic.phatcode.net/?Issue_%231:2D_Convex_Polygon_Collision_using_SAT ( 22.07.2014 )
Abb2.: http://www.codezealot.org/archives/55 ( 22.07.2014 )

Dienstag, 1. Juli 2014

Erste Funktionen im MapEditor

Habe bis jetzt die Grundfunktionen im MapEditor eingefügt. Die Map wird gezeichnet, die Texturen geladen und dargestellt und man kann Felder / Texturen auswählen. Als nächstes kommt dann das platzieren und die Einstellungen.

Bisherige Funktionen:
  • Map laden und anzeigen
  • Objekte markieren ( Hover-Effekt ) und selektieren ( anklicken )
  • Alle verwendbaren Texturen(-kategorien) anzeigen und auswählen
  • Spieler in Echtzeit ( ohne irgendwelche Aktionen ) bewegen und Map testen
Was als nächstes ( zum nächsten Post ) kommt:
  • Texturen platzieren
  • Grundeinstellugnen ( Größe, Position, etc. )
  • Maps speichern

Bisheriger MapEditor: Felder kann man markieren (Hover-Effekt) /
selektieren (drauf klicken) und den Spieler in Echtzeit bewegen.

"Niemand hat die Absich eine Mauer zu bauen ... "  
        - Bob der Baumeister

Auch in Blender habe ich ein wenig gemacht, damit ich nicht einroste. Diese Mauer kommt später noch ins Spiel rein.
Insgesamt brauchte ich nur ein paar Steine und vier Pflanzen, die alle aus ähnlichen Elementen stammen, das Ergebnis hat mich jedoch sehr überzeugt:
Neue Textur: Mauer_01. Mit ein paar Steinen und
nur 4 Pflanzen kann man einiges machen ;)
Auch in Zukunft werde ich ein wenig über den MapEditor berichten, vor allem was später neue Funktionen, wie Physik-Engine, Interaktionen, etc. angeht.

mfg
Hauke