# [Projekt] 2D-Game Phase1: Environment



## KingofKingzZ (23. Juli 2013)

Hey Ho  

Manche kennen mich vllt. noch von meinem alten Projekt Universe (das ich irgendwann sicher mal wieder weiter machen werde). Jetzt nachm Abi hab ich jedenfalls wieder viel Zeit und ein neues Projekt gestartet. Ich kann nicht garantieren dass es dieses mal auf Anhieb fertig wird, aber hey es ist ja auch nur ein Hobby 

Es wird dieses mal ebenfalls wieder "nur" in 2D gehalten sein, damit es für mich auch machbar bleibt bzw. ich schnell voran komme. Wie auch schon in Universe wird die Spielwelt zufällig generiert (ich hab einfach kein Bock nen Editor zu schreiben und Maps zu basteln ). Bisher ist hauptsächlich ein Teil der Generierung dieser Spielwelt fertig gestellt. Dieses mal ist es auf der Erde angesiedelt, d.h. die Landschaft wird aus Wäldern, Wiesen, Flüssen, Seen usw. bestehen. Technisch ist das ganze in Tiles aufgebaut, d.h. viele kleine Quadrate mit Textur, die den Untergrund darstellen (wer mehr zum technischen wissen will oder wie das ganze auch optimiert ist, kann ruhig fragen ). 

Hier seht ihr schon mal zwei Bilder (links in einem ganz frühen Stadium, rechts bereits mit geglätteten "Übergängen"). Die Hellgrünen Tiles stellen dabei Gras dar, dunkelgrün Wald und blau natürlich Wasser. Dabei ist zu beachten, dass das nur der Untergrund ist, also da kommen später schon noch zB Bäume drauf 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Wie manche vielleicht Wissen steh ich auf Physik und deshalb versuche ich hier auch alles einzubauen, was irgendwie machbar ist  Im Moment kommt sowas wie Physik zB beim Gras vor, dieses Lässt sich durch Kräfte dynamisch beeinflussen/bewegen (bisher nur experimentell durch den Mauszeiger ). Für später plane ich, dass das Gras zB durch Wind in Bewegung kommt. Pro Gras-Tile sind dabei im Moment 30 einzeln simulierte Grashalme vorhanden, bei meiner aktuellen Mapgröße sind das insgesamt um die 300.000-400.000 Grashalme. Das will erstmal alles berechnet und gerendert werden, dafür ist die Performance doch gar nicht schlecht bisher oder? (siehe FPS oben rechts)

Hier noch ein Bild von einer frühen Gras Version (denkt euch einfach noch die Bewegung + paar Bäume dazu ):




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Insgesamt sieht alles noch nicht soo fein aus und es gibt noch einige Ecken und Kanten, die mir nicht so gefallen, aber das wird noch 

Was aus dem ganzen später spielerisch wird, weiß ich noch nicht so ganz  D.h. man könnte eigentlich alles daraus machen. Ein Zombie-Setting (bisschen RPG mäßig vllt) ist ebenso irgendwie möglich wie ein RTS oder zB. hatte ich auch überlegt sowas mal in der Steinzeit anzusiedeln  Naja ich bin für Vorschläge offen, bis die Map und alles steht, dauerts noch etwas. 
Ich werde dann bald auch wieder so ne kleine Demo hochladen, damit ihr die Funktionalität bisher testen könnt usw. 

Ich hoffe ich hab auch diesmal bei manchen ein kleines bisschen Interesse geweckt  

Grüße


----------



## Festplatte (24. Juli 2013)

*AW: [Projekt] 2D Environment (Game)*

Sieht gut aus!


----------



## Crymes (24. Juli 2013)

*AW: [Projekt] 2D Environment (Game)*

Klingt spannend, evt. ist das: Box2D | A 2D Physics Engine for Games was für dich


----------



## KingofKingzZ (24. Juli 2013)

*AW: [Projekt] 2D Environment (Game)*

@Crymes: Danke, aber kenne ich bereits  Box2D kann ich hier aber eher weniger einsetzen, denn man sieht die Spielwelt ja "von oben" und Box2D eignet sich eher für so Sidescroller/2D-Shooter. 

 Heute hab ich noch weiter am Gras rumgewerkelt und es klappt ganz gut so wie ich mir das vorstelle  Außerdem hab ich mal ein paar erste Bäume eingefügt, damit man sich das ganze besser vorstellen kann  




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Wie man sieht wirklich nur experimentell auf jedes Wald-Tile nen Baum gepflanzt.  Da kommt natürlich noch mehr Abwechslung und vor allem mehr Abstand zwischen den einzelnen Bäumen rein. 

