Als «architecture» getaggte Fragen

Wie Code aufgebaut ist. Bei Fragen zum internen Design einer Game Engine.


5
Verschachtelte Eingabe in einem ereignisgesteuerten System
Ich verwende ein ereignisbasiertes Eingabeverarbeitungssystem mit Ereignissen und Delegierten. Ein Beispiel: InputHander.AddEvent(Keys.LeftArrow, player.MoveLeft); //Very simplified code Ich begann mich jedoch zu fragen, wie ich mit 'verschachtelten' Eingaben umgehen sollte. Zum Beispiel können Sie in Half-Life 2 (oder wirklich in jedem Quellenspiel) Gegenstände mit abholen E. Wenn Sie einen Gegenstand aufgehoben …

7
Geringe Kopplung und enger Zusammenhalt
Natürlich kommt es auf die Situation an. Wenn jedoch ein Objekt oder System mit niedrigerem Hebel mit einem System höherer Ebene kommuniziert, sollten Rückrufe oder Ereignisse dem Behalten eines Zeigers auf ein Objekt höherer Ebene vorgezogen werden? Zum Beispiel haben wir eine worldKlasse, die eine Mitgliedsvariable hat vector<monster> monsters. Wenn …

1
Spielobjektkomponenten in Spiel-Subsystemen registrieren? (Komponentenbasiertes Spielobjektdesign)
Ich erstelle ein komponentenbasiertes Spielobjektsystem . Einige Hinweise: GameObjectist einfach eine Liste von Components. Es gibt GameSubsystems. Zum Beispiel Rendering, Physik usw. Jedes GameSubsystementhält Zeiger auf einige von Components. GameSubsystemist eine sehr mächtige und flexible Abstraktion: Sie repräsentiert jeden Teil (oder Aspekt) der Spielwelt. Es besteht ein Bedarf in einem …


5
Warum Asset-Manifest-Dateien verwenden?
Manchmal werden Sie Leute sehen, die dies empfehlen, anstatt Grafiken / Sounddateien / etc. Zu verwenden. so was... // Game code Image myImage = new Image("path/to/image.png"); ... sollten Sie stattdessen eine Manifestdatei als Indirektionsebene verwenden: // Manifest file MY_IMAGE: path/to/image.png // Game code Manifest myManifest = new Manifest("path/to/manifest"); Image myImage …

3
Wie mache ich komplexe KI handhabbar? [geschlossen]
Es ist schwer zu sagen, was hier gefragt wird. Diese Frage ist mehrdeutig, vage, unvollständig, zu weit gefasst oder rhetorisch und kann in ihrer gegenwärtigen Form nicht angemessen beantwortet werden. Wenn Sie Hilfe zur Klärung dieser Frage benötigen, damit sie wieder geöffnet werden kann, besuchen Sie die Hilfe . Geschlossen …

4
Gleiche Spielelogik auf zwei separaten Grafikbibliotheken
Welche Codephilosophie / Struktur der Abstraktion / Programmgestaltung würde es ermöglichen, ein Spiel sowohl mit 2D- als auch mit 3D-Grafiken (separat) zu verwenden, ohne die Spielelogik neu codieren zu müssen? Wir sprechen davon, denselben Code zu verwenden, ein Minimum an Dingen zu ändern (z. B. Dateinamen für 2D-Assets gegen Dateinamen …

3
Gruppieren von Entitäten derselben Komponente in einem linearen Speicher
Wir gehen vom grundlegenden System-Komponenten-Entitäten-Ansatz aus . Lassen Sie uns Assemblagen (Begriff aus diesem Artikel abgeleitet) nur aus Informationen über Komponententypen erstellen . Dies geschieht dynamisch zur Laufzeit, genau wie wir einer Entität nacheinander Komponenten hinzufügen / entfernen würden, aber nennen wir es einfach genauer, da es sich nur um …

2
So strukturieren Sie Spielzustände in einem auf Entitäten / Komponenten basierenden System
Ich mache ein Spiel, das mit dem Entity-Component-Paradigma entworfen wurde und Systeme verwendet, um zwischen Komponenten zu kommunizieren, wie hier erläutert . Ich habe den Punkt in meiner Entwicklung erreicht, an dem ich Spielzustände hinzufügen muss (z. B. Pause, Spielen, Levelstart, Rundenstart, Spielende usw.), bin mir aber nicht sicher, wie …

4
Funktionsaufrufe pro Frame im Vergleich zu ereignisgesteuertem Messaging im Spieldesign
Das traditionelle Spieldesign , wie ich es kenne, verwendet Polymorphismus und virtuelle Funktionen, um den Status von Spielobjekten zu aktualisieren. Mit anderen Worten, derselbe Satz virtueller Funktionen wird in regelmäßigen Intervallen (z. B. pro Frame) für jedes Objekt im Spiel aufgerufen. Kürzlich entdeckte ich, dass es ein anderes ereignisgesteuertes Nachrichtensystem …

5
Plattformübergreifende Low-Level-Grafik-API
Beim Erstellen einer Systemabstraktion ist es besser, die Plattform über verschiedene APIs zu informieren, die durch eine gemeinsame Schnittstelle auf der untersten Ebene sinnvoll sind. Berücksichtigt die verschiedenen modernen (ohne Pipeline mit festen Funktionen) nativen Grafik-APIs: OpenGLES 2.0+, OpengGL 3.0+, DirectX 10.0+, Xbox DirectX 9, LibGCM Wenn man eine zustandslose …


1
Wie man Ressourcen in meinem Homebrew-Rendering-System zwischenspeichert
Hintergrund: Ich entwerfe ein einfaches 3D-Render-System für eine Architektur vom Typ eines Entitätskomponentensystems unter Verwendung von C ++ und OpenGL. Das System besteht aus einem Renderer und einem Szenendiagramm. Wenn ich die erste Iteration des Renderers abgeschlossen habe, verteile ich möglicherweise das Szenendiagramm in der ECS-Architektur. Im Moment ist es …


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.