Technik-Tagebuch von den Anno-Entwicklern
In ersten Teil des Anno 1404-Entwicklertagebuchs auf PCGH stellen wir das proprietäre Multi-Threading-System vor, das Related Designs für seine neue 3D-Engine entwickelt hat und das erstmals in Anno 1404 zum Einsatz kommt.
Anno 1404: Entwicklertagebuch zum Thema Multi-Threading
Das Tagebuch wurde geschrieben von Burkhard Ratheiser (Head of R&D, Related Designs) und Frank Hoffmann (Junior Software Developer, Related Designs). Viel Spaß damit.
"Prozessoren mit zwei oder mehreren Kernen sind mittlerweile in den Mainstream-Markt vorgedrungen. Konventionelle Einkerner sind an eine physikalische Grenze gestoßen, an der weitere Geschwindigkeitszuwächse nur noch in sehr geringem Maße möglich sind. Deshalb sind die Hersteller dazu übergegangen, mehrere Kerne auf einem Chip unterzubringen.
Um diese neuen Leistungspotenziale zu nutzen, bedarf es aber einer speziellen Unterstützung innerhalb des jeweiligen Programmcodes. Der große Vorteil eines solchen Systems liegt in der parallelen Abarbeitung verschiedener Programmteile im Gegensatz zur ineffizienteren und langsameren sequenziellen Bearbeitung. Das ist mit einem gewissen Aufwand verbunden, da parallel arbeitende Programmteile sich nicht gegenseitig in die Quere kommen dürfen, was im günstigsten Fall zu einem fehlerhaften Rendering führt, meist aber einen Programmabsturz zur Folge hat.
Der Scheduler
Der Scheduler erkennt in einem System vorhandene Prozessorkerne und fertigt für jeden einen Worker-Thread an.
Ziel bei der Implementierung unseres Multi-Threading-Systems war es von vornherein, nicht durch die Zahl der Prozessorkerne limitiert zu sein, sondern eine flexible, skalierbare Basistechnologie zu entwickeln. Zu diesem Zweck programmierten wir unseren Scheduler - einen Aufgabenplaner. Der Scheduler erkennt die im System vorhandenen CPU-Kerne und erstellt für jeden dieser Kerne einen Worker-Thread. Um den Scheduler und dessen Worker-Threads mit Arbeit zu versorgen, legt die Engine für verschiedene Systeme (Physiksimulation, Effekte, Animationen usw.) jeweils eine sogenannte Job-Queue (Aufgabenliste) an. Während des Programmablaufes fügt die Engine verschiedene Jobs oder Job-Pakete in die jeweilige Queue ein. Diese Jobs holen sich die Worker-Threads dann aus den Queues und arbeiten sie ab.
Jobs und Job-Pakete
Zu den Jobs, die die Worker-Threads parallel abarbeiten, gehören die Physik- und Stoffsimulation, die Partikeleffekte und die Animation.
Ein Job kann ein beliebiger Programmteil innerhalb der Applikation (Anwendung) sein. Da das Eintragen und Austragen der Jobs in einer Liste mit Aufgaben auch einen - wenn auch sehr kleinen - Mehraufwand (Overhead) bedeutet, ist es sinnvoller, sehr kleine Jobs in sogenannte Job-Pakete zusammenzupacken. Job-Pakete bestehen aus einer Sammlung einzelner Jobs, welche auf einmal abgearbeitet werden.


Auf Diablo 3 darf man sicher noch ein ganzes Weilchen warten (2010?) und für meinen teil zieh ich Anno vielem nun mal vor. Bin aber anderen Spielen auch nicht abgeneigt.
ajo, ist eigentlich für AoE mal was neues angekündigt oder lässt sich MS damit mal so richtig Zeit? Wär mir nämlich neu.
(Auch bei Freelancer wartet man ja schon sehr lange mal auf einen Nachfolger... hoff mal das es bei AoE nicht soo lang dauert.)
Und je nach dem wann Anno erscheint gibts bis dahin evtl. noch nen Quadcore
Bin auf jeden Fall schon mal richtig gespannt auf das neue Anno. Nicht zuletzt weil es da eben mal wirklich eine Engine gibt die Multicore richtig gut unterstützt. Was es ja bisher kaum oder gar nicht gab.
ich für meinen teil warte zur zeit auf diablo 3 und sollte ein neues age of empires kommen würde ich das mit sicherheit jedem anno teil vorziehen ...
naja meine meinung find das gameplay bei der anno reihe einfach net ganz so prickelnd ...
Und je nach dem wann Anno erscheint gibts bis dahin evtl. noch nen Quadcore
Bin auf jeden Fall schon mal richtig gespannt auf das neue Anno. Nicht zuletzt weil es da eben mal wirklich eine Engine gibt die Multicore richtig gut unterstützt. Was es ja bisher kaum oder gar nicht gab.
das ist die Zukunft aller PC Programme würde ich meinen.