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 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: 6591
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: 1630
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: 6591
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: 3759
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: 6591
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: 6591
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: 1630
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: 6591
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: 1630
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: 6591
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: 1176
Registriert: 07.10.2012, 14:56

Vorherige

Zurück zu Algorithmen und Datenstrukturen

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 2 Gäste

cron