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

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

1

22.01.2017, 21:04

EventAggregator pattern in euren Spielen?

Hallo Zusammen,

wer sich mit Modul-basierten Frameworks wie Microsoft Prism oder Angular beschäftigt hat wird bestimmt schon einmal über das Thema Event Aggregation gestolpert sein. Hier ein Link dazu:

Martin Fowler - Event Aggregator

Es gibt bestimmt genügend unter euch, die meinen, das sollte mit vernünftiger DI gar nicht notwendig sein, allerdings hat mir jede Praxis was anderes gezeigt, die (möglichst) lose gekoppelte Komponenten verwenden möchte. Das erste was mir dazu einfällt, ist das reagieren auf eine Kollision eines physikalischen Objektes mit einem angezeigtem Achievements. Das sollte, wenn man es sauber trennt, nicht direkt im Code ausgelöst werden, der die physikalische Berechnung macht, denn das gehört da nicht hin. Eine coole Lösung ist, ein Ereignis loszuschicken, um denjenigen, den das interessiert, zu benachrichtigen. Das kann dann eine Komponente sein die sich nur um Achievements kümmert.

Ich möchte dieses Pattern "ausprobieren" und schauen, ob es nicht doch einige Verzahnungen von Klassen auflöst, die nicht wirklich zusammen gehören. Habt ihr so etwas schon einmal benutzt bzw. was haltet ihr von dieser Lösung? Wenn ihr solch eine Lösung implementiert habt, würde mich die Architektur sehr interessieren!

Ansonsten bin ich über Diskussionen gespannt, wie sinnvoll oder sinnfrei das Ganze für euch ist.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

22.01.2017, 23:17

Ich kenne es nicht aus der Spieleentwicklung sondern aus dem Bereich der (Industrie-)Automatisierung. Da ist es relativ üblich eine zentrale Komponente zu haben, die den Zustand der Maschine enthält, und in die jeder Teil der Software seine Daten schreibt und informiert wird wenn andere Teile etwas ändern für das man sich registriert hat.

Es ist halt wie meistens so, dass es sehr davon abhängig ist wie komplex die Software wird und wie gut man es umsetzt. Man kommt sehr schnell in Situationen wo man Ketten oder Kombinationen von Events als Auslöser hat und wenn irgendwas nicht so tut wie man es erwartet, sucht man an vielen Stellen wo es klemmt.

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

24.01.2017, 21:56

Ich kenne es nicht aus der Spieleentwicklung sondern aus dem Bereich der (Industrie-)Automatisierung.


Interessant. Ich dachte in der Automatisierung wird eher auf Maschinen-Maschinen-Protokolle wie Opc UA aufgesetzt, die dann verteilte Server sind?

Ansonsten klar, man kann jede Technik missbrauchen, allerdings würde mich halt genau der Einsatz in Spielen interessieren. Allerdings scheint das Interesse an dem Thema nicht sehr hoch, was für mich so klingt, als ob man es nicht braucht.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

4

25.01.2017, 16:21

Interessant. Ich dachte in der Automatisierung wird eher auf Maschinen-Maschinen-Protokolle wie Opc UA aufgesetzt, die dann verteilte Server sind?

Man spricht zwar immer von Vernetzung, Industrie 4.0 etc., in der Praxis sind aber viele Maschinen noch nicht wirklich vernetzt bzw. geht nur ein Minimum an Daten rein und raus was zum Funktionieren nötig ist. Es wird dann zwar lokal auch meist mit IPC gearbeitet, so dass getrennte Anwendung miteinander kommunizieren, aber das Prnzip des zentralen Eventverteiler und Sender die ihre Empfänger nicht kennen bleibt. Die angesprochenen Komplexität bleibt ja auch wenn man das ganze in eine einzelne Anwendung realisiert. Das Zeitverhalten ändert sich nur ein wenig.

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

5

26.01.2017, 11:39

Vor einer ganzen Weile bin ich auf Entitas von Simon Schmid (Wooga) gestoßen (netter Typ!). Das Framework bietet eine tolle Entkopplung von Daten und Systemen (ECS). Gegebenenfalls findest du dort ein bisschen Inspiration. Insbesondere der Aufbau der reaktiven Systeme könnte dich interessieren.
Liebe Grüße,
René

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

30.01.2017, 18:27

Vor einer ganzen Weile bin ich auf Entitas von Simon Schmid (Wooga) gestoßen (netter Typ!). Das Framework bietet eine tolle Entkopplung von Daten und Systemen (ECS). Gegebenenfalls findest du dort ein bisschen Inspiration. Insbesondere der Aufbau der reaktiven Systeme könnte dich interessieren.


Cool, danke für die Links!

7

30.01.2017, 23:33

Ich glaube herkömmliche Observer taugen wahrscheinlich nicht viel im Spieleumfeld, jedenfalls nicht, wenn man überall irgendwelche Observer dranklatschen muss und es schlimmstenfalls zu Zyklen durch irgendein Spielgeschehen zu Zyklen kommt. Das Matcher-Prinzip von Entitas scheint mir da ein sinnvoller Mittelweg.

Werbeanzeige