Ich komme aus einem MVC-Hintergrund (Flex und Rails) und liebe die Ideen der Code-Trennung, Wiederverwendbarkeit, Kapselung, etc. Es macht es einfach, Dinge schnell aufzubauen und Komponenten in anderen Projekten wiederzuverwenden. Es war jedoch sehr schwierig, bei der Entwicklung komplexer, zustandsgesteuerter, asynchroner, animierter Anwendungen die MVC-Prinzipien einzuhalten.Spielt Model-View-Controller mit künstlicher Intelligenz und Verhaltensbäumen gut?
ich create animated transitions between many nested views in an application bin versucht, und es hat mich darüber nachzudenken, ob ich mich war irreführend ... Können Sie Prinzipien von MVC zu Prinzipien von Artificial Intelligence (Behavior-Bäume, Hierarchical State Machines, Nested Staaten) gelten, wie Spiele? Spielen diese beiden Disziplinen gut zusammen?
Es ist sehr einfach, die Ansichten/Grafiken außerhalb von sich selbst zu halten, wenn Dinge statisch sind, wie bei einem HTML CMS System oder was auch immer. Aber wenn Sie komplexe statusgesteuerte Übergänge hinzufügen, scheint es, als müsste alles über alles andere wissen, und der MVC kommt fast in die Quere. Was denken Sie?
Aktualisierung:
Ein Beispiel. Nun, gerade arbeite ich an einer Website in Flex. Ich bin zu dem Schluss gekommen, dass ich, um jedes verschachtelte Element in der Anwendung richtig zu animieren, an sie als AI-Agenten denken muss. Jede "Ansicht" hat dann ihren eigenen Verhaltensbaum. Das heißt, es führt eine Aktion (zeigt und verbirgt sich) basierend auf dem Kontext (was die ausgewählten Daten ist, usw.). Um das zu tun, brauche ich ein ViewController-Ding, ich nenne es einen Presenter. Also habe ich eine Ansicht (die in MXML dargestellte Grafik), einen Moderator (der die Animationen und Aktionen definiert, die die Ansicht basierend auf dem Zustand und den verschachtelten Zuständen der Anwendung ausführen kann) und ein Präsentationsmodell, um die Daten der Ansicht zu präsentieren (durch den Moderator). Ich habe auch Modelle für Wertobjekte und Controller für die Handhabung von URLs und Datenbankaufrufen etc ... alle normalen statischen/html-ähnlichen MVC-Zeug.
Für eine Weile versuchte ich herauszufinden, wie man diese "Agenten" so strukturieren konnte, dass sie auf ihren umgebenden Kontext reagieren konnten (was ausgewählt wurde, usw.). Es schien, als müsste alles andere bewusst sein. Und dann las ich über eine Pfad-/Navigationstabelle/Liste für Spiele und dachte sofort, dass sie eine zentral gespeicherte Tabelle aller vorberechneten Aktionen haben, die jeder Agent ausführen kann. Das hat mich neugierig gemacht, wie sie ihren Code strukturieren.
Das gesamte 3D-Videospiel-Zeug ist ein großes Geheimnis, und vieles von dem, was ich sehe, ist mit einem grafischen UI/Editor gemacht, wie zum Beispiel der Definition von Verhaltensbäumen. Ich frage mich also, ob sie eine Art von MVC verwenden, um zu strukturieren, wie ihre Agenten auf die Umgebung reagieren und wie sie ihren Code modular und verkapselt halten.
Können Sie ein sehr einfaches Beispiel geben? Die verknüpfte Frage ist auch zu lang. –
Ihre Frage scheint mit der Blackboard-Architektur zu tun zu haben. –
Ooh, diese Tafel Architektur sieht interessant aus! Vielen Dank! –