Replies: 12 comments
-
Müssen Türen nicht jetzt eigentlich auch als Entity gebaut werden ? wäre dies nicht ggfls. stimig mit dem ECS? |
Beta Was this translation helpful? Give feedback.
-
Klingt beim erste lesen riichtig, stellt sich die Frage: Wenn Oder anders: Man kann bestimmt argumentieren und begründen warum ein Tile eine Entity sein sollte. |
Beta Was this translation helpful? Give feedback.
-
Na ja ist, die Frage wird das TürFeld zur Entität ja dann müssen alle Felder zu Entitäten geändert werden. Wird nur die Tür an sich, die auf einem Boden steht, eine Entität dann haben wir keinen Zwang, das Level komplett auf Entitäten abzuwandeln. Und ja ein Tile mit Inventar klingt blöd, aber eine Truhe mit einem SkillComponent klingt auch blöd, da wir keine Mimik vorgesehen haben. Wir haben jetzt beim Item darüber diskutiert, ob ein Item nicht immer eine Entität sein sollte, dabei ist eine Tür etwas was durchgehend im Dungeon existiert. Etwas, was aktiv interagiert wird der spieler ggfls. mit interagiert etc. Ob alle Tiles eine Entität werden sollen nein das würde ich ablehnen aber die Tür da wäre ich dafür diese nicht als Tile zu sehen oder es so sehen auf der Türtile steht die eigentliche Tür |
Beta Was this translation helpful? Give feedback.
-
Türen sind für mich eigentlich zunächst Elemente wie Wände oder Fußboden. Das spräche gegen Entität. Andererseits: Im Gegensatz zu Wänden und Fußboden könnten Türen ein Eigenleben haben: Man kann sie öffnen, man kann sie schließen, man kann sie wegsprengen. Das würde für mich nahelegen, dass das eher Entitäten sind und über Systeme gehandhabt werden sollten? Aber tatsächlich: Ist dann noch die Sonderbehandlung von Wänden und Fußboden gerechtfertigt? Die Frage ist, was das konkret bedeuten würde. Vielleicht würde einiges einfacher, beispielsweise könnte die Betretbarkeit über das Hitbox-System mit erledigt werden? Aber vielleicht würde auch vieles laufzeittechnisch komplexer, weil alle Systeme ja immer wieder über alle Entitäten iterieren müssen und entsprechend hier über die vielen Felder dann mit. @AHeinisch Klassen von Entitäten sind im ECS nicht vorgesehen, oder? Also dass nicht alle Entitäten gleichberechtigt in einer großen Liste in |
Beta Was this translation helpful? Give feedback.
-
Das würde sehr dafür sprechen, dass Türen eben (ortsfeste) Entitäten sind.
Weiss nicht. Ein Tile ist eine ortsfeste Entität mit bestimmten Eigenschaften. Als Spieler kann ich damit ja interagieren: Ich kann draufgehen, ich kann die Eigenschaften untersuchen, die Dinger werden "animiert", ... |
Beta Was this translation helpful? Give feedback.
-
Ja, das ist ein Problem, welches existiert. Also es gibt verschiedene Ansätze, die mir bekannt sind und wenn gewollt, kann ich da nochmal weiter schauen.
offtopic zum Türthema: Also vielleicht lohnt es sich das Level an sich, als Entität umzuwandeln, welche eine LevelComponent hat welche dann das Level Mesh/Level Layout rendert. Alle Tiles bis auf das Türtile haben nur eine Animation und ein, ob sie betretbar sind. Welches nicht wirklich dafür spricht, dass sie eigene Entitäten benötigen. Außerdem kann, solange sie noch als ein Level gesehen werden, eine Optimierung in der Anzahl gemacht werden, wie z.b. alle Wände so zusammenfassen, dass sie so wenige "einzelne Tiles" haben wie möglich. Edit: Beispiel, wie eine Optimierung passieren könnte: https://www.factorio.com/blog/post/fff-176 |
Beta Was this translation helpful? Give feedback.
-
Spannend. Das ist vermutlich sehr "schlank" umzusetzen für uns, also ohne riesige Umbauten?
Das wäre ja meine Idee von oben, dass das |
Beta Was this translation helpful? Give feedback.
-
Also hier einmal zusammengefasst, was für was spricht. Was ist das Level?
Können alle Tiles zu Entitäten gemacht werden und was kann dabei passieren?
sind alle Tiles aktuell wirklich Tiles? Aktuell haben wir Tiles welche wirklich nur kacheln für den Hintergrund sind mit der erweiterung ob sie betretbar sind. Wir haben aber auch 2 Tiles welche nicht wirklich Tiles sind dazu gehören Exittile und Doortile. Ein Exittile ist ein floortile nur mit zusätzlich einer Leiter drauf und existiert noch von vorherigen Framework. Sowie die Doortile welche ein Teleporter zu einen neuen Level ist. Diese beiden Tiles passen nicht wirklich in das aktuelle konzept und söllten meiner Meinung ohne großen Aufwand von Tile zu Entität konvertiert werden können. Dies würde ermöglichen, dass z.b. zusätzliches Verhalten beim Verlassen einer Ebene oder eines Raumes gemacht werden kann. Also würde ich eher aus den beiden Sonderfällen eine eigene Entität machen da sie ja eindeutig nicht nur statisch sind und nur als Fest statisches Level sind. Das Argument, dass dann ja alle Tiles an sich Entitäten sind, kann man nennen hier wäre aber die Frage wollen wir, Das Spiel später performanter machen. Dann wäre es besser zwar das Level zu einer Entität zu machen, aber nicht jedes eigentliche Tile. TLDR: |
Beta Was this translation helpful? Give feedback.
-
@AHeinisch @AMatutat Im Prinzip sollten wir also alles als Entitäten modellieren, könnten aber in Lauzeitprobleme reinlaufen. Ab wieviel Entitäten wird es denn kritisch? Sind wir da von der Größenordnung her in der Nähe? Oder ist das eher kein Problem im Moment?
Den Gedanken von oben würde ich gern weiter diskutieren: Das Level ist eine Entität mit einer LevelComponent für alle statischen Tiles. Zusätzlich modelliert man die "beweglichen"/interagierbaren Tiles (Doors, Exit, ...) als eigene Entitäten mit Interaktion. Das wäre ein Kompromiss in Bezug auf die Laufzeit (es kommen nur wenige neue Entitäten ins Spiel) und gleichzeitig könnte man Sachen wie "ich darf die Wand nicht betreten" oder "ich kann eine Tür aufmachen" über ECS umsetzen. Oder? |
Beta Was this translation helpful? Give feedback.
-
@AHeinisch und ich haben heute nochmal darüber gesprochen und aktuell scheint der Aufwand-Reward Faktor nicht zu passen. Das ist jetzt erstmal ein later, ich sehe aber auch ein potenzielles thesis. |
Beta Was this translation helpful? Give feedback.
-
@AMatutat die label passen nicht, oder? thesis fehlt noch, und struct:dsl passt nicht? |
Beta Was this translation helpful? Give feedback.
-
Siehe auch #1547 (comment) - die Modellierung der Tiles passt noch nicht. Man ist im Code gezwungen, mit Im Zusammenhang mit dem Dev-Dungeon und den PitTiles erscheint eine Modellierung analog zu Entitäten sinnvoll, evtl. möchte man hier tatsächlich (ortsunveränderliche) Entitäten haben? |
Beta Was this translation helpful? Give feedback.
-
Die DoorTiles sollen um eine
open()
undclose()
Methode erweitert werde.Wenn eine Tür offen ist, kann man durchgehen und wenn sie zu ist dann nicht.
Entsprechend mit Texturen
#Time:4
Beta Was this translation helpful? Give feedback.
All reactions