Grüße

Edit: und unoptimiert ist das ganze auch noch, wie man an den FPS im 2. Screen erkennen kann


----------



## omega™ (25. Juli 2013)

Schaut wirklich gut aus, mich würde einmal interessieren, in welcher Programmiersprache das Spiel umgesetzt wird?


----------



## KingofKingzZ (25. Juli 2013)

Danke 
Das Spiel entwickle ich in C++ & OpenGL bzw. der SFML, die darauf setzt


----------



## KingofKingzZ (26. Juli 2013)

Kleines Update: Die Bäume sind jetzt schöner verteilt und neigen sich leicht nach dem Wind. Da das aber nur sehr kleine Bewegungen (pro Frame < 1 Pixel) sind, gab das ziemlich hässliche Schlieren, weil manche Pixel dann sozusagen "zwischen" 2 echten Pixeln auf dem Bildschirm lagen und nicht ins Raster gepasst haben. Lösen konnte ich es durch eine intern doppelt so hohe Auflösung (bei mir 3840x2160) + 8xMSAA. Drückt natürlich schon auf die Performance aber ~300 FPS sind immer noch völlig ausreichend. 

Einmal mit und einmal ohne das AA: (besonders am Gras zu erkennen, wo es ins schwarze übergeht; links ohne AA, rechts 8x)



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Der nächste Schritt wird sein mehr Variation bei den Bäumen zu haben. Dafür bastle ich mir ein System, das es erlaubt von außen ohne was am Code zu ändern beliebig viele verschiedene Bäume,Sträucher (was auch immer da so rumstehen soll) einzufügen. Alles was man braucht ist ne Textur und ein paar verschiedene Angaben, die zB entscheidend dafür sind, in welcher Region das "Ding" dann letztendlich platziert wird (Wald,Gras,Wasser usw.)
Im Prinzip heißt das, man könnte mein Projekt relativ einfach modden bzw. eigene Sachen hinzufügen, was es auch für mich einfacher macht 

Grüße


----------



## DarkMo (26. Juli 2013)

sowas werd ich für mein projekt irgendwann auch mal machen müssen xD irgendwie will ichs hinbekommen, aus ner planni-textur zu sowas zu kommen (landen aufm planeten). ergo auch aus der textur und den pixeln eine landschaft gestalten ^^ aber das liegt noch in weiter ferne ><


----------



## KingofKingzZ (27. Juli 2013)

Das dürfte sogar relativ einfach machbar sein, die Landschaft (zumindest den Untergrund) aus deiner Textur zu generieren.
Du bringst mich grade auf die Idee, diese Landschaftsgenerierung später in Universe einzupflanzen.. mal sehn was ich draus machen werde^^


----------



## DarkMo (27. Juli 2013)

die generierung an sich stell ich mir noch recht einfach vor joa. ich bin mir nur im unklaren darüber, wie man das im mehrspielerbetrieb löst. das von A generierte müsste unter unmständen zu einem besucher B transferiert werden - irgendwie ^^ wäre blöd, wenn einer da bei dem landet und A hat die oberfläche 10m tiefer generiert wie B. plötzlich schwebt der eine und der andre versinkt im boden


----------



## KingofKingzZ (27. Juli 2013)

Klar, wenn du das Ding Multiplayer fähig machen willst, brauchst du nen Server oder zumindest einen Spieler der als Host fungiert. Da wird das dann generiert und an alle anderen verteilt. Gut wenn du dann viele Planeten hast, dürfte das ziemlich aufn RAM drücken, deswegen kannst du zB für jeden Planeten auch nur einen Seed/Key generieren (reicht ne einfache Zahl), mit der du dann deinen Map-Generierungs-Algo fütterst, sodass bei selbem Key immer das selbe rauskommt


----------



## DarkMo (27. Juli 2013)

jops, an sowas dachte ich auch schon. also theoretisch ^^ praktisch hab ich mit sowas noch keine erfahrungen gesammelt. hätte auch so gedacht, dass das sharen und speichern nur erfolgt, wenn da wer is. ergo algo in der art:

- kommt einer an, leerer planni what ever: generiere map und "speichere sie" (wie auch immer ^^)
- kommt noch wer (da is schon einer - eintrag für map vorhanden), nutzt er die schon generierten daten.
- sind alle wieder wech, wird die "map" verworfen. der nächste besucher generiert was neues -> plannies verändern sich mit der zeit (auch innerhalb von 5 mins beträchtlich! xD)

