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

04.09.2012, 18:22

Garten Eden

Hi,

würde euch gerne meine Spielkonzept vorstellen und mal hören was ihr dazu für Ideen habt.




Das Spiel soll auf einer Zivilisation-Simulation beruhen.
Das Siel verläuft in verschiedenen Phasen:


1. Es wird eine Map ausgewählt oder Erstellt, es gibt einen Editor. Die Map stellt eine Landschaft da, die Berge Täler Wälder, Felder, Meere usw bietet.

2. Dort beginnt eine Zivilisation zu siedeln.

3. Der Spieler ist Gott. Er er hat bestimmte Aufgaben:
z.B. Ausrotten der Zivilisation, Herstellen bestimmter Zustände in der Map. Der Zivilisation helfen usw...

Der Spieler hat dazu Naturgewalten zur Verfügung. Diese kann gelegentlich auslösen.
z.B. Meteoriteneinschläge, Vulkanausbrüche, Seuchen, Unwetter...



Die Felder in der Map werden bestimmte Eigenschaften haben und interagieren.

Besiedeltes Gebiet wächst, es liegt eine Wirtschaftssimulation zugrunde. Pflanzen wachsen, sie konkurieren.
Verlassene Städte gehen zurück an die Natur.

"Verbrannte Erde" (nach Vulkanausbrüchen usw. ist besonders fruchtbar)

Es gibt viele weitere denkbare Möglichkeiten alles ausgefeilter zu gestalten. Zum beispiel besser werdende Technologie in einer Zivilisation usw, mehr beteiligte notige Rohstoffe, Waldbrände. usw...



Der Knackpunkt ist nach meiner Ansicht ein Algorithmus der natürlich aussehende Städte auf einer Wirtschaftssimulation beruhenden Basis wachsen lässt.
Damit habe ich also begonnen.


Anbei Bilder eines Prototypes der Simulation für die den Zivilisations-Algorithmus.

1. Stadt in einer neutralen Map.
Links: Grün= Wohngebiete; Gelb Industriegebiete; Blau Diensteister.
Rechts: Wirtschaftliche Aktivität




2. Stadt in einer neutralen Map.

Links: Verfügbarkeit von Dienstleistungen, als Einsicht in die Wirtschaft der Stadt.
Rechts: Grün= Wohngebiete; Gelb Industriegebiete; Blau Diensteister.


Bisher ist alles in 2D, gesehen von oben. Ohne Texturen.

Viele Grüße.
Bilder zu meinem Projekt: ParSim

MitgliedXYZ

Alter Hase

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

2

04.09.2012, 18:31

Schön das du schon was vorzeigen kannst, aber von dem Bildern sieht es mir stark nach einer reinen Simulation aus, wenn ich aber die Beschreibung lese, habe ich eher ein Bild wie von SimCity im Kopf ;)

Was hier noch interessant wäre: Verwendete Sprache, Bibiliotheken, etc.

3

04.09.2012, 21:22

Hi,

Zitat

sieht es mir stark nach einer reinen Simulation aus, wenn ich aber die Beschreibung lese, habe ich eher ein Bild wie von SimCity im Kopf ;)
Die Stadt ist das Ergebnis einer reinen Simulation. Sie wächst binnen einer Minute so heran.
Zugrunde liegt ein in sich geschlossenen Wirtschaftskreislauf, der einen Überschuss produziert.


Eine hübsche Grafik ist erst wichtig, wenn klar wird dass es auch machbar ist, also jetzt.

Was ich nicht kann ist die Grafik. Eine Heightmap, sowie wenn möglich Texturen oder sogar 3D Modelle von Wald und urbanem Gelände, Industrie usw.

Es könnte so eine Art automatisches SimCity sein, ja, aber der Spieler Greift eher über Naturgewalten ein, die Zivilisation reagiert darauf.


Zitat

Was hier noch interessant wäre: Verwendete Sprache, Bibiliotheken, etc.
C# und XNA Game Studio.

Im Wesentlichen läuft die Simulation über den Gauß-Effekt. Wirtschaftsprodukte usw verbreiten sich über die Straßen, Besiedlungsdichte verteilt sich im Umland.
Je nach Vorhandensein von z.B. Besiedlungsdichte oder Straßenanbindung werden bei positiver Wirtschaftsleistung neue Gebäude errichtet.
Klappt ganz gut. Ist noch sehr archaisch. Kann ich leicht noch sehr viel weiter ausbauen.
Die wirtschaftlichen Verflechtungen müssten ergänzt werden. Landwirtschaft fehlt total, Umweltverschmutzung Rohstoffe. Es gibt noch so einiges.



Viele Grüße
Bilder zu meinem Projekt: ParSim

Crazy007

Treue Seele

Beiträge: 186

Wohnort: Tirol

  • Private Nachricht senden

4

04.09.2012, 22:13

Ich schwör: ich hatte gerade vor 10min die gelcihe Idee :D
Dann mal viel Glück und hoffentlich kannst du uns bald erste fortschritte zeigen!
P.S.: Darf ich beta-testen? (Haha musste sein :D)
Der Error sitzt meistens vor dem Bildschirm! :D

5

06.09.2012, 08:45

Hi,

Das Erstellen einer 3D, ist zwar einfach, mit Hilfe von Riemers Tutorial. Leider gelingt mir das Texture-Mapping nicht.
Das Tutorial ist für eine Alte Version, von Vertex-Shader und Pixel-Shader :(

Ob sich noch jemand von der Idee begeistern lässt?

Falls nicht, so wird es etwas dauern, wenn ich es überhaupt hinbekomme.

Oder hat kennt jemand ein gutes Framework für eine 3D Map? In C# am besten XNA..?

LG
Bilder zu meinem Projekt: ParSim

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

06.09.2012, 10:17

Du willst dieses Spiel auf die Beine stellen und da das Tutorial zu Terrains bei dir nicht funktioniert glaubst du dass du es nicht schaffst? ;) Wenn das schon so ein großes Problem ist, dann wirst du bei deinem Spiel noch ganz andere Probleme bekommen. Bei dem Tutorial von Riemer wird keine ältere Shader Version benutzt. Das ist die selbe wie bei XNA 4. Irgendwo musste man glaube ich was anpassen. Das war aber nicht im Shader. Mach einen Thread mit deinem Problem auf und dann können wir gucken. Ansonsten gibt es hier aber auch andere Threads zu Heightmaps etc. Am besten ist wenn du verstehst wie es abläuft und dann selbst baust.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

7

06.09.2012, 11:16

Zitat

Du willst dieses Spiel auf die Beine stellen und da das Tutorial zu Terrains bei dir nicht funktioniert glaubst du dass du es nicht schaffst? Wenn das schon so ein großes Problem ist, dann wirst du bei deinem Spiel noch ganz andere Probleme bekommen.
Die Spiel-Engiene läuft ja schon so weit. Alles schön gekapselt und objektorientiert. Wird leicht mit einer guten Grafik zu verbinden sein.


Für mich ist Grafikprogrammierung absolutes Neuland. Das ist der Knackpunkt. Ich könnte da Hilfe brauchen. Somit also hier der Fehler:


Quellcode

1
Fehler  1   Errors compiling C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1Content\Series4Effects.fx:error X3539: ps_1_x is no longer supportedC:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1Content\Series4Effects.fx(117,23): ID3DXEffectCompiler::CompileEffect: There was an error compiling expressionID3DXEffectCompiler: Compilation failed    C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1Content\Series4Effects.fx    117 23  WindowsGame1



Also, in der.fx Date ändere ich die Versionsnummer. Der Fehler verschwindet, aber es gibt viele Fehler in der Draw-Funktion.

Quellcode

1
Fehler  4   Die beste Übereinstimmung für die überladene Microsoft.Xna.Framework.Graphics.VertexDeclaration.VertexDeclaration(params Microsoft.Xna.Framework.Graphics.VertexElement[])-Methode hat einige ungültige Argumente.  C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    83  40  WindowsGame1Fehler  1   Der Name "VertexElementMethod" ist im aktuellen Kontext nicht vorhanden.    C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    23  73  WindowsGame1Fehler  2   Der Name "VertexElementMethod" ist im aktuellen Kontext nicht vorhanden.    C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    24  87  WindowsGame1Fehler  3   Der Name "VertexElementMethod" ist im aktuellen Kontext nicht vorhanden.    C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    25  89  WindowsGame1Fehler  6   2-Argument: Kann nicht von "Microsoft.Xna.Framework.Graphics.VertexElement[]" in "Microsoft.Xna.Framework.Graphics.VertexElement" konvertiert werden.   C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    83  70  WindowsGame1Fehler  5   1-Argument: Kann nicht von "Microsoft.Xna.Framework.Graphics.GraphicsDevice" in "Microsoft.Xna.Framework.Graphics.VertexElement" konvertiert werden.    C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    83  62  WindowsGame1Fehler  7   "Microsoft.Xna.Framework.Graphics.VertexBuffer" enthält keinen Konstruktor, der 3-Argumente akzeptiert.    C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    189 35  WindowsGame1Fehler  13  "Microsoft.Xna.Framework.Graphics.VertexBuffer" enthält keine Definition für "SizeInBytes", und es konnte keine Erweiterungsmethode "SizeInBytes" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.VertexBuffer" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    240 54  WindowsGame1Fehler  14  "Microsoft.Xna.Framework.Graphics.IndexBuffer" enthält keine Definition für "SizeInBytes", und es konnte keine Erweiterungsmethode "SizeInBytes" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.IndexBuffer" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)   C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    241 54  WindowsGame1Fehler  11  "Microsoft.Xna.Framework.Graphics.GraphicsDevice" enthält keine Definition für "Vertices", und es konnte keine Erweiterungsmethode "Vertices" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.GraphicsDevice" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)   C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    236 24  WindowsGame1Fehler  12  "Microsoft.Xna.Framework.Graphics.GraphicsDevice" enthält keine Definition für "VertexDeclaration", und es konnte keine Erweiterungsmethode "VertexDeclaration" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.GraphicsDevice" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    238 24  WindowsGame1Fehler  8   "Microsoft.Xna.Framework.Graphics.GraphicsDevice" enthält keine Definition für "RenderState", und es konnte keine Erweiterungsmethode "RenderState" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.GraphicsDevice" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    211 20  WindowsGame1Fehler  15  "Microsoft.Xna.Framework.Graphics.EffectPass" enthält keine Definition für "End", und es konnte keine Erweiterungsmethode "End" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.EffectPass" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    244 22  WindowsGame1Fehler  10  "Microsoft.Xna.Framework.Graphics.EffectPass" enthält keine Definition für "Begin", und es konnte keine Erweiterungsmethode "Begin" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.EffectPass" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    234 22  WindowsGame1Fehler  16  "Microsoft.Xna.Framework.Graphics.Effect" enthält keine Definition für "End", und es konnte keine Erweiterungsmethode "End" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.Effect" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    246 20  WindowsGame1Fehler  9   "Microsoft.Xna.Framework.Graphics.Effect" enthält keine Definition für "Begin", und es konnte keine Erweiterungsmethode "Begin" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.Effect" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    231 20  WindowsGame1



Dieser Thread hilft etwas. Aber es reicht nicht :(
http://blogs.microsoft.co.il/blogs/groze…an-example.aspx


Wie sollte ich weiter vorgehen?

LG
Bilder zu meinem Projekt: ParSim

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

06.09.2012, 11:42

http://www.riemers.net/eng/Tutorials/XNA/Csharp/series1.php Dieses Tutorial? Dort wird aber Shaderversion 2.0 verwendet und nicht 1.0.
Deine Fehlermeldung kann ich auch nicht ganz verstehen. Die Formatierung ist schrecklich und so ist es kein Spaß da durch zu checken;)
Aber wenn du mit dem Tutorial nicht klar kommst, dann überleg dir doch was gemacht wird, bzw was du machen musst.
Du erstellst dir ein Grid/Gitter aus Dreiecken. Das macht er im Tutorial ja auch. Das solltest du versuchen zu verstehen, das ist wichtig. Danach musst du dann nur noch deine Gitterpunkte auf der Höhenachse verschieben. Wo du die Höheninformationen her nimmst ist eigentlich egal. Du kannst eine Heightmap erstellen, oder die Daten zufällig erzeugen. Du kannst sie auch gest im Code haben oder aus einer Datei laden. Die Höhe musst du nicht unbedingt über den Shader verändern. Du kannst auch direkt beim erzeugen des Gitters die passende Höhe einsetzen, oder direkt in einem zweiten Schritt die Höhe anpassen. Das mit dem Shader macht Sinn, wenn du die Werte zwischendurch verändern willst, da die Höhe jedes mal neu bestimmt wird. Versuch dich vielleicht erst an einer Version ohne Shader.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

9

06.09.2012, 11:55

Hi,

Zitat

http://www.riemers.net/eng/Tutorials/XNA/Csharp/series1.php Dieses Tutorial? Dort wird aber Shaderversion 2.0 verwendet und nicht 1.0.
Ne das geht alles.
dies macht Probleme:
http://www.riemers.net/eng/Tutorials/XNA/Csharp/series4.php


Zitat

Deine Fehlermeldung kann ich auch nicht ganz verstehen. Die Formatierung ist schrecklich und so ist es kein Spaß da durch zu checken;)
Ja ich weiß. Ich versuche die Fehler peu-a-peu zu beheben. Falls was übrig bleibt melde ich mich ;)

Das mit den Drecken der Höhenachse usw ist alles so weit gar kein Problem. :D


Zitat

Das mit dem Shader macht Sinn, wenn du die Werte zwischendurch verändern willst, da die Höhe jedes mal neu bestimmt wird. Versuch dich vielleicht erst an einer Version ohne Shader.
Ja ich werde sie im Spiel verändern müssen.

Vielen Dank so weit.
Bilder zu meinem Projekt: ParSim

10

06.09.2012, 12:26

Kann jemand mir erklären wie ich das hinbekomme, alles andere geht jetzt scheinbar.

C#-Quelltext

1
2
3
4
5
6
private void DrawTerrain(Matrix currentViewMatrix)        {            effect.CurrentTechnique = effect.Techniques["Colored"];            Matrix worldMatrix = Matrix.Identity;            effect.Parameters["xWorld"].SetValue(worldMatrix);            effect.Parameters["xView"].SetValue(currentViewMatrix);            effect.Parameters["xProjection"].SetValue(projectionMatrix);
            effect.Parameters["xEnableLighting"].SetValue(true);            effect.Parameters["xAmbient"].SetValue(0.4f);            effect.Parameters["xLightDirection"].SetValue(new Vector3(-0.5f, -1, -0.5f));
            //effect.Begin();            foreach (EffectPass pass in effect.CurrentTechnique.Passes)            {                //pass.Begin();
                //device.Vertices[0].SetSource(terrainVertexBuffer, 0, VertexPositionNormalColored.SizeInBytes);                device.SetVertexBuffer(terrainVertexBuffer);                device.Indices = terrainIndexBuffer;                //device.VertexDeclaration = terrainVertexDeclaration;
                int noVertices = terrainVertexBuffer.SizeInBytes / VertexPositionNormalColored.SizeInBytes;                int noTriangles = terrainIndexBuffer.SizeInBytes / sizeof(int) / 3;                device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, noVertices, 0, noTriangles);
                //pass.End();            }            //effect.End();        }



Bleiben "nur" 2 Fehlermeldungen.

Quellcode

1
2
3
4
5
6
Fehler  1   "Microsoft.Xna.Framework.Graphics.VertexBuffer" enthält keine Definition für "SizeInBytes", und es konnte keine Erweiterungsmethode "SizeInBytes" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.VertexBuffer" akzeptiert. 
(Fehlt eine Using-Direktive oder ein Assemblyverweis?)  C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    242 54  WindowsGame1


Fehler  2   "Microsoft.Xna.Framework.Graphics.IndexBuffer" enthält keine Definition für "SizeInBytes", und es konnte keine Erweiterungsmethode "SizeInBytes" gefunden werden, die ein erstes Argument vom Typ "Microsoft.Xna.Framework.Graphics.IndexBuffer" akzeptiert. 
(Fehlt eine Using-Direktive oder ein Assemblyverweis?)  C:\Users\win7\Desktop\CivSim\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs    243 54  WindowsGame1




Achja, hier mal ein Blick auf die Straßen einer simulierten Stadt! Keine Texturen kein 3D...
Bilder zu meinem Projekt: ParSim

Werbeanzeige

Ähnliche Themen