Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

111

13.09.2014, 14:30

Verstanden und akzeptiert. Es handelte sich um ein Skript welches einem Objekt hinzugefügt wurde welches per Drag and Drop im Scene View erzeugt wurde. Vor allem da ich die Variable nicht als Property implementiert habe finde ich das Verhalten recht undurchsichtig. Mir ist klar warum es so läuft wie es läuft, aber anders wäre es klarer. Der "Standardwert" wurde ja nicht im Editor sondern zuvor im Code gesetzt. Das sollte meiner Meinung nach auch weiterhin möglich sein. So zumindest meine Meinung. Ist aber eine Designfrage.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

112

13.09.2014, 14:48

Verstanden und akzeptiert. Es handelte sich um ein Skript welches einem Objekt hinzugefügt wurde welches per Drag and Drop im Scene View erzeugt wurde. Vor allem da ich die Variable nicht als Property implementiert habe finde ich das Verhalten recht undurchsichtig. Mir ist klar warum es so läuft wie es läuft, aber anders wäre es klarer. Der "Standardwert" wurde ja nicht im Editor sondern zuvor im Code gesetzt. Das sollte meiner Meinung nach auch weiterhin möglich sein. So zumindest meine Meinung. Ist aber eine Designfrage.
Ich stimme zu, dass hier rein aus Sicht eines Nutzers, der mit dem Editor arbeitet, intuitiveres Verhalten denkbar wäre - gerade am Anfang kann man so schonmal in die Falle tappen leider :) Technisch ist das aber nicht ohne Weiteres möglich, ohne für jedes einzelne Objekt Buch zu führen, welche Werte explizit geändert wurden und welche noch auf ihrem Startwert sitzen und dementsprechend aktualisiert werden können. Property hin oder her, ein Feld kann ja auch durch andere Einwirkungen einen anderen Wert annehmen als den initialen Wert, oder zufällig wieder auf genau diesem landen. Duality verhält sich da nichtdestruktiv und überschreibt sicherheitshalber erstmal nichts - warum sollte es auch nachträglich die Daten von bereits existierenden Objekten anfassen?

Zu genau diesem Zweck gibt es aber Prefabs: Aktualisiert man ein Prefab zu einem späteren Zeitpunkt, werden auch alle Instanzen dieses Prefabs entsprechend angepasst, mit Ausnahme aller explizit anders gesetzen Eigenschaftswerte. Ein Prefab enthält sozusagen alle Standardwerte. Die Prefab-Instanzen können beliebige andere Werte annehmen - nicht überschriebene Werte werden aber auch nachträglich angepasst. So ist es beispielsweise möglich, einen bestimmten Gegnertypen als Prefab zu definieren, ihn hundertmal in verschiedenen Levels zu platzieren, und später dann doch nochmal den Maximalwert für dessen HP abzuändern - ohne alle nochmal anfassen zu müssen. Der eine doppelt so große Gegner in Level 15 mit einer explizit deutlich höheren HP Zahl wird dabei nicht betroffen, da seine HP ja explizit überschrieben wurden.

Ein alternatives Konzept stellt Blueprinting dar, wobei man eine eigene Ressource definiert (Einfach von Duality.Resource ableiten), welche Rahmendaten eines Gegnertyps enthält. Die konkreten Gegner haben in ihrer jeweiligen Komponente dann einfach einen Verweis auf ihr jeweiliges Blueprint, wo die entsprechenden Daten nachgeschlagen werden. Der größte Vorteil gegenüber Prefabs ist eine deutlich leichtgewichtigere Umsetzung einzelner Gegner-Objekte, der größte Nachteil die Unfähigkeit, bestimmte Werte je Gegner anzupassen.

Mit welchem Konzept man besser fährt, ist teils Geschmackssache und teils abhängig vom konkreten Fall. Am Ende braucht man dann eben das richtige Werkzeug für die richtige Aufgabe :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fetze« (13.09.2014, 14:56)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

113

13.09.2014, 16:30

Das mit den Blueprints klingt interessant und das werde ich mir mal genauer ansehen. Das Prinzip mit den Prefabs kenne ich ja aus Unity. Ist halt auf Bequemlichkeit dass ich mir mein Objekt in der Szene zusammen baue und teste und danach ein Prefab erstelle. Aber der Workflow lässt sich ja leicht anpassen. Was dennoch ganz schön wäre. Baue ich ein Objekt in der Szene zusammen und mache daraus ein Prefab, so werden wenn ich das Prefab selsbt anklicke keine Komponenten angezeigt. Zumindest nicht die, die bis zu dem Zeitpunkt der Erstellung schon bestanden haben. Hier wäre es schön wenn man auf dem Prefab alle Komponenten sehen und verändern könnte. Oder mache ich etwas falsch?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

114

13.09.2014, 20:31

Das mit den Blueprints klingt interessant und das werde ich mir mal genauer ansehen. Das Prinzip mit den Prefabs kenne ich ja aus Unity. Ist halt auf Bequemlichkeit dass ich mir mein Objekt in der Szene zusammen baue und teste und danach ein Prefab erstelle. Aber der Workflow lässt sich ja leicht anpassen. Was dennoch ganz schön wäre. Baue ich ein Objekt in der Szene zusammen und mache daraus ein Prefab, so werden wenn ich das Prefab selsbt anklicke keine Komponenten angezeigt. Zumindest nicht die, die bis zu dem Zeitpunkt der Erstellung schon bestanden haben. Hier wäre es schön wenn man auf dem Prefab alle Komponenten sehen und verändern könnte. Oder mache ich etwas falsch?
Nope, da machst du nix falsch, das Feature ist einfach noch nicht umgesetzt :) Werde ich mir für die Zukunft vormerken, das klingt tatsächlich recht praktisch - insbesondere gekoppelt mit der Möglichkeit, die Prefabs direkt zu editieren.

115

23.09.2014, 19:03

Nachdem meine wochenlangen Bemühungen an einer adäquaten Lösung des Cloning Problems nun endlich mit dem Merge in den main branch ein würdiges Ende gefunden haben, ist nun auch wieder Zeit für andere Dinge. Und ich dachte mir, es ist wäre mal wieder angebracht, Duality im Selbsttest auf Herz und Nieren zu prüfen, sprich: Damit ein Spiel zu bauen. Dieses liegt inklusive Code und Content zu 100% auf GitHub und wird nach seinem Abschluss als Sample in NuGet hochgeladen, sodass es sich via Duality Package Management in wenigen Klicks installieren und von Neulingen inspizieren lässt.

Soweit sind lediglich ein paar erste Schritte getan. Wer will kann mir beim Entwickeln quasi live zusehen, GitHub hat immer die neueste Version :)


(Link)


Waffen / Projektile eingebaut:


(Link)


Mehrere Spieler, Farbgebung:


(Link)


Dynamisch zugewiesene Eingabemethoden, derzeit bis zu zwei Gamepads und / oder Maus / Tastatur Kombo:


(Link)


Automatische Anpassung des Kamerazooms an verfügbare Fläche / DPI des Monitors:


(Link)


Experimente mit minimalistischem Art Style:


(Link)

116

25.09.2014, 16:59

Bastle an einem ersten Gegnertypen.


(Link)


Tut noch nicht viel, hat aber eine nette Augen-Animation fürs Idlen.


(Link)

117

28.09.2014, 14:31

Hab ein wenig am ersten Gegnertyp gebastelt. Eine Mine, die hochgeht, wenn man ihre Stacheln berührt.


(Link)


Die Stacheln werden einzeln kontrolliert und nur dann ausgefahren, wenn der Weg frei ist. So sprengen sie sich nicht einfach selbst in die Luft, wenn sie zu nah an Hindernissen aufwachen.


(Link)


Das ist auch in Situationen hilfreich, wenn zwei Minen direkt nebeneinander liegen.


(Link)


Wenn man sehr vorsichtig fliegt, kann man sie auch ein wenig herumschubsen, ohne sie auszulösen - man darf bloß die Stacheln nicht berühren.


(Link)

118

01.10.2014, 22:31

Fortschritt am Example Project

Habe derweil ein wenig an der KI der Minen im Beispielprojekt gebastelt. Sobald man nah genug ranfliegt und sie einen in direkter Linie sehen können, wachen sie auf...


(Link)


...und folgen dem nächstgelegenen Spieler. Während dem Flug fahren sie ihre Stacheln ein, um sich nicht durch Kollisionen versehentlich selbst auszulösen, oder weil jemand auf sie schießt.


(Link)


Wenn sie nah an ihr Ziel heran kommen, fahren sie die Stacheln wieder aus und sind damit wieder explosiv.


(Link)