war sone grundidee. ob sich das glaubwürdig umsetzen lässt müsste sich zeigen. aber erstmal muss ich an den basics weiter tüfteln. bloom verbessern, object loader beenden (derzeit nur mesh, keine farb oder textur daten oder gar animationen) und beleuchtung sowie aa mit einbringen. irgendwie muss ich das hdr gedöhnse auch reinbekommen (mein bisheriger bloom sieht arg grobpixlig aus *sniff*).

so viel ideen und zu tun und so wenig zeit ><


----------



## KingofKingzZ (27. Juli 2013)

Dein Plan hört sich doch soweit ganz gut an  Zumindest solange auf den Planeten keine Gebäude oder sonst was gebaut werden, dann dürfte sich das mit dem jedes mal neu generieren schwierig gestalten. 
Wenn du nicht so viel Zeit hast, könntest du auch ne bereits vorhandene Engine (zB Irrlicht oder so) benutzen. Du lernst dann zwar nicht so richtig wie das alles intern funktioniert, aber zum Spiel selbst kommst du dafür schneller. Ich spreche aus Erfahrung  Ansonsten kannst dort vllt. auch mal schauen wie die das gelöst haben (mit Bloom etc.) 

-----

Mein System für Map-Objekte ist jetzt übrigens auch grundlegend fertig geworden, auf die schnelle hab ich mal mehr verschiedene Bäume hinzugefügt (je 4 in 3 Größen = 12 verschiedene). Alles was man bräuchte um noch mehr hinzuzufügen wär ne txt-Datei, die man in den entsprechenden Ordner kopiert, mit: 
- TexturDateiName
- Dargestellte Größe in Pixeln
- Abstand der min. zum nächsten Baum eingehalten werden muss




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Das sieht dann zB. so aus:

```
[Tree]
TextureFileName=Tree1.png
VertexOffsetX=180
VertexOffsetY=520
MinDistanceToTree=170
```


----------



## DarkMo (27. Juli 2013)

joa, bei "kolonien" wäre die umgebung dann natürlich dauerhaft gespeichert. müsste man sich nur was ausdenken, um "überlappungen angrenzender gebiete" irgendwie zusammen zu bringen ^^ aber denke, das sollte machbar sein ^^ irgendwie  aber wie gesagt, zukunftsmusik.

und btw: hauptziel des ganzen is kein multimillionen dollar game, sondern zu lernen, wie sowas funzt (zumindest in den grundzügen), was dahinter steckt und wie was gelöst wird. also von daher fällt fremd-engine schonmal flach ^^


----------



## KingofKingzZ (28. Juli 2013)

Bei Kolonien wäre es wahrsch. einfacher einfach immer die selbe Map zu generieren, aber da musst dann einfach mal schauen was am besten funktioniert  

Haha klar, das meinte ich auch nicht, ist meins ja genauso wenig  Wenn dus im Inneren verstehen willst bist du damit richtig dabei


----------



## KingofKingzZ (29. Juli 2013)

Die nächsten Tage wird es nicht viel neues geben, bin mal fürn paar Tage im Urlaub  
Danach fang ich an, mein Partikel-System zu integrieren, das wird dann zB für Wetter (Regen, Feuer, Blitze usw) oder fürs Wasser verwendet. Wenn ich das dann fertig hab, lad ich mal ne kleine Demo hoch, die ihr dann testen könnt, wenn ihr wollt


----------



## NVC (7. August 2013)

Schonmal mit dem Gedanken gespielt eine Engine wie Unity3D oder das UDK zu nutzen?


----------



## KingofKingzZ (23. August 2013)

So hey ich bins nach ner kleinen Pause + Urlaub mal wieder  

Ich hab mal überlegt und mir gedacht dass es doch eigentlich schade wäre mein altes Projekt "Universe" einfach so vergammeln zu lassen. Deswegen hab ich entschieden dass das, was ich hier bisher geschafft habe, einfach dort für die Planetenoberflächen zu integrieren. Bis auf Berge und Täler ist damit so ziemlich alles gut machbar. Ursprünglich wollte ich dort ja keine Schlachten usw. auf den Planeten selbst machen, aber wenn man schon mal damit angefangen hat... 

Ihr hört dann bald in dem anderen Thread wieder von mir  

PS: Jaa ich weiß ich kann mich nicht entscheiden was ich machen will, das ist so mein Problem 
PPS: Unity oder UDK hab ich mir schon durchaus mal überlegt, aber 1. hab ich damit keine Erfahrung und man macht eben lieber das was man bereits kann  und 2. wenns denn 3D werden sollte ist es schwerer dafür ein ganzes passendes Modellset zu finden (frei verfügbar), als einfache Sprites für 2D.


----------

