Punktevergabe oder wie addiere ich die Punkte richtig

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Benutzeravatar
gombolo
Establishment
Beiträge: 130
Registriert: 26.01.2011, 20:33

Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von gombolo »

Hallo Leute,

ich sitze vor einem kleinen/großen Problem.

ich entwickle einen Shooter...und wie es bei Shootern üblich ist kann man seine Waffe Upgraden...in meinem Fall kann die Waffe in vier Stufen aufgebaut werden und jedes mal verschießt die Waffe mehr Projektile.

Das hat dazu geführt, dass die Spielebalance aus dem Gleichgewicht geraten ist. Das bedeutet die Gegner hat man dann einfach so vom Bildschirm gefegt. Das Spiel wurde zu einfach.

Darauf hin habe ich die "Einschlagsgraft" der Projektile reduziert. von 100% bei Stufe ein -> 80% bei Stufe zwei -> 50% Stufe drei und bei Stufe vier hat ein Projektil eine Einschlagskraft von nur noch 40%. So ist das Spiel viel ausgeglichener.

Nur zu meinem Problem

ich habe für jeden Treffer einen Punkt vergeben. Jetzt muss der Gegner, jedoch mehrmals getroffen werden wenn man ein PowerUp nimmt. Weil die Projektile nicht mehr 100% Kraft haben sondern nur noch 80%, 50% oder 40%

Das führ dazu, dass diesmal zu viele Punkte vergeben werden.

Ich habe jetzt vieles ausprobiert. Über den prozentualen Anteil...über Aufrunden/Abrunden oder einfach game.Score += firepower gemacht

Es passt aber nicht. Durch die Kommastellen und so weiter vergibt es nie die richtigen Punkte. Manchmal scheint es zu funktionieren, aber je weiter man im Spiel kommt wird der Unterschied im Score deutlicher.

  • Hat einer von Euch mal so etwas gemacht und eine Lösung gefunden?
  • Soll ich das einfach so lassen? Fällt das auf? :)
Unten ein Screeshot von der höchsten Aufbaustufen...ganz schon viel Feuerkraft...zu viel?
Dateianhänge
feuerpower.jpg
Mein aktuelles Projekt -> FirstStrike PLAY THE DEMO

BOSSFIGHT -> schau dir das Video an

MAL SEHEN -> Rakete

WAS ICH SONST SO MACHEN -> Grafik und Design
Benutzeravatar
gombolo
Establishment
Beiträge: 130
Registriert: 26.01.2011, 20:33

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von gombolo »

huii...das ging ja schnell :) Danke für den Link. Ich lese mich mal rein...

EDIT: So wie ich das Einschätze löst es mein Problem nicht, aber Danke für den Link. U.U. brauche ich das mal wann/wo anders.
Mein aktuelles Projekt -> FirstStrike PLAY THE DEMO

BOSSFIGHT -> schau dir das Video an

MAL SEHEN -> Rakete

WAS ICH SONST SO MACHEN -> Grafik und Design
LaBerg
Beiträge: 21
Registriert: 09.05.2002, 22:53

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von LaBerg »

Hmm, also mein erster und spontaner Gedanke wäre, dass man die Punkte immer erst vergibt, wenn der Gegner komplett zerstört ist.
Wenn dafür drei Treffer notwendig sind, dann gibt es die Punke halt erst nach den drei Treffern.
Objektorientiert gedacht, weiß jeder Gegner wieviel Punkte er bei seiner Zerstörung vergibt. So könnte man auch einfach einen stärker gepanzerten Gegner realisieren, der dann bei der Zerstörung mehr Punke vergibt.
Matthias Gubisch
Establishment
Beiträge: 470
Registriert: 01.03.2009, 19:09

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von Matthias Gubisch »

Unaabhänging von der Punktevergabe

Ich sehe den Sinn der PowerUps nicht wenn ich dadurch weniger Schaden mache. Wieso sollte ich die überhaupt nehmen als Spieler.

Ist der Sinn davon nicht dass das Spiel entweder leichter wird oder ich auch schwerere Gegner besiegen kann die ohne nicht/kaum zu bezwingen sind?

Ich würde eher an der Stärke der Gegner drehen als an der Durchschlagskraft der Waffe. Und für die Punkte den Vorschlag von LaBerg aufgreifen
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von Krishty »

gombolo hat geschrieben: 30.03.2022, 23:19Ich habe jetzt vieles ausprobiert. Über den prozentualen Anteil...über Aufrunden/Abrunden oder einfach game.Score += firepower gemacht

Es passt aber nicht. Durch die Kommastellen und so weiter vergibt es nie die richtigen Punkte. Manchmal scheint es zu funktionieren, aber je weiter man im Spiel kommt wird der Unterschied im Score deutlicher.
Wut?! Mit einem double kannst du 16 Stellen abbilden. 16! Sicher, dass du nicht wo anders versehentlich zu int gerundet hast? Willst du Code zeigen?

Sowas kann echt subtil sein; das hier stammt aus einem echten Spiel:

Code: Alles auswählen

double exp_a = …;
double exp_b = …;
double aoa = …;
return 1/24 * exp_a * exp_a * exp_a
     + 1/8 * exp_b * exp_b
     + aoa;
Die Ausdrücke 1/24 und 1/8 sind Ganzzahlen, keine Gleitkommazahlen, und ergeben deshalb immer 0. Das Ergebnis ist immer aoa; egal, was im Rest steht. Korrekt wäre 1./24 und 1./8.
(Ich würde sowas übrigens komplett in Festkomma machen. score wäre ein int oder long long, und die letzte Dezimalstelle wäre der Komma-Teil. Score um 40 % reduziert aufaddieren wäre also score += hit * 40 / 100; (mit hit in ganzen Punkten) und die Ausgabe wäre printf("score: %d.%d", score / 10, score % 10))
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2353
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von Jonathan »

Hm, mit einer festen Nachkommastelle wird aber sowas wie 1/3 eklig, da ist man dann ganz schnell bei 3* 1/3 = 0.9.
Wenn man es wirklich genau haben will, kann man natürlich mit Brüchen rechnen, Nenner und Zähler als getrennte Variablen und dann immer mal wieder kürzen, und zum anzeigen dann halt z.B. in ein float umwandeln und nur die ersten paar Nachkommastellen anzeigen.

Aber die Frage ist tatsächlich, ob man das Problem überhaupt lösen muss. Ich fände ansich auch einfach nur Punkte für das Zerstören von Gegnern ok, man könnte auch für jeden Treffer 1 Punkt und fürs Zerstören, 10, 15, 20 Punkte (je nach Stärke des Gegners) kriegen. Man könnte auch einfach später im Spiel leichter mehr oder weniger Punkte kriegen, d.h. selbst wenn ein Schuss nur 40% Schaden macht, kriegt man immer noch einfach einen Punkt dafür. Bei vielen anderen Spielen kriegt man ja später leichter mehr Punkte, ist dann quasi die Belohnung dafür, dass man so weit gekommen ist.

Zur Frage ob das zu viel Feuerkraft ist: Ich würde sagen, auf Dauer schon. So ein Bildschirm ist eben nur begrenzt groß, man kann sowas einfach nicht unbegrenzt eskalieren, irgendwann unterscheidet man in der Wahrnehmung nicht mehr zwischen "der ganze Bildschirm ist voll" und "der ganze Bildschirm ist noch mehr voll". Man kann mit so vielen Schüssen ja auch überhaupt nicht mehr sinnvoll zielen, und das macht ja dann auch irgendwie das Spiel etwas kaputt.
Man könnte überlegen, die Extras zeitlich zu begrenzen. Dann wäre es auch ok, wenn man viel viel stärker ist, weil es nur ein paar Sekunden hält. Und man könnte den Spieler entscheiden lassen, wann er das Extra aktiviert.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von marcgfx »

Ich habe mir auch schon Gedanken dazu gemacht. Die Punktevergabe soll besseres Spielen belohnen. In Devader habe ich ein viel zu kompliziertes Punktesystem eingebaut, abhängig von der Waffe werden für die Zerstörung eines Gegners unterschiedliche Punkte vergeben. Ebenso wird der Verbrauch von Schüssen abgezogen. Weniger Schiessen für die gleiche Zerstörung -> höhere Punktzahl.

Ich finde es ganz Interessant die Punkte für Treffer zu vergeben, schlussendlich ist es m Spieler herauszufinden wie er diese Art der Punktevergabe für den maximalen Highscore zu verwenden hat.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von Krishty »

Jonathan hat geschrieben: 31.03.2022, 08:44Hm, mit einer festen Nachkommastelle wird aber sowas wie 1/3 eklig, da ist man dann ganz schnell bei 3* 1/3 = 0.9.
Fun fact: Das ist mit Gleitkommazahlen ähnlich 😉
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
gombolo
Establishment
Beiträge: 130
Registriert: 26.01.2011, 20:33

Re: Punktevergabe oder wie addiere ich die Punkte richtig

Beitrag von gombolo »

Hallo zusammen :)

ja...ich finde es besser die Punktevergabe nach der Anzahl der Treffer zu vergeben. Eine Reduzierung der Feuerkraft ist notwendig weil die Anzahl der Projektile einfach zu viel wird und das Spiel dann zu einfach....

Die Fehlende Feuerkraft wird durch die Anzahl der Projektile kompensiert und das Spiel lässt sich besser spielen.

JETZT ZUR LÖSUNG

Wie immer war die Lösung sehr einfach, jedoch hat es sich gut versteckt :D

Ich habe bei einigen Feinde so einen Stärke eingestellt, dass dieser Wert geteilt durch 8 (bei 80%) eine ungerade Zahl ergab.

Die Lösung ist einfach :) -> eine Energie vergeben, die durch 10, 8, 5 und 4 teilbar ist ohne Rest.

So scheint das zu funktionieren :D mal sehen

EDIT: siehe unten ein Screenshot von der Feuerkraft.
Dateianhänge
feuerkraft.jpg
Mein aktuelles Projekt -> FirstStrike PLAY THE DEMO

BOSSFIGHT -> schau dir das Video an

MAL SEHEN -> Rakete

WAS ICH SONST SO MACHEN -> Grafik und Design
Antworten