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

ThomasS

Frischling

  • »ThomasS« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Landshut

Beruf: Student

  • Private Nachricht senden

1

27.08.2008, 19:32

Forever War - Techdemo, Programmierer gesucht

Hallo zusammen,
nachdem ich von der Nintendo DS - Programmierung wieder zum PC zurückgekehrt bin, ist mein neues Projekt nach ca. 6 Monaten Entwicklungszeit
nun endlich in einem vorführbaren Zustand ;-)


Projektname:
Forever War

Homepage (mit Download der Techdemo):
http://foreverwar.sourceforge.net/

Kurzbeschreibung:
Forever War ist ein open-source Ego-Shooter mit zerstörbarer Umgebung.
Diese wird dadurch ermöglicht, dass die Levelgeometrie auf Voxeln basiert, aus denen die Dreiecke zum Rendern generiert werden.
Die Voxeldaten sind im Grunde ein 3-dimensionales Array, das für jeden Punkt im Raum angibt, ob dort Materie ist oder nicht.
Die Dreiecke werden daraus mithilfe des "Marching Cubes" - Algorithmus generiert.
Der Code dazu basiert auf der PolyVox - Technologie, die ich um weiche Abstufungen in der Geometrie erweitert habe, um runde Formen zu ermöglichen.

Das Gameplay wird voraussichtlich von "Standard"-Shootern abweichen und von NetHack inspiriert sein, d.h.
- Die Welt wird in jedem Spiel zufällig neu generiert (dank den Voxeln kein Problem, beliebige Formen sind möglich)
- Wenn der Spielcharakter stirbt, gibt es keine zweite Chance

Screenshots:

Mithilfe von Perlin Noise generiertes Terrain ...

(Link)


... nach etwas Bearbeitung

(Link)


Kampf gegen den ersten Gegnertyp

(Link)


Weitere gibt es auf der Homepage.

Entwicklungsstand:
Die Voxelengine funktioniert bereits gut. Es fehlt allerdings noch Unterstützung von Paging - das Nachladen von Daten, wenn der Spieler sich an einen anderen Ort bewegt hat.
Bisher ist das Volumen noch auf einen festen Ort begrenzt.

Für die Objekte in der Welt (Waffen, Gegner, Effekte, der Spieler, ...) sorgt ein Objektsystem, das auf dem Artikel "Component Based Object Management" aus Game Programming Gems 5 basiert. Dabei werden alle Objekte in XML-Dateien definiert und aus Komponenten zusammengesetzt, z.B.
- Mesh: zeigt ein 3D-Modell an
- Physics: fügt das Objekt in der Physikengine ein
- Weapon: sorgt dafür, dass sich das Objekt aufsammeln und als Waffe benutzen lässt
- Timer: führt nach einer festgelegten Zeitspanne ein Lua-Skript aus
- usw.

Alle 3D-Modelle und Texturen habe ich selbst erstellt, es ist also alles "Programmer Art".

Die Techdemo enthält einen Editormodus (Voxeldaten neu generieren oder bearbeiten; wird im fertigen Spiel entfernt) und den Spielmodus (als Spieler durch die Welt laufen).

An Waffen gibt es bisher:
- Pistole
- Messer
- Geometry Gun (Materie erzeugen oder zerstören)
- Granate
- Geometry Granate (erzeugt Materie)

Der erste Gegnertyp (der von Halos "343 Guilty Spark" inspiriert ist) ist bereits implementiert.
Die fliegende Kugel schwebt an dem Ort hin- und her, an dem sie platziert wurde, greift an, sobald sie einen Feind entdeckt und sucht auch danach, falls er wieder aus ihrem Blickfeld verschwindet. Wegfindung existiert in der Form, dass die Kugel von Materie abgestoßen wird, wenn sie darauf zu fliegt.

Externe Bibliotheken:
Grafikengine: OGRE
Physikengine: BULLET
Benutzeroberfläche: CEGUI
Eingabe: OIS
XML-Dateihandling: TINYXML
Skriptsprache: LUA
C++ / Lua - Bindung: LUABIND

Unterstützte Plattformen:
- Windows (getestet mit XP)
- Linux (getestet mit Ubuntu 8.04)

Die Linux - Version ist mit Vorsicht zu genießen - ich habe zwar größtenteils auf Linux entwickelt, aber noch nie ein Linux - Programm weitergegeben, d.h. möglicherweise fehlen Bibliotheken. Ich habe zwar versucht, indem ich das Live-System von der Ubuntu-CD gestartet habe und von da aus das Programm aufgerufen habe, alle Abhängigkeiten zu finden, aber es könnte trotzdem sein, dass auf anderen Distributionen etwas fehlt.

Weitere Entwicklung:
Als nächstes gibt es u.a. folgendes zu tun:
- Paging - Support für das Voxelvolumen. Das Ganze sollte im Hintergrund in einem Thread ablaufen, damit nicht ständig Ladezeiten anfallen
- Levelgenerator, der Kontrolle über die generierte Geometrie ermöglicht (wo werden Räume platziert, wo Gänge, ...), aber trotzdem abwechslungsreiche Variationen liefert
- Mehr Gegner (nicht nur fliegend, sondern auch am Boden oder an den Wänden)

Bisher habe ich allein an dem Projekt gearbeitet, aber nun, da die Techdemo fertig ist, d.h. die Machbarkeit bewiesen ist, suche ich auch nach weiteren Teammitgliedern.
Grafiker / Modellierer sind zwar wünschenswert, aber ich denke, für jetzt gehen die Platzhaltermodelle und -texturen noch in Ordnung ;-)
Programmierer könnten sich z.B. mit der zufälligen Levelgenerierung oder dem Erstellen von weiteren KI - gesteuerten Agenten beschäftigen.
Oder es könnte der noch etwas seltsam anmutende Comicstil, der nur bei den Objekten angewendet wird, durch einen Postprocessing-Shader ersetzt werden, der aufgrund von Unregelmäßigkeiten bei Normalenvektoren oder Tiefe Kanten findet und schwarz markiert.

Wenn jemand Interesse hat, kann er sich gerne bei mir melden ;-)


Weitere Infos zum Spiel wie z.B. eine Sammlung von 91 Screenshots, die den Entwicklungsprozess und ein paar interessante Bugs (z.B. Kornkreise!) zeigen,
gibt's auf der Projektseite. Der Code im SourceForge-SVN ist übrigens noch nicht komplett, weil ich noch mit dem SVN-Server kämpfe, der ernsthafte Verbindungsprobleme zu haben scheint (edit: erledigt).

Viel Spaß beim Testen!

MfG,
Thomas

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

27.08.2008, 19:48

Sieht echt cool aus. Die Idee gefällt mir!

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

3

27.08.2008, 20:14

Hammer! Du hast auf jeden Fall einen Spieler, wenn du was spielbares (im Sinne von Mehrspieler) rausbringst =)

Edit: Ne Mailingliste, ein RSS Feed oder zumindest Postings hier im Forum wären nett, damit ich mich auch dran erinnere, wenn bei dir was passiert. Die Jungs (bzw Baracuda) von der FIFE Engine haben das sehr gut vorgemacht ;)

4

27.08.2008, 22:56

Ich würds ja gerne testen, aber zur Zeit hab ich nur eine Grafikkarte mit SM 2.0
Aber Linuxversion hört sich gut an, für Linux gibts imemrnoch zu wenig coole Spiele :D
Lieber dumm fragen, als dumm bleiben!

5

28.08.2008, 11:20

Re: Forever War - Techdemo, Programmierer gesucht

Zitat von »"ThomasS"«


(Link)


Die Grastextur im Vordergrund macht einen etwas komischen Eindruck (sieht etwas platt aus).
Die restlichen Screenshots, gefallen mir aber sehr gut (Landschaftstexturen) und auch das Konzept auf dem alles basiert.

Insgesamt ein sehr interessantes Projekt.
Wünsche dir bei deiner Mitarbeiter-Suche viel Erfolg und weiterhin gutes gelingen.

@ offtopic: Wir von Espadon Online setzen auch auf die OGRE-Grafikengine! :)

mfg
hecker :)

ThomasS

Frischling

  • »ThomasS« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Landshut

Beruf: Student

  • Private Nachricht senden

6

28.08.2008, 15:14

Danke erstmal für das Feedback! :)

@Das Gurke:
Natürlich halte ich euch auf dem Laufenden, was das Projekt betrifft ;)
Ein Mehrspielermodus ist allerdings vorerst nicht geplant - der Ein-Spieler-Modus reicht mir vom Aufwand her erstmal. Wenn sich aber jemand um die Netzwerkfähigkeit kümmern will, kann er das gerne machen.

Einen Multiplayer-Shooter mit zerstörbarer Umgebung würde ich allerdings auch gerne spielen. Das würde ganz neue Möglichkeiten eröffnen, z.B. könnte man im CTF-Modus mit der Flagge durch einen selbstgegrabenen Tunnel entkommen ;)

@Jonathan_Klein:
Shader 3.0 ist leider momentan für die Texturierung des Terrains (durch "Tri-planar texturing") notwendig - weil dazu noch das Überblenden zwischen bis zu 3 Texturen berücksichtigt werden muss, ist der Shader für Version 2.0 zu lang. Vielleicht ließe sich es sich irgendwie auf Version 2.0 portieren, aber besonders viel Erfahrung mit Shadern habe ich leider nicht.

@hecker:
Stimmt, die Textur sieht platt aus. Aber wie lässt sich das bei Gras am besten verhindern? Vielleicht hilft es, wenn ich sie nochmal "von weiter weg" erstelle, so dass das Gras kleiner erscheint. Ansonsten helfen wohl nur separate Gras-Meshes.

Wo wir gerade bei den Texturen sind: die graue "Felstextur" auf demselben Screenshot stammt eigentlich von einem Gullydeckel. Merkt man das, oder geht die in Ordnung? ;)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

7

28.08.2008, 16:03

also mir ist da nix augefallen, dass sie von nem gully kommen ;)

8

28.08.2008, 16:24

du könntest diese datefiles vllt mal woanders uppen. 10kbs is nicht schön.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

9

28.08.2008, 18:00

Zitat

Stimmt, die Textur sieht platt aus. Aber wie lässt sich das bei Gras am besten verhindern? Vielleicht hilft es, wenn ich sie nochmal "von weiter weg" erstelle, so dass das Gras kleiner erscheint. Ansonsten helfen wohl nur separate Gras-Meshes.

Ich würde das wahrscheinlich ganz einfach mittels Billboarding erledigen. Meshs lohnen sich da wahrscheinlich kaum.

Das mit dem Gully ist mir auch nicht aufgefallen. Sieht man überhaupt nicht.

10

28.08.2008, 19:45

Gibt genügend Artikel zu dem Thema ... also Gras Simulation in Spielen. http://http.developer.nvidia.com/GPUGems/gpugems_ch07.html z.B. sollte doch ausreichen ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige