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

1

03.04.2014, 15:19

Aufbaustrategie im Geiste der Anno-Serie

Hallo allerseits,

ich möchte das beste und umfangreichste Aufbaustrategiespiel aller Zeiten programmieren und hab mir dafür sogar 2 Wochen Zeit genommen... :wacko:
Scherz bei Seite...
Ich habe mich jetzt schon eine gewisse Zeit mit C++ beschäftigt und einige kleinere Anwendungen geschrieben (,aber noch kein wirkliches Game).
Ich wollte für mich und einige Freunde ein interessantes Aufbauspiel schreiben. Wichtig ist uns dabei vor allem die Spielmechanik. Grafik, Sound, Physikspielereien, etc. sind für uns unwichtig (wir zocken auch sehr gerne Dwarf Fortress). ;)
Mir geht es zunächst um einige grundlegende spielmechanische Abläufe und mich würde interessieren, was ihr davon haltet. Sprich, ob ihr der Ansicht seit meine Herangehensweise ist gut, verbesserungsfähig (wenn ja, wo/was?), oder ihr meint, dass ich total auf dem Holzweg bin.
Wie die Überschrift schon sagt, dient mir als Inspirationsquelle die Anno-Reihe, wobei ich Betonung auf Inspiration lege, es geht mir also keineswegs darum das komplette Format einer großen Spielemarke zu erreichen.
Das Hauptaugenmerk liegt zunächst auf den Produktionsabläufen.

Nun etwas mehr Konkretes:
Jedes Produktionsgebäude hat einen Einflussradius (siehe Anno). Innerhalb diese Einzugsgebietes soll es mit anderen Gebäuden in Interaktion treten können.
Es soll drei Arten von (Inter-)Aktionen geben. „Holen“, „Produzieren“ und „Liefern“. Holen und Liefern mögen auf den ersten Blick redundant wirken, da es aus Prozesssicht zwei Seiten einer Medaille sind. Dazu ist anzumerken, dass nicht jedes Gebäude beide „Fähigkeiten“ besitzt. Zudem sollen die Gebäude unterschiedlich große Einflussradien haben. So kann es sein, dass Gebäude A zwar mit Gebäude B interagieren kann, aber nicht umgekehrt.

Meine Grundidee zum eigentlichen (Programm-)Ablauf wäre die entsprechenden Gebäudedaten in einer Datenbank zu verwalten. Alle 10 Sekunden soll ein Timer einen „Impuls aussenden“, woraufhin das Programm die Datenbank (gebäude-)spaltenweise durchlaufen würde.
Pro Gebäude würde dann eine „wenn“ (if)-Abfrage stattfinden.
Um das verständlicher zu machen, hier ein „Pseudo-“Code, dieser ist so praktisch zwar nicht verwendbar, soll aber dafür die Logik verdeutlichen:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//Das Programm befindet sich in der Datenbank bspw. gebaeude_146, was eine Baeckerei ist.

//(void) holen wird ausgeführt
if (Gebaeude der Gebaeudeklasse C_Muehle im Einflussbereich && Lagerbestand des entsprechende Gebaeude an Mehl >= 1 && Lagerbestand für Mehl der Baeckerei < Lagerlimit für Mehl der Baeckerei)
{
      Mehl bei entsprechender Muehle --
      Mehl bei Baeckerei ++
}//holen

//(void) produzieren ausführen
if (Lagerbestand für Mehl der Baeckerei >= 2 && Lagerbestand für Wasser der Baeckerei >= 1 && Lagerbestand der Baeckerei für Brot < Lagerlimit für Brot der Baeckerei)
{
      Mehl =-2
      Wasser --
      Brot ++
}//produzieren

//Die Datenbank wird dann weiter abgelaufenen. Gelangt sie nun z.B. bis Eintrag gebaeude_179, was ein Kontor ist, wird folgendes Prozedere durchlaufen.

//(void) holen ausführen
if (Gebaeude im Einflussbereich && Lagerbestand des entsprechende Gebaeude an Brot >= 1 && Lagerbestand für Brot des Kontors < Lagerlimit für Brot des Kontors)
{
      Brot bei entsprechender Baeckerei --
      Brot bei Kontor ++
}//holen

//(void) liefern ausführen
if (Gebaeude im Einflussbereich && Lagerbestand des Kontors an Wasser >= 1 && Lagerbestand für Wasser der Baeckerei < Lagerlimit für Wasser der Baeckerei)
{
      Wasser bei Kontor --
      Wasser bei Baeckerei ++
}//liefern



Hoffe, dass es erstmal einigermaßen einleuchtet, was ich erreichen will. :rolleyes:

Wiegesagt, die Frage ist: Ist der Ansatz so überhaupt sinnvoll?

Wenn ja, welche Verbesserungsvorschläge hättet ihr, bzw. welche Herangehensweise würde ihr bei der eigentlichen Programmierung vorschlagen.

Wenn die Idee Murks ist, wäre es schön einige Idee/Ansätze/Gegenvorschläge zu hören. ;)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

03.04.2014, 17:43

Jeden Frame zu prüfen ob sich ein Gebäude im Einflußbereich befindet finde ich etwas Aufwendig.

Die Aktionen(„Holen“ und „Liefern“) würde ich in eigenen Klassen kapseln.
Die Klasse, die deine Gebäude verwaltet sollte Überschneidungen finden und die Gebäude miteinander "Verknüpfen" indem man sich das "Holen" von dem einen Gebäude holt und es dem anderen Übergibt. Die Gebäude sind also nicht direkt voneinander abhängig, sondern von den „Holen“ und „Liefern“ Objekten. Das Produzieren ist eine ganz andere Sache.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

3

03.04.2014, 22:23

Dank erstmal für die Antwort.

Jeden Frame zu prüfen ob sich ein Gebäude im Einflußbereich befindet finde ich etwas Aufwendig.


Ist mir auch schon durch den Kopf gegangen. Leider hab ich dafür auf Anhieb keine bessere Idee. Das Problem (wie bei fast allen Gaming-bezogenem) ist ja die ständige dynamische Veränderung. Also das unablässig Gebäude gebaut oder abgerissen werden.

Eine Idee die mir gekommen ist wäre, dass bei jedem Gebäude (das gebaut oder abgerissen wird) eine Prüfung durchgeführt wird, um zu schauen welche Gebäude im Einflussbereich liegen (bzw. ob das neue Gebäude selber im Einflussbereich anderer Gebäude liegt). Diese Informationen könnte dann in der Datenbank bei den Gebäudeinformationen abgelegt werden. Somit würde nicht bei jedem Durchlauf eine Überprüfung stattfinden. Sondern separat nur jeweils, wenn ein neues Gebäude errichtet/abgerissen wird.
Das Problem besteht allerdings für mich, dass ich keinen Ansatz habe, wie ich das programmieren kann.
Wäre nett wenn du (oder jemand anderes ;) ) mir da einen Vorschlag geben könnte.


Die Aktionen(„Holen“ und „Liefern“) würde ich in eigenen Klassen kapseln.
Die Klasse, die deine Gebäude verwaltet sollte Überschneidungen finden und die Gebäude miteinander "Verknüpfen" indem man sich das "Holen" von dem einen Gebäude holt und es dem anderen Übergibt. Die Gebäude sind also nicht direkt voneinander abhängig, sondern von den „Holen“ und „Liefern“ Objekten. Das Produzieren ist eine ganz andere Sache.


Wie schon gesagt sind es ja zwei Seiten einer Medaille. Ich hätte grundsätzlich nichts dagegen den Umfang an Aktionen zu reduzieren. Allerdings verstehe ich den Ansatz mit dem "Verknüpfen" nicht ganz. Könntest du mir das vielleicht etwas ausführlicher beschreiben.

:thumbup:

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

03.04.2014, 22:27

Vorweg: Von wievielen Gebäuden reden wir denn so? Je nachdem kannst du nämlich entsprechende "Optimierungen" ignorieren und bei Bedarf einfach über alle Gebäude einer Insel iterieren, wenn du auf der Suche nach Waren gehst.
Für den eigentlichen Produktionsablauf würde empfehlen nicht alle x Sekunden das Abholen/Liefern zu überprüfen. Was ggf eine Idee wäre, wäre ein Eventsystem zu verwenden (einfach mal nach googlen). Sprich sowas in Richtung von "Ware x steht zur Abholung bereit". u.U. könnte man auch pro Ware entsprechende "Prioritätenlisten" führen in denen alle Gebäude gespeichert werden, die die Ware in empfang nehmen könnten. Diese Liste wird dann von oben nach unten abgearbeitet, bis ein Empfänger gefunden wurde, der die Ware abnimmt.
Ansonsten könnte man aus der "Not" auch eine Tugend machen und die "Transportmatrix" auch manuell regulierbar machen. Sprich dass der Spieler selbst Transportwege und Prioritäten festlegen kann, aber mit entsprechender Autofunktion, die dann eben einfach über Standardprioritätslisten wie oben angedacht arbeitet.
Alternativ könnt ihr das Problem erstmal KISS mäßig lösen und es ähnlich wie in Siedler online machen. Da gehen alle Waren über die zentralen Lager und es gibt keine Direkttransporte. Somit seid ihr erstmal Komplexität los und könnt euch zunächst auf die anderen Spielaspekte konzentieren.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

5

03.04.2014, 22:55

Danke für die schnelle Antwort Nox.

Vorweg: Von wievielen Gebäuden reden wir denn so? Je nachdem kannst du nämlich entsprechende "Optimierungen" ignorieren und bei Bedarf einfach über alle Gebäude einer Insel iterieren, wenn du auf der Suche nach Waren gehst.

Nun, was uns (mich) besonders an der Anno-Serie gestört hat ist grade der Inselbezug. Zum einen schränkt es einen in den Baumöglichkeiten ein. Zum anderen Stört mich der Inselbezug der Güterverteilung. Alles was im Hauptkontor angeschifft wird steht sofort Inselweit allen Kontoren/Stadtzentren und damit allen Wohngebäuden zu Verfügung.
Damit sollten wohl beide Fragen beantwortet sein. 1. Je mehr Gebäude je besser (Masse statt Klasse). ;) 2.Eine „inselweite“ Iteration fällt damit auch weg. Vielmehr soll die Interaktion durch die Einflusssphäre der Gebäude determiniert werden.

Für den eigentlichen Produktionsablauf würde empfehlen nicht alle x Sekunden das Abholen/Liefern zu überprüfen. Was ggf eine Idee wäre, wäre ein Eventsystem zu verwenden (einfach mal nach googlen). Sprich sowas in Richtung von "Ware x steht zur Abholung bereit". u.U. könnte man auch pro Ware entsprechende "Prioritätenlisten" führen in denen alle Gebäude gespeichert werden, die die Ware in empfang nehmen könnten. Diese Liste wird dann von oben nach unten abgearbeitet, bis ein Empfänger gefunden wurde, der die Ware abnimmt.
Ansonsten könnte man aus der "Not" auch eine Tugend machen und die "Transportmatrix" auch manuell regulierbar machen. Sprich dass der Spieler selbst Transportwege und Prioritäten festlegen kann, aber mit entsprechender Autofunktion, die dann eben einfach über Standardprioritätslisten wie oben angedacht arbeitet.

Eventsystem kenne ich bis jetzt nur in der Form, dass bspw. „Befehle“ abgefangen und verarbeitet werden, ála SDL_Quit(). Vielleicht kannst du mir mal ein paar Tutorials nennen, oder mir eine kleine, ausführlichere Beschreibung geben. ;)

Alternativ könnt ihr das Problem erstmal KISS mäßig lösen und es ähnlich wie in Siedler online machen. Da gehen alle Waren über die zentralen Lager und es gibt keine Direkttransporte. Somit seid ihr erstmal Komplexität los und könnt euch zunächst auf die anderen Spielaspekte konzentieren.

Naja grade die Art der „zentralen“ Warenverteilung ist (wie gesagt) etwas, was ich nicht sonderlich mag. Zwar setzte ich auch auf ein Pseudotransportsystem, da die Waren innerhalb des Einflussradius automatisch verschoben werden, aber das erscheint mir immer noch besser als ein vollständig globales Verteilungssystem.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

04.04.2014, 10:16

Naja. Gerade in C++ sind iterationen über mehrere tausende Objekte weniger das Problem ;) . Die Einbindung von Transportwegen als zusätzliches Spielelement finde ich übrigens sehr interessant :) . Kennst du per Zufall die Victoria Reihe von Paradox? Da kann man per Gesetz einstellen, ob die Fabriken und Infrastruktur automatisch von den Kapitalisten (aus)gebaut werden oder ob nur der Staat bauen darf. Außerdem kann man Waren subventionieren um damit der KI bzw den Kaptialisten gewisse Anreize zu liefern und gezielt auszubauen auch wenn man nicht alles selbst macht.
So könnte man wahlweise entweder wie in anno alles selbst bauen oder aber wie in Sims city nur gewisse Flächen ausschreiben. Im Prinzip könnte man dann noch ein Bildungsystem einbauen womit bestimmte Betriebe bestimme Ausbildungen brauchen. So würde eine Schreinerei eher von einem Mitbürger mit Meisterausbildung gebaut werden als von einem ehemaligen unfreien.
Ungeachtet der Möglichkeiten würde ich euch aber zu zwei Dingen raten:
-keine Scheu vorm iterieren über alle Gebäude. Gerade in C++ ist das iterieren über ein paar tausend Objekte oft nicht so zeitfressend. Lieber später schauen wo es wirklich klemmt.
-vereinfacht möglichst alle Spielaspekte so weit es geht und baut sie erstmal zusammen. Komplexer kann man sie bei entsprechender Planung später auch noch machen.

Konkret könnte der zweite Punkt folgendermaßen umgesetzt werden:
-erster Prototyp mit einfacher zentraler Warenverteilung; vielleicht eben noch mit wirklichen Mikrotransporten zwischen Betrieb und Lagern (Grundlage)
-beim zweiter Prototyp tragen sich alle Gebäude mit einen Bedarf in Waren(-std::map) ein, welche wiederum entsprechende std::priority_queue beinhaltet. Wenn nun ein Gebäude beim Updaten feststellt, dass es ne Ware über hat, schaut es in der Warenmap nach welche Gebäude "Bedarf" haben und "fragt" diese ob sie sie abholen (Direkttransporte).
-der dritte Prototyp könnte das System um Transporte zwischen den zentralen Lagern/Umschlagsplätze erweitern (Warenflusssteuerung).

Wenn ihr dann noch dabei seid wünsche ich mir persönlich die Möglichkeit per Gesetz (am Anfang einfache Auswahl-später ggf Politik gebunden) entsprechende Gewerbeflächen ausschreiben zu können, die dann nach dem Angebot von Edukten, Nachfrage von Produkten und vorhanden Arbeitskräften von der KI bebaut wird. Später wünsche ich mir politische Gesinnungen und Ausbildungstruktur innerhalb der Bevölkerung einen Koop. Dann kann einer nämlich einen auf Transportwesen und Wirtschaft machen und der andere kümmert sich um Bevölkerung, Bildung und Außen- sowie Innenpolitik :vain: .

P.S: ein Tutorial zur Umsetzung von Eventsystemen bleibe ich leider schuldig, da ich sie immer nur verwende aber nicht selbst implementiere.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

7

04.04.2014, 11:31

Naja. Gerade in C++ sind iterationen über mehrere tausende Objekte weniger das Problem ;) . Die Einbindung von Transportwegen als zusätzliches Spielelement finde ich übrigens sehr interessant :) . Kennst du per Zufall die Victoria Reihe von Paradox? Da kann man per Gesetz einstellen, ob die Fabriken und Infrastruktur automatisch von den Kapitalisten (aus)gebaut werden oder ob nur der Staat bauen darf. Außerdem kann man Waren subventionieren um damit der KI bzw den Kaptialisten gewisse Anreize zu liefern und gezielt auszubauen auch wenn man nicht alles selbst macht.
So könnte man wahlweise entweder wie in anno alles selbst bauen oder aber wie in Sims city nur gewisse Flächen ausschreiben. Im Prinzip könnte man dann noch ein Bildungsystem einbauen womit bestimmte Betriebe bestimme Ausbildungen brauchen. So würde eine Schreinerei eher von einem Mitbürger mit Meisterausbildung gebaut werden als von einem ehemaligen unfreien.
Ungeachtet der Möglichkeiten würde ich euch aber zu zwei Dingen raten:
-keine Scheu vorm iterieren über alle Gebäude. Gerade in C++ ist das iterieren über ein paar tausend Objekte oft nicht so zeitfressend. Lieber später schauen wo es wirklich klemmt.
-vereinfacht möglichst alle Spielaspekte so weit es geht und baut sie erstmal zusammen. Komplexer kann man sie bei entsprechender Planung später auch noch machen.

...

Wenn ihr dann noch dabei seid wünsche ich mir persönlich die Möglichkeit per Gesetz (am Anfang einfache Auswahl-später ggf Politik gebunden) entsprechende Gewerbeflächen ausschreiben zu können, die dann nach dem Angebot von Edukten, Nachfrage von Produkten und vorhanden Arbeitskräften von der KI bebaut wird. Später wünsche ich mir politische Gesinnungen und Ausbildungstruktur innerhalb der Bevölkerung einen Koop. Dann kann einer nämlich einen auf Transportwesen und Wirtschaft machen und der andere kümmert sich um Bevölkerung, Bildung und Außen- sowie Innenpolitik :vain: .


Gib zu Nox, du bist NSA-Agent und hast in meinem Kopf einen Mikrochip implantiert.
Das mit der Anlehnung an Simcity und Paradox-Games war auch meine Idee. :P Deswegen die Idee mit den Einzugsbereichen. Ich wollte damit die Möglichkeit schaffen beides zu haben. Mikro- und Makrosteuerung. Zur direkten Vorstellung... Im Mikrobereich sollte es laufen wie in Anno, also alles schön per Hand setzten. Später dann sollten einem durch Entwicklungsstufen die Fähigkeit gegebenwerden quasi Kontore/Marktplätze/etc. zu nutzen, um wie in Simcity bestimmte Areale zu definieren, wo die KI sich dann, je nach Einstellung (siehe angesprochenes Paradox-Games) austoben kann. So könnte man sagen: Das Einzugsgebiet dieses oder jenes Kontors soll zur Herstellung von Brot verwendet werden. Dann sollte die KI innerhalb dieser Fläche (soweit das möglich ist) die für diese Produktionskette nötigen Gebäude verteilen.
Das gute daran ist, dass es somit kein völlig neues System auf der Makroebene wäre, sondern die KI einfach auf die gleichen Mechaniken zurückgreifen könnte, wie man es als Spieler tut. Damit wäre theoretisch auch eine Kopplung möglich. Also das ich ein bestimmtes Gebiet teilweise bebaue und die KI dann die "Lücken" je nach Einstellungsparametern möglichst optimal "auffüllt". ;)


Konkret könnte der zweite Punkt folgendermaßen umgesetzt werden:
-erster Prototyp mit einfacher zentraler Warenverteilung; vielleicht eben noch mit wirklichen Mikrotransporten zwischen Betrieb und Lagern (Grundlage)
-beim zweiter Prototyp tragen sich alle Gebäude mit einen Bedarf in Waren(-std::map) ein, welche wiederum entsprechende std::priority_queue beinhaltet. Wenn nun ein Gebäude beim Updaten feststellt, dass es ne Ware über hat, schaut es in der Warenmap nach welche Gebäude "Bedarf" haben und "fragt" diese ob sie sie abholen (Direkttransporte).
-der dritte Prototyp könnte das System um Transporte zwischen den zentralen Lagern/Umschlagsplätze erweitern (Warenflusssteuerung).


Sehr gute Idee. Werd das mal als Route-Map für mich missbrauchen. ;)

P.S: ein Tutorial zur Umsetzung von Eventsystemen bleibe ich leider schuldig, da ich sie immer nur verwende aber nicht selbst implementiere.


Leider hab ich bis jetzt keine Tutotials gefunden, die das Eventsystem wirklich so präsentieren, dass es für mich praktikabel ist. Aber ich suche weiter.

Für weitere Anregung und vorallem Ansätze zu den hier beschrieben Probleme wäre ich der Community weiterhin dankbar. :thumbsup:

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

04.04.2014, 12:24

Ja, die Beschreibung war etwas dürftig. Ich denke sie entspricht in etwas Nox zweitem Prototypen.

Eigentlich musst du nichteinmal Verbraucher und Versorger unterscheiden. Du musst einfach nur dafür sorgen, dass der Versorger seinem Verbraucher mitteilen kann, dass es etwas zu transferieren gibt.
Meine Idee ist eine Verbraucherklasse zu erstellen, die jede Interaktion zwischenspeichert.
Dabei soll jeder Versorger, also jedes Gebäude das etwas Produziert, eine nach Priorität sortierte Liste(keine Linked-List!) mit entsprechenden Abnehmern speichern. Damit liesen sich natürlich auch einfach Zwischenlager implementieren(niedrige Priorität für das Anliefern).

Beim Bau eines Gebäudes wird geprüft ob in der Nähe eine bestimmte Ware benötigt wird. Wenn ja holt man sich die Instanz der Versorgerklasse von dem Verbraucher und übergibt sie dem neuen Gebäude.

Der Vorteil wäre in meinen Augen eine bessere Übersicht und besser verteilte Rollen.

edit: Beim "Aufwand" ging es mir eigentlich nicht so sehr um Rechenzeiten. Ein direkter Zugriff ist in meinen Augen häufig viel übersichtlicher. Nicht nur weil man sich mindestens eine verschachtelte Schleife im Updateblock spart, sondern weil es auch dem menschlichen Denken entspricht sich solche Hilfen zu bauen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »NachoMan« (04.04.2014, 12:33)


9

04.04.2014, 21:24

Hiho,

hab mir nochmal eure bisherigen Anregungen zu Herzen genommen und einiges Überdacht.
Mein jüngster geistiger Erguss hat dabei folgendes zutage gebracht:

Zu besseren Verständnis hab ich mich mal 5 Minuten in Gimp ausgetobt und eine kleine Grafik erstellt. :crazy:

Durch ein entsprechendes Message-/Eventsystem soll jedes Produktionsgebäude (grüner Innenkreis) in der Lage sein innerhalb seines Einflussradius (schmaler hellblauer Außenkreis) Informationen an alle umliegenden Gebäude (gelbe Kreise) zu versenden (repräsentiert durch die konzentrischen blauen Kreise), sofern Waren im „Ausgangs-“Lager bereit stehen.
Die Nachricht wird je nachdem von Gebäuden abgefangen, die die entsprechende Ware weiter nutzen können (gelbe Kreise im unteren Bild), alle anderen ignorieren die Info (graue Kreise im unteren Bild). Gleichzeitig finde eine Prioritisierung [gibs das Word?] nach dem Bedarf statt (Zahlenwerte in den gelben Kreisen). Nach dieser Reihenfolge wird dann die verfügbare Waremenge auf die Gebäude verteilt. Eine Unterscheidung zwischen „holen“ und „liefern“ findet nicht mehr statt. Es wird quasi immer vom „Message-Geber“ an die/den „Message-Empfänger“ geliefert.

Hoffe es hört sich erstmal sinnvoll an, auch wenn ich gestehen muss, dass ich noch keine Ahnung hab, wie ich das konkret Umsetzten soll. Ab vielleicht kennt ihr auch dafür ein paar Tipps oder Tutorials. :vain: :search:
»TheLizard« hat folgendes Bild angehängt:
  • Produktion2.png

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

10

04.04.2014, 22:27

Mich interessiert das "Gerade in C++ sind iterationen über mehrere tausende Objekte weniger das Problem ;) ".

Macht es in so einem Fall mehr Sinn, immer, wenn Waren fertig sind alle Gebäude auf der Map zu durchlaufen, zu prüfen ob sie im Radius liegen UND die Ware brauchen und dann die Waren abzuschicken, oder eher mehr Speicher zu verbrauchen und pro Gebäude in einem std::vector, etc. speichert, welche Gebäude im Radius liegen und die Ware brauchen, und diese Liste immer aktualisiert wird, wenn ein Gebäude gebaut/gelöscht wird?
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Werbeanzeige