[Projekt] WaterBreakout

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.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2373
Registriert: 04.08.2004, 20:06
Kontaktdaten:

[Projekt] WaterBreakout

Beitrag von Jonathan »

Bei WaterBreakout handelt es sich um mein neustes Projekt, das im Rahmen des Grafikpraktikums während des Studiums mit 2 Kommilitonen entstanden ist.
Zunächst einmal ein paar bunte Bilder, weil die jeder mag:
Water Breakout 1
Water Breakout 1
Water Breakout 2
Water Breakout 2
Water Breakout 3
Water Breakout 3
Water Breakout 4
Water Breakout 4
Das Spielprinzip dürfte allgemein bekannt sein. Man steuert ein Paddel (das grüne Ding, unten) und muss die Bälle im Spielfeld halten. Die zerstören die Blöcke, sind alle kaputt, kommt man ins nächste Level. Lässt man den Ball nach unten durchfallen, verliert man ein Leben, und so weiter und so fort.
Interessant wird das ganze natürlich erst durch Spezialblöcke. Wir haben folgende eingebaut:
- Normaler Block: Gibt es in verschiedenen Farben, die unterschiedlich viele Treffer aushalten
- Ball Block: Erzeugt beim Zerstören einen zweiten Ball, der dann mit durchs Level fliegt
- Extra Block: Erzeugt beim Zerstören ein Extra, (das goldene Ding im vierten Bild) welches wie die Bälle durch das Level fliegt, und mit dem Paddel eingesammelt werden muss, was eine Menge Extrapunkte gibt
- Explosions Block: Eine Bombe die beim Treffen alle in der Nähe befindlichen Blöcke beschädigt. Natürlich sind Kettenreaktionen möglich und wenn sich im Explosionsradius Ball-Blöcke oder Extra-Blöcke befinden, kann das Spielfeld schon ziemlich voll werden :)

Das ganze wurde in 4 Wochen zu dritt umgesetzt. Mein Fokus lag dabei hauptsächlich am Wasser, weil ich schon länger mal einen hübschen Wassershader schreiben wollte. Dafür render ich eine Reflection und eine Refraction Textur, die ich je nach Blickwinkel anzeige, durch den Normalvektor werden diese noch etwas verzerrt. Die Wellen sind dynamsich, 4 Sinusfunktionen im Vertexshader und nochmal 4 kleiner im Fragment Shader, im Prinzip nach folgendem Artikel:
http://http.developer.nvidia.com/GPUGem ... _ch01.html
Aus zeitlichen Gründen hab ich aber so ziemlich die einfachste Variante umgesetzt. Dazu kommt noch ein bisschen spekulares Licht, was vielleicht auch noch ein wenig Feintuning benötigt hätte, aber es sieht besser aus, als ohne :)

Ein Kommilitone von mir hat bei der Spiellogik mitgeholfen und wollte dynamsiche CubeMaps für die Bälle einbauen, was aber leider nicht mehr funktioniert hat. Der andere hat sich um das Partikelsystem gekümmert, was aber leider auch nicht so ganz funktioniert hat, weswegen ich am Tag vor der Abgabe noch ein neues, grauenhaft langsames, gebastelt habe. Ich hatte hier ja noch extra einen Thread aufgemacht, hatte dann aber keine Zeit mehr, für die guten Techniken. Die Effekte sind deshalb auch ein wenig rudimentär, mit dem Rauch nach den Explosionen bin ich eigentlich sehr zufrieden, aber die Explosionen selber müssten wirklich noch etwas hübscher werden. Die ganzen kleinen Punkte platzen von den Blöcken ab, wenn diese getroffen werden, und haben jeweils die Farbe des Blocks, was ab und zu lustige bunte Wolken ergibt, wenn man mehrere Blöcke in kurzer Zeit trifft.

Umgesetzt wurde das ganze mit OpenGL und Qt. Ansonsten wird boost und glew benutzt.

Die Umgebung ist ein statisches Modell, welches aus einer Wavefront Obj Datei geladen wird. Zum Modellieren wurde Blender benutzt, die Spielobjekte sind alle von mir, die Wüste mit Palmen, Pflanzen und Steine ist eine Komposition aus Modellen von BlendSwap. Die Schatten sind das Ergebnis der tollen Bake-Funktion von Blender die gerade für so etwas wirklich gut zu gebrauchen ist.


Wer das ganze mal ausprobieren möchte, hier gibts die Windows Executables:
http://www.C3-Soft.de/WaterBreakout/WaterBreakout.zip
(man beachte: Qt war nicht so super für die Maussteuerung, weshalb mit Maus mit einem kleinen Hack eingefangen wird. Näheres steht in der Readme)

Ich persönlich hab vor, das ganze noch etwas weiter zu entwickeln. Die Spiellogik ist eigentlich schön flexibel geworden (es gibt z.B ein Level mit 2 Paddeln) und ich hab noch eine ganze Menge anderer Ideen, was man cooles einbauen könnte. Am Wasser könnte man auch nochmal arbeiten, wenn da jemand noch super Tips für mich hat, freue ich mich, davon zu hören. Wer sich für die Implementierung interessiert, die Shader werden aus Textdateien geladen, außerdem wird das ganze evtl. OpenSource. Ich würde es auch gerne von Qt auf glfw umstellen, für Vollbildmodus und bessere Maussteuerung. Achja und ich hab natürlich noch ein effizientes Partikelsystem zu implementieren!
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
anonym
Beiträge: 79
Registriert: 15.07.2009, 07:35
Kontaktdaten:

Re: [Projekt] WaterBreakout

Beitrag von anonym »

Sieht gut aus. Aber das Programm hat meinen Mauszeiger gefangen gehalten. :evil: Einige Shader und Texturen laden nicht.
Loading ../Resources/SkySphere/SkySphere.obj.bin
../Resources/SkySphere/texture.jpg couldn't be loaded... :(
Loading ../Resources/Oasis/terrain.obj.bin
../Resources/Oasis/textures/Rope.jpg couldn't be loaded... :(
../Resources/Oasis/textures/PoleWood.jpg couldn't be loaded... :(
Loading ../Resources/Oasis/trees.obj.bin
../Resources/Oasis/textures/Plantdiff_COLOR.jpg couldn't be loaded... :(
../Resources/Oasis/textures/trees_bark_001_col.jpg couldn't be loaded... :(
Loading ../Resources/Block/Block.obj.bin
../Resources/Block/Brick.jpg couldn't be loaded... :(
GL_FRAMEBUFFER_COMPLETE
Loading ../Resources/LauncherBlock/LauncherBlock.obj.bin
../Resources/LauncherBlock/Wrinkles.jpg couldn't be loaded... :(
Loading ../Resources/Block/Block.obj.bin
GL_FRAMEBUFFER_COMPLETE
Loading ../Resources/LauncherBlock/LauncherBlock.obj.bin
Loading ../Resources/Block/Block.obj.bin
GL_FRAMEBUFFER_COMPLETE
Loading ../Resources/LauncherBlock/LauncherBlock.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Block/Block.obj.bin
Loading ../Resources/Paddle/Paddle.obj.bin
../Resources/Paddle/green.jpg couldn't be loaded... :(
(AMD 5850, aktueller Treiber)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2373
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] WaterBreakout

Beitrag von Jonathan »

anonym hat geschrieben:Sieht gut aus. Aber das Programm hat meinen Mauszeiger gefangen gehalten. :evil: Einige Shader und Texturen laden nicht.
:D du warst gewarnt^^
(noch nerviger als das Maus fangen ist es, wenn die Maus das Fenster verlässt und man nicht mehr steuern kann. Das Fangen war die beste Lösung, auf die ich auf die Schnelle gekommen bin.)

Wegen den Texturen guck ich grad mal.
[edit]Ich meine mich zu erinnern, mal mit den Qt Dlls Probleme gehabt zu haben. Es sieht ja fast so aus, als ob nur die jpg-Dateien nicht geladen werden können, die PNG's aber schon. Ich hatte das gelöst, indem ich neuere (bzw. andere) dll in das Verzeichnis der Exe gelegt habe, aber die sollten ja einheitlich in der zip-Datei mit drin sein. Wäre es möglich, dass er bei dir irgendwie andere benutzt?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Alexander Kornrumpf
Moderator
Beiträge: 2114
Registriert: 25.02.2009, 13:37

Re: [Projekt] WaterBreakout

Beitrag von Alexander Kornrumpf »

Bei mir kommt ein ähnlicher Output (einiges wird nicht geladen).
anonym
Beiträge: 79
Registriert: 15.07.2009, 07:35
Kontaktdaten:

Re: [Projekt] WaterBreakout

Beitrag von anonym »

Verwendet die mitgelieferten DLLs.
[quote="listdlls | find "Water" > tatütata"]WaterBreakout.exe pid: 4072
Command line: "C:\Users\Bernhard\Desktop\WaterBreakout\Bin\WaterBreakout.exe"
0x0000000000310000 0x37000 C:\Users\Bernhard\Desktop\WaterBreakout\Bin\WaterBreakout.exe
0x0000000000310000 0x37000 C:\Users\Bernhard\Desktop\WaterBreakout\Bin\WaterBreakout.exe
0x0000000062aa0000 0x52000 1.6.0.0 C:\Users\Bernhard\Desktop\WaterBreakout\Bin\glew32.dll
0x000000006b010000 0xb2000 4.7.2.0 C:\Users\Bernhard\Desktop\WaterBreakout\Bin\QtOpenGL4.dll
0x00000000690c0000 0x814000 4.7.2.0 C:\Users\Bernhard\Desktop\WaterBreakout\Bin\QtGui4.dll
0x0000000068e80000 0x240000 4.7.2.0 C:\Users\Bernhard\Desktop\WaterBreakout\Bin\QtCore4.dll
Command line: find "Water"
[/quote]
Schiman
Beiträge: 19
Registriert: 11.07.2011, 23:31

Re: [Projekt] WaterBreakout

Beitrag von Schiman »

Ja, einige Texturen werden nicht geladen, ist aber nicht weiter schlimm.
Sehr beeindruckendes Projekt. Das Wasser war ja dein Hauptziel und das hast du großartig gemeistert. Daumen hoch!
Benutzeravatar
Jonathan
Establishment
Beiträge: 2373
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] WaterBreakout

Beitrag von Jonathan »

So, ich hab beschlossen an dem Spiel noch weiter zu arbeiten. Der erste Schritt ist es, von Qt auf GLFW umzusteigen und zum Texturen laden DevIL zu benutzen. Es geht auch schon fast, wobei ich doch einen lustigen Bug eingebaut hab, aus dem ich jetzt vielleicht ein Feature machen will:
Water Breakout bei Nacht :D
Water Breakout bei Nacht :D
Im Prinzip ist einfach nur das Licht aus, aber irgendwie sieht das ganze durch das Wasser sehr cool aus :D
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten