Gedanken zu Spiele-Engines

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.

Re: Gedanken zu Spiele-Engines

Beitragvon Chromanoid » 30.06.2015, 23:40

Beim Lesen von Pandemonium and Parade: Japanese Monsters and the Culture of Yokai bin ich zur festen Überzeugung gelangt, dass die unerschöpflichen Unterhaltungswunder der Kindheit, denen man als erwachsener Videospielnarr so hinterhersehnt, fast unwiederbringlich mit dem Ende der Kindheit verloren gehen. Sobald das Monster unter dem Bett seine Bedrohlichkeit verliert, verliert auch das Videospiel den größten Teil seines Nervenkitzels. Während man als Kind selbst beim Demomodus am Arcade-Automaten noch Einflussmöglichkeiten zu erkennen glaubt, ist man als Erwachsener viel zu sehr damit beschäftigt das "Magische" auseinander zu nehmen, um es noch zu spüren. Aus meiner Sicht analog dazu wird in dem o.g. Buch die Auseinandersetzung der japanischen Gesellschaft mit den Yokai beschrieben. Sobald das unergründliche Pandämonium zur geordneten Parade wird, wird aus der genüsslichen Furcht unter der Bettdecke sehnsüchtige Nostalgie.

Ich glaube man kann die Gefühle, die zumindest ich bei Videospielen vermisse, nur dadurch zu kurzem Leben erwecken, indem man echten Schauder in das Spiel einbaut. Viele Survival-Spiele schaffen das durch Permadeath, Zufall und die Kreativität der Spieler selbst. DayZ ist mMn genau deshalb so beliebt geworden, weil andere Spieler, die Rolle der Zirkus-Zauberkünstler einnehmen. Kombiniert man das mit der unausweichlichen Furcht Gewonnenes für immer verlieren zu können, führt das zumindest gelegentlich zu einen Schauder, der an die viel intensivere Gefühlswelt der Kindheit erinnern lässt. Ein anderes kurzlebigeres Beispiel für solch einen Schauder ist mir mal in Black & White begegnet. Die grandiosen Macher versuchen den Vornamen des Spielers zu ermitteln, um dann gelegentlich den eigenen Namen von unbestimmten Geistern ausrufen zu lassen. Das hat mir damals einen gehörigen Schauder beschert :): https://www.youtube.com/watch?v=VSIXZJFgBFA

Am Rande: Ich glaube, dass man auch als Erwachsener beim ersten "unschuldigen" Kontakt mit Videospielen eine intensive Phase mit Videospielen verbringen kann. Aber auch dann entschlüpft einem sicher schnell der ursprüngliche Zauber und alles was bleibt ist Nostalgie... :cry: :D
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3690
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: Gedanken zu Spiele-Engines

Beitragvon Zudomon » 01.07.2015, 06:50

Das mit dem B&W2 ist krass... habs wohl nicht lange genug gespielt, aber mein Name "Nick" ist auch dabei! :D
Da würde mich aber mal sehr interessieren, wie das Spiel den Namen raus bekommt!!
Bild
Benutzeravatar
Zudomon
Establishment
 
Beiträge: 2081
Registriert: 25.03.2009, 08:20

Re: Gedanken zu Spiele-Engines

Beitragvon Chromanoid » 01.07.2015, 07:16

Das gabs auch schon im ersten Teil. Ich glaube die haben den aus der Registry geklaubt, bin mir aber nicht mehr sicher. Kann auch sein, dass man bei der Installation was angeben sollte.
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3690
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 01.07.2015, 09:36

Als ich gestern nachgeschaut habe, war die Rede von
  • Profilname im Spiel
  • Windows-Profilname
  • Outlook (das Spiel lädt dein Adressbuch um Dorfbewohner wie deine Freunde zu benennen)

Aber on-topic @Oprah Noodlemantra: Willkommen! :) Einen nicht schnell alternden Look bekommt man auch anders hin – man kann die Grafik einfach grün machen statt 80er-neongrün. Irgendwie scheint das aber vielen Leuten schwer zu fallen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon Alexander Kornrumpf » 01.07.2015, 10:09

Chromanoid hat geschrieben:Beim Lesen von Pandemonium and Parade: Japanese Monsters and the Culture of Yokai bin ich zur festen Überzeugung gelangt, dass die unerschöpflichen Unterhaltungswunder der Kindheit, denen man als erwachsener Videospielnarr so hinterhersehnt, fast unwiederbringlich mit dem Ende der Kindheit verloren gehen. Sobald das Monster unter dem Bett seine Bedrohlichkeit verliert, verliert auch das Videospiel den größten Teil seines Nervenkitzels. Während man als Kind selbst beim Demomodus am Arcade-Automaten noch Einflussmöglichkeiten zu erkennen glaubt, ist man als Erwachsener viel zu sehr damit beschäftigt das "Magische" auseinander zu nehmen, um es noch zu spüren. Aus meiner Sicht analog dazu wird in dem o.g. Buch die Auseinandersetzung der japanischen Gesellschaft mit den Yokai beschrieben. Sobald das unergründliche Pandämonium zur geordneten Parade wird, wird aus der genüsslichen Furcht unter der Bettdecke sehnsüchtige Nostalgie.

Ich glaube man kann die Gefühle, die zumindest ich bei Videospielen vermisse, nur dadurch zu kurzem Leben erwecken, indem man echten Schauder in das Spiel einbaut. Viele Survival-Spiele schaffen das durch Permadeath, Zufall und die Kreativität der Spieler selbst. DayZ ist mMn genau deshalb so beliebt geworden, weil andere Spieler, die Rolle der Zirkus-Zauberkünstler einnehmen. Kombiniert man das mit der unausweichlichen Furcht Gewonnenes für immer verlieren zu können, führt das zumindest gelegentlich zu einen Schauder, der an die viel intensivere Gefühlswelt der Kindheit erinnern lässt. Ein anderes kurzlebigeres Beispiel für solch einen Schauder ist mir mal in Black & White begegnet. Die grandiosen Macher versuchen den Vornamen des Spielers zu ermitteln, um dann gelegentlich den eigenen Namen von unbestimmten Geistern ausrufen zu lassen. Das hat mir damals einen gehörigen Schauder beschert :): https://www.youtube.com/watch?v=VSIXZJFgBFA

Am Rande: Ich glaube, dass man auch als Erwachsener beim ersten "unschuldigen" Kontakt mit Videospielen eine intensive Phase mit Videospielen verbringen kann. Aber auch dann entschlüpft einem sicher schnell der ursprüngliche Zauber und alles was bleibt ist Nostalgie... :cry: :D


Ich bin da nicht so pessimistisch.

1) Im Grunde alle Medien können mich noch faszinieren. Soll ich Einzelbeispiele nennen? Speziell auf "unser" Medium bezogen hatte ich große Hoffnungen in Wasteland 2, die dann enttäuscht wurden. Aber ich habe keinen Grund anzunehmen, dass Witcher III (bisher allerdings noch nicht getestet) etwas anderes als toll ist. Und ich glaube das ist noch lange nicht das Ende. Das Bsp. Wasteland 2 zeigt wohl aber das was Krishty sagt: Das gleiche neu machen reicht halt nicht.

2) Es stimmt mMn nicht, dass die Magie raus ist. Ich hatte oben Crusader Kings II erwähnt, das macht genau das, was du andeutest, nämlich eine Illusion erzeugen. In diesem konkreten Fall: Man hat das Gefühl, es schreibt eine Story für einen, aber es _muss_ ein Trick dabei sein. Da habe ich schon Ideen, wie man sowas implementiert, aber in der Perfektion muss man das erstmal hinbekommen.

3) Ich habe da so zwei, drei Spiele aus meiner Jugend, deren "Geist" ich gerne mit heutiger Technik einfangen würde. Ist so eine Idee, die ich seit Ewigkeiten mit mir rumschleppe.
Die offensichtliche Beobachtung dabei:
Es gibt da sehr sehr viele low-hanging fruits, was man auf heutigen Maschinen ohne weiteres bessser machen könnte. Und es gibt ebensoviele Sachen, die man damals faken musste, weil die Rechenpower nicht erreicht hat, die man heute "einfach richtig" machen könnte.
Die weniger offensichtliche Beobachtung:
- Es ist gar nicht gesagt, dass die fake-Version der Spielmechanik signifikant weniger Spaß macht, als die "reale". Im Gegenteil.
- Die scheinbar einfachen Verbesserungen laufen alle darauf hinaus, dass man bessere Assets bräuchte. Also eher kein Job für einen Programmierer. Einen besseren Job als die Programmierer damals zu machen, ist schwer.
- Man glaubt immer, wie du schreibst, man könnte die Magie mit seinem Wissen dekonstruieren. Das ist ein Selbstbetrug, der auffliegt, sobald man versucht es wirklich mal nachzumachen. Ich habe da jetzt ein Beispiel im Kopf in das ich sicherlich im Laufe der Jahre 100erte Stunden an Spielzeit gesteckt habe und inzwischen auch manchen Abend starren auf die Disassembly und ganz ehrlich: ich hab keine Ahung wie sie es gemacht haben. Kann an mir liegen.

4) Zum Thema Nostalgie, lest unbedingt den Mehrteiler bei RPS von dem Typen, der Deus Ex nochmal durchgespielt hat, startend mit der Überzeugung es sei das beste Spiel aller Zeiten.

5) Eine Art Fazit: Die "drei Super-Titel, die unser Leben verändert haben" (Krishty) sind in unserem Alter (tm) halt auch von den drei Super-Programmierern einer Generation aus einer Zeit, als Game Design und implementierung noch dasselbe war. Die wussten halt was sie taten. Es ist einfach nicht zu erwarten, dass under den zehntausenden Indie-Entwicklern heute auf einmal mehr Genies sein sollten. Ich glaube, dass man mangelndes Genie schon teilweise durch großes Budget kompensieren kann. Und ab und zu macht es auch jemand. Das ist mMn die eigentliche Kluft zwischen Indie und Triple-A.
Alexander Kornrumpf
Moderator
 
Beiträge: 1617
Registriert: 25.02.2009, 14:37

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 26.08.2015, 17:13

class Kamera

Ich habe mich sehr lange gegen Kamera-Klassen gesträubt. Ich meine: Wozu eine Kamera-Klasse? Man kann doch einfach seiner draw()-Funktion Position und Rotation des Betrachters übergeben. Die Matrizen müssen eh ständig neu berechnet werden; das macht dann die Funktion. Und die ist dann auch noch zustandslos, weil sie keine Daten aus vorherigen Renderings wiederverwendet (im Gegensatz zu einer Kamera-Instanz).

Jetzt weiß ich, wofür man sie braucht: um mehrere Perspektiven parallel zu zeichnen. Also Split Screen. Oder Überwachungskameras in der Spielwelt. (Dann speichert man darin immernoch nicht Projektionsmatrix usw, denn das soll verdammt nochmal zustandslos bleiben, aber ich schweife ab.)

Der Knackpunkt ist nämlich das LOD: Rendert man aus zwei Perspektiven, die weit von einander entfernt sind, dann wird beim 2. Rendern alles Detail weggeschmissen, das beim 1. Rendern geladen wurde. Sobald dann die andere Perspektive rendert, lädt sie ihre Details zurück. Und am Ende ist die Engine nur noch mit Swapping beschäftigt: LODs laden, wegschmeißen, laden, wegschmeißen.

Klar kann man jetzt einen Cache einbauen, um das ganze zustandslos zu halten, aber das suckt doch noch übler: Hat man nur einen Betrachter (oder stehen alle Betrachter direkt neben einander), wird viel zu viel nutzloses Zeug im Cache gehalten. Hat man viele Betrachter, wird der Cache zu klein und das Swapping geht wieder los. Eeew.

Der richtige™ Weg ist, dass man die Position jedes Betrachters speichert. Alles Rendering erwartet diesen Betrachterkontext als Parameter. Nachdem die Physik am Anfang des Frames alle Betrachter bewegt hat, schießt die LOD-Verwaltung los, alle LODs auf Erreichbarkeit durch *irgendeinen* Betrachter zu prüfen. Es wird immer nach dem nächsten Betrachter entschieden. Danach wird gerendert.

So geht das auch mit 32-Spieler-Splitscreen nicht kaputt, und man kann so Sachen einbauen wie, dass da LOD auf Überwachungskameras niedriger ist als auf dem Bildschirm des Spielers.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 06.09.2015, 19:18

Levelgrenze

In einem Flugsimulator sollte man beim Erreichen der Levelgrenze nicht bloß so eine scheiß Warnung „Umkehren, sonst endet die Mission“ bekommen. Wäre viel cooler, wenn der Wind zur Grenze hin immer stärker würde, so dass das Flugzeug nahe der Grenze nicht mehr dagegen anfliegen könnte und ins Level zurückgepustet würde. Dadurch würde sich das Flugzeug auch immer automatisch von der Grenze wegdrehen, sobald es in die Nähe kommt.

Aber wahrscheinlich würde das die Partikelphysik durcheinanderbringen oder so.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon Alexander Kornrumpf » 07.09.2015, 09:57

Krishty hat geschrieben:Levelgrenze

In einem Flugsimulator sollte man beim Erreichen der Levelgrenze nicht bloß so eine scheiß Warnung „Umkehren, sonst endet die Mission“ bekommen. Wäre viel cooler, wenn der Wind zur Grenze hin immer stärker würde, so dass das Flugzeug nahe der Grenze nicht mehr dagegen anfliegen könnte und ins Level zurückgepustet würde. Dadurch würde sich das Flugzeug auch immer automatisch von der Grenze wegdrehen, sobald es in die Nähe kommt.

Aber wahrscheinlich würde das die Partikelphysik durcheinanderbringen oder so.


Ich glaube nicht, dass das die Immersion wirklich erhöht. Grundsätzlich erscheint es mir sinnvoller die vierte Wand gezielt an der Levelgrenze zu durchbrechen, als Kilometer vor der Levelgrenze schon Signposts aufzustellen "Achtung, es gibt eine vierte Wand, und wir machen sie undurchdringbar, egal zu welchem Preis".

Oder anders betrachtet: Wer die Levelgrenze erreicht, der weiß sowieso, dass er in einem Spiel ist, und ist mit Absicht losgezogen um zu schauen, wie die Entwickler das gelöst haben. Wenn ein Spieler "versehentlich" die Levelgrenze erreichen kann, ist das ein Problem des Leveldesigns. Ich glaube nicht, dass man das technisch lösen kann. (Wahrscheinlich gilt dieser Absatz nur für "Open World" Spiele).
Alexander Kornrumpf
Moderator
 
Beiträge: 1617
Registriert: 25.02.2009, 14:37

Re: Gedanken zu Spiele-Engines

Beitragvon antisteo » 07.09.2015, 10:57

Eine andere Alternative wäre, die Welt torusförmig aufzubauen. Das braucht natürlich etwas mehr Grips in der Arithmetik, um Abstände und Koordinaten etc. richtig zu händeln. Zu manchen Levels passt es auch einfach nicht, wenn man z.B. echte Karten als Grundlage nimmt und man im Osten Deutschlands plötzlich wieder in Westdeutschland rauskommt.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
antisteo
Establishment
 
Beiträge: 785
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: Gedanken zu Spiele-Engines

Beitragvon Top-OR » 07.09.2015, 13:03

antisteo hat geschrieben:Eine andere Alternative wäre, die Welt torusförmig aufzubauen. Das braucht natürlich etwas mehr Grips in der Arithmetik, um Abstände und Koordinaten etc. richtig zu händeln. Zu manchen Levels passt es auch einfach nicht, wenn man z.B. echte Karten als Grundlage nimmt und man im Osten Deutschlands plötzlich wieder in Westdeutschland rauskommt.


Naja, diese kachelartigen Levels gabs schon bei Comanche von anno dazumal... Das ist jetzt keine Atomphysik. Jeder halbwegs fähige Artist kann (Höhen-)Texturen machen, die "kachelbar" sind.

Mich hat das aber eher immer verwirrt - wie du sagt: "Oh, ich fahre nach Osten und bin gerade da angekommen, wo ich vor fünf Minuten losgefahren bin, obwohl ich die Richtung nicht gewechselt habe..." :-/
Muss auch nicht helfen, die Immersion zu steigern. Du wirst halt nicht "unterbrochen" durch die Wand ... aber die Grenze mach nicht eben doch in deinem Kopf breit, weil solches Umweltverhalten der Alltagserfahrung widerspricht. Ich halte die Idee von der "sanften Wand" z.B. durch Wind auch für nicht schlecht, wobei das Leveldesign das zugegebenermaßen vorher verhindern sollte...
--
Verallgemeinerungen sind IMMER falsch.
Benutzeravatar
Top-OR
Jens H.
Establishment
 
Beiträge: 317
Registriert: 02.03.2011, 17:32
Wohnort: Esslingen/Dessau

Re: Gedanken zu Spiele-Engines

Beitragvon ponx » 09.09.2015, 16:01

Chromanoid hat geschrieben:Beim Lesen von Pandemonium and Parade: Japanese Monsters and the Culture of Yokai bin ich zur festen Überzeugung gelangt, dass die unerschöpflichen Unterhaltungswunder der Kindheit, denen man als erwachsener Videospielnarr so hinterhersehnt, fast unwiederbringlich mit dem Ende der Kindheit verloren gehen. Sobald das Monster unter dem Bett seine Bedrohlichkeit verliert, verliert auch das Videospiel den größten Teil seines Nervenkitzels.


Für mich hat das Monster unter dem Bett in Gestalt von Alien Isolation seine Bedrohlichkeit zurückbekommen. Es bleibt in weiten Teilen unberechenbar, bis zum Ende des Spiels. Man kann nur seine Chance vergrößern, zu überleben, aber man kann auch einfach Pech haben. Auf einmal steht es vor dir und atmet schwer! Und man kann nur an bestimmten Punkten speichern. Je länger man schon in Angst durch die Gänge gekrochen ist, desto mehr hat man zu verlieren.
Diese Unberechenbarkeit in Verbindung mit den harten Konsequenzen beim Ableben macht für mich auch den Reiz von DayZ aus.
Benutzeravatar
ponx
Andy Ponx
Establishment
 
Beiträge: 215
Registriert: 04.05.2008, 12:52
Wohnort: Hamburg

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 08.01.2016, 03:03

Eine Engine braucht die Möglichkeit, Hintergrundmusik in Ausschnitten zu wiederholen und an Skripte zu binden. Weil die meisten guten Tracks nicht monoton sind sondern wachsen und erblühen; und weil die normalen Sound-Einlagen viel zu kurz und starr sind um gute Tracks sein zu können.

In einem Ego-Shooter betrete ich eine Straße. Sie scheint leer zu sein … zu leer. Ich will, dass dann dieser Track von 3:10 bis 3:13 als Endlosschleife startet. Mit einem sehr langen Fade-In, aus dem Hintergrund, um Spannung aufzubauen. Und sobald der erste Gegner aus einem Hauseingang springt, läuft der Track normal ab 3:13 weiter. Ist der Kampf bis zum Ende des Tracks vorbei, langsames Fade-Out. Sonst Fade-Out passend zum Ende des Tracks (oder einen anderen, passenderen Ausschnit reinmixen und wiederholen). So was muss ich als Level-Designer ganz einfach machen können.

Das setzt dann voraus, dass man Ausschnitte nahtlos wiederholen kann (nicht bloß alle n Milisekunden, wie es MP3 & Co vorsehen). Dass Fade-Ins usw. ihren Zustand getrennt vom eigentlichen Track verwalten. Dass die Schleife nicht einfach für die Fortsetzung unterbrochen wird, sondern der Player die Fortsetzung (und den neuen Abspielmodus!) sauber in die Wiedergabeschleife einreiht. Und, natürlich, dass das alles mit KI usw. verknüpft ist.

Wahrscheinlich ist das sogar recht einfach, gemessen am Gesamtaufwand einer Sound-Engine.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon ponx » 08.01.2016, 12:16

Krishty hat geschrieben:Das setzt dann voraus, dass man Ausschnitte nahtlos wiederholen kann (nicht bloß alle n Milisekunden, wie es MP3 & Co vorsehen). Dass Fade-Ins usw. ihren Zustand getrennt vom eigentlichen Track verwalten. Dass die Schleife nicht einfach für die Fortsetzung unterbrochen wird, sondern der Player die Fortsetzung (und den neuen Abspielmodus!) sauber in die Wiedergabeschleife einreiht. Und, natürlich, dass das alles mit KI usw. verknüpft ist.
Wahrscheinlich ist das sogar recht einfach, gemessen am Gesamtaufwand einer Sound-Engine.

Ich kann versprechen, spätestens wenn man nicht nur einzelne speziellen Fälle abbilden will, sondern es flexibel (und gleichzeitig benutzbar) halten will, wird es sehr aufwändig. Wenn eure Engine multiplattform sein soll, kommt jeweils noch die Unterstützung der hardwareseitigen Audio-API dazu. OpenAL als einzige offene API ist eingeschlafen und läuft zwar noch grundsätzlich unter Windows, aber ist auf den Konsolen spätestens seit PS4 und XOne tot, soweit ich weiß. Wir hatten damals mit unserer Musikengine (http://www.homeofpsai.com) auf XACT aufgesetzt, das war immerhin eine gemeinsame Schnittstelle für Xbox360 und Windows. Die wurde dann ab Windows 8 sang und klanglos von Microsoft nicht mehr unterstützt. Ich hab Tage gebraucht, um überhaupt mal jemanden bei Microsoft ans Telefon zu kriegen, der irgendwas davon wusste. Also: Ich würde sehr dazu raten, eine der etablierten Sound-Engines (FMOD, Wwise, Miles Sound System) zu benutzen. Unsere Musik-Engine setzt mittlerweile auf XAudio2 (Windows), OpenAL und FMOD auf, und keiner unserer Kunden hat sich je für was anderes als die FMOD-Variante entschieden.
Benutzeravatar
ponx
Andy Ponx
Establishment
 
Beiträge: 215
Registriert: 04.05.2008, 12:52
Wohnort: Hamburg

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 08.01.2016, 15:53

Ahja. Aber ist das überhaupt auf Ebene der Sound-API relevant? Ich hätte gedacht, dass ich bei allen die Möglichkeit habe, PCM-Daten zu übergeben (XAudio2, meine derzeitige Wahl, kann eh kein Echtzeit-MP3-Decoding) und so lange die API mir dabei erlaubt, frei zu seeken, könnte ich solche Playback-Spielereien auf jeder API fußend aufsetzen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon ponx » 08.01.2016, 18:12

Krishty hat geschrieben:Ahja. Aber ist das überhaupt auf Ebene der Sound-API relevant? Ich hätte gedacht, dass ich bei allen die Möglichkeit habe, PCM-Daten zu übergeben (XAudio2, meine derzeitige Wahl, kann eh kein Echtzeit-MP3-Decoding) und so lange die API mir dabei erlaubt, frei zu seeken, könnte ich solche Playback-Spielereien auf jeder API fußend aufsetzen.

Ja, wenn man schon auf der Ebene arbeitet, die PCM-Daten direkt in nen Puffer zu schreiben, dann gibt's da letztendlich ganz bestimmt eine Möglichkeit auf jeder Plattform. Ich hätte gerne eine offene API gehabt, die sowas plattformunabhängig unterstützt. Das scheitert wohl schon daran, dass Sony und Microsoft ihre Konsolen-SDKs extrem unter Verschluss halten und jeden steinigen (Sony jedenfalls), der irgendwelche interna daraus öffentlich zugänglich macht.
Benutzeravatar
ponx
Andy Ponx
Establishment
 
Beiträge: 215
Registriert: 04.05.2008, 12:52
Wohnort: Hamburg

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 23.02.2016, 00:38

Wie nennt man die Multiplikatoren bei vielen aufeinander folgenden Kills in kurzer Folge? Killstreak boosts? Killstreak Score Multipliers?
Dass man eigentlich gleichwertige Gegner in nicht weniger als einer Zehntelsekunde Abstand tötet und dann 100-200-400-800-… Punkte kriegt?

Das ist einfach genial.

Das Problem ist ja, dass man sich mit fortschreitendem Können einer maximal möglichen Punktzahl annähert. Jeder Depp erreicht die halbe Punktzahl. Wer ein Bisschen Zeit investiert, kommt auf 90 %. 95 % ist schon 1337. Und 100 % erreicht man nur, wenn man das Spiel auswendig lernt und quasi den Zufallszahlengenerator vorhersagen kann (und außerdem noch Jungfrau ist).

Damit ist die Highscore-Liste nicht mehr linear. Wer die doppelte Zeit investiert, bekommt bloß ein paar Prozent mehr Punkte. Das ist scheiße.

Andererseits könnte man in den unteren Punktekategorien sagen, dass diese Score Boosts unfair sind. Wer sich nur ein Bisschen mehr anstrengt und vier Gegner statt drei tötet, verdoppelt seine Punktzahl.

Tatsächlich schmeißt man mit Score Boost aber eine Exponentialfunktion in logarithmisch wachsende Punktzahl, und kann sie damit wieder linear kriegen.

Wer doppelt so viel Übung investiert, und in zwei Sekunden 21 statt 20 Gegner erledigt, bekommt eben nicht nur 5 % mehr Punkte, sondern doppelt so viele. Dadurch wird der High-Score wieder eine relativ lineare Abbildung des Könnens.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon Alexander Kornrumpf » 23.02.2016, 14:05

Ich verstehe wirklich gar nicht was du sagen willst. Kannst du das vielleicht nochmal überarbeiten?
Alexander Kornrumpf
Moderator
 
Beiträge: 1617
Registriert: 25.02.2009, 14:37

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 23.02.2016, 17:18

Naja; es wäre hilfreich, wenn mir jemand sagen könnte, wie man den Mechanismus nennt, der bei aufeinanderfolgenden Treffern die Punktzahl jeweils verdoppelt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon Schrompf » 23.02.2016, 17:21

Combo Multiplier, schätze ich. Oder Varianten davon. Bei *jedem* Treffer den Multiplier zu erhöhen halte ich aber für zu heftig - das eskaliert mir zu schnell. Bei Splatter habe ich eine ungefähr lineare Verlängerung eingebaut. Mit x1 beginnt es nach dem ersten Kill, x2 nach dem zweiten, dann braucht es 2 weitere für x3, drei weitere bis x4 usw.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.
Benutzeravatar
Schrompf
Thomas Ziegenhagen
Moderator
 
Beiträge: 3684
Registriert: 26.02.2009, 00:44
Wohnort: Dresden
Benutzertext: Lernt nur selten dazu

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 23.02.2016, 18:41

Ah, danke :)

Also nochmal langsam von Anfang an.

Es ist 1980 und du entwickelst das erste Mario-Spiel. Das Konzept ist so einfach, wie es nunmal ist:
  • über einen Hindernis-Parcours rennen
  • Münzen einsammeln
  • auf Pilze springen, um sie zu töten (wtf)
Du und deine Mitarbeiter, ihr spielt das während der Entwicklung regelmäßig und mit großem Spaß. (Ja, das hier ist nur ein Beispiel.)
  • Krishty spielt am seltensten und ist auch nicht besonders gut darin. Sammelt die meisten Münzen, erledigt viele Gegner.
  • Alex spielt häufig und kennt schon alles auswendig. Sammelt alle Münzen, tötet alle Pilze.
  • TGGC spielt fast durchgängig (um’s am Wochenende auf YouTube zu stellen). Kennt alles auswendig, hat sich die optimale Taktik bereitgelegt. Sammelt alle Münzen, tötet alle Gegner.
Das Problem ist, dass Alex und TGGC den gleichen Highscore erreichen. Beide sammeln alle Münzen und erledigen alle Gegner. „Was für’n Gammeldesign“, sagt TGGC, „ich üb’ doppelt so viel und bin viel besser und kriege trotzdem keinen besseren Highscore!“

Es wird entschieden, irgendwie die pro Level benötigte Zeit einfließen zu lassen, um einen Unterschied herzustellen. 400 Sekunden laufen ab, und am Ende des Levels werden die verbleibenden Sekunden auf den High Score addiert. (Macht Mario AFAIK wirklich so.)

TGGC flitzt am schnellsten durch’s Level und ist im High Score wieder vor Alex. Aber nur ein Bisschen. Denn während die beiden immer professioneller werden, nähern sie sich einem optimalen Pfad durch’s Level an. TGGC übt doppelt so viel, aber ist nur zwei Sekunden schneller als Alex. Bei einer Punktzahl von, sagen wir, 300 ist das ein lächerlicher Vorsprung und nicht das Wort Belohnung wert.

Sind wir uns an dieser Stelle halbwegs einig, dass man in fast allen Disziplinen mit mehr und mehr Können immer kleinere Fortschritte macht? Bei Autorennen sind die hinteren Ränge mitunter Runden auseinander, während die Spitzenplätze um Zehntelsekunden kämpfen. Vereinsrekorde werden gerne mal um eine Sekunde gebrochen; Weltrekorde eher um Hundertstel. Usw usf.

Und hier kommt der Combo Multiplier ins Spiel: Springst du auf den ersten Pilz, gibt’s ’nen Punkt. Springst du direkt weiter auf den zweiten, gibt’s zwei. Direkt weiter zum dritten gibt’s vier. Dann acht. Dann sechzehn. Und so weiter, bis der Abstand zwischen zwei Kills mal eine Zehntelsekunde (oder so) überschreitet und dann reißt’s ab und fängt wieder bei einem Punkt an.

Zuerst einmal baust du damit eine taktische Komponente ein. Es kann sich lohnen, etwas langsamer durchs Level zu hüpfen, um dafür in bester Eleganz fünf Pilze in Reihe zu killen.

Viel wichtiger aber: Während mit zusätzlichem Können die Reihen logarithmisch länger werden (zwei schafft jeder; vier nur Geübte; sechs nur Profis und acht nur TGGC) wird die Belohnung exponentiell größer. Alex schafft mit bester Übung nur sieben Pilze in Folge; TGGC natürlich acht; im High-Score hat er jetzt wieder doppelt so viele Punkte.

Verdeckt findet man sowas übrigens auch bei Rennspielen, wo z.B. Driften mit Punkten belohnt wird und auch da exponentiell mehr, je länger man es tut.

Kann sein, dass ich das in meinem Kopf overengineere und die meisten Spiele das bloß machen weil sie es wo anders gesehen haben. Für mich klingt es jedenfalls einleuchtend, seit ich gestern abend einen Run durch ein Spiel aus meiner Kindheit gesehen habe und der Typ war genau so schnell wie ich und hat ebenfalls 100 % Gegner erledigt, aber vier Mal so viele Punkte weil er total taktisch Combos optimiert hat während ich nur alles abknalle, was mir über den Weg läuft.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon smurfer » 23.02.2016, 19:01

Ich denke auch, dass es Combo wie von Schrompf beschrieben recht gut trifft. Deine Beschreibung erinnerte mich sofort an Flipperautomaten, die es ja auch schon recht lange gibt. Dabei ist Combo oder Combo Shot anscheinend auch der gängige Begriff: https://en.wikipedia.org/wiki/Glossary_of_pinball_terms#C
smurfer
 
Beiträge: 60
Registriert: 25.02.2002, 15:55

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 23.02.2016, 19:13

Treffer! Danke :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon Alexander Kornrumpf » 23.02.2016, 19:34

Ah ok, danke. Ich fasse zusammen was ich verstanden habe:

- die Punktzahl sollte linear mit der investierten Zeit steigen. (Wieso eigentlich? Außer "TGGC will es so".)
- Fähigkeiten steigen in der Regel logarithmisch mit der investierten Zeit. (plausibel, zumindest auf dem Niveau auf dem wir hier reden).
- Man kann den ersten Punkt also erreichen, wenn man die Punktzahl exponentiell an die Fähigkeit koppelt (mathematisch trivial, aber ich hatte die Formulierung im ersten Anlauf nicht verstanden).
- die Idee, dass das auf den unteren Leveln unfair sei fehlt im zweiten Post. (Sie scheint auch nicht so wirklich Sinn zu machen. Auch das hatte mich anfangs verwirrt)

Soweit so gut. Ob "Combo Multiplier" das umsetzen, geschweige denn "genial" umsetzen, bezweifle ich aber:

- In einem Spiel in dem es im Wesentlichen um Punkte geht, macht es wenig Sinn, zwischen der Fähigkeit in diesem Spiel und der Punktzahl zu unterscheiden. Die abstrakte Fähigkeit Combos aneinanderzureihen nützt eben nur dann was, wenn sie auch in der Bepunktung belohnt wird.

- Sobald das Spiel mehr als eine Zielgröße hat (meinetwegen Tony Hawk) und wir unterstellen, dass die Gesamtfähigkeit, statt "nur" der Combofähigkeit mit der investierten Zeit wächst, musst du Fortschritte auf allen Zielgrößen exponentiell belohnen. Was nicht immer eine so einfache Formel ist.

- Das ist auch das Problem bei Mario. Es gibt zwei Ziele, normaler Score und Zeit, aber zeit ist soviel niedriger gewichtet als der normale Score, dass sie quasi verschwindet. Hier sind logarithmen weder Problem noch Lösung.

- Wie sicher bist du dir, dass Combo Multiplier im Allgemeinen exponentiell implementiert werden? Das was ich kenne und was Schrompf auch beschrieben hat (Hint: es gibt ein x3) ist nicht exponentiell. Ich kenne es so, dass wenn die Grundbelohnung c ist dann bringen l Einzelbelohnungen halt lc Punkte und in einer Combo der Länge l bringt es lcl Punkte wobei das hintere l der Combo Multiplier ist. Es ist also quadratisch. Ich weiß natürlich nicht, welches Spiel du im Hinterkopf hattest, sicher ist, es gibt solche und solche. Sind die mit der quadratischen Funktion theoretisch schlechter? Ich glaube nicht.
Alexander Kornrumpf
Moderator
 
Beiträge: 1617
Registriert: 25.02.2009, 14:37

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 23.02.2016, 20:01

Alexander Kornrumpf hat geschrieben:die Punktzahl sollte linear mit der investierten Zeit steigen. (Wieso eigentlich? Außer "TGGC will es so".)
Weil TGGC dein bester Kunde ist? Flippermaschinen werden nicht von Menschenfreunden gebaut, sondern durch die Belohnungszentren der Kunden am Laufen gehalten. Und die freuen sich, wenn sie hohe Punktzahlen sehen; nicht, wenn sie nach sechs Stunden Spiel gerade mal 0,1 % über dem vorherigen High Score landen.

- In einem Spiel in dem es im Wesentlichen um Punkte geht, macht es wenig Sinn, zwischen der Fähigkeit in diesem Spiel und der Punktzahl zu unterscheiden. Die abstrakte Fähigkeit Combos aneinanderzureihen nützt eben nur dann was, wenn sie auch in der Bepunktung belohnt wird.
Ja, das stimmt. Aber welche Fähigkeiten lernt man in Spielen denn sonst? Gibt es da Sinnvolleres?
- Sobald das Spiel mehr als eine Zielgröße hat (meinetwegen Tony Hawk) und wir unterstellen, dass die Gesamtfähigkeit, statt "nur" der Combofähigkeit mit der investierten Zeit wächst, musst du Fortschritte auf allen Zielgrößen exponentiell belohnen. Was nicht immer eine so einfache Formel ist.
Einfach ist das nie, darum sehe ich das nicht wirklich als Nachteil. In *jedem* Spiel ist das Justieren der Belohnung, um das Spiel nicht zu langweilig oder zu frustrierend zu machen, schwer.
- Das ist auch das Problem bei Mario. Es gibt zwei Ziele, normaler Score und Zeit, aber zeit ist soviel niedriger gewichtet als der normale Score, dass sie quasi verschwindet. Hier sind logarithmen weder Problem noch Lösung.
Keine Ahnung. Mario war nur das erstbeste Beispiel, weil’s hoffentlich am leichtesten nachvollziehbar ist :) Ich weiß weder, wie Scores verteilt sind, noch, ob die Spieler damit zufrieden sind.
- Wie sicher bist du dir, dass Combo Multiplier im Allgemeinen exponentiell implementiert werden? Das was ich kenne und was Schrompf auch beschrieben hat (Hint: es gibt ein x3) ist nicht exponentiell. Ich kenne es so, dass wenn die Grundbelohnung c ist dann bringen l Einzelbelohnungen halt lc Punkte und in einer Combo der Länge l bringt es lcl Punkte wobei das hintere l der Combo Multiplier ist. Es ist also quadratisch. Ich weiß natürlich nicht, welches Spiel du im Hinterkopf hattest, sicher ist, es gibt solche und solche. Sind die mit der quadratischen Funktion theoretisch schlechter? Ich glaube nicht.
Garnicht sicher. Sind nur die drei, vier, die ich bisher beobachtet habe. Schompfs ist ja schon anders.

Aber das ist Erbsenzählerei. Du kannst weder alle Gameplay-Faktoren noch das Spielerkönnen in eine Formel packen und dann ausrechnen, ob du Combos linear oder quadratisch oder exponentiell oder sonstwie belohnen musst um den Highscore zu linearisieren. Du siehst einfach nur: „Hier kommen alle Top-Spieler an einer Grenze“. Dann haust du irgendwo Punkte raus; umso mehr, je höher die Leistung. Ob das jetzt exponentiell ist (Super Mario) oder gebremst (Splatter) oder quadratisch (wie du es kennst) … naja, Schrompf hat es ausprobiert und das hat für ihn gut funktioniert, und in Mario haben sie’s auch ausprobiert und da hat für sie was anderes besser funktioniert. Scheißegal, wie die Combo-Kurve jetzt aussieht; am Ende muss nur das Belohnungsgefühl stimmen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon Alexander Kornrumpf » 23.02.2016, 20:19

Krishty hat geschrieben:Scheißegal, wie die Combo-Kurve jetzt aussieht; am Ende muss nur das Belohnungsgefühl stimmen.


Gerade deswegen ist es vielleicht etwas "overengineered" wie du es nennst, da in Begriffen von logarithmisch und exponentiell zu sprechen, die eine Genauigkeit signalisieren, die nicht da ist. Also nichtmal qualitativ da ist.

On Reflection glaube ich nichtmal, dass der Belohnungsmechanismus beim Combo-System überhaupt irgendwas mit deiner Highscore Überlegung zu tun hat. Combos belohnen unmittelbar, das wird immer stärker sein, als die verzögerte Belohnung des Highscores. Ja ich glaube sogar dass du dich bezüglich der Flipper fundamental irrst. Wenn ich sehe dass ich 300 Punkte schlechter bin, als TGGCs Gigascore, dann werfe ich noch eine Münze ein, und spiele nochmal. TGGC ist zwar doppelt so gut wie ich aber das Spiel tut so, als sei ich nah dran. Wenn ich _sehe_ dass TGGC doppelt so gut ist, gehe ich nach Hause. Umgekehrt, an dem Tag, an dem ich TGGCs Score knacke, _weiß_ ich wieviel Arbeit das war und meine Belohnung ist auf der 1 zu stehen, egal wie das Spiel das rechnet. Der beste Kunde ist nicht TGGC sondern all die armen Typen, die vergebens versuchen so zu sein wie er.

Und das ist nicht nur Nostalgia. Heutige Mobile Games funktionieren genau wie diese alten Flipper. Ich hatte in Seraphs Thread was dazu geschrieben. Knapp gescheitert zu sein kann extrem "ansuchten". Total offensichtlich abgeschlagen zu sein, frustet einfach nur.

Und einen hab ich noch: Highscores funktionieren häufig so, dass im unteren Bereich sehr viel mehr Leute unterwegs sind, sodass du relativ schnell um sehr viele _Plätze_ aufsteigen kannst, weil du mit Leuten konkurrierst, die eine Minute vor dir das Interesse verloren haben. Da ist noch nichts mit Können oder Üben. Und monetarisierungstechnisch ist das natürlich gewollt, weil es motiviert. Wenn der Spieler in Regionen mit echten Gegnern kommt, dann ist er im Idealfall bereits angefixt.

Also Gegenthese: Beim Highscore geht es nur um den Rang. Die absolute Punktzahl muss so designt sein, dass der Aufstieg im Rang bestimmten Eigenschaften folgt. Sie spielt aber für die Belohnung eine untergeordnete Rolle. Combos sind trotzdem gut, aus anderen Gründen.

Sorry, dass ich deine schöne Idee demontiert habe.
Alexander Kornrumpf
Moderator
 
Beiträge: 1617
Registriert: 25.02.2009, 14:37

Re: Gedanken zu Spiele-Engines

Beitragvon Krishty » 23.02.2016, 20:31

Nee, ist astrein. Und absolut nachvollziehbar :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6346
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Gedanken zu Spiele-Engines

Beitragvon MasterQ32 » 24.02.2016, 10:26

Ich möchte hier mal noch einen interessanten Gedanken des Scorings einbringen:

Spelunky hat am Ende zwei Scores: Gesammeltes Geld und benötigte Zeit, die aber getrennt voneinander dargestellt werden. Zeit ist ne klare Score und kann nicht beeinflusst werden. Geld hingegen ist so ne Sache. Ich sammle im Lauf des Spiels Gold und Diamanten ein, um Geld zu generieren. Damit steigt meine Score. Jetzt kann ich aber auch beim Shopkeeper Geld für Items ausgeben, um damit weniger schnell drauf zu gehen oder sogar im späteren Verlauf noch mehr Geld zu bekommen.

Hier hab ich jetzt die Abwägung: Verwende ich einen Teil der einen Score, um die andere Score zu steigern. Zudem gibt es im Spiel auch "Abkürzungen", was heißt, wenn man trödelt, bekommt man eine bessere Zeit.
Duct tape is like the force. It has a light side, a dark side, and it holds the world together.
Benutzeravatar
MasterQ32
Felix Queißner
Establishment
 
Beiträge: 1108
Registriert: 07.10.2012, 14:56

Nächste

Zurück zu Algorithmen und Datenstrukturen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast