[Projekt] CyberDive (MARPG)

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Nachdem ich mich erste Stunden in das Thema Klima eingelesen habe, könnte ich eine Lösung für mein Kreisabhängigkeitsproblem haben:
Ein ganz strikter Top-Down-Ansatz. Ich versuche also, alle Klimaeinflüsse zu identifizieren und sortiere sie quasi nach der Stärke ihres Einflusses. Es werden dann nach und nach alle Einflüsse berechnet, wobei jeweils nur die Klimaeinflüsse auf Abhängigkeiten getestet werden, die eine höhere Stärke haben.

Stärkster Klimaeinfluss: Die Sonne.
Die Stärke der Sonneneinstrahlung hängt direkt mit dem Winkel zusammen, unter der die Strahlen auf die Erde treffen. Je steiler der Winkel, desto mehr Energie trifft pro Fläche auf die Erde, desto stärker kann die Erde dort erwärmt werden. Die Erdachse steht dabei nicht direkt senkrecht auf der Erdumlaufbahn, sodass Bereiche der Erde an verschiedenen Positionen im Jahr einen unterschiedlichen Winkel zur Sonne haben. Dieser Effekt heißt Ekliptik und beträgt bei unserer Erde ca. 23,4° Achsenabweichung zur Normale.

Zweitstärkster Einfluss: Planetarische Zirkulation.
Die Nord- und Südpole sind am kältesten, dort sinkt also kalte Luft ab. Die Äquatorregionen sind am wärmsten, dort steigt warme Luft auf. Dies ergibt einen Luftkreislauf. Allerdings erwärmen sich die kalten Winde von den Polen, sodass diese bereits bei ca. 60° wieder aufsteigen. Die warmen Lüfte der Äquatorregionen kühlen auch schneller wieder ab, sodass diese bei ca. 30° wieder absinken. Dazwischen gibt es noch ein gegenrotierendes System. Aufgrund der Corioliskraft werden Winde auf der Nordhalbkugel nach Rechts und auf der Südhalbkugel nach Links abgelenkt.
Die Zone in der Äquatorregion heißt ITC, die bei 30° STJ und die bei 60° PFJ. Die genaue Lage der Zonen schwankt abhängig von der Neigung zur Sonne (Jahreszeitenabhängigkeit). Dabei wird die ITC quasi etwas von Landmassen "angezogen", da diese die Sonnenenergie schneller wieder abstrahlen.

Zusammen ergibt das folgende Karten:
Klimacollage
Klimacollage
Erläuterung:
  • Links:
    • Plattentektonik
    • Reliefkarte
    • Reliefkarte mit Plattengrenzen und Hotspot-Vulkanen
    • Zenit der Sonne in einem Jahr (von links Januar, bis rechts Dezember)
  • Rechts:
    Zirkulationsbereiche und Winde, von Oben nach Unten: März, Juni, September, Dezember
    • Rot: Innertropische Konvergenzzone (ITC)
    • Gelb: Subtropen-Jetstream (STJ)
    • Türkis: Polarfront-Jetstream (PFJ)
    • Weiß: Windrichtung (keine Stärken)
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4258
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] CyberDive (MARPG)

Beitrag von Chromanoid »

Sieht ziemlich abgefahren aus. Realisierst du das ganze eigentlich mit Heuristiken und hast du spezielle Simulationsverfahren? Mich würden mal deine Quellen interessieren. Wie sieht es mit Planeten aus, deren Rotationsachse zur Sonne zeigt, oder Planeten mit mehreren Sonnen etc.?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Chromanoid hat geschrieben:Sieht ziemlich abgefahren aus.
Danke :)
Chromanoid hat geschrieben:Realisierst du das ganze eigentlich mit Heuristiken und hast du spezielle Simulationsverfahren?

Du bist mir schon dicht auf der Spur. Mein "Trick" ist es, sich die natürlichen Prozesse anzugucken. Wenn ich die Ursachen für Phänomene kenne, dann versuche ich diese mit so wenig Aufwand wie möglich, so plausibel wie möglich zu simulieren oder zu errechnen. Dabei orientiere ich mich an den natürlichen Prozessen, nehme aber eigene Anfangsbedingungen.

Zum Beispiel die Plattentektonik:
Die Meisten nehmen es als gegeben an, dass es die tektonischen Platten gibt. Der genaue Entstehungsprozess und die genauen Bewegungen sind noch weitestgehend unbekannt, der Plattendrift basiert wahrscheinlich auf Konvektionsströmungen im inneren der Erde, aber da bekommt man auch keine genaueren Daten. Wenn man allerdings die Daten der Platten hat, dann sind die darauf basierenden Effekte ziemlich klar: Platten schieben sich ineinander, übereinander und auseinander und bilden dabei Meeresspalten, Gebirge und Vulkanismus.
Die Anzahl, Form und Position der Platten errechne ich also zufällig. Dabei habe ich einige plausible Schranken für die Anzahl (sagen wir n) eingebaut. Die Form und Position generiere ich dann wie folgt: ich nehme mir n zufällige Punkte auf meiner Karte und errechne deren Voronoi-Diagramm (mit ein paar kleinen Tricks, damit die Voronoi-Zellen nicht unbeschränkt sind). Jede Zelle ist dann eine Platte. Die ist allerdings noch relativ langweilig, also habe ich jede Kante noch rekursiv unterteilt, bis diese kleiner als ca. 350km sind. Das Verfahren habe ich quasi "erraten", es gibt keinen Grund warum die Platten so generiert werden müssen. Allerdings liefert es vernünftige Ergebnisse und da niemand genau weiß, wie die entstehen, ist das momentan auch noch vollkommen legitim.
Jetzt habe ich also alle Platten mitsamt ihrer Kanten und Form. Da auch die Geschwindigkeiten unbekannter Herkunft sind, werden diese vollkommen zufällig (innerhalb gewisser Grenzen) generiert. Ich habe also quasi aus dem Nichts meine Anfangbedingungen geschaffen, die auch niemand sonst erklären konnte.
Die Entstehung von Gräben und Gebirgen ist nun allerdings wesentlich genauer bekannt, also kann ich mich dort besser an den realen Sachverhalten orientieren (zB. Konvergenz zweier kontinentaler Platten => Faltengebirge).
Chromanoid hat geschrieben:Mich würden mal deine Quellen interessieren.

http://de.wikipedia.org/wiki/Plattentektonik
http://de.wikipedia.org/wiki/Gebirgsbildung
http://de.wikipedia.org/wiki/Klima
+ alle Folgelinks bis einschließlich Tiefe 3 :D

Ne im Ernst, ich habe mich zu über 95% an Wikipedia orientiert. Ich versuche die Sachverhalte und Mechanismen zu verstehe und denke mir dann eigene Approximations- und Simulationsverfahren dazu aus.
Chromanoid hat geschrieben:Wie sieht es mit Planeten aus, deren Rotationsachse zur Sonne zeigt, oder Planeten mit mehreren Sonnen etc.?
Mein Algorithmus sieht vor, zuerst eine Oberfläche zu generieren, dann ein Klima und daraus Geozonen. Jede einzelne Geozone bekommt dann einen Generationsalgorithmus für die genaun Oberflächenstrukturen, Verhältnisse, Besonderheiten etc. Dieses allgemeine Prinzip ist auf so gut wie alle Planeten anwendbar.
Die bereits implementierten Erzeugungsalgorithmen basieren allerdings auf einigen Annahmen. Zu allererst braucht der Planet Wasser und eine Plattentektonik, welches beides bei vielen Planeten nicht gegeben ist. Dann benötige ich entweder eine Ekliptik von sagen wir maximal 45°, da es sonst nicht zu einer ITC-Zone kommt und die Windverhältnisse sich irgendwie anders ergeben müssen. Außerdem muss die Rotationsgeschwindigkeit im Verhältnis zur Größe ähnlich wie bei der Erde sein, da es sonst weder den PFJ noch den STJ gibt. Je genauer ich also bekannte Klimaphänomene betrachte, desto ähnlicher müssen die Verhältnisse der, der Erde entsprechen. Da ich momentan einen erdähnlichen Planeten haben will (die genauen Storydetails dazu sind noch unklar), reicht mir das. Wenn ich später Lust habe und/sowie genügend positive Resonanz von euch kommt, kann ich ja meine Algorithmen entsprechend anpassen, dass ich auch elementar andere Planeten erzeugen kann. Ich hatte heute z. B. auch mit der Idee gespielt mehrere Monde zu haben, welche dann natürlich alle Einfluss auf die Gezeiten hätten. Das führt allerdings zum N-Körper-Problem und ich habe (noch) keine Ahnung wie deren Umlaufbahnen aussehen.



Zu meinem Fortschritt:

Momentan suche ich an einer Möglichkeit das globale Förderband (zu dem z. B. auch der Golfstrom gehört) zu simulieren. Dies erweist sich als sehr trickreich, da die genauen Prozesse ziemlich unbekannt sind (die Elemente Konvektion, Auftrieb/Abtrieb, Wärmeausgleich, Dichteausgleich, Salzkonzentrationsausgleich sind zwar bekannt, die genaue Form der Ströme lässt sich allerdings nicht einfach so daraus ableiten). Ich denke es wird darauf hinauslaufen, dass ich Karten in der Größenordnung von 400x200 oder 800x400 erstelle und auf denen eine kleine Flüssigkeitssimulation laufen lasse. Ich bin mir über die Details noch nicht im Klaren. Einfach ignorieren kann ich dieses Phänomen aber auch nicht, es stellt (nach dem Sonneneinfluss und der globalen Zirkulation) den drittgrößten Klimafaktor dar.
Morgen bin ich auch erstmal den ganzen Tag unterwegs, vielleicht bekomme ich ja den Kopf frei und mir eröffnet sich eine einfachere Lösung. Heute habe ich einen neuen Laptop mit einer GTX 560M bekommen, sowie 120Hz FullHD mit NVidia Shutterbrille. 3D-Planet, ich komme :D - bzw. :ugeek:
joeydee
Establishment
Beiträge: 1044
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] CyberDive (MARPG)

Beitrag von joeydee »

Deine Windpfeile zeigen eigentlich schon den richtigen Ansatz:
- einzelne Zellen, die einen Richtungsvektor haben
- jede Zelle kann einen Hotspot beinhalten (auf- oder absteigende Strömung)
- über mehrere Iterationen:
-- die Richtungsvektoren n zufällig ausgewählter Zellen jeweils mit den Richtungsvektoren der Nachbarn mitteln
-- wenn eine Nachbarzelle einen Hotspot beinhaltet, wird außerdem eine dorthin gerichtete Strömung (absteigend) oder davon weg gerichtete Strömung (aufsteigend) addiert.
-- wenn eine Zelle eine Küstenlinie enthält, lass die Normale mit in die Richtung einfließen
-- entsprechend kannst du noch Wassertemperatur, Salzgehalt etc. als Information mittransportieren, jeweils gewichtet am Richtungsvektor der Nachbarn, dann hast du deine Klimafaktoren für jeden Punkt.

Hotspots platzierst du erstmal zufällig, ggf. kannst du wissenschaftliche Erkenntnisse für geeignete Kandidaten einfließen lassen (Klimazonen, Landmassen), aber das Ganze ist ja sowieso so komplex, dass "zufällig" wohl ausreicht.

Ich denke, Tiefenströmungen kannst du auch erstmal ignorieren, das dürfte auch so bereits ein glaubwürdiges Bild ergeben. Ansonsten kannst du einfach die Hotspotströmungen in der Tiefe umkehren und eine entsprechend andere Küstenlinie (Kontinentalschelf) voraussetzen. Interessant wird es, wenn das Schelf dann zusätzlich für neue aufsteigende Hotspots verantwortlich wird...

Hab mir mal erlaubt wenigstens das mit den Hotspots auf die Schnelle in Flash auszuprobieren, hier der AS3-Prototyp falls du an Details interessiert bist.

Code: Alles auswählen

import vr.Vector3D;

var w:int=40;
var h:int=20;
var drawSize:Number=15;

var cells:Array=new Array(h);
generateField();
placeHotspots();
stage.frameRate=60;
stage.addEventListener(Event.ENTER_FRAME,mainloop);

//-------------------------------

function generateField(){
	for(var py:int=0;py<h;py++){
		cells[py]=new Array(w);
		for(var px:int=0;px<w;px++){
			cells[py][px]={
				direction:new Point(0,0),
				hotspot:0
			};
			cells[py][px].direction.normalize(1);
		}
	}
}

function placeHotspots(){
	for(var i:int=0;i<20;i++){
		var px:int=Math.floor(Math.random()*w);
		var py:int=Math.floor(Math.random()*h);
		cells[py][px].hotspot=(Math.random()-0.5)*20;
	}
}


function mainloop(event:Event){
	for(var i:int=0;i<200;i++){
		var px:int=Math.floor(Math.random()*w);
		var py:int=Math.floor(Math.random()*h);
		updateCell(px,py);
	}
	render();
}

function updateCell(px,py){
	var cell:Object=cells[py][px];
	var nb:Object;
	var r:int=2;
	var rq:Number=Math.pow(r*2+1,2)
	for(var dx:int=-r;dx<=r;dx++){
		for(var dy:int=-r;dy<=r;dy++){
			var rx:int=(px+dx+w)%w;
			var ry:int=py+dy;
			if(rx>=0 && rx<w && ry>=0 && ry<h)updateBy(cell,cells[ry][rx],dx,dy);
		}
	}
	cell.direction.normalize(1);
}

function updateBy(cell:Object,nb:Object,dx,dy){
	var f:Number=1/(Math.sqrt(dx*dx+dy*dy)+1);
	cell.direction.x+=nb.direction.x*f;
	cell.direction.y+=nb.direction.y*f;
	if(nb.hotspot!=0){
		cell.direction.x-=nb.hotspot*dx*f;
		cell.direction.y-=nb.hotspot*dy*f;
	}
}

function render(){
	var sh:Number=drawSize/2;
	this.graphics.clear();
	for(var py:int=0;py<h;py++){
		for(var px:int=0;px<w;px++){
			var cell:Object=cells[py][px];
			var cx:Number=px*drawSize+sh;
			var cy:Number=py*drawSize+sh;
			if(cell.hotspot!=0){
				if(cell.hotspot<0)this.graphics.lineStyle(2,0xCCCCFF);
				if(cell.hotspot>0)this.graphics.lineStyle(2,0xFFCCCC);
				this.graphics.drawCircle(cx,cy,Math.abs(cell.hotspot));
			}
			this.graphics.lineStyle(1,0xCCCCCC);
			//this.graphics.drawRect(px*size,py*size,size,size);
			this.graphics.drawCircle(cx,cy,1);//+cell.direction.x*sh//+cell.direction.y*sh
			this.graphics.moveTo(cx,cy);
			this.graphics.lineTo(cx+cell.direction.x*drawSize*1.5,cy+cell.direction.y*drawSize*1.5);
			
		}
	}
}
joggel

Re: [Projekt] CyberDive (MARPG)

Beitrag von joggel »

My 2 cent:
Schönes Projekt und die Bilder sehen auch schon gut aus!
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

joeydee hat geschrieben:Deine Windpfeile zeigen eigentlich schon den richtigen Ansatz:
- einzelne Zellen, die einen Richtungsvektor haben
- jede Zelle kann einen Hotspot beinhalten (auf- oder absteigende Strömung)
- über mehrere Iterationen:
-- die Richtungsvektoren n zufällig ausgewählter Zellen jeweils mit den Richtungsvektoren der Nachbarn mitteln
-- wenn eine Nachbarzelle einen Hotspot beinhaltet, wird außerdem eine dorthin gerichtete Strömung (absteigend) oder davon weg gerichtete Strömung (aufsteigend) addiert.
-- wenn eine Zelle eine Küstenlinie enthält, lass die Normale mit in die Richtung einfließen
-- entsprechend kannst du noch Wassertemperatur, Salzgehalt etc. als Information mittransportieren, jeweils gewichtet am Richtungsvektor der Nachbarn, dann hast du deine Klimafaktoren für jeden Punkt.

Hotspots platzierst du erstmal zufällig, ggf. kannst du wissenschaftliche Erkenntnisse für geeignete Kandidaten einfließen lassen (Klimazonen, Landmassen), aber das Ganze ist ja sowieso so komplex, dass "zufällig" wohl ausreicht.

Ich denke, Tiefenströmungen kannst du auch erstmal ignorieren, das dürfte auch so bereits ein glaubwürdiges Bild ergeben. Ansonsten kannst du einfach die Hotspotströmungen in der Tiefe umkehren und eine entsprechend andere Küstenlinie (Kontinentalschelf) voraussetzen. Interessant wird es, wenn das Schelf dann zusätzlich für neue aufsteigende Hotspots verantwortlich wird...
Hi joeydee,
vielen Dank für deinen Vorschlag. Allerdings gibt es folgendes Problem: Die Oberflächenströmungen hängen hauptsächlich von der Wassertemperatur und nur sekundär von dem Wind und der Salzkonzentration ab (jedenfalls meiner Recherche nach zu urteilen).
Hinzu kommt, dass man wohl relativ genau sagen kann, wo Wasser aufsteigt und absinkt (up/downwelling), sodass zufällig dort vielleicht nicht der beste Weg ist.

Mein Ansatz ist jetzt folgender:
Ich erstelle 3 Hilskarten: Windkarte (über ein Jahr gemittelt), Sonneneinstrahlung (über ein Jahr gemittelt), Salzgehalt (pseudozufällig über die tektonischen Platten, keine Ahnung wie ich den Salzgehalt sonst errechnen soll).
Dann erstelle ich die drei Strömungskarten Oberflächenströmung, Tiefenströmung und Wasser-Auf/Abstieg. Oberflächenströmung wird über gewichtete Kräfte von Sonneneinstrahlung, Wind und Salzgehalt initialisiert, Tiefenströmung durch Salzgehalt und Auf/Abstieg durch entsprechende Berechnungen der Rotationskräfte und Dichten.
Diese drei Karten würde ich dann ein paar "Generationen" lang simulieren, bis diese einen Kreislauf bilden.
Ich habe mich an diesem Punkt allerdings erstmal dazu entschlossen, nur die Oberflächenströmung zu betrachten und diese zu simulieren. Dies ist zwar leider noch kein richtiger Kreislauf, aber mit der daraus errechneten Wasseroberflächentemperaturkarte kann ich erstmal arbeiten. Später werde ich mich um eine bessere Simulation kümmern, aber ich möchte erstmal etwas weiter kommen.
Wasseroberflächentemperatur und Hilfskarten
Wasseroberflächentemperatur und Hilfskarten
Erläuterung:
  • Links-Oben: Windkarte
  • Links-Unten: Oberflächenströmung (Initialwerte)
  • Rechts-Oben: Salzkonzentration
  • Rechts-Unten: Wasseroberflächenkonzentration
Die Windkarte und die Oberflächenströmung haben eigentlich eine Auflösung von 4000x2000 je Karte, deswegen kann man die einzelnen Pfeile nicht mehr so genau erkennen. Ich wollte allerdings keine 14MB Kartenmaterial hochladen.

Der nächste Schritt ist die Niederschlagskarte. Danach sollte ich die erste Geozonen-Einteilung vornehmen können.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] CyberDive (MARPG)

Beitrag von Zudomon »

Huhu! Ich möchte ja kein Spielverderber sein. Das ist alles echt schon sehr krass, was du machst. Aber ich befürchte, letztendlich hast du vielleicht eine ziemlich realistische Planetensimulation, aber aus dem eigentlichen Spiel wird nichts. Vielleicht wäre es besser, wenn du den umgekehrten Weg gehen würdest. Erstmal eine Ebene, auf der du verschiedene Spieler realisierst ( du wolltest doch eigentlich ein MMORPG machen ). Und dann anfängst, da immer komplexer zu werden. So wie du es jetzt machst, arbeitest du zwar auf logischer Ebene deine Punkte ab (also von global zu lokal), aber ich glaube, dadurch wird dein System immer verstrickter und am Ende bleibt kaum noch eine Möglichkeit, wirklich was spielbares daraus zu machen.
Ein schlichtes Multiplayerspiel, in dem Benutzer Interargieren können bringt dich näher an dein eigentliches Ziel, als die beste Planetensimulation in der reale Planeten gerendert werden, und selbst das haben hier nur wenige geschafft bisher.
Ich befürchte einfach, dass du dich verfängst. Du hast ja jetzt schon einiges zu bieten... aber wie geht es weiter? Du musst Städte, Infrastrukturen, Flora, Ökosysteme, Lebewesen und was auch immer einbauen.
Also natürlich ist das alles seeeeehr komplex und egal von welcher Seite du ran gehst, bleibt die Schwierigkeit die gleiche, aber bei dem von mir beschrieben weg könntest du an jeder Stelle abbrechen und hättest dennoch dein Hauptziel erreicht, nämlich ein Multiplayer Game (Ansonsten hättest du vielleicht auch beim Universum und den Gestirnen ansetzen müssen, dem Sonnensystem und dem Erdorbit, um die Gezeiten nach zu bilden, Magnetgürtel für die Polarlichter, Atmosphäre die ja auch einen erheblichen Einfluss auf das Klima hat, das Erdinnere, was dann zu den magnetischen Polen führt usw.). :)

Aber im Endeffekt mache es so, wie du glaubst, dass es für dich am besten ist. Ich möchte dich nicht von deiner Idee abbringen. Man sieht hier nur leider immer so viele Projekte sterben. Ein so mächtiges Projekt, was du hier versuchst alleine zu stämmen, dessen gewaltige Ausmaße man so langsam erahnen kann, ist komplexer, als jedes Spiel, was ich kenne. Selbst Spore, an das es mich nun erinnert, würde ja nur Ansatzweise an das kommen, was du vor hast.

Das soll nicht demotivierend klingen! Aber meine Befürchtung ist, dass du dich selbst durch diese Überforderung demotivieren wirst. Sobald du merkst, es können keine zig Millionen Bäume und Pflanzen berechnet werden und auch Metropolen brauchen Ressourcen. Dagegen sind 4000 x 2000 Pixel-Karten wohl noch das harmloseste.
Und Krishty flashed hier schon seine Grafikkarte mit Scattering, dass im Auge statt findet.
Also eventuell wirst du eine andere Lösungsstrategie brauchen. :|
Die Frage ist ebend immer, was braucht man, damit der SPIELER letztendlich von deiner Realität überzeugt wird. Du kannst die krassesten Systeme haben, um deine Umgebung zu erzeugen, ist dein Licht aber hinterher nicht realistisch genug, dann ist alle Realität dahin.
Warum machst du dir überhaupt solche extremen Ausmaße zugrunde gelegt? Ohne Hilfsmittel, wie weit kann ein Mensch da gehen am Tag? Und jeder, der MMORPGs spielt ist da schon von den Entfernungen nicht gerade angetan und empfindet es als langweilig. Man wird deine Kontinente nicht mal im Flugzeug richtig wahrnehmen. Ich glaube einfach, du schießt mit Atombomben auf Spatzen. Schau dir mal einen Otto-Normal-Mensch in der Wirklichkeit an. Vielleicht deine kleine Cousine (keine Ahnung, ob zu zufällig eine hast), die wird zwar ein paar hundert "Freunde" im Facebook haben und die ganze Zeit mit dem Handy online sein, aber die wird bestimmt nicht durch die Gegend laufen um zu sehen, wo Hügel und Gebirge sind. Wo Ströme im Meer entlang laufen usw. . Da gibt es nur einen Landschaftshintergrund, Tag, Nacht, Sonnenschein, Bewölkt, Regen, Schnee, Blitz und Donner. Damit hast du garantiert schon 90% der klimatischen Wahrnehmung der Spieler abgedeckt.
Am Ende kannst du eh nicht garantieren, dass jeder Grashalm realistisch gewachsen ist. Jeder Trick, alles was du faken kannst, um die Illusion trotzdem aufrecht zu erhalten, bringt dir Resourcen und Rechenzeit für andere Dinge.

Nimm mal Bob Ross. :D
Der nimmt tupft in Sekunden einen Stamm und die Äste eines Baumes dahin, dann nimmt er einen dickeren Pinsel und kleckst ein paar mal aufs Bild und in der Vorstellung es Betrachters sieht es aus, als ob er abertausende Blätter dahin malt. Er malt in ner halben Stunde ganze Landschaften mit Wäldern, und ich würde nicht sagen, dass die nicht ganz schön real aussehen.

[offtopic] JETZT HAB ICHS! SO FUNKTIONIERT UNLIMITED DETAIL!! Bruce hat da nen Bob Ross im Laptop sitzen! [/offtopic]
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Hi Zudomon,

ich verstehe deinen Punkt und werde ihn auch in Teilen berücksichtigen. Allerdings habe ich mir folgende Gedanken dazu gemacht:
  • Ich bezweifle noch, dass das eine Überforderung ist. Ich lese mich in die Materie ein und denke mir performante mini-(Simulations-)Heuristiken aus. Das hat bis jetzt gut geklappt (auch in meinem sonstigen Studium) und z. B. die thermohaline Zirkulation war an sich schon nicht unbedingt trivial.
  • Meine Idee sieht gar nicht vor, dass ich alles sofort generiere. Die Makro-Einflüsse müssen natürlich alle errechnet sein, das geht bis zu den Geozonen. Sobald ich meine Geozonen habe, wird noch einmal deren Landform errechnet und in die Karte eingepasst und dann ist die Weltkarte soweit fertig. Mehr wird nicht vorher (von der Geographie) errechnet. Solange ich also diese ganzen Teile in - sagen wir - unter einer Minute berechne, ist alles in Ordnung.
  • An sich sind diese Ausmaße nicht für dieses Spiel nötig und ich bin auch mir auch ziemlich sicher, dass im Endeffekt der eigentliche Kern des Spieles in den Städten stattfindet und somit lokal sehr begrenzt ist. Trotzdem wir es immer wieder Aufträge geben, die - wenn man diese machen möchte - den Spieler aus der Stadt raus, in die Wildnis oder andere Gebiete der Welt verschlagen. In der Welt ist ja jeder Quadratmeter begehbar. Ich möchte eine große Vielfalt an möglichen Spielschauplätzen bieten, ohne den Spieler zu zwingen, diese zu besuchen. Der Grund, warum ich diese nicht einfach per Hand erstelle oder sonst wie zufällig generiere ist dabei folgender: In dem Spiel soll es eine Art "Nachfolger des Internets" geben, in dem man Informationen finden, handeln und klauen kann. Dazu gehören auch die ganzen geologischen Daten und Wettersysteme und da möchte ich schon ein abgeschlossenes Gesamtbild bieten.
  • Ich habe das Gefühl, dass dieser Ansatz im Endeffekt sogar schneller ist, als die Grafiken per Hand zu erstellen. Insbesondere bin ich kein Grafiker, kenne zwar die Grundzüge von Blender und Photoshop, aber um alleine solche Karten zu erstellen, geschweige denn richtige 3D-Landschaften, müsste ich viel mehr Geduld und Zeit in das Erlernen der entsprechenden Tools aufbringen, als bei meinem Ansatz. Ich bin Programmierer. Das befreit mich zwar nicht davon mir Gedanken über Graphik zu machen (Gras != 0x00ff00), wenn ich sie erstelle, aber meine Tools sind meine IDE und mein Compiler.
  • Diese Welten kann ich nicht nur für CyberDive, sondern in Teilen auch für diverse andere Spiele benutzen, die ich vielleicht noch schreiben möchte. Selbst kleine Spiele würden ja davon profitieren, wenn ich denen z. B. einen kleinen generierten Wüstenstreifen als Welt gebe. Ich kann diese Arbeit also auch sehr gut wiederverwenden.
  • Mein Vater hat meine bisherige Arbeit gesehen und mir gesagt, er will den Rest des Spiels nicht, ich soll ihm nur eine Version bauen, in welcher er mit Flugzeugen und Helikoptern durch die Welt fliegen kann. Einen Welt-Flugzeugsimulator quasi :D
  • Der wichtigste Punkt ist aber eigentlich folgender: Mir macht das einen riesigen Spaß. Ich finde das total toll, meine Geographiekenntnisse aufzufrischen und nachzuvollziehen, wie unser Planet funktioniert. Ich habe in den letzten Tage so viele Dinge über den Aufbau unseres Planeten gelernt und mir wurde zum ersten Mal bewusst, wie gut mein Erdkundeunterricht in der Oberstufe war. Das ist glaube ich auch der Grund, warum ich im Endeffekt wirklich so groß angefangen habe - weil es mich interessiert und mir Spaß bereitet. Während ich das alles programmiere, schreibe ich quasi mein "Design Document" in Form einer MindMap mit. Als ich mir Gedanken über die Regionen gemacht habe, die ich in meinem Spiel haben möchte, war dies erstmal eine Liste von Gebieten (Stadt, Steppe, Wüste, Wald, Berge und noch ein paar mehr). Eigentlich wollte ich die tatsächlich einfach irgendwie auf eine rechteckige Karte malen und dann davon ausgehend weitermachen. Dann habe ich mich allerdings in den Wikipediaartikeln vertieft und dann nahm besagte Euphorie Überhand und führte mich zu dem, was ich jetzt gemacht habe. Für das eigentliche Spiel ist die ganz genaue Aufteilung ja nicht so relevant, hauptsache, ich weiß, wo die Grenzen der Gebiete sind. Falls ich also keine Lust mehr auf die Geographie-Simulation habe, mache ich mich einfach direkt daran, die Gebiete auszuarbeiten und das Gameplay oder so anzufangen. Das könnte man später immer noch sinnvoll verknüpfen.
Mein Resume:
Ich werde erstmal mit meiner Planetensimulation weitermachen, mich allerdings beeilen und gröber simulieren, sodass ich schneller zu den Geozonen und den eigentlichen Gebieten komme. Und ich versuche, relativ zeitnah mit ersten Gameplay-Elementen anzufangen.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4258
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] CyberDive (MARPG)

Beitrag von Chromanoid »

Die Idee deines Vaters gefällt mir sehr. Eine Art Planetenerkundungssimulation ohne besondere Aufgaben. Gameplay ein bisschen a'la Endless Ocean. Wenn du auch Städte, Zivilisationen etc. generierst wäre es bestimmt witzig wenn man dort einfach unbemerkt herumlaufen kann, um sich alles anzuschauen. Man müsste dann natürlich dafür sorgen, dass es trotz Prozeduralität eine gewisse Abwechslung gibt.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Also ich denke die erste Tech-Demo wird darauf hinauslaufen, dass man sich den Planeten angucken kann, ohne mit ihm zu interagieren. Dabei wird diese erste Demo wohl noch keine Städte beinhalten.

Ist es bei prozeduralen Inhalten nicht einfacher, Abwechslung einzubauen, als wenn ein Designer (oder eine Armee) eine riesige Welt bauen soll?
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4258
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] CyberDive (MARPG)

Beitrag von Chromanoid »

Artificial Mind hat geschrieben:Ist es bei prozeduralen Inhalten nicht einfacher, Abwechslung einzubauen, als wenn ein Designer (oder eine Armee) eine riesige Welt bauen soll?
Für Meere und Kontinente mag das noch funktionieren, aber Kulturen und Lebensformen? Spore versucht ja was in dieser Richtung, aber so richtig abwechslungsreich erscheint mir das nicht. Was passiert wenn eine ganze "Armee" in einer virtuellen Welt ihr Unwesen treibt, sieht man gut an Second Life. Second Life ist so voller Kreativität und Fantasien, dass besagtes erkunden wirklich sehr spannend ist. So etwas prozedural zu erzeugen ist nicht möglich und es zeigt woran es prozeduralen Welten ohne "Armeen von Designern" zumindest noch sehr lange fehlen wird: Symbole der Kultur und des intelligenten Lebens, deren Ursprung in tausenden unterschiedlichen Gehirnen liegt.

BTW Um mal einen Enblick zu bekommen, wie groß die Welt von Second Life (immer noch) ist, bietet http://slurl.com/ eine Google Maps ähnliche Karte. Afaik ist jedes Kästchen übrigens ein Server...
Zuletzt geändert von Chromanoid am 03.09.2011, 15:05, insgesamt 1-mal geändert.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Point taken ;)

Ich tu mein bestes, das es nicht zu langweilig wird. Für das eigentliche Spiel ist ja auch geplant, dass der Spieler Wege und Mittel hat, die Welt zu beeinflussen (nicht Second Life oder Minecraft Style sondern über seine Handlung das Geschehen und Machtgefüge beeinflussen)
pUnkOuter
Establishment
Beiträge: 303
Registriert: 15.04.2002, 15:59

Re: [Projekt] CyberDive (MARPG)

Beitrag von pUnkOuter »

Kommt darauf an, was du unter Abwechslung verstehst. Es ist ziemlich schwierig, die "Prozeduren" so zu gestalten, dass sich "Highlights" bilden, also seltene Dinge, die man nirgendwo sonst so sieht, und dass diese Highlights auch noch einigermassen gleichverteilt sind (wer will schon 50 Planeten abklappern, bis er was Spannendes findet). Dies gilt auch fürs Terrain. Schau dir mal die Vielfalt der Erde an. Das Problem ist: diese Vielfalt ist viel zu weit verstreut. Eine Spielwelt muss das auf engen Raum konzentrieren, damit es dem Spieler nicht langweilig wird. Du musst also quasi Dinge wie die Niagara Fälle, den Zuckerhut, die Sahara, die Antarktis, die Fjorde von Norwegen, die Säulenberge von China, das Great Barrier Reef, den Amazonas-Dschungel, usw., in einer Distanz von wenigen Minuten Reisezeit ansiedeln.
Ein Zeiger ins Blaue ist wie ein Wegweiser nach <SEGFAULT>. Wenn du denkst, mein Name hat was mit abgefuckter Kleidung und bunten Haaren zu tun, dann kehr besser um.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Nachdem ich im Eilverfahren eine kleine Niederschlagssimulation eingebaut habe, habe ich alle Informationen beisammen, um die Klimazonen einzuteilen.
Klimazonen
Klimazonen
Erklärungen:
  • Links von Oben nach Unten: Relief, Wind, Niederschlag (Januar), Klimazonen
  • Rechts von Oben nach Unten: Tropen, Gemäßigte Breiten, Subtropen, Polarzone
  • Zonen:
    • Blau: Ozean
    • Dunkeltürkis: Ozean (eisbedeckt)
    • Weiß: Polarzone/Eiswüste
    • Türkis: Subpolarzone/Tundra
    • Violett: Kaltgemäßigte Zone
    • Grün: Warmgemäßigte Zone
    • Hellgrün: Humide Subtropen
    • Gelbgrün: Semiaride Subtropen
    • Orange: Aride Subtropen
    • Gelb: Tropische Wüste
    • Sandbraun: Tropische Savanne
    • Limonengrün: Tropischer Regenwald
Die Zonenkarte hat eine Größe von 400x200, wobei jeder Pixel einem Gebiet von ca. 100km x 100km entspricht.

Der nächste Schritt ist nun ein detaillierteres Relief. In Paint.NET kann ich gerade so ein 40000x20000 Bild erstellen, welches dann 3GB Ram frisst ... ich sollte mir eine Alternative überlegen :D
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4258
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] CyberDive (MARPG)

Beitrag von Chromanoid »

Vielleicht kannst du ja pro 100kmx100km pixel alle einflüsse so vorberechnen, dass du on demand Generieren kannst. Ansonsten vielleicht mal bei Open Street Map oder anderen GIS Tools reinschnuppern :)
Zuletzt geändert von Chromanoid am 04.09.2011, 21:22, insgesamt 2-mal geändert.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Genau das war der Plan. Ich _habe_ bereits die meisten Einflüsse für jedes Gebiet berechnet. Ich wollte nur mal eine genauere Reliefkarte erzeugen, aber die muss ich wohl stückeln *g*
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

So ein kleines Kurzupdate trotz Erkältung und Besuch bei den Eltern:
Ich habe nun 100km x 100km große Klima-Geozonen, welche sich in 10km x 10km große Mesozonen und 1km x 1km große Mikrozonen aufteilen. Das Klima wird dabei geeignet interpoliert.
Klimazonen (Auflösung: 10km x 10km, Mesozonen)
Klimazonen (Auflösung: 10km x 10km, Mesozonen)
Das die Ränder zum Wasser momentan seltsam aussehen weiß ich, das liegt daran, dass die Höhen noch nicht geeignet interpoliert werden, sondern über die Klimainterpolation laufen und somit versaut werden.
Die Auflösung ist 4000 x 1333 und soll mir nur erstmal zeigen, dass die Klimadaten richtig interpoliert werden. Außerdem werden die Meso/Mikrozonen bei Bedarf generiert und freigegeben, alle Mesozonen passen beispielsweise schon nicht mehr in den Arbeitsspeicher (bei x86).

Ich habe nun auch tatsächlich ein Bitmap erstellt bekommen, dass 1 Pixel = 1 Mikrozone Auflösung hat. Dies ist tatsächlich ein 40 000 x 13 000 Bitmap mit 2GB Größe. Ich musste es tatsächlich in kleinen Streifen generieren und dann manuell auf byte-Ebene mergen. Nun finde ich kein Programm, dass es mir in png konvertieren kann (Photoshop habe ich grade nicht installiert, Gimp kriegt nen Fehler, weil es 2 080 000 000 Byte nicht allokieren mag, Imagemagick hat einen ähnlichen Fehler, Paint.NET möchte das 3-5fache an Speicher haben bevor es arbeitet und damit kann ich momentan nicht dienen.) Das einzige Programm, dass es vernünftig (und flüssig) anzeigen kann, ist der Windows Photo Viewer, nachdem es 5GB working set bekommen hat.
Benutzeravatar
Krishty
Establishment
Beiträge: 8244
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] CyberDive (MARPG)

Beitrag von Krishty »

Irgendwo gibt es vom Gimp eine experimentelle x64-Version. Die ist genau so lahm wie Windows’ Fotoanzeige; mit der konnte ich aber letztens noch eine 40.000²-8-Bit-BMP konvertieren (in RGB dürfte das wie gespuckt auf deine Größe passen).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Die letzten beiden Tage hatte ich dann auch mal Lust, an dem Server zu schreiben.
Prinzipiell soll dieser stark multithreaded sein und sich selbst verteilen können, sowohl auf die eigentlichen Server, als auch teilweise auf die Clients. (Lies: Rechenleistung der Clients, die nicht gebraucht wird, aber dem Server dienen könnte, sollte genutzt werden) - so von der Idee her.
Die Architektur ist momentan in Rollen und Worker aufgeteilt, wobei Rollen verschiedene Dienste anbieten und Worker Arbeit verrichten. Die Rollen kapseln also die Daten (um sie bei Bedarf zu verteilen) und die Worker sind quasi aufgabengerichtete Thread-Pools.

Momentan gibt es noch keinen Auslagerungsmechanismus, nur eben schon Rollen und Worker. Da ich glaube, dass ihr eine entsprechende Demo ohne allzu viel Aufwand spielen wollt, habe ich auch zuerst auf den MySQL-Datenbankserver verzichtet und eine dateibasierte Speicherung eingebaut. Idealerweise ist dies später umschaltbar.
Server Window
Server Window
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4258
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] CyberDive (MARPG)

Beitrag von Chromanoid »

Sonst nutz doch fürs erste eine eingebettete Datenbank. Was benutzt du eigentlich als Programmiersprache? Für C#, Java und Co. gibt's ja sehr bequeme DB agnostische ORM Bibliotheken.

Ah ich glaube du hattest mal C# erwähnt. Na dann benutzt du ja wahrscheinlich eh schon ADO.net oder so. :)
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Ich benutze C# und den MySQL-Connector für meine lokale xampp-MySQL-DB. Ich bin mir auch nicht sicher, ob ich wirklich eine ORM haben möchte, ich weiß nicht, ob diese den Grad an Flexibilität und die Performance bieten, den ich von (My)SQL gewöhnt bin. Aber ich habe da auch noch nicht so viele Erfahrungen gemacht, als das diese Meinung wirklich fundiert ist.
Eingebettete Datenbanken funktionieren natürlich auch, aber es bleibt mir dann trotzdem irgendwie nicht richtig erspart, viel Code doppelt zu schreiben. Files als Zwischenlösung sind wenigstens gut human-readable/editable.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4258
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] CyberDive (MARPG)

Beitrag von Chromanoid »

Naja das wäre ja der Vorteil an ORM. Da brauchst du dann nur ein paar Annotationen und fertig ist der Kram für alle Datenbanken, die ADO.net unterstützt. Ich würde das ADO.NET Entity Framework einfach mal ausprobieren und ein bisschen benchmarken. Gerade für den Anfang sollte erst mal gelten, Produktivität über Performance oder? :) Außerdem: Wenn deine Operationen nicht horizontal skalieren musst du dir eh Gedanken über deine Architektur machen :). Sachen wie MongoDB kannst du dir ja auch mal anschauen...
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Ja klar, Produktivität steht am Anfang an oberster Stelle, sonst hätte ich mir auch nicht C# ausgesucht ;)
Das Entity Framework sieht vielversprechend aus, ich werd mir das nachher mal angucken, danke :)
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

So mal ein kurzes Update:

Ich benutzte jetzt SQLite und den entsprechenden Adaptern. Das funktioniert soweit ganz gut und ich muss nicht allzu viel neu/um- schreiben, wenn ich auf ne richtige SQL Datenbank umsteigen will.

Es gibt ein kleines Hauptmenü mit Login und Character Liste, Accountdaten und Characterdaten werden schon in den entsprechenden Tabellen gespeichert.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Ich bin gerade dabei die Verteilung der Städte zu generieren, habe mir auch einige vielversprechende Konzepte dazu ausgedacht. Dazu kommt noch ein Post, sobald das fertig ist.

Um sich nicht immer Namen ausdenken oder Platzhalter benutzen zu müssen, habe ich eine erste Version eines Namensgenerators geschrieben, der mir Namen generieren soll. Vielleicht kann ich das später mit User Generated Content kombinieren. Z. B. als Poll mit 5 generierten Auswahlmöglichkeiten, wenn etwas neues benannt werden soll.
Konzept:
  • Namen sollen Englisch klingen
  • Namen sollen keine englischen Wörter sein
Erste Version:
  • Leider noch nicht immer schöne Wortenden.
  • Als Wörterbuchgrundlage (inklusive Wortwahrscheinlichkeiten) benutze ich momentan 18 Bücher aus dem Projekt Gutenberg (20 MB .txt).
  • Um zu entscheiden, ob Wörter englisch klingen, betrachte ich die letzten 3 Buchstaben und wähle den nächsten Buchstaben nach Auftrittswahrscheinlichkeit der 4er-Kombination.
  • Um zu entscheiden, ob Wörter aus dem Englischen sind, sortiere ich ale Wörter aus meiner Wörterbuchsgrundlage, sowie alle aus 2 Wörtern zusammengesetzten aus (ergibt Blacklist mit 10 Millionen Wörtern bei 65k Wörtern im Wörterbuch).
Todo:
  • Wortenden in die Wahrscheinlichkeitsbetrachtung mit einbeziehen.
  • Nicht nur Wörter aussortieren, die exakt gleich mit einem englischen sind, sondern auch alle Wörter, die zu einem englischen Wort eine Levenshtein-Distanz von maximal 1 oder 2 oder vielleicht 3 haben.
  • Größere, uniformere Wörterbuchgrundlage. Vielleicht sogar spezielle Namenslisten.
Beispiel:
100 generierte Wörter (sortiert):
Accor
Amonis
Anythi
Aoudsom
Aslee
Awayst
Beded
Beent
Bergt
Bidew
Burness
Camessu
Castea
Chappla
Chisdai
Clowedd
Coldlyy
Conders
Conste
Coveryt
Crawi
Davin
Dismil
Dispota
Donelti
Eagreat
Easone
Elsehol
Entag
Esters
Famili
Felte
Fifte
Finge
Firmis
Firmlyl
Fronge
Gainedi
Gainedu
Gratash
Grospir
Haphi
Hastwa
Hearlet
Immis
Indst
Intoni
Israe
Janesti
Kingdra
Lenta
Litian
Loodn
Looken
Lordshi
Marves
Miniq
Miredi
Mosco
Murden
Neresti
Offid
Oftet
Onlylo
Outsif
Ovedwar
Overyt
Overyxi
Peoplex
Righwa
Rivial
Separ
Shalle
Shanc
Shrewar
Shutte
Simpos
Somet
Soons
Speede
Thatedf
Thathem
Thathis
Thatso
Themse
Themsel
Thousl
Tossedn
Totess
Treedl
Truthou
Untol
Untryve
Ventle
Walleg
Warrike
Weard
Whaten
Withhor
Yournc
Falls jemand soetwas braucht oder benutzen will, kann man mich gerne anschreiben, dann erstelle ich kurz ein Projekt mit den entsprechenden Klassen und veröffentliche das. Sprache ist C#.
EDIT: Natürlich mit Source Code. Ist auch nicht auf Englisch festgelegt, sondern hängt von den Texten ab, die man als Grundlage verwendet.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

So jetzt gibt es ein größeres Update ;)

<story>
In meiner Welt gibt es vier große Rassen, die aus genetisch-magischer Mutation aus den Menschen heraus entstanden sind. Es sind also immer noch Menschen und sie leben auch alle in der Gesellschaft. Mit "Menschheit" sind also alle Rassen gemeint und "Die Menschen" sind je nach Kontext entweder die nichtmutierte Menschen oder eben sämtliche (mutierte und nichtmutierte) Menschen.
Die vier Rassen sind: (normale) Menschen, Elfen, Orks, Zwerge.
Die Weltbevölkerung ist durch Umweltkatastrophen, Seuchen und Kriege auf ca. 2 Millionen reduziert worden. Durch die Rückkehr der Magie sind viele Tierarten magisch aktiv geworden und wehren sich teilweise vehement gegen den Menschen. Die Reste der Menschheit lebt in ca. 10-20 Städten, die über die Welt verteilt sind und größtenteils autark sind. Es wird also der größte Teil des Bedarfes an Resourcen, Energie und Nahrung selbst in der Stadt bzw. im unmittelbaren Stadtgebiet (um Schutz zu gewährleisten) angebaut/gefördert. Jede Stadt hat eine Stadtregierung, wobei jede Stadt von genau einer Rasse regiert und dominiert wird. Es gibt allerdings durchaus große Bevölkerungsteile, die aus einer anderen Rasse stammen. Jede Stadt hat ihre eigenen gesellschaftlichen Normen und auch spezielles Akzeptanzverhalten gegenüber den anderen Rassen (es gibt durchaus sehr tolerante, als auch sehr intolerante/rassistische Städte). Jede Rasse hat ihre eigenen Vorlieben, welche Energien, Wälder, Metalle, Landschaften bevorzugt werden. Neue Städte werden immer dann gegründet, wenn die Überbevölkerung (Bevölkerung über den Kapazitätsgrenzen der Städte) groß genug ist, um die Gründung einer neuen Stadt zu rechtfertigen (ca. 100.000 Menschen). Die Rasse, die am meisten Überbevölkerung hat, bekommt die Regierung und entscheidet, wo die Stadt gebaut wird. Zwischen den Städten gibt es Reisemöglichkeiten per Suborbitalraketen.
</story>

Die Story birgt folgende Lösungen für einige Probleme, die bei einer so großen Welt auftreten:
  • Es gibt eine überschaubare Anzahl von Städten
  • Die Spieler treffen sich (in den Städten)
  • Ich kann jedem einzelnen NPC-Mensch ein eigenes Leben geben (2 Millionen ist keine allzu große Zahl, wenn man die Simulationsschritte groß genug ansetzt)
  • Trotz der kleinen Anzahl von Städten sind viele verschiedene Landschaften und Klimazonen "abgedeckt"
  • Aufgrund der großen Abstände der Städte kann man mit den Suborbitalraketen schnell zwischen den Städten wechseln und muss nicht lange (mehrere Zeitstunden) laufen/fahren/reisen, um von A nach B zu kommen. (Macht das Ganze etwas plausibler und spieltechnisch angenehmer)
  • Jede Stadt hat ein einzigartiges Layout, welches aus der Landschaft, den Energiequellen, den Metallresourcen, den Wäldern, dem Klima und der Rasse resultieren.
Jetzt etwas im Detail:
Zuerst einmal habe ich nun genügend Informationen beisammen, um die Metallressourcen der Erde zu approximieren.
Resourcen der Welt
Resourcen der Welt
Dabei habe ich mich auf die vier Metal-"Klassen" Edelmetalle, Arbeitsmetalle, Radioaktive Metalle und Silizium beschränkt.

Als nächstes gibt es verschiedene Quellen, um an Energie zu kommen.
Energiequellen der Welt
Energiequellen der Welt
Hier gibt es die Quellen-"Klassen" Fossile Energie, Geothermie, Solarenergie, Windenergie, Wasserenergie, Kernkraft und Bioenergie.

Aus dem Klima kann ich die verschiedenen Waldbestände der Welt errechnen.
Wälder der Welt
Wälder der Welt
Die großen Wald-"Klassen" sind (tropischer) Regenwald, (subtropischer) Monsunwald, (tropische) Savanne, (subtropischer) Dornenwald, Nadelwald, Laubwald und Mischwald.

Jede Rasse hat ihre eigenen Vorlieben. Dies ergibt folgende Standortvorlieben (gesamter Standortfaktor) pro Rasse:
Standortfaktoren der Rassen, Städte
Standortfaktoren der Rassen, Städte
Zusammen mit der Initialbevölkerung (momentan 800k Menschen, 600k Elfen, 400k Orks, 400k Zwerge) haben sich in dieser Welt z. B. 15 Städte ergeben, 6 Menschenstädte, 4 Elfenstädte, 3 Zwergenstädte, 2 Orkstädte.

Mit der Reliefhöhe, dem Klima und den Wäldern kann ich jetzt auch eine erste Approximation der Oberflächenfarbe geben.
Hier nochmal eine Karte mit der Oberflächenfarbe und den Städten (mit Namen aus meinem Zufallsgenerator):
Städtekarte
Städtekarte
Ich habe die letzten Tage eigentlich gut was geschafft, mal gucken wieviel ich in der Woche noch schaffe (wenn einen das RL einholt ... *g*).
Der nächste Schritt ist ein Charakter Creation Screen mit Dummy-Modellen (ich befürchte, mehr als prozedurale 3D-Strichmännchen werden es noch nicht) und der Auswahl der Anfangsstadt.

Hoffentlich war das jetzt nicht zuviel Text/Information/Bild :?
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] CyberDive (MARPG)

Beitrag von Zudomon »

Wenn es sich von der Story her um die Erben der Erde handelt und die vier Rassen von der Menschheit abstammen fände ich es schon besser, wenn die Kontinente den echten entsprechen würden... vielleicht etwas abgewandelt... je nachdem in welcher Zeit es spielt. Und dann wäre es auch cool, wenn man Artefakte oder andere Anzeichen findet, die auf die heutige Zivilisation hindeuten.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Also ich verstehe den Standpunkt, dass es der echten Erde ähneln sollte.
Auf der anderen Seite finde ich es auch unglaublich spannend, eine komplett neue Erde zu erkunden. Storytechnisch kann man sich vieles ausdenken, um die veränderte Oberfläche zu rechtfertigen.
Die momentane Architektur erlaubt sogar nahezu beliebige Daten als Eingabe. Man kann also fast alles nachbauen. Wenn Interesse besteht, kann ich ja auch ein "Paint-Your-Planet"-Editor schreiben ;)
joeydee
Establishment
Beiträge: 1044
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] CyberDive (MARPG)

Beitrag von joeydee »

Lass es bei der "neuen" Erde - sonst ist man eher versucht, Ungereimtheiten zu finden.
In der Fantasyliteratur sind Parallelwelten mit ähnlicher Geschichte/Landschaften/Bewohnern(Menschen, Tiere) aber auch großen Unterschieden zur "echten" Welt ja durchaus akzeptiert, vielleicht sogar mehr als eine direkte Entwicklung aus der "echten" Welt.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] CyberDive (MARPG)

Beitrag von Artificial Mind »

Ich habe nun schon Teile der Städte:
Stadtbezirke mit Highways und Zubringerstraßen
Stadtbezirke mit Highways und Zubringerstraßen
Legende:
Bezirke:
  • Gelb: (Schwer-)Industrie
  • Violett: Wohngebiet
  • Türkis: Mischgebiet
  • Orange: Gewerbegebiet
  • Limone: Sondergebiet
Bisher gibt es also die Highways, die zusammenhängende Cluster von Bezirken verbinden, und Zubringerstraßen in den Industriegebieten.

Momentan versuche ich ein vernünftiges initiales Straßenmodell für die eigentlichen Stadtgebiete zu finden. Später werden sich einzelne Straßen aufgrund des tatsächlichen Verkehrsaufkommen noch ändern, aber ich brauche ein solides Grundmodell.
Antworten