Nachdem eine gewisse Zeit kein Ziel in Sicht ist, legen sie sich wieder schlafen und verschmelzen optisch mit ihrer Umgebung.


(Link)


Aus Gameplay-Sicht habe ich mir gedacht, dass die Dinger am besten nahezu unverwundbar sein sollten - so ist man gezwungen, ihnen entweder ganz auszuweichen oder sie aber durch trickreiches manövrieren gegen einen Felsen fliegen zu lassen, während sie gerade ihre Stacheln draußen haben. Muss da nochmal drüber nachdenken und ein wenig herumprobieren.

Binary Update und noch mehr Beispiele

Es gibt eine neue Duality-Version als Binary release, sowohl per frischem Download als auch über den Package Manager als reguläres Update.

Das ganze ist jetzt wieder auf einem Stand mit dem GitHub master branch, was heißt dass nun auch das neue Cloning System, sowie all die kleinen Bugfixes und Tweaks es in die Binary Version geschafft haben. Wer gerade laufende Projekte hat: Bitte mit Vorsicht updaten, eventuell müssen ein paar Dinge in eurem Code abgeändert werden. Neue Nutzer können sich aber bedenkenlos auf die aktuelle Version stürzen :)

Mit dem Release der neuen Binaries konnte ich nun endlich auch ein paar Sample Packages hochladen, die schon eine Weile verfügbar sind, sich aber auf die neue Version stützen und daher erst jetzt veröffentlicht werden konnten. Sample Packages sind wie alle anderen auch im Package Manager verfügbar, enthalten aber primär nicht unbedingt eigene Plugins, sondern Content zum Ausprobieren. In diesem Fall Beispiele für Steering und DynamicLighting. Hier ein kurzer Blick darauf, was ihr bekommt:

Ambient / Directional Lighting und Herumschieben eines Point Lights:


(Link)

(Link)


Steering Behavior und einstellbare Aggressivität von Agenten:


(Link)

(Link)


Die Plugins an sich waren bereits seit geraumer Zeit verfügbar, aber da es keinen Beispielcontent gab war es nahezu unmöglich, damit herumzuspielen ohne vorher viele Stunden zu investieren, um erstmal zu verstehen, wie das alles eigentlich funktioniert. Genau hier sollen die beiden Sample Packages abhilfe schaffen: Im Package Manager installieren, Neustarten, Beispielszene öffnen, fertig.

Was mir persönlich wichtig war: Auch wenn beide Plugins von mir stammen, müsste das definitiv nicht so sein: Auch ohne am Source Code von Duality irgendwas zu verändern, kann jeder Nutzer eigene Plugins entwickeln und diese als Packages bei NuGet hochladen und wenig später sind sie für alle anderen Nutzer verfügbar. Das ganze ist also ein offenes System, zu dem jeder konstruktiv beitragen kann - was aktuell aber fehlt sind erstmal Leute, die sich Duality schnappen, um (Plugins hin oder her) coole Sachen zu bauen. :D

Duality im Overnightcontest der Devmania, anyone? ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fetze« (02.10.2014, 01:26)


BitShift

Frischling

Beiträge: 39

Wohnort: Leverkusen

Beruf: Informatiker Anwendungsentwicklung

  • Private Nachricht senden

119

02.10.2014, 09:32

Habe derweil ein wenig an der KI der Minen im Beispielprojekt gebastelt. Sobald man nah genug ranfliegt und sie einen in direkter Linie sehen können, wachen sie auf...
Also die Idee mit intelligenten Minen die auch noch ihre Zünder einziehen... Sehr sehr geil, und toll umgesetzt.

Kurze Frage zum Umgang mit den Animation der Teile (und des Auges):
Spontan würde ich vermuten, dass die "Spikes" einzelne Sprites sind, deren Länge nicht den Radius übersteigt und die du einfach translierst?
Funktioniert das mit dem Auge ähnlich?

Mein Eindruck ist, dass das keine starren Frames sind... (Kann gerade auch nicht in den Code gucken)
java.lang.SignatureMakesNoSenseException: de.signatureHandler.java
caused by: User is too dumb to create a correct signature.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

120

02.10.2014, 09:36

Die Samples lassen wirklich sehr viele Liebe zum Detail erkennen. Sehr gute Leistung.

Wie wurden die Normalmaps für die Beleuchtungsszenen erstellt und wie sehen die aus? Reizt mich nämlich Duality für ein genau dafür passendes Game einzusetzen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige