Zombie-Shooter

Spiel zu Halloween, Abgabe bis 31.10.2021
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Zombie-Shooter

Beitrag von Jonathan »

In unserem Beitrag 'Zombie-Shooter' wacht der Spieler in einem kleinen Areal auf, das bald darauf von Zombies überrannt wird. Deine Aufgabe ist es den Zombies auszuweichen, Waffen zu suchen und dich möglichst lange zur Wehr zu setzen. Es ist ein Ego-Shooter der aber eher langsam ist und etwas mehr in Richtung Grusel statt Action abzielt.
Zombie_2021-10-30_22-53-48.jpg
Zombie_2021-10-30_22-54-47.jpg
Zombie_2021-10-30_22-55-07.jpg

Entwicklung
Wir hatten schon vor längerem mal die Idee, einen kleinen Arena-Shooter zu bauen. Tatsächlich gibt es schon einen fast 10 Jahre alten Thread von mir dazu. Codefragmente dazu gammelten also jahrelang auf meiner Platte, also die Idee der Halloween-Action aufkam, beschloss ich, herauszukramen was noch da ist, und in kurzer Zeit einfach irgendetwas daraus zu basteln.
Die zweite Motivation war es ganz klar, in meine 3D-Engine endlich Animationen einzubauen. Bisher war die Spielwelt des Landvogts einfach sehr statisch, und in einem Nebenprojekt das technologische Grundgerüst zu erweitern erschien mir sehr sinnvoll und spaßig. Und so ist das vorliegende Spiel auch genau das geworden: Eine Hälfte Tech-Prototyp, eine Hälfte Gameplay. Da ein signifikanter Teil der Entwicklung in Engine-Arbeit floss, ist das Spiel auch wirklich hinten und vorne nicht fertig geworden. Aber man kann zumindest ein wenig rumlaufen und spielen.
Die Grafiken sind wieder von Kai, die Musik von Nik.

Das Level wurde komplett in Blender erstellt. Die Geometrie ist ein statisches Mesh, alle Entities wurde in Blender als Empties erstellt und mit einem Python-Skript exportiert. Das Spiel lädt dann die Geometrie und erstellt die Entities gemäß der Level-Datei.
blender_2021-10-27_10-05-51.jpg

Features
Das beste Feature sind für mich klar die Animationen. Allerdings fehlt hier noch viel, es gibt keine Interpolation zwischen Frames (daher sind sie etwas hakelig), es können noch nicht mehrere Animationen gleichzeitig abgespielt werden (etwa eine Schlaganimation während dem Laufen), und Objekte anheften funktioniert auch noch nicht richtig (daher schweben die Waffen vor dem Spieler, anstatt in seiner Hand zu sein).
Daneben gibt es eine simple aber funktionale Zombie-KI (Zombies stehen rum und laufen zufällig über die Karte, bis sie den Spieler entdecken und angreifen) und ganz simple Schleich-Mechaniken (Zombies bemerken den Spieler erst viel später, wenn er von hinten kommt). Man kann zwei verschiedene Waffen finden (Fernkampf sowie Nahkampf) und muss Munition finden.
Intern werden Spieler und Zombies gleich behandelt (tatsächlich verwendet der Spieler selber das Zombiemodell, oh oh), was bedeutet, dass man seinen eigenen Körper sieht, wenn man nach unten schaut. Man kann den Kopf etwas unabhängig vom Körper drehen, schaut man zu weit zur Seite, dreht sich der Körper mit. Auf wegen des eingeschränkten Animationssystems ist das eher alles rudimentär, aber ich mag es immer, wenn man nicht als körperloser Geist über die Map rennt.
Es gibt ein paar simple Bluteffekte, eigentlich wollte ich einbauen, dass man einzelne Körperteile abtrennen kann und sich die Zombies dann entsprechend anders verhalten. Der Plan war es, relativ robuste Zombies zu haben die auch wirklich eine Bedrohung darstellen (und nicht zu hunderten über den Haufen geschossen werden), d.h. es wäre ein relevanter Spielfortschritt gewesen, einem Zombie seine Arme zu nehmen, da er dann viel weniger Schaden verursachen kann und relativ harmlos ist.
Relevant ist hier natürlich auch die Diskussion über Decals, die es aber leider nicht ins Spiel geschafft haben.

Glitches
Es gibt Schattenartefakte, Fireflies und schwebende Waffen. Es ist recht gewöhnungsbedürftig, wenn der ausgerüstete Baseballschläger starr vor dem Spieler schwebt und dieser stattdessen mit seinen Händen zuhaut, aber auf die schnelle wurde das leider nicht fertig. Aus ähnlichen Gründen kommen die Schüsse auch eher aus dem Bauch als aus der Waffe, naja. Die Egosteuerung ist auch manchmal etwas merkwürdig, funktioniert aber prinzipiell.

Download
Alpha 1 (Windows, ~103 MB)

Im Spiel werden ein paar Hinweise angezeigt. Klicken startet das Spiel, ESC gibt die Maus wieder frei. Die Fenstergröße kann frei verändert werden, im Vollbildmodus ist die Physik kaputt (lol). Man kann sich durch den Spieleordner klicken, dort gibt es eine config-Datei in der einige Anpassungen vorgenommen werden können.
Am Anfang muss man die Map erkunden und Waffen finden, es gibt 2 Shotguns und 2 Baseball-Schläger. Mit der Zeit kommen immer mehr Zombies, man kann sich nicht heilen, und wenn man weiß, wo man gucken muss, hat man nach 5 Minuten eigentlich alles gesehen. Beim ersten Entdecken vielleicht so 15 Minuten, auch weil man vermutlich ein paar mal neu starten muss.
Gute Spieler besiegen Zombies im Nahkampf ohne Schaden zu nehmen (#Challenge). Ein richtiges Spielende gibt es nicht, es kommen einfach immer mehr Zombies.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
bruebaker
Establishment
Beiträge: 428
Registriert: 08.12.2015, 10:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: Zombie-Shooter

Beitrag von bruebaker »

Wollte es gerade mal probieren, lässt sich leider nicht starten:
Initialisiere GLFW
TLT: started
loading Zombie/Models/Sky/
Shader created: 22
- phong.shader
- frostbite.shader
- Unichrome.shader
- Colormap.shader

ERROR Uniform not found:
NormalWorldFromModel

ERROR Uniform not found:
u_CameraPositionInWorld
loading Zombie/Levels/cottage/
Dynamic exception type: class Exception
std::exception::what: (thrown in Shader.cpp line 319)
Shader couldn't be validated
- Validation Error: Samplers of different types point to the same texture unit
Benutzeravatar
grinseengel
Establishment
Beiträge: 793
Registriert: 29.03.2011, 13:47
Echter Name: Andreas

Re: Zombie-Shooter

Beitrag von grinseengel »

Bei mir läuft das Projekt.

Wie du schon im Post geschrieben hast befindet es sich noch am Anfang. Mal losgelöst davon funktioniert es aber schon recht gut. ES ist natürlich recht irritierend wenn die Baseballkeule sich nicht bewegt. Aber es ist ja auch noch Alpha. Das Gewehr macht dann schon mehr Freude. Somit konnte ich dann ein paar Zombies aus sicherer Entfernung erledigen.

Ich bin einmal von den Zombies umstellt worden und konnte nicht mehr fliehen und sterben auch nicht. Es zählt zwar etwas runter aber es passiert nichts. Schön das du bis zur Deadline doch noch was einstellen konntest. Ich habe auch schon länger über ein ähnliches Projekt nachgedacht. Einen Anfang hatte ich dabei mit mit meinem Projekt die Zone. Das liegt aber im Moment auf Eis.

Es wäre schön wenn du das Projekt weiter ausbauen würdest.

Vielen Dank für den Beitrag
MR99
Beiträge: 63
Registriert: 23.09.2018, 19:47

Re: Zombie-Shooter

Beitrag von MR99 »

Bei mir läuft es auch :-)
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Schrompf »

Krasse Tech :-) Die Zombies sahen auch echt gruselig aus, und die Soundeffekte sind fies! Das Spiel ist leider wirklich ziemlich roh - ich habe einen Knüppel gefunden und konnte dann mit Linksklick Zombies mit den Pfoten angreifen? Aber auch nicht immer irgendwie. Und nach ein paar Treffern konnte ich dann nix mehr machen als mich umzuschauen. Hab im zweiten Durchgang dann die beiden Shotgänne gefunden und ein paar Zomben verbleit - kann es sein, dass die bei nem echten Kopftreffer schon beim ersten Treffer zu Boden gehen? Bald war jedenfalls die Munition alle und das war's dann wieder.

beeindruckend.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
mtorc1
Beiträge: 80
Registriert: 20.02.2021, 16:24

Re: Zombie-Shooter

Beitrag von mtorc1 »

bruebaker hat geschrieben: 01.11.2021, 16:05 Wollte es gerade mal probieren, lässt sich leider nicht starten:
Initialisiere GLFW
TLT: started
loading Zombie/Models/Sky/
Shader created: 22
- phong.shader
- frostbite.shader
- Unichrome.shader
- Colormap.shader

ERROR Uniform not found:
NormalWorldFromModel

ERROR Uniform not found:
u_CameraPositionInWorld
loading Zombie/Levels/cottage/
Dynamic exception type: class Exception
std::exception::what: (thrown in Shader.cpp line 319)
Shader couldn't be validated
- Validation Error: Samplers of different types point to the same texture unit
Habe den selben Fehler und kann es nicht starten :-(
Dabei hatte mir der Soundtrack schon echt Laune gemacht ("action_2.ogg")!
Letztes Projekt: Grave of the Pumpkin (ZFX Halloween Action 2021)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Jonathan »

Moin,
danke für die Rückmeldungen :)

Zu dem Start-Bug: Das muss ich mir wohl genauer ansehen. Auf den ersten Blick es irgendetwas mit Shadern zu tun zu haben, vlt. ist das ein treiberabhängiges Prolem, dass bestimmte Teile nicht dem Standard entsprechen und dann auf manchen Systemen nicht kompilieren? Ich kann wohl morgen mal genauer schauen, bis dahin: Was für Grafikkarten sind das? Auf meinem alten Laptop mit einer GeForce 860M startet das Spiel, daher scheinen mir zu hohe Hardwarevoraussetzungen nicht das ursächliche Problem zu sein.

Zum Rest: Tatsächlich kann der Spieler sterben, es wird aber mies kommuniziert. Wenn man nach unten schaut sieht man, dass der eigene Charakter umfällt und dann ab Boden liegt. Die Waffe verschwindet auch, und man kann halt nichts mehr machen, sieht aber noch seine Munition und kann sich ganz normal umschauen.
Ähnliches gilt für den Nahkampf: Ich glaube, dass er intern recht korrekt funktioniert, aber das Nutzerfeedback ist arg dürftig. Es gibt eine Schlaganimation, aber aus der Egosicht kriegt man davon nicht unbedingt viel mit. Man kann auch erst dann wieder angreifen, wenn der vorherige Schlag vorbei ist, auch das kriegt man vlt. nicht ganz sauber mit. Ist halt unfertig und doof, sobald ich Zeit habe, wird das besser werden.
Echte Headshots gibt es nicht, eigentlich gibt es gar kein Trefferfeedback. Tote Zombie haben sogar noch ihre Collisionshape die noch aufrecht steht und nicht umgefallen ist, d.h. es ist schwer einen Gegner hinter einem toten Gegner zu treffen. Ja, da fehlt halt noch viel.
Aber schön zu hören, dass die Modelle und das Sounddesign gefallen. Hat übrigens jemand bemerkt, dass die Hütte im Wald der Holzfäller aus dem Landvogt ist? :D
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
bruebaker
Establishment
Beiträge: 428
Registriert: 08.12.2015, 10:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: Zombie-Shooter

Beitrag von bruebaker »

Hey,

hab eine Geforce GTX 1650
NytroX
Establishment
Beiträge: 358
Registriert: 03.10.2003, 12:47

Re: Zombie-Shooter

Beitrag von NytroX »

Da ich eine AMD Karte habe, habe ich es auch mal ausprobiert.

Code: Alles auswählen

Initialisiere GLFW
TLT: started
loading Zombie/Models/Sky/
Shader created: 22
- phong.shader
- frostbite.shader
- Unichrome.shader
- Colormap.shader
loading Zombie/Levels/cottage/
Dynamic exception type: class Exception
std::exception::what: (thrown in Shader.cpp line 319)
Shader couldn't be validated
- Validation failed! - Different sampler types for same sample texture unit in fragment shader.
Also ja, irgendwas ist an den Samplern offenbar nicht richtig; StackOverflow sagt:
Yes, it is very much not a valid thing to do.
[...]
your drawing function should have gotten GL_INVALID_OPERATION
[...]
https://stackoverflow.com/questions/169 ... -in-shader
scheichs
Establishment
Beiträge: 845
Registriert: 28.07.2010, 20:18

Re: Zombie-Shooter

Beitrag von scheichs »

Also Spiel lief bei mir auf dem Dev-PC. Atmo eigentlich ganz gut, aber halt recht unfertig aus Gamesicht. Trotzdem tolle Leistung wegen der Engine und schön, dass Du das Animsystem anfangen konntest.
mtorc1
Beiträge: 80
Registriert: 20.02.2021, 16:24

Re: Zombie-Shooter

Beitrag von mtorc1 »

Jonathan hat geschrieben: 02.11.2021, 15:23Was für Grafikkarten sind das?
Mein Laptop hat eine GeForce MX250
Letztes Projekt: Grave of the Pumpkin (ZFX Halloween Action 2021)
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von xq »

NytroX hat geschrieben: 02.11.2021, 17:23 Da ich eine AMD Karte habe, habe ich es auch mal ausprobiert.

Code: Alles auswählen

Initialisiere GLFW
TLT: started
loading Zombie/Models/Sky/
Shader created: 22
- phong.shader
- frostbite.shader
- Unichrome.shader
- Colormap.shader
loading Zombie/Levels/cottage/
Dynamic exception type: class Exception
std::exception::what: (thrown in Shader.cpp line 319)
Shader couldn't be validated
- Validation failed! - Different sampler types for same sample texture unit in fragment shader.
Also ja, irgendwas ist an den Samplern offenbar nicht richtig; StackOverflow sagt:
Yes, it is very much not a valid thing to do.
[...]
your drawing function should have gotten GL_INVALID_OPERATION
[...]
https://stackoverflow.com/questions/169 ... -in-shader

Habe genau den selben Fehler
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
joeydee
Establishment
Beiträge: 1039
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von joeydee »

Jep, bei mir auch:

Initialisiere GLFW
TLT: started
loading Zombie/Models/Sky/
Shader created: 22
- phong.shader
- frostbite.shader
- Unichrome.shader
- Colormap.shader
loading Zombie/Levels/cottage/
Dynamic exception type: class Exception
std::exception::what: (thrown in Shader.cpp line 319)
Shader couldn't be validated
- Validation failed! - Different sampler types for same sample texture unit in fragment shader.

Karte: AMD Radeon R7 200 Series
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Jonathan »

Ich hab mir den Shader Fehler mal genauer angeschaut. Die Shader sehen alle ok aus, allerdings habe ich glValidateProgram jedesmal direkt nach der Shadererstellung aufgerufen, noch bevor alle Uniforms und Sampler gesetzt waren.ValidateProgram schaut sich aber nun nicht nur den Shader an, sondern ob dieser im aktuellen OpenGL Kontext ausgeführt werden könnte, was halt nicht sinnvoll ist, wenn zu dem Zeitpunkt noch keine Uniforms richtig gesetzt sind.
Warum der Fehler nur bei manchen Auftritt ist mir nicht ganz klar. Aber mir scheint, dass bei diesen Menschen die Uniforms noch die Werte vom alten Shader haben wodurch die selbe Textur ID an zwei unterschiedliche Sampler gebunden wird (weil vielleicht im alten Shader eine Uniform zufälligerweise die selbe Location hatte und jetzt halt als Sampler-Texture-ID interpretiert wird, oder so).
Den Validation-Schritt habe ich jetzt jedenfalls ausgebaut, die wirklich richtige Lösung wäre es, ihn an einer anderen Stelle im Programm, wenn alle Werte schon richtig gesetzt sein sollten, wieder einzubauen. Das mache ich dann vielleicht, wenn ich wieder Shader-Debuggen muss, bis dahin schadet es wohl auch nicht, ihn einfach gar nicht drin zu haben.

Wiedemauchsei: Hier die neue Version zum testen: Alpha 1.1 (Windows, ~103 MB).

Zusätzliche neue Features: Ich habe AngelScript eingebaut und mit einem LevelSkript die Ingame-Einblendungen neu implementiert und etwas verbessert. Tipps kommen jetzt nicht mehr nach einer festen Zeit, sondern zu einem Zeitpunkt, wo sie nützlich sind ("E wechselt zwischen Waffen" erscheint, sobald man die zweite Waffe findet, etc.). Des Weiteren habe ich die Bluteffekte leicht angepasst, sie sind jetzt etwas spritziger. Insgesamt aber wohl nichts, was einen erneuten Download rechtfertigt, außer um zu sehen, ob der Shaderfehler jetzt behoben ist.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Jonathan »

Ich arbeite gerade daran, zusätzliche Modelle an animierte Charaktere anzuheften:
Viewer_2021-11-06_00-26-54.jpg
Es fehlt noch Finetuning (da fehlt mindestens noch ein Offset), aber demnächst kann man dann auch tatsächlich mit dem Schläger zuschlagen. Vorbei sind die Zeiten der fliegenden Waffen!
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
bruebaker
Establishment
Beiträge: 428
Registriert: 08.12.2015, 10:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: Zombie-Shooter

Beitrag von bruebaker »

Ohh muss ich heute nachmittag gleich mal probieren
NytroX
Establishment
Beiträge: 358
Registriert: 03.10.2003, 12:47

Re: Zombie-Shooter

Beitrag von NytroX »

Der Shader-Fehler ist bei mir weg, ich kanns spielen :-)
habe den Baseball-Schläger übersehen, dann die Shotgun gefunden und bin dann von der Map gefallen... :-P
joeydee
Establishment
Beiträge: 1039
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von joeydee »

Ja, bei mir läufts nun auch. Prima :)
joggel

Re: Zombie-Shooter

Beitrag von joggel »

...habe den Baseball-Schläger übersehen, dann die Shotgun gefunden und bin dann von der Map gefallen... :-P
Story of my Life^^

Bei mir funktioniert es auch.
Hab ordentlich rumgeschossen.
Allerdings habe ich Fragmente/Effekte an der Gruft gefunden, die mir dort unüblich erscheinen:
Unbenannt.PNG
Aber ansonsten: Fetzt :)
bruebaker
Establishment
Beiträge: 428
Registriert: 08.12.2015, 10:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: Zombie-Shooter

Beitrag von bruebaker »

Bei mir gehts jetzt auch. Super (:
mtorc1
Beiträge: 80
Registriert: 20.02.2021, 16:24

Re: Zombie-Shooter

Beitrag von mtorc1 »

Bei mir ging es auch. Ich finde, du hast die düstere Stimmung ganz gut eingefangen. Das war das einzige Spiel, das ein wenig "Horror" transportieren wollte. Der Zombie schaut nicht unbedingt freundlich aus - und das soll er ja auch nicht.
Ich denke, dass es ohne die noch fehlenden Waffen-Animationen sehr schwierig ist, die Nahkampfangriffe richtig zu timen. Ich war kaum in der Lage einen Gegner zu treffen ohne dass er mich auch trifft. Wie gesagt, sobald der Baseball-Schläger am Char klebt, wird das sicher einfacher. Die Schrotflinte gibt da natürlich direkt mehr Feedback und dann hat das Spiel echt Spaß gemacht. Stimmige Atmosphäre, sogar mit ambient sound und schon den ersten Blutspritzern.
Falls du dich entschließt, das Spiel weiterzuentwickeln, hoffe ich auf eine baldige neue Demo.
Letztes Projekt: Grave of the Pumpkin (ZFX Halloween Action 2021)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Jonathan »

Danke für das nette Feedback! Schön, dass es jetzt auch recht problemlos bei allen funktioniert :)

Was den Nahkampf angeht: Ja, das soll auf jeden Fall noch viel besser werden. Ich weiß noch nicht so ganz, wo ich damit hin will, aber die Grundidee ist, dass es genau nicht so sein soll, wie in Left 4 Dead: Horden an Zombies die man über den Haufen ballert, und wenn man doch mal von 10 Zombies umringt wird ist das auch kein großes Problem, man ballert sie um und hat halt am Ende 20 Lebenspunkte weniger. Ich meine, die Zombies sind einfach absolut keine Bedrohung.

Man muss sehen, wie es sich dann im Spiel anfühlt, aber was ich mir vorstellen könnte: Nahkampfwaffen halten Gegner eher für eine Zeit auf, verursachen aber wenig Schaden. Der Zombie ist vielleicht ein wenig benommen, so das man eine Chance hat, wegzulaufen. Mit viel Einsatz kann man auch auf einen Zombie draufknüppeln bis dieser ganz kaputt ist, aber das sollte halt nur bei einem, höchstens bei 2 gleichzeitig funktionieren. Mit Schusswaffen kann man ihnen dann richtig zusetzen, aber auch da vielleicht eher erstmal ein paar Gliedmaßen abtrennen um sie weniger bedrohlich zu machen. Zombies sind langsam und dumm aber auch zäh und kräftig und müssen ernst genommen werden. Das ist so die Grundidee.

Gerade das Schadensmodell ist aber Arbeit. Aktuell sind Zombies Pillen (Zylinder mit runden Enden), damit kann man recht gut durch die Level gleiten (ich hatte hier irgendwo den Thread über Ego-Controller in Bullet verlinkt, das ist viel kniffeliger, als man meinen sollte). Für ein Schadensmodell bräuchte man jetzt eine zweite Darstellung, wo man wirklich verschiedene Körperteile hat die mit dem Skelett bewegt werden, oder tatsächlich auf das Triangle-Mesh zurück greift. Das muss nicht nur implementiert werden sondern ja vorher auch in Blender erstellt und exportiert werden. Und dann hat man quasi 2 CollisionWorlds, eine für die Physik der Spielerbewegung und eine für die Kollision von Angriffen und Körperteilen.

Naja. Der Plan ist, die ganz großen Fehler noch zu fixen (die weißen Grisselpixel, Angriffsanimationen, vernünftiges Spielermodell, Schattenartefakte, etc.) und das Spiel ein wenig auszubauen (Missionsziel, Punkte, Story, ka.). Danach kann man dann gucken, dass man coolere Gameplayfeatures einbaut. AngelScript ist ja jetzt schon integriert, ich könnte mir gut vorstellen, dass man etwa Gegenstände auf der Map einsammeln muss, oder irgendwelche Dinge aktivieren muss, das anklicken von Entites geht ja auch schon alles. Abhängig davon könnten neue Zombies oder Items spawnen, ein paar kleine Missionen kriegt man damit ja schon locker eingebaut.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
bruebaker
Establishment
Beiträge: 428
Registriert: 08.12.2015, 10:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: Zombie-Shooter

Beitrag von bruebaker »

Klingt alles sehr gut, bleibt dann auch noch genug zeit für den landfogt? (:
mtorc1
Beiträge: 80
Registriert: 20.02.2021, 16:24

Re: Zombie-Shooter

Beitrag von mtorc1 »

Jonathan hat geschrieben: 06.11.2021, 23:18 Und dann hat man quasi 2 CollisionWorlds, eine für die Physik der Spielerbewegung und eine für die Kollision von Angriffen und Körperteilen.
Vielleicht muss man gar nicht 2 separate Instanzen eines Physik-Managers laufen lassen. Viele Engines benutzen hier ja auch Collision Layers für Körper aber auch Raycasts.
Letztes Projekt: Grave of the Pumpkin (ZFX Halloween Action 2021)
Benutzeravatar
grinseengel
Establishment
Beiträge: 793
Registriert: 29.03.2011, 13:47
Echter Name: Andreas

Re: Zombie-Shooter

Beitrag von grinseengel »

Was den Nahkampf angeht: Ja, das soll auf jeden Fall noch viel besser werden. Ich weiß noch nicht so ganz, wo ich damit hin will, aber die Grundidee ist, dass es genau nicht so sein soll, wie in Left 4 Dead: Horden an Zombies die man über den Haufen ballert, und wenn man doch mal von 10 Zombies umringt wird ist das auch kein großes Problem, man ballert sie um und hat halt am Ende 20 Lebenspunkte weniger. Ich meine, die Zombies sind einfach absolut keine Bedrohung.
Du könntest ja auch etwas in Richtung Dead Rising machen. Es könnte auch etwas in Richtung Dying Light sein. Da geht es ja auch darum solchen Zombie Horden ausweichen zu müssen und nicht immer den Vollkontakt zu suchen. Toll wäre es wenn du das mit den Missionen oder Aufträgen umsetzen würdest.

Ich habe ja schon gepostet das ich als erstes Projekt was ich umsetzen wollte auch etwas in dieser Richtung vorhatte. Bei mir ging es da um den Klassiker. Irgendwo gibt es eine Katastrophe und dann rennen Zombies umher. Der Protagonist hat dann den Auftrag sich zum Zentrum der Ursache des Vorfalls zu kämpfen. Dahin gelangt es dann mittels der einzelnen Missionen. Ist aber bisher noch nicht viel fertig bei diesem Projekt. Mal sehen ob ich daran in Zukunft wieder anknüpfe.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Jonathan »

Hm, tatsächlich hab ich Dead Rising oder Dying Light nie gespielt.

Aber was würde sich denn für eine Mission anbieten? Die Sache ist, ich würde glaube ich keine riesigen Maps bauen wollen. Zum einen, weil es Aufwand ist, zum anderen, weil ich mir ein klein wenig Sorge mache, was die effiziente Verwaltung angeht - aktuell habe ich nur sehr rudimentäres View-Frustum Culling, fast nichts was in Richtung LOD geht, und auch sonst nicht so viele Optimierungen. Braucht halt alles Zeit, die ich dann bisher meist eher ins Spiel gesteckt habe. Vielleicht müsste man einfach mal einen Stress-Test machen und ein großes Level bauen und gucken, was passiert.

Ich mag eigentlich die Idee im Wald / Natur zu sein. Man könnte vor der Hütte anfangen und dann verstreut ein paar Teile im Wald suchen müssen, vlt. zunächst irgendwie den Schlüssel um rein zu kommen, und dann später ein paar Punkte anlaufen (Waldkapelle, Bootshaus, etc.) um Dinge zu finden, die man zur Hütte zurück trägt um dann letztendlich gerettet werden zu können? Ich will auch nicht unglaublich komplizierte Dinge einbauen, aber Items aufsammeln funktioniert ja schon, Türen würde man recht leicht einbauen können, Schalter etc. natürlich auch, und damit kann man gewiss schon ein bisschen was machen.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Jonathan »

joggel hat geschrieben: 06.11.2021, 13:34 Allerdings habe ich Fragmente/Effekte an der Gruft gefunden, die mir dort unüblich erscheinen:
Unbenannt.PNG

Aber ansonsten: Fetzt :)
Die Artefakte sind jetzt behoben. Dank cleverer Kollegen am KIT, die mir auch sehr bei der Frostbite-BRDF Implementierung geholfen haben, ist das Problem jetzt nicht bloß identifiziert, sondern auch durch eine sinnvolle Lösung behoben.
Letztendlich war das Problem, dass Normalvektoren in der negativen Hemisphäre (also quasi die Unterseite der Oberfläche) entstehen können, wenn man Normalmaps auf Objekten hat, die recht flach zur Lichtrichtung stehen. Man kann die zwar einfach auf 0 setzen, das sieht aber nicht unbedingt toll aus, und eine physikalisch korrekte Lösung ist nicht trivial, da halt Normalmaps schon nicht wirklich physikalisch sind (die Normalen entsprechen nicht der Geometrie).
Die Lösung ist, die Normale in diesen Grenzfällen etwas umzubiegen, so dass man immer noch Shading hat, aber halt mit gültigen Werten. In der Praxis bedeutet das aber einfach, dass ich endlich diese weißen Grisselpunkte los bin.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Schrompf »

Oh, das ist ja spannend. Ich dachte, da kommt halt einfach Licht von scharf hinten und die Schatten sind nicht genau genug, es vorher abzufangen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
joggel

Re: Zombie-Shooter

Beitrag von joggel »

Letztendlich war das Problem, dass Normalvektoren in der negativen Hemisphäre (also quasi die Unterseite der Oberfläche) entstehen können, wenn man Normalmaps auf Objekten hat, die recht flach zur Lichtrichtung stehen
Das verstehe ich nicht ganz. Wie kann sowas passieren?
Ungenauigkeit bei Fließkomma-rechnereinen oder liegts an was anderem?
Benutzeravatar
Jonathan
Establishment
Beiträge: 2352
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Zombie-Shooter

Beitrag von Jonathan »

joggel hat geschrieben: 08.11.2021, 07:43 Das verstehe ich nicht ganz. Wie kann sowas passieren?
An Fließkommazahlen liegt das nicht, aber tatsächlich hatte ich das gestern eher als empfohlenen Fix eingebaut anstatt es komplett durchzudenken. Aber ich habs mir nochmal angeschaut. Im Prinzip basiert es hierauf:

https://arxiv.org/abs/1705.01263 Appendix A.3:
Shading normals, and in particular strongly bumped normals, are prone to lighting artifacts, especially on reflections, and can lead to severe energy loss if they deviate a lot from the geometric normal. The cause for that is that shading normals feign the presence of detailed geometry to the BSDF computation while the ray tracer actually only deals with flat surfaces. Thus significant parts of the BSDF may yield no contribution as the associated rays cause self intersection with the flat geometry.

To mitigate such problems, Iray bends the main shading normal and the bumped normals on all layers, such that the perfect reflection does not extend below the geometric tangent plane. This handles the corner case of perfectly specular materials well (e.g. avoids all self intersections in this case), but is also able to handle glossy effects nicely (e.g. avoids most self intersections for common BSDF models), and ensures that the incoming ray and shading normal agree on sidedness. We achieve that by computing the perfect reflection vector (according to shading normal) and then, if that extends below surface, we “pull it up” towards the geometric normal such that it lies slightly above the tangent plane (see Fig. 21).

With this new reflection vector a new shading normal can be computed (as the halfway vector to the incoming direction) that fulfills our requirement. This solution provides a smooth result, is free of parameters, and also does not need to rely on additional connectivity information of
neighboring vertices or triangle edges. Note that while this scheme is view-direction-local (thus implicitly changing the BSDF) and not physically plausible (which is a general problem with shading normals) it performs very well in practice and, in particular, does not cause any additional rendering artifacts.
Man schaut also in einem flachen Winkel auf eine Fläche mit Normalmapping. Eigentlich guckt man knapp von oben darauf (sonst würde das Dreieck ja nicht gezeichnet), aber die Normalmap kippt die Ebene lokal so stark, dass man knapp von unten darauf schaut. Die Formeln für die BRDF gehen aber davon aus, dass man immer nur von oben schaut, und liefern für die Unterseite quasi beliebigen Blödsinn.
Bei mir führte das zu diesen Fireflys. Die wohl schlechteste Lösung ist es, die Werte die an dieser Stelle zu den extrem hellen Pixel führen einfach zu clampen, das macht aber auch die Lichtberechnung bei eigentlich korrekten Pixel leicht falsch. Hat man die Ursache verstanden, kann man diese Unterseiten-Pixel einfach komplett discarden, d.h. sie bekommen überhaupt kein Licht. Jetzt hat man statt weißen Pixeln schwarze Pixel, aber das ist schon besser weil die umgebenden Pixel vermutlich auch ziemlich dunkel sind.
Die Lösung von der im Text oben geredet wird ist, dass man stattdessen die Normalvektoren leicht verschiebt, so dass man immer von oben auf das Objekt guckt und seine Lichtberechnung normal durchführen kann. Das führt dann zu einem etwas weicheren Übergang, d.h. man maskiert die Artefakte nicht einfach, sondern Überblended sie. Man hat dann für eigentlich unproblematische Pixel auch leicht 'falsche' Ergebnisse, aber dafür dann eben keine Unstetigkeiten an den problematischen Pixeln.

Das fundamentale Problem ist letztendlich also, dass du Pixel rendern musst, die du nicht sehen darfst. Eigentlich müsste man vermutlich Parallaxmapping verwenden und andere Pixel rendern. Man stelle sich ein Material mit einer tiefen Furche vor (sie verläuft von links nach rechts, nicht von vorne nach hinten), auf das man im flachen Winkel schaut. Die vordere Seite der Furche müsste eigentlich komplett verdeckt sein (und man schaut nahezu senkrecht auf die hintere Seite der Furche), aber wenn man nur Normalmapping ohne Parallaxmapping verwendet ist sie trotzdem sichtbar. Für diese Pixel gibt es dann keine Farbe die richtig wäre, das hat nichts mehr mit Physik zu tun, man kann also nur noch irgendwie versuchen, das Problem zu vertuschen, sobald man in die Situation gekommen ist, diese Pixel zeichnen zu müssen hat man schon auswegslos verloren. Also nimmt man den Hack, der am wenigsten auffällt.

Früher hatte ich das Problem nicht wirklich, aber da hatte ich auch noch keinen Fresnel-Term drin. Der sorgt halt für starke Reflexionen bei flachen Winkeln, die entsprechend auf der Unterseite von Objekten zu starken Artefakten führen (das sag ich jetzt, weil es so passiert ist, der interessierte Leser könnte das aber gewiss anhand der Formeln auch mathematisch herleiten :D).

Hier noch zwei Bilder, welchen Unterschied das bei mir macht:
Viewer_2021-11-08_10-54-03.png
Viewer_2021-11-08_10-53-49.png
Wobei das tatsächlich hauptsächlich bei animierten Modellen auftritt (aber nicht ausschließlich, wie man z.B. an der Gruft sieht), vielleicht mache ich da auch noch irgendwas mit den Normalen falsch...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten