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

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

1

18.12.2015, 16:15

Entkopplung von Model und View

Hallo!
Ich beginne gerade damit, ein rundenbasiertes Online-Multiplayer-Strategiespiel zu entwickeln.
Mein Anliegen ist es, Model und View komplett voneinander zu trennen, um erst den Kern des Spieles entwickeln zu können (Logik, Server) auf einer simplen Testimplementierung (slick-Engine) und dann später entscheiden kann, ob ich das Spiel für Android, iPhone etc rausbringen lassen möchte, bzw eine komplett neue PC-Version mit einer anderen Engine. Ich möchte die Models und die Logik sowohl auf dem Server als auch auf den Clients benutzen können, wobei der Client dann in seiner persönlichen View-Komponente das Rendering übernimmt.

In meinem Spiel gibt es zB Pieces (Spielsteine):
Ein Piece hat zB eine x/y position auf dem (8x8 ) Spielbrett.

In diesem Piece möchte ich jetzt aber nicht den Fortschritt oder sonstige Details der aktuellen (möglicherweise sogar client-spezifischen) Animation speichern.

Also war meine Idee, dass ich eine extra PieceAnimation Klasse schreibe (von der ich dann ableite), und dann eine PieceAnimationFactory, die die richtigen Animationen liefert. Ein Piece würde dann mit getAnimation() immer eine passende Animation liefern. Also wenn das Piece sich bewegt eine gehende Animation, wenn es angreift eine Angriffsanimation,...
Die GameLoop würde sich dann nur mehr die aktuellen Animationen holen und dann abspielen.

Natürlich ist das jetzt stark vereinfacht, aber klingt das im Allgemeinen nützlich? Bzw ist das in der Branche auch üblich, das so zu machen?

Danke und lg,
Aaron

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

18.12.2015, 20:06

Es spricht ja erst mal nichts dagegen. Ich finde es oft sinnvoll solche Dinge zuerst an kleinen Beispielen auszuprobieren. Fang doch einfach mal an das ganze für ein vereinfachtes System umzusetzen, bzw die View nur für Teilkomponenten zu implementieren. Dann solltest du relativ schnell merken um das ganze für sich sinnig ist.
„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.“

Thandor

Frischling

Beiträge: 84

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

3

19.12.2015, 00:03

Es gibt sogar ein Desingpattern dafür: klick: zu Wikipedia
Ich mag pewn.de.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

19.12.2015, 12:26

Na die Fassage hat damit speziell erst mal nicht unbedingt viel zu tun. Weiterhin kann ich sagen dass Fassaden oder auch Mediatoren schnell ein ziemliches gewusel werden können. Je nachdem wie extrem man sie einsetzt. Zur Entkopplung von Model und View gibt es ja Patterns die speziell für diesen Fall gedacht sind. Als Beispiel MVC oder MVVM. In wie fern man so etwas jetzt für ein Spiel umsetzen möchte ist da natürlich die Frage. Aber man kann sich sicherlich Ideen abschauen wenn man sich das mal anguckt.
„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.“

Werbeanzeige