Wenn du sehr viele Ampeln (+100) in einer Szene darstellen möchtest, dann sollen es möglichst wenige Materialien sein. Ein Beispiel wie man es machen könnte:
Ich möchte euch ein elementares Feature vorstellen. Vielleicht eines der wichtigsten Features eines city builders.
Gebäude
Es gibt zwei grundlegende Arten, von Gebäuden:
Zonengebäude:
Diese Art Gebäude funktioniert wie beim klassischen "Sim City".
Der Spieler platziert Wohn- und Büro-Zonen. Je nach Bedarf und Umgebungsbedingungen und die allgemeine Lage der Stadt entstehen automatisch neue Häuser.
Grün = Wohnzonen, blau = Bürozonen
Zonen kosten Geld und Ressourcen wie Holz, Stein, Eisen, Stahl, Glas und Werkzeuge
Es ist möglich Zonen zu verbessert, so das größere Gebäude entstehen. Der Spieler muss sich durch die höhere Bevölkerungsdichte mehr und mehr Gedanken um das Verkehrsmanagement machen.
Gebäude und deren Bewohner haben Bedürfnisse. Am Anfang benötigen Bewohner vor allem Nahrungsmittel. Wurden die Zonen verbessert verlangen die Bewohner mehr und mehr Luxusgüter wie zum Beispiel Bücher, Wein, Schmuck und Medizingeräte. Sind die Bewohner unzufrieden, dann verlassen sie die Stadt.
Werden diese Bedürfnisse befriedigen, zahlen die Bewohner mehr Geld in die Stadtkasse ein.
Um die Bedürfnisse erfüllen zu können komme ich zur zweiten Gebäudegruppe:
Industriegebäude /Servicegebäude:
Diese Kategorie von Gebäuden sind an keinen Zonen gebunden und können frei, daher ohne Raster platziert werden. Fast alle Gebäude benötigen Arbeiter um zu funktionieren haben laufende Unterhaltskosten.
Servicegebäude bieten in einem Radius um das Gebäude einen Service an (zum Beispiel anbieten von Freizeitmöglichkeiten, Bildung und Gesundheitsversorgung, Reduktion Kriminalität und Brandgefahr, ... ). Unter dieser Kategorie fallen auch "Buff-Gebäude", die umliegende Gebäude verstärken.
Industriegebäude produzieren Ressourcen und Waren. Ressourcen können in Produktionsketten weiterverarbeitet werden. Am Anfang einer Spielpartie sind die Produktionsketten noch recht einfach und werden später umfangreicher.
Beispiel für Herstellung von Möbel und Wein:
Industriegebäude haben ein eigenes lokales-Lager für Ressourcen. Ein LKW transportiert Holz zur Möbelfabrik. Das lokale Holz-Lager der Möbelfabrik wird gefüllt. Die fertigen Möbelstücke haben auch ein lokales Lager. Ein LKW holt die Möbel ab und liefert es zur Spedition. Erst dann sind die Waren für die Bewohner und dem Bürgermeister verfügbar.
Das nachfolgende Video zeigt die umfangreichen Informationen einer ausgewählten Eisenschmelze:
Einige Gebäude wie zum Beispiel die Eisenschmelze gibt es in mehreren Größen. Die größere Eisenschmelze kann viel mehr Eisenerz in Eisen verarbeiten. Das ist auch nötig im späteren Spielverlauf. Große hochwertigere Gebäude benötigen viel mehr Baumaterialien.
Manche Industriegebäude funktionieren nicht überall. Zum Beispiel funktioniert eine Lehmgrube nur dort, wo auch Lehm abgebaut werden kann. Aus Lehm werden Ziegel hergestellt.
Innerhalb brauner Flächen kann Lehm gefördert werden.
Ich mag die Kombination aus Zonengebäuden und eigens geplanten Industrieketten Es ist spannend, in einem city builder nicht nur Geld als Ressource zu haben.
Es können mehrere Texturen zu einem LookUp zusammengefasst werden. Die Anzahl "Texture Sample" werden reduziert.
UE4 schafft durchaus +100 4k Texturen in einer Szene darzustellen.
Je weiter das Objekt von der Kamera entfernt ist, des so geringer wählt UE4 die Auflösung einer 4k Texture. Das spart viel Video-Ram und erhöht die Perfomence.
Damit Mip Map in UE4 verwendet werden kann, muss die Texture-Auflösung = 2n entsprechen (z.B. 512x1024, 1024x1024, 4096, 4096) UE4 unterstützt eine maximale Auflösung von 8192x 8192. In den Texture-Einstellungen muss Mip Map aktiv sein.
Ich möchte euch ein Feature vorstellen was mir am Herzen liegt: Farmen
In City Next können große Städte gebaut werden. Wenn alle Gebäude Wolkenkratzern sind, sieht das Stadtbild eher ungewöhnlich aus. Farmen eignen sich ziemlich gut um auch ländliche Regionen darzustellen.
Beim Bauen von Farmen soll der Spieler viele Freiheiten genießen. Um die Farm ist immer eine Straße oder Feldweg. Mit den flexiblen Straßenbautools kann die Kontur der Farm frei definiert werden. City Next erkennt automatisch, wo Farmen sinnvoll platzierbar sind.
Das Video zeigt, wie flexibel das Bauen von Farmen ist:
Farmen Produzieren Grundrohstoffe wie Obst, Gemüse, Wolle, Weizen (für Bier und Brot), …
Je größer die Farm ist, des so mehr Waren werden pro Tag produziert.
Der Farmboden ändert seine Textur zu einem Acker und es werden tausende bis zehntausende Pflanzen platziert (HISM macht es möglich).
Farmen verbrauchen im Vergleich zu anderen Gebäuden recht viel Platz. Ist aus einem Städtchen eine größere Stadt entstanden und die Stadtkasse gefüllt, dann könnte der Spieler ein Teil der Grundrohstoffe importieren und so mehr Platz für die Stadtexpansion zur Verfügung haben. Achtung: Importieren von Waren kostet mehr als in Eigenproduktion.
Diese Möglichkeiten gibt es den Farmertrag zu erhöhen und damit die Versorgung von größeren Städte zu ermöglichen:
-Forschungen, welche die Produktivität der Farmen steigert
-Buff-Gebäude, die andere Gebäude in der Nähe Verbessern
Der Spieler wägt daher strategisch ab, ob er z.B. lieber die eigene Produktion verbessern, Waren importiert, Forschungen betreibt, umliegende Gebäude verbessert oder neue Wohnungen für die wachsende Bevölkerung baut.
Vielleicht als Idee: Im Level ist ein Postprocess-Material standardmäßig aktiv und macht den Bildschirm schwarz. Dann kannst du dir Zeit nehmen alles zu laden. Zum Schluss das Material entfernen oder die Material-Parameter ändern das alles sichtbar wird (mit schicken Übergangseffekten).
UE4 bietet die wahrscheinlich besten Animations-Tools in Spielen. Diese sind jedoch mit relativ hohen Rechnenaufwand verbunden (wenn es viele Objekte werden).
Wenn man Szenen mit vielen Personen hat, ist das eine Herausforderung für Grafikkarte und Prozessor.
Mit City Next ist eins meiner Ziele, die GPU und CPU Kosten so gering wie möglich zu halten. Bei Animationen mit den "Skeletal Meshes" sind nach ca. 500 Personen Schluss. Die CPU Zeit kann durch einige Tricks wie "Multi Threaded Animation Update" und "Animation Sharing Plugin" reduziert werden.Bei der GPU sollen die Draw Calls gering bleiben. Jeder Static Mesh erzeugt min. 2 Draw Calls (1x Mesh x Material). Beim "Skeletal Meshes" weiß nicht gerade nicht wie viele Draw Calls es min. erzeugt werden. (Das sind recht viele Fachbegriffe)
City Next kann mehrere 10.000 Personen gleichzeitig darstellen (mit Animation).
- Szene mit 0 Personen: 17,9 ms
- Szene mit 20.000 Personen: 21,3 ms (+19 %) (die Personen erzeugen auch Schatten )
Alle Personen haben folgende Variationen: - Kleidungs- und Hautfarben - Animationen - Animationengeschwindigkeiten - Position, Scale Rotation
Wie das geht das? - Hierarchical Instanced Static Meshes (HISM)
- Vertex-Animation
- Instance-custom Parameter
HISM fasst mehrere gleiche static meshs zu Instancen eines static mesh zusammen. Vorteil: Draw Calls können verringert werden. Link
Vertex-Animation können die Vertices eines static meshs mithilfe einer Offset-Text manipuliert werden. Animation sind damit möglich, obwohl das Objekt wie ein static mesh verwendet wird. Diese Art Animation wird nur von der Grafikkarte berechnet. Die CPU muss nichts machen.
Das Erzeugen von Vertex-Animation können u.a. mit diesen Plugin realisiert werden: Link (In Blender geht das Erzeugen der Vertex-Animation auch Link)
Seit der UE4.25 können für HISM und ISM Materialien zusätzliche Instance-Parameter erhalten. Jede Instance kann damit etwas verändert werden, obwohl es sich auf ein static mesh bezieht. Mit diesen Parametern werden die Animationssets und Kleidungs- und Hautfarben gewählt.
City Next verwendet dieses System für die Fußgänger auf dem Bürgersteig. Im Gebäudeeditor können neben Gebäuden auch Personen platziert werden. Die Gebäude fühlen sich viel lebendiger an (ähnlich wie in Anno 1800 wo die Gebäude ringsherum voller leben sind).
(Bild: Personen bewegen sich)
Vielleicht ist das für den einen eine Inspiration für das eigene Spiel. Ein Stadion voller Personen? Ja das geht.
Es ist gut eine Basisklasse für alle Charaktere machen. Darin ist z.B. die Leben Punkte, Mana Punkte, Animationen, Mesh enthalten. Durch Ableiten der Basis-Charakter-Klasse kann man Charaktere spezialisieren (z.B. Zauberer, Nahkämpfer). In UE4 heißt es "Parent Class". Von welcher Klasse ein z.B. Blueprint abgeleitet ist, steht nach dem Öffnen des Blueprintes oben rechts.
Solche Flussverläufe kann man u.a. mit Splinemeshs machen. Zur Vorstellung wie das in etwa funktioniert: Es gibt im Editor ein Road-tool, um Straßen zu bauen. Das Asphalt-Material ersetzt man gegen ein passendes Wasser-Material.
Im Link fast am Ende werden Tipps und Tricks gezeigt. Der Material Graph unter 3.) ist eine Möglichkeit.
Zwei Texturen (oder Nodes) werden je nach Entfernung gemischt. Wenn der Spieler sehr nah ist, werden zusätzlich zum Bild die RGB Farbkomponenten angezeigt. Entfernt sich der Spieler, dann werden die RGB Farbkomponenten blasser bis sie unsichtbar sind und nur noch das Fernsehbild sichtbar ist.
Hatte in diesen Spielen immer das Problem das diese nach paar Spielstunden keinen Anreiz mehr gegeben haben. Nicht genug Bewohner? Baust mehr wohnegebiete. Nicht genug schlaue Leute? Baust du mehr Schulen. Etc. Etc. Etc.
In vielen Spielen haben Sachen wie Pandemien, Politik Probleme, Naturkatastrophen etc. Gefehlt und wenn es sie gab haben diese kaum Auswirkungen auf das Spiel gehabt.
Das Spiel hat eine Lernspirale. Am Anfang relativ einfach. Je größer die Stadt ist, des so mehr Wünsche hat die Bevölkerung. Bewohner verlangen nach anspruchsvolleren Waren und Dienstleistungen. Die anspruchsvolleren Waren haben umfangreichere Produktionsketten. Einer der umfangreicheren Ketten ist die Herstellung von Elektroautos. Elektroautos bestehen aus: - Karosserie
- Batterien
- Elektronik
Diese Einzelkomponenten haben selber eigene Produktionsketten. Um so eine Produktionskette aufzubauen, benötigt man viele Ressourcen und Geld.
Zufällige Ereignisse, welche die Stadt stark in Mitleidenschaft ziehen, sind nicht geplant. Ich fände es nicht gut das nach vielen Spielstunden ein Meteor auf seine Stadt kracht und alles weg ist.
Es gibt einen Forschungsbaum. Mit diesen kann seine Stadt spezialisiert werden. Das erhöht den Wiederspielwert.
Kennst du ein Spiel in dem explizit dazu eingeladen wird oder sogar dazu aufgefordert wird zu modden?
Wenn ein Spiel explizit Mod-Tool vom Entwickler anbietet, dann fordern sie dich dazu auf. Viele Mod-Gebäude aus Cities Skylines sehen so fantastisch aus.
Hast du beim programmieren speziell auf etwas geachtet um den Spielern alles möglichst gut überblickbar und verständlich für das modden zur Verfügung zu stellen?
Wird man mit dir gemeinsam auch quasi die Originalversion des Spiels verändern können, wenn man gut modded?
Die Modding-Werkzeuge und deren Oberfläche werden kurz vor Release finalisiert. Wie im Hauptspiel werden die Editoren viele Tooltips erhalten, um eine bessere Zugänglichkeit zu ermöglichen.
Anfang der Entwicklung von City Next war noch nicht klar zu was die Unreal Engine 4 alles fähig ist. Beim Bau einer Stadt sind hunderttausende von Objekte gleichzeitig sichtbar. Das ist eine Herausforderung diese zu Managen und darzustellen.
Offensichtlich gibt es keine Ampeln, über die Kreuzung möchte ich real ja lieber nicht fahren.
Ampeln gibt es. Wenn die Fahrzeuge grün haben fahren sie los egal, ob jemand die Spur kreuzt.
Die Entwicklung der Kreuzungen war eine Herausforderung damit die gewünschten Features funktionieren: - Beliebig viele Straßenzugänge - Winkel der Straßen beliebig wählbar (Der Optik wegen auf einen Winkelbereich begrenzt) - Die Spuranzahl der Straßen beliebig (Ist u.a. im Straßeneditor anpassbar) - Brücken mit Kreuzungen (z.B. bei erhöhten Highway öfter sichtbar) - Verkehrsinseln - Fahrzeuge finden den richtigen Weg
Feature, man konnte die einzelnen Straßen, die man gebaut hat, noch mal extra beeinflussen. Zum Beispiel konnte man vor Kreuzungen Abbiegespuren setzen, Ampeln platzieren, Zebrastreifen und Busspuren platzieren und auch bei jeder Straße die Geschwindigkeitsbegrenzung setzen. Das hatte natürlich einen unheimlichen Einfluss auf das Geschehen in der Stadt und dem Verkehrsfluss. Zudem machte es das ganze sehr extrem individuell gestaltbar. Das fand ich ein sehr gutes Feature.
Ich wünsche mir auch Abbiegespuren. Das reduziert Verkehrsstau. Die Abbiegespur würde den Bürgersteig verkleinern. Busspuren sind eine nette Idee.
Die Marktkarren aus Anno sind in City Next die LKWs. Sie holen Waren von den Betrieben und liefern es an das Depot (Anno Marktplatz). Bei größeren Städten sind recht viele LKWs unterwegs. Ich überlege, ob der Spieler LKW-Spuren definieren kann.
Und wenn du zu den Städten dann endlich auch mal den passenden Hubschraubersimulator lieferst, auf den ich schon bei den anderen Spielen sehr lange warte, mit genau der sehr einfachen und genialen Steuerung wie sie Sim Copter lieferte, dann bin ich auch absolut und rundherum zufrieden mit dir
Sim Copter kenne ich Damals konnte man in Sim Copter die Städte von Sim City 2000 importieren und Missionen fliegen.
Der Editor basiert auf den UE4 Editor. Man gestaltet die Häuser und/oder legt neue Varianten von Häusern an. Die Häuser setzen sich aus mehreren Meshs zusammen. Wenn eines der Gebäude im Spiel gespawnt werden soll, wählt das Programm eine Variante (mit der entsprechend definierten Wahrscheinlichkeit) aus und platziert es an die Stelle. Es können Meshs, Partikel-Effekte (z.B. der Rauch aus Schornsteinen) und Personen verwendet werden.
Der Editor ist losgelöst vom eigentlichen Spiel. Die beiden Programme werden noch vereint.
Nutzt du das Victory Plugin um .obj und Texturen zu laden?
Victory Plugin nutze ich. Die Textur-Funktion nutze ich für die Ressourcenfelder. Obj-Dateien https://de.wikipedia.org/wiki/Wavefront_OBJ lade ich damit nicht. Es gibt Plugins auf dem Marketplace, da können sehr viele verschiedene Modelldateien (z.B. .fbx) live im Spiel geladen werden.
Ich würde demnächst im Forum einige Ansätze erläutern, damit auch andere Entwickler tolle Projekte auf die Beine stellen.
In Highrise City ist der Spieler Architekt einer modernen Stadt der Gegenwart und managt die Planung von Infrastruktur, Ressourcen, den Bau von Gebäuden, und die Bedürfnisse der Bewohner.
Highrise City vereint zwei beliebte Kernprinzipien von Aufbauspielen:
Industriemanagement wie “Anno”
Stadtbau wie “Sim City” / “Cities Skylines”.
Ich bin selbst ein Fan von den genannten Aufbauspielen und habe so einige Zeit in den virtuellen Welten verbracht.
Deshalb entstand die Idee, die Grundkonzepte in einem eigenen Projekt zu vereinen.
Warum ich das ganze hier veröffentliche? Feedback, Ideen und Verbesserungswünsche regt zu neuen Ideen an und motivieren mich am Projekt zu arbeiten!
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
Auf einer anfänglich unbebauten Landschaft können die notwendige Infrastruktur wie etwa Straßen, Strom- und Wasserversorgung gebaut werden. Durch Errichtung von Industriegebäuden für die Rohstoffgewinnung können neue oder veredelte Materialien oder Waren produziert werden. Materialien werden wiederum für den Bau weiterer Gebäude benötigt.
Industriegebäude brauchen neben Ressourcen auch Büros um zu funktionieren. Büros werden auf Büro-Zonen selbstständig gebaut (Angebot und Nachfrage). Buff-Gebäude können andere Gebäude im Einflussradius verbessern (z.B. Technologe-Zentrum erhöht die Produktivität der Gebäude (Mit einer speziellen Forschung Stapelbar)).
Bewohner
Mit dem Zuweisen von Wohnzonen errichten Bewohner eigenständig Wohngebäude (Angebot und Nachfrage). Je nach Beschaffenheit der Zone können kleinere, größere Gebäude oder sogar Wolkenkratzer entstehen. Der Spieler folgt persönlichen Vorlieben in Design und Wachstum seiner Stadt.
Damit die Bewohner glücklich und in der Stadt bleiben, werden sie mit Konsumgütern versorgt wie z.B. Fisch, Möbel, Kleidung beliefert. Zusätzlich benötigen die Bewohner Services wie Krankenhaus, Freizeitaktivitäten, Brandschutz, Religionsgebäude, .... .
Das Verbrauchen von Konsumgüter bringt der Stadt Einnahmen, mit den wiederum neue Infrastrukturprojekte finanziert werden.
Fortschritt
Durch Erreichen von Meilensteinen werden weitere Gebäude, Produktionsketten und Technologien freigeschaltet. Die Bewohner können durch Verbessern der Wohnzonen im Rang aufsteigen. Die Wohngebäude werden größer. Es entsteht ein Ballungszentrum. Bewohner höheren Rang geben mehr Geld für Waren aus, haben aber auch extravagante wünsche an Güter (z.B. Medizingeräte, Elektroautos).
Der Spieler hat als Bürgermeister einer Stadt weitere Privilegien (Ausschnitt der Möglichkeiten):
- Handel mit Nachbarstädten
- Forschung und Gesetzgebung
- Finanzen der Stadt verwalten (Steuern festlegen, Kredite aufnehmen)
- Stadtgebiete dazukaufen
Modding
Highrise City kann von jeden Spieler modifiziert werden. z.B. können Eigenschaften der Gebäude und der Produktionsketten beliebig geändert und neue hinzugefügt werden. Meilensteine, Personen, Gesetze, Symbole, Ressourcen, u.v.m sind änderbar. Es gibt einen Ingame-Gebäudeeditor, Straßeneditor, Fahrzeugeditor.
Narration
Der Spieler erstellt durch das Erschaffen seiner Stadt seine eigene Geschichte. Die Eigenheiten der einzelnen Karten und die zahlreichen ineinander übergreifenden Spielmechaniken verlangen vom Spieler eine ständige Anpassung. Zufällige erscheinende Bürgermeisterentscheidungen haben Einfluss auf den weiteren Spielverlauf.
Anstatt des PlayerController können auch andere Objekte in ein Array speichert werden. Als Beispiel können die von dir erwähnten gespawnten NPC-Objekte liegen.
Alternativ würde ich vorschlagen, wenn in dem Array der Playercontroller von den Spielern gespeichert wird. Der Playercontroller hat eine bool-variable death. Du prüfst wie viele Playercontroller die Variable death == true gesetzt sind. Gibt es nur noch einen mit death == false, dann gibt es einen Gewinner
Der Vorteil vom Playercontroller ist, das auch andere Eingenschaften vom Spieler abfragen werden kann (z.B. wie viele Kills, Hits, Damage, Position, Healthpoints, Name, Wohnort ...).
Für den Marketplace habe ich ein Plugin erstellt. Es fasst mehrere Splinemeshes in ein Proceduralmesh zusammen. Das spart viele Grafik-Call-Aufrufe und erhöht die Performence.
seit vielen Jahren lese ich still dieses tolle Forum. Es hat mich oft inspiriert und ich konnte Wissen um die Unreal Engine erweitern. Danke!
Auf Arbeit programmiere ich Mikrocontroller in C++. Das passt ganz gut das UE4 auch C++ verwendet.
Ich verwende UE4 seit 2014. Über die Jahre konnte ich Wissen in Blueprint, C++, Materialien und die Architektur der Engine erlernen.
Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen.Weitere InformationenSchließen