[Projekt] No Mercy For Flying Saucers

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
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

[Projekt] No Mercy For Flying Saucers

Beitrag von Raphael »

Neben einem Projekt mit Andre (Windows 8 Game - wird demnächst auch präsentiert), bei dem ich jedoch ausschließlich den Posten des Artist übernehme, arbeite ich seit 2 Wochen an einem kleinen TowerDefense. Es ist mein zweites C++ Projekt und mein erstes mit OpenGL. Da ich im letzten Semester in einer Grundlagenveranstaltung zu Computergraphik viel mit OpenGL 1.3 und GLUT gearbeite habe wollte ich es auch mal richtig ausnutzen bevor es an Shader usw. geht. Außerdem hat man schnell etwas auf dem Bildschirm, was eine große Motivation darstellt. Ich arbeite mit Visual Express 2012 for Desktop, Blender, Gimp und später noch mit Eclipse, um es für Linux/MacOS zu kompilieren. Abgesehen von GLUT benutze ich keinen "fremden" Code. Assimp hatte ich mal ganz kurz im Einsatz, als ich mit den UVs im eigenen Exporter kämpfte. Jedoch konnte ich das Problem lösen und hab es daher wieder rausgenommen.

Wie bei TowerDefense gewohnt kommen von links die Gegner (in dem Fall Ufos) und wollen durch das Feld durch, hin zum rechten Rand. Es wird Unterschieden zwischen einer Bau-Phase und einer Wave-Phase(Gegnerwelle), in der nicht gebaut werden kann. Die Steuerung wird komplett via Maus/Touch stattfinden. Ich teste es immer wieder auf meinem x86 Tablett. Drei Turm-Typen sind in Planung: Angriff, Gift und Gefrier. Außerdem kann jeder Turmtyp zweimal aufgelevelt werden. Von den Ufos gibt es drei Typen, welche sich in Geschwindigkeit und Schadensaufnahme unterscheiden. Zerstören eines UFOs gibt Credits, welche wiederum mit der aktuellen Anzahl an verbleibenden Leben verrechnet und dem Score gutgeschrieben werden.

Die großen Hürden habe ich schon überwunden, unter anderem:
- Eigener, recht simpler, Texture-Loader. Ich habe mich aus Faulheit für ppm/pgm in ASCII entschieden. Alles in eine Texture-Klasse gekapselt, so muss ich nur noch "useTexture("xxx")" aufrufen. Texture-IDs werden mit dem Pfad/Names-String gemapped und so nur einmal geladen
- Blender Mesh-Export-Script und Mesh-Loader. Damit bekomme ich Tris und UV-Coords in mein Projekt. Ansonsten läuft es wie bei den Texturen, ein einfaches "useMesh("xxx")" reicht zum Laden der Display-List mit den Informationen
- Pfadfindung via Breitensuche. Ehrlich gesagt habe ich mich nicht mit Allgorithmen speziell für Spiele beschäftigt sondern eine normale Breitensuche implementiert.
- Informationen über jede Wave in einer Textdatei. Auch eher simpel: Es gibt pro Wave eine .wave, in welcher "Wartezeit \n, GegnerTyp \n, Gesundheit \n" festgehalten sind.
- Türme suchen sich ein Ziel in Reichweite und halten daran fest es mit einem Strahl zu beschießen.
- GUI. Noch nicht auf dem Screenshot zu sehen. Im Moment gibt es einen simplen Button und einen mit "Drück-"Animation.
- ContextMenü für Turmbau/Wavestart. Ebenfalls noch nicht auf dem Screenshot.

Im Moment bin ich die Prototypen mit texturierten Meshes am Ersetzen. Außerdem möchte ich noch einen Zahlenrenderer für Score und Credits schreiben, ein Hauptmenü ist auch noch geplant. Der Hauptteil der Arbeit ist aber geschafft, nur fangen in einer Woche die Vorlesungen wieder an und es könnte sich daher doch noch ziehen.
Dateianhänge
Screenshot des GLUT-Fensters. Alles noch Platzhalter.
Screenshot des GLUT-Fensters. Alles noch Platzhalter.
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Raphael »

Heute endlich die Turmmodelle und deren Texturen fertig bekommen. Der TriCount ist etwas zu hoch, werde da wahrscheinlich später nochmal ein wenig nachbessern und manuell löschen, was man an Geometrie nicht sieht. Als nächstes folgen schönere Ufos und Umgebung.
Dateianhänge
Alle drei Turmtypen mit jeweils drei Ausbaustufen.
Alle drei Turmtypen mit jeweils drei Ausbaustufen.
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Raphael »

Die Tage habe ich recht viele Modelle/Texturen ausgetauscht und eine kleine Lighting-Class geschrieben, welche die Beleuchtung in der Build-(Tag) und Wave-Phase(Nacht) steuert. Ganz zufrieden bin ich noch nicht, das Gesamtbild muss noch homogener werden. Als nächstes werde ich die Aliens überarbeiten und einen Zahlenrenderer schreiben, damit Score und Credits angezeigt werden.
Dateianhänge
Bauphase. Prototype-GUI.
Bauphase. Prototype-GUI.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Krishty »

Gefällt mir; vor allem der Look mit viel indirekter Beleuchtung. Wenn ich ganz doll büddebüdde sage, gibt es dann eine Chance auf Antialiasing?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Raphael »

Da hatte ich ein wenig gegoogelt. Anscheinend ginge es mit Freeglut, die Multisampling Flag bringt bei mir nämlich nichts. Aber im Grafikkartentreiber lässt sich Multisampling manuell aktivieren, dass funktioniert jedenfalls.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Artificial Mind »

Bei der Grafikkomplexität könnte man auch einfach in ein doppelt so großes Target rendern und dann am Ende runterskalieren ;)

EDIT: Falls das zu teuer ist, kannst du dir auch einfach ein FXAA aus dem Internet klauen oder es im Treiber aktivieren
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Raphael »

Falls sowas mit dem alten OpenGL/GLUT geht gerne. Ansonsten werde ich mal schauen, ob die Umstellung auf Freeglut ginge. Handelt sich dabei nur um eine Weiterentwicklung, oder?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Artificial Mind »

Sorry ich arbeite nur mit OpenGL 3+, mit altem OGL kenne ich mich nur ganz wenig aus.
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Raphael »

Hab Freeglut schon included und erfolgreich kompiliert ;) Damit sollte eigentlich Multisampling funktionieren.

Nachtrag: Freeglut erkennt die Flag und setzt das Multisampling um ;)
Dateianhänge
Multisampling dank Freeglut
Multisampling dank Freeglut
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Krishty »

Astrein; danke :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [Projekt] No Mercy For Flying Saucers

Beitrag von Raphael »

Kleine Fortschritte. Hab dieses Semester einfach zu viel gewählt :x Was gibt es neues:
- Texturen weiter abgestimmt
- Tür
- Ein Gegnermodell (Sphere)
- Custom Mouse Cursor

Da ich langsam die Grenzen meiner Tablet-GPU erreiche und sogar auch auf meinem PC (AMD Radeon 7950) ein wenig die miese Perfo bemerke, werde ich beim Contentsytem demnächst ein wenig Hand anlegen und "Entities" programmieren, welche Mesh+Textur+Farben kapselen und ich so in einem Rutsch z.B die Felder zeichnen kann, ohne zu viele State-Changes zu haben. Wobei mir gerade auffällt, dass ich oft recht spezielle Sachen pro Objekt mache (zufällige Texturposition bei Kugeln auf Türmen usw). Das wäre eine richtige Rumhackerei, weil es dann wieder viele Subklassen gäbe :( Passiert, wenn man gar nichts so aufwendiges machen wollte und der Kern nicht drauf ausgelegt ist^^ Naja, hab atm eh keine Zeit für sowas.
Dateianhänge
Ein Gegnermodell
Ein Gegnermodell
Tür und Cursor
Tür und Cursor
Antworten