[Projekt] Devader

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.

Re: [Projekt] Devader

Beitragvon Chromanoid » 08.06.2017, 20:20

Ich find's schick. Ggf. noch ab und zu Wolkenfetzen, die in surrealer Geschwindigkeit über den Bildschirm sausen. :) Gerade bei Endbössen mit ganz viel Wind wäre das sicher cool. Könnte man auch so als Event machen... Also normalerweise ist alles ruhig doch ab und zu gibt's dann heftige Sandstürme.

Wie wäre es dann noch mit einem leisen Prasseln und Klimpern a'la Regenstab und Windspiel, wenn man nahe an die Blöcke zoomt oder so ^^
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3564
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: [Projekt] Devader

Beitragvon MasterQ32 » 08.06.2017, 21:25

Sieht schon ziemlich cool aus, was ich noch probieren würde: Schaffst du es, dass der Sand mehr "rollt"? Im Moment sieht man finde ich das textur-geschiebe noch sehr
Duct tape is like the force. It has a light side, a dark side, and it holds the world together.
MasterQ32
Felix Queißner
 
Beiträge: 838
Registriert: 07.10.2012, 14:56

Re: [Projekt] Devader

Beitragvon Schrompf » 08.06.2017, 21:46

Die subtile Version in der Mitte gefällt mir besser als die sichtbar wiederholte Version ganz unten. In Bewegung ist es... ok. Taugt schon, würde ich aber trotzdem nicht ganzbildschirmig einsetzen.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.
Benutzeravatar
Schrompf
Thomas Ziegenhagen
Moderator
 
Beiträge: 3537
Registriert: 26.02.2009, 00:44
Wohnort: Dresden
Benutzertext: Lernt nur selten dazu

Re: [Projekt] Devader

Beitragvon scheichs » 09.06.2017, 00:01

Also ich würde Bewegung weglassen. Finde Version in der Mitte auch am besten-
scheichs
 
Beiträge: 182
Registriert: 28.07.2010, 20:18

Re: [Projekt] Devader

Beitragvon marcgfx » 09.06.2017, 00:17

Danke für die Meinungen :) ich bin selbst auch noch nicht so gaaanz überzeugt von der Geschichte. Vor allem mit der Animation.
Diese Version gefällt mir aber jetzt tatsächlich. Allgemein veträgt sich der Sand aber nicht soo toll optisch mit den Splattereffekten.
Bild

Richtig geil wirds halt erst, wenn Objekte mit dem Sand interagieren... will ich das mir und der Performance aber noch antun ist die grosse Frage. Den Sand muss ich vermutlich sowieso ausschaltbar machen, weil das bestimmt wieder einige GPU's mehr überlasten könnte. Ich könnte ja eine Textur updaten, wo alle Objekte jeweils eine Art Fussabdruck hinterlassen. Oder wenn der Wind von links weht, dass es dann anhäufungen auf der linken Seite der Strukturen gibt. :roll:
Benutzeravatar
marcgfx
 
Beiträge: 957
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitragvon marcgfx » 09.06.2017, 00:56

Hier sieht man recht gut wie der Sand sich mit dem Splatter beisst...
Bild
Ich bräuchte eine zusätzliche Textur die bei Explosionen ein Update erfährt und auch die Bereiche anpasst die zumindest von statischen Objekten blockiert werden. Ich habs eigentlich genau im Kopf, nur ob ichs umsetzen soll ist eine andere Frage :roll: Am Schluss läufts nur auf High-End-Geräten :lol:
Die Textur müsste nur aus Graustufen bestehen. 50% Grau wäre der Normalzustand. Damit Haufen entstehen muss ein Bereich Weisser werden, damit der Sand verschwindet muss es Schwarzer sein.
In jedem Zeitschritt wird die Textur etwas Kontrastarmer, d.h. dort wo die Explosion den Sand weggeblasen hat kommt langsam wieder Sand hin. Dort wo ein Haufen gesetzt wurde, wird langsam wieder ausgeebnet.
Der Sand müsste ausserdem über dem Splatter gezeichnet werden, aktuell befindet sich der Sand aber auf der untersten Ebene mit der Bodentextur.
Eigentlich simpel :)
Benutzeravatar
marcgfx
 
Beiträge: 957
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitragvon MasterQ32 » 09.06.2017, 09:35

Zuerst einmal: Ich finde den letzten Screenshot ziemlich geil! Der Sand macht das ganze definitiv weniger repetetiv.

Ich glaube, man könnte da auch schon sehr viel mit nem guten Blending reissen. Im Moment sieht mir das nach nem normalen Alphablending (src*al + dest*(1-al)) aus. Vielleicht einfach mal in GIMP/Photoshop mit nem anderen Blendmodus rumspielen und gucken, ob sich da was passenderes ergibt
Duct tape is like the force. It has a light side, a dark side, and it holds the world together.
MasterQ32
Felix Queißner
 
Beiträge: 838
Registriert: 07.10.2012, 14:56

Re: [Projekt] Devader

Beitragvon marcgfx » 10.06.2017, 17:25

Danke MasterQ32 :)
Bild
Ich habe testweise einen weiteren Layer eingeführt, der den Sand etwas kontrollieren soll wie im letzten Post erwähnt. Ebenso habe ich den Hintergrund mit dem trockenen Boden aufgehellt. Es ist mir jetzt allerdings etwas zu gelb :|
.... also habe ich das schreiben hier abgebrochen und bin wieder zurück zum code.
stellt sich heraus, der plastische Effekt der beim Sand entsteht ist eigentlich ein Bug. Anstatt dass ich Farbwerte zwischen 0.0 und 1.0 habe läufts drüber, was zu negativen Werten in der Berechnung führt. So entsteht der plastische Eindruck. Also... alles zurück, ebenso die Hintergrundfarbe, denn die braucht es für den Kontrast :roll:
Bild

Ich muss mir einen besseren Zugang für die wichtigen Parameter schaffen, dann kann ich da noch etwas bequemer dran schrauben ;)
Benutzeravatar
marcgfx
 
Beiträge: 957
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitragvon marcgfx » 11.06.2017, 22:56

Ein totaler Schlag ins Wasser... ich habe mal den Sand-Layer vom Hintergrund getrennt und über den Splatter-Layer gezeichnet. Scheusslich. In Bewegung ist es noch schlimmer, weil der Sand jetzt wie Nebel ausschaut :roll:
Bild

Ich muss wohl oder übel die letzten Arbeiten wieder rückgängig machen, eventuell auch auf den bewegten Sand / die verschiedenen Stimmungen verzichten. Oder ich bin einfach nicht so pingelig mit dem Realismus. Mal sehen.
Benutzeravatar
marcgfx
 
Beiträge: 957
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitragvon Chromanoid » 12.06.2017, 00:42

Schon mal daran gedacht statt Dünen Sandstürme zu realisieren? Müsste doch nen ganz witziger Effekt sein, der sogar Einfluss auf das Gameplay hat. Vielleicht kann man es ja irgendwie hinkriegen, dass die Säulen wenn sie hoch genug sind noch rausschauen.
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3564
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: [Projekt] Devader

Beitragvon marcgfx » 12.06.2017, 01:28

An Sandstürme habe ich schon gedacht, ich habe gar mal angefangen Graphiken zu erstellen. Irgendwie bin ich dann aber nicht weitergekommen, u.a. weil mir die Graphiken nicht gefielen. Vielleicht sollte ich es noch mal angehen, ich hatte eben eine Idee wie ich bessere Graphik machen könnte. Es darf dann einfach nicht zu sehr das Bild verdecken und die Hexa spitzen rausschauen lassen wird nicht gehen (ohne grossen Aufwand).

Die Dünen werde ich sicher in irgendeiner Form behalten, es ist einfach nicht so flexibel wie ich erhofft hatte.
- Ich habe bemerkt, dass es eigentlich nur bei voller Deckkraft richtig gut wirkt. Eventuell kann ich da aber noch was anpassen.
- wenn ich die Dünen skalieren, kommt es zu unerwünschten Effekten, wenn ich gleichzeitig animiere. Kann vermutlich mit etwas Mathe korrigiert werden
- Lücken in den Sand explodieren ist wohl keine so tolle Idee. Der grosse Kontrast zwischen Sand und Untergrund macht das ganze etwas unansehnlich. Ich müsste ausserdem noch eine zusätzliche Texture erstellen, die immer wieder geupdatet wird. Performance ist schon lang ein leidiges Thema...
Benutzeravatar
marcgfx
 
Beiträge: 957
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitragvon marcgfx » 16.06.2017, 17:24

Bild
Performance ist leider immer noch ein grosses Thema bei mir. Einiges stammt aus alten Code, der nicht mehr die gleiche Funktion erfüllt wie früher. Ich hatte damals für das Rennspiel "Influencer" eingeführt, diese konnten auf x Parameter einer Einheit einen Einfluss ausüben, z.b. verlangsamen, Schaden über Zeit etc. In Devader brauche ich das aber alles nicht, das einzige wozu ich es brauchte war um einen abstossenden Effekt bei Explosionen auszuüben. Wie ich feststellen musste war der Code aber alles andere als performant und hat ganz schön Speicher gefressen, was wieder den GC bedient hat. Der Mist wurde jetzt entfernt, ich muss aber nun alle Objekte die damit ausgerüstet waren wieder anpassen.

Die Tausendfüssler hatten ihr eigenes Problem, um die 4 Graphiken pro Segment zu zeichnen, hatte ich das ein Segment aus 4 "Components" aufgebaut. Components sind Elemente einer Einheit die sich von der Basis unabhängig rotieren, eigene Waffen und auch Code haben können. Aber nur um 3 zusätzliche Graphiken zu zeichnen, war es recht dämlich diese doch recht komplexen Objekte einzusetzen. Alle Tausendfüssler wurden jetzt auf ein Basiselement reduziert und die Zusatzgraphiken werden nur noch gezeichnet. Macht auch mehr Sinn. Irgendwie ist es manchmal erschreckend zu sehen, was für ineffizienten Mist man produziert hat :roll:

Sturm ist jetzt eingebaut. Mit dem Sturm kommt der Sand. Wenn der Sturm vorbei ist, dann bleibt der Sand und die Umgebung sieht wie oben etwa aus. Auf die Löcher im Sand verzichte ich jetzt ganz, es lohnt sich nicht den Aufwand zu betreiben, da es eh schlecht ausschaut.
Benutzeravatar
marcgfx
 
Beiträge: 957
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitragvon marcgfx » 19.06.2017, 01:49

Bild
Ich treibe mich weiterhin in den Wahnsinn. X Sachen umgestellt, dann bemerkt das was buggy war. Die Anzeige der Hexas war irgendwie im Arsch und hat rumgespackt. Nach 3h suchen hatte ich es noch immer nicht rausgefunden und war auch kein bisschen schlauer. Also wurde die Arbeit von gestern vernichtet und noch mal von vorne begonnen... jetzt läuft es aber ich weiss weiterhin nicht was das Problem war.

Zu meiner Schande muss ich gestehen, dass ich bis anhin nichts von "use strict"; gehört hatte. Damit kann man einige dumme Javascript-Fehler schon früh abfangen. Ein weiteres spannendes Feature ist Object.seal(data). Damit kann man verhindern, dass weitere Properties auf einem Objekt angelegt werden. Damit habe ich auch viele Fehler aufdecken können, die ich gar nie bemerkt habe. Ausserdem sollte es dem Compiler beim optimieren Helfen, da Objekte sich nicht dauernd verändern. Was ich interessant finde, ist dass ich bei all den Optimierungstyps, die ich gelesen habe noch nie darüber gestolpert war. Ebenso las ich nix im Zusammenhang mit "Deoptimization", dass genau dann passieren kann, wenn man einem Objekt versehentlich neue Properties zuweist. Object.seal hat den Nachteil, dass es etwas lahm ist, also werde ich es wieder rausnehmen, wenn alle Fehler weg sind (bzw. für den Release).

Etwas dass mich auch noch zu viel Performance kostet ist die Sortierung aller Graphiken nach z-Wert. Da ich Alphablending verwende, kann ich soweit ich verstanden habe den Depth-Buffer nicht nutzen. Ich muss also vorsortieren. Der Sortiervorgang dauert aber ziemlich, das kann schon mal 1ms gehen (für 60fps habe ich nur 16ms zur Verfügung). Aktuell Sortiere ich mit dem Standard Javascript sort. Ich habe schon x-Sachen gelesen, die empfehlen was anderes zu nutzen, aber bislang hat mich alles schwer enttäuscht. Bei JSPerf gibt es einen schönen Vergleich, der IMHO falsch ist, aber gut ausschaut.
https://jsperf.com/sort-algorithms/31
Der Native Sort wird mit einem Callback aufgerufen, alle anderen aber nicht. Dann kommt noch der Memory-Verbrauch dazu.
Aktuell führe ich einen Array/Buffer mit allen zu zeichnenden Objekten (es ist wichtig das dieser Buffer nicht verändert wird, da ich die Positionen für updates benutze). In jedem Frame wird dieser Buffer in einen Render-Array übertragen und dieser Render-Array wird sortiert. Ich hatte die gute Idee anstatt linear zu übertragen, direkt einen Insert-Sort zu nutzen. Hat wunderbar funktioniert, war aber etwa doppelt so langsam.
Benutzeravatar
marcgfx
 
Beiträge: 957
Registriert: 18.10.2010, 23:26

Re: [Projekt] Devader

Beitragvon Dummie » 19.06.2017, 08:22

Hast du die Z-Werte bereits und es geht nur darum es entsprechend in der korrekten Reihenfolge zu zeichnen? Könntest du anstatt der Sortierung nicht ein großes zweidimensionales Array (Z-Wert, Referenz zu der Grafik, z.B. Position im anderen Array) erstellen? In dem Fall würdest du das Array dann einfach nur entsprechend auffüllen. Wenn du die Anzahl der Elemente im Array speicherst brauchst du es nicht mal nullen, sondern überschreibst es ständig und setzt eben nur die Anzahl wieder auf 0. Natürlich bist du dann bezüglich Z-Werte und Anzahl der Grafiken pro Ebene limitiert, aber wenn du die Werte groß genug wählst sollte das ja auch kein Problem sein. Außerdem muss der Z-Wert natürlich als Ganzzahl vorliegen oder sich zumindest näherungsweise als solche repräsentieren lassen.
Dummie
 
Beiträge: 89
Registriert: 09.02.2004, 21:45

Re: [Projekt] Devader

Beitragvon scheichs » 19.06.2017, 10:10

Ich würde das Render-Array gar nicht jedes Frame neu sortieren, da Z ja bei 2D konstant bleibt. Also nur noch bei object.new/delete sortiert einfügen/entfernen.
scheichs
 
Beiträge: 182
Registriert: 28.07.2010, 20:18

VorherigeNächste

Zurück zu Vorstellungsbereich

Wer ist online?

Mitglieder in diesem Forum: joeydee, marcgfx, Zudomon und 3 Gäste