Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.04.2015, 17:18

Fightengine bzw. Taktikengine

Hallo zusammen,

ich suche nach Feedback zu einem Projekt, bei dem ich möglichst vorher klären möchte, ob die Menschheit sowas überhaupt braucht. Es geht dabei um die Entwicklung einer Kampf- bzw. Taktikengine.

Kaum ein Rollenspiel kommt heute aus ohne gute, belastbare Berechnungen zur Ermittlung von Schaden, Lebenspunkten, Statuszuständen, Wahrscheinlickeiten für Drop von Gegenständen usw. aus. Es bedienen sich auch immer mehr Spiele aus anderen Genres den sogenannten Rollenspielelementen - Shooter, Tactics, Towerdefense, Beat em up usw. Und genau das ist mein Ansatzpunkt. Für Audio, Eingaben, Physik, Audio und Netzwerk gibt es bereits jede Menge Unterstützung. Für die Berechnung eines Schadens, der im einfachsten Fall aus Angriff und Verteidigung errechnet wird, kann ich im Netz nichts finden. Daher möchte ich selbst ein Tool entwickeln, das variabel für unterschiedliche Genres die Logik und die Berechnungen mitbringt.

Nun meine Frage an euch: Kennt ihr bereits solche Tools? Hättet ihr daran Bedarf? Glaubt ihr das wäre etwas, wenn man es richtig macht, was sich durchsetzen und verbreiten könnte?

2

25.04.2015, 17:33

Mir scheint dir steht eher im Vordergrund etwas virales zu produzieren, als etwas, was einfach hilft.
Aber mal ganz unabhängig davon: Ich bin gespannt, wie du das designen möchtest, sodass ich es auch nutzen will. So etwas ist nämlich eigentlich ziemlich einfach zu bewerkstelligen, zumindest für die meisten Hobby-Projekte und dort, wo es komplexer wird, ist es sowieso "Sonderfall", wie etwa in einem Sniping-Spiel, wo der Kollisionspunkt von Bedeutung ist.

MfG
Check

3

25.04.2015, 17:42

Was meinst du mit etwas virales produzieren?

Ich greife mal dein Beispiel auf. Wenn in einem Sniping-Spiel unterschiedliche Waffen verwendet werden, der Gegner unterschiedliche geschützt sein kann und an unterschiedlichen Stellen, unterschiedliche hohen Schaden nehmen kann, dann könnte man für alle Kombinationen jeweils einen Wert festlegen. Oder errechnet diesen aus den drei genannten Variablen. Die Formel(n) zur Berechnung würde ich mit meinem Tool vorschlagen.

ERROR

Alter Hase

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

4

25.04.2015, 20:00

Mit etwas viralem ist in dem Fall wohl etwas gemeint, dass sich möglichst weit verbreiten lässt( ohne einen wirklichen Vorteil zu bringen).

Ich verstehe ehrlich gesagt nicht, wozu man da eine Engine für braucht. Hier kannst du zB sehen, wie die Damage-Zonen in Battlefield 4 sind . Die Berechnung für den Schaden ist dann wohl in etwa so: Life -= projectile.getDamage() * projectile.getMultiplier(bodypart);

Wie du siehst ist so etwas extrem trivial und deswegen verstehen wir nicht, wozu man dafür eine Engine braucht.
Eingabe, Physik, Graphic usw sind dagegen um ein sehr grosses Vielfaches komplexer als eine simplle Zeile Code.

Du hast auch noch Dropchancen erwähnt. Nehmen wir mal das "Dropspiel", dass jeder kennen sollte: Diablo (1/2/3). Da werden halt einfach die Gegenstände + Werte in irgendeiner Form gespeichert( ich denke mal eine Database) und von dort aus gelesen. Dann folgt einfach simple Prozentrechnung unter Berücksichtigung aller Faktoren und daraus lässt sich dann der Gegenstand errechnen. Ich muss zugeben, dass man das natürlich nicht in einer Zeile umsetzten kann, aber ich glaube, dass ein so allgemeiner Ansatz wie eine Engine dort falsch ist. Ich frage mich, wie du das Dropsystem von Borderlands, Skyrim, Binding of Isaac, GTA, Far Cry,..... in einer Engine vereinen willst? Klar, Firmen intern wird das wohl klappen (Blizzard als Beispiel), aber als allgemeingültige Engine macht das wohl wenig Sinn zumal auch diese Berechnungen eher trivial sind.

TL;DR: Ich persönlich finde es unnötig.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

25.04.2015, 20:31

Ich denke mal, eine Verallgemeinerung für möglichst alle Schadensberechnungen zu finden, dürfte sehr schwer sein. Auf Anhieb würden mir bereits folgende Variationen einfallen:
  • Es gibt ein Dreieckssystem, bei dem jeder der 3 Schadenstypen gegen einen der anderen beiden besonders gut und gegen den anderen besonders schlecht ist. Das wird in vielen Strategiespielen verwendet, sie Schwertkämpfer, Bogenschütze und Speerträger.
  • Alleine das kann man noch um einiges weiter treiben, indem man weitere Typen und unterschiedlichste Konstellationen einführt. Ein Beispiel dafür könnte Pokémon sein.
  • Und auch wenn es physischen und magischen Schaden gibt, kann es immernoch eine Unterteilung in Elemente geben.
  • Weiterhin könnte es möglich sein, dass gegen einen bestimmten Schadenstyp eine Verteidigung aufgebaut werden kann. Das ist in den meisten Spielen der Fall, in denen man nur normalen Schaden oder normalen und magischen Schaden hat.
  • Angriffe können weiterhin eine Rüstungsdurchdringung haben, wodurch die Rüstung oder magische Verteidigung in ihrer Effektivität herabgesetzt wird.
  • Und es könnte angriffe geben, die gänzlich an der Verteidigung vorbeigehen.
  • Genauso wie der Schaden von Angriffen relativ zur maximalen oder vorhandenen Lebensenergies sein kann. Dafür dürfte einerseits eine der Fähigkeiten von Garen (League of Legends), andererseits 2 Angriffe von diversen Feinden aus Chrono Trigger (Halbierung der Lebensenergie bzw. Verringern der Lebensenergie auf 1 HP) ein Beispiel sein.
  • Weitere Einwirkungen auf die Berechnungen könnten auch auftreten, wenn bspw. durch passive Fähigkeiten alle Angriffe oder jene eines bestimmten Typs abgeschwächt oder verstärkt werden. In Magicka (und Magicka Wizard Wars) haben Blitze eine hohere Wirkung, wenn nasse Einheiten getroffen werden. In anderen Spielen könnte man durch das Herbeirufen eines Sturms Wasserangriffe verstärken (könnte Pokémon gewesen sein).
Abgesehen davon, dass diese Liste nicht vollständig sein muss, können diese Punkte natürlich auch in Kombination auftreten. Und eben weil es so umfangreich ist, wenn man alles abdecken will, dürfte es wohl enorm schwer werden, eine solche "Engine" zu entwickeln.
Zudem ist es, wie bereits beschrieben, sehr einfach, die Berechnung für sein Spiel zu implementieren, wenn man bereits weiß, was man haben will bzw. brauchen wird.
Wenn du bereits am Schreiben einer solchen Bibliothek bist, dann wäre es enorm sinnvoll, auch ein Tool zu schreiben, mit dessen Hilfe man ein Balancing im Bereich der Schadensberechnung einzuführen.

Die Dropwahrscheinlichkeiten zu berechnen ist meiner Meinung nach ein vollkommen andere Aufgabe, die auch unabhängig von der Schadensberechnung betrachtet werden sollte.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

6

26.04.2015, 13:40

Viele Dank schon mal für eure Meinungen.

Zunächst mal muss ich zugeben ist es für Egoshooter wahrscheinlich übertrieben. Ja, es ist im Zweifel nur eine Zeile Code. Mir geht es jedoch eher um die Logik. Die muss man sich vorher genau überlegen und dann die Zeile schreiben. Und warum etwas eigenes erfinden, wenn es schon etwas dazu gibt.. auch wenn der Mehrwert nur gering ist.

Der Mehrwert und somit auch der Anspruch wird größer, wenn man Rollen- oder Strategiespiele entwickelt. Das zeigen auch die unterschiedlichen Punkte von Sacaldur. Diese möchte ich wiefolgt abbilden:

1. Es gibt Schadenstypen (ich habe den Begriff Schadensarten gewählt). Diese können sich aus den Waffen ergeben, können physischer, magischer oder elementarer Natur sein, es kann Giftschaden sein. Der Name ist nicht von Bedeutung. Der müsste weiterhin vom Entwickler festgelegt werden. Genauso wie die Anzahl der Schadenstypen/-arten.

2. Verteidigung (ich habe den Begriff Widerstände gewählt). Zu jedem Schadenstyp gibt es eine Verteidigung. Diese ist entweder fix und für den Spieler unsichtbar. Oder sie ist sichtbar und kann durch Gegenstände, Fähigkeiten usw. verändert werden. Soll ein bestimmter Schadenstyp die Verteidigung ignorieren, bspw. Rüstungsdurchdringung, so ist der Widerstand = 0.

3. Modifikatoren. Modifikatoren sind bestimmte Zustände, die Einfluss auf den Schaden nehmen, auch wenn der Schadenstyp und die Verteidigung dagegen sich nicht verändert. Beispiele für solche Einflüsse sind Wind, Wetter, Rassen der Gegner, Tageszeit usw.

4. Wahrscheinlichkeit für Schaden. Hier kann man wieder Parameter festlegen, die festlegen, ob überhaupt ein Schaden berechnet werden muss. Beispiele sind, Angriffswert, Verteidigungswert, Blockchance, Ausweichchance usw.

5. Prozentualer oder Nominaler Abzug. Hier soll festgelegt, solche Optionen in Anspruch genommen werden sollen. Berechnung ist einfach.

6. Veränderung der Parameter im Laufe des Spiels. Je nach dem, welche Werte im Verlauf des Spiels kontinuierlich steigen sollen, in der Regel physische/r und magische/r Schaden und Verteidigung, und welche nur in einer Range variieren sollen, bspw Widerstand von 0-100%, ergibt sich eine Art der Berechnung.

7. Desweiteren sollen ein paar unterschiedliche Berechnungsarten angeboten werden. Die eine ist eher Würfelbasiert und orientiert sich an Dungeons & Dragons. Die anderen bieten unterschiedliche Formeln, die den Fokus auf bestimmte Aspekte setzen und somit das unterschiedliche taktieren beeinflussen.

Der Spieleentwickler soll also mit einem Wizard durch die ersten 6 Punkte geleitet werden. Im Punkt 7 werden dann die Berechnungsarten angeboten und ein Testcalculator, der dem Entwickler gibt die festgelegten Parameter mit Werten zu befüllen und sich den Schaden für unterschiedliche Konstellationen anzuschauen. So kann der Entwickler etwas rumprobieren, um die richtige Balance und die richtige Kalkulation für das eigene Spiel zu finden.


Zusammengefasst glaube ich also schon die Punkte von Sacaldur abbilden zu können. Die Schwierigkeit bei der Entwicklung dieses Tools wird wenig im Programmieren, sondern eher im Mathematischen liegen. Den Nutzen des Tools sehe ich steigend, bei steigenden taktischen Möglichkeiten im Spiel.

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

7

26.04.2015, 15:22

Zitat

Zunächst mal muss ich zugeben ist es für Egoshooter wahrscheinlich übertrieben. Ja, es ist im Zweifel nur eine Zeile Code. Mir geht es jedoch eher um die Logik. Die muss man sich vorher genau überlegen und dann die Zeile schreiben. Und warum etwas eigenes erfinden, wenn es schon etwas dazu gibt.. auch wenn der Mehrwert nur gering ist.



Weil das ganz erheblich vom Game Design abhängt und sich aus diesem erschließen sollte und nicht umgekehrt. Es gibt Physik-Engines weil Physik - zumindest grundsätzlich - in jedem Spiel gleich funktioniert. Möchte ich eine Abwandlung davon haben, ist eine Physik Engine trotzdem noch hilfreich. Genau so verhält es sich mit Licht, Sound und anderen Effekten - das Prinzip ist immer gleich und eine Abwandlung davon durch die gleichen Tools möglich.

Schadens- und Taktikmodelle sind aber von Spiel zu Spiel teilweise komplett unterschiedlich und alles andere als universell. Es gibt nicht "die eine Methode" und es wird sie auch niemals geben. Jedes Spiel hat seine eigenen Feinheiten und Anforderungen. Tools wie der RPG Maker haben ja auch immer wieder das gleiche Kampfsystem, und sobald ich auch nur die kleinste Abwandlung davon machen will, muss ich das ganze Ding komplett umschreiben.

Du könntest quasi ein solches Framework(das Wort Engine scheint hier fehl am Platz zu sein) schreiben, das einem Arbeit abnimmt, aber dies wäre entweder extrem umfangreich & komplex oder, wie beim RPG Maker eben auch, sehr speziell. Du müsstest tausende von Fällen abdecken können, es gibt so viele Variablen...

Oder möchtest du quasi eine "Formelsammlung" anbieten? Das könnte ich mir schon eher vorstellen, aber ich weiß nicht ob du das so meinst.
WIP Website: kevinheese.de

Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

26.04.2015, 16:19

Du könntest quasi ein solches Framework(das Wort Engine scheint hier fehl am Platz zu sein) schreiben, das einem Arbeit abnimmt, aber dies wäre entweder extrem umfangreich & komplex oder, wie beim RPG Maker eben auch, sehr speziell. Du müsstest tausende von Fällen abdecken können, es gibt so viele Variablen...

Oder möchtest du quasi eine "Formelsammlung" anbieten? Das könnte ich mir schon eher vorstellen, aber ich weiß nicht ob du das so meinst.

Ich hätte auch direkt an ein Framework gedacht. Wie umfangreich es sein muss hängt davon ab wie gut die Abstraktion gewählt ist. Auf Anhieb fällt mir da folgendes ein:

1. Es gibt einen Grundschadenswert (Kommt von der aktuellen Waffe, Zauberspruch oder sonstiges)
2. Der Grundschadenswert durchläuft eine Kette von Modifikatoren. Dabei hat ein Modifikator eine Funktion die bestimmt ob der Modifikator angewendet wird und eine die den Effekt des Modifikator bestimmt (+- absoluter oder relativer Wert).

Man kann dann Funktionen mitgeben die sich zu Modifikatoren kombinieren lassen und aneinanderreihen lassen. Anwendungsfunktionen könnten auf Wahrscheinlichkeiten/Würfelwürfe oder irgendeinen Status basieren und Effektfunktionen könnten so etwas wie Schadensarten oder Trefferzonen umsetzen.

Diese Kette könnte man durchaus auch aus einer Datei laden und so in einem extra Tool zusammenstellen und simulieren. Die Frage ist nur, wie man das später am Besten ins das eigentliche Spiel verdrahtet, da die Effekte potentiell viele Informationen aus dem aktuellen Spielzustand brauchen.

9

26.04.2015, 20:19

Engine war wohl der falsche Begriff. Mir ist bisher kein besserer eingefallen.

@KeksX
Mir geht es gar nicht darum alle Konstellationen abzudecken und für alle die richtige Formel zu liefern. Mit ein paar vorgedachten Funktionen kann ja jeder Entwickler für sich selbst entscheiden, ob ein vorgeschlangener Weg zur Schadensermittlung passt oder nicht. Und falls nicht, so hätte man die Möglichkeit darauf aufzusetzen und es weiter zu entwickeln.

@Tobiking
Wenn unterschiedliche Status im Spiel vorherrschen und darauf der Modifikator aufsetzt, würde ich schon davon ausgehen, dass das Spiel weiß welcher Status gerade vorliegt.

Die Implementierung Stelle ich mir so vor, dass die Funktion mit den entsprechenden Übergabeparametern angesprochen wird. Die Funktion kann dann in den Quellcode des Spiels übernommen werden.

@Alle
Um den Bedarf zu ermitteln, muss ich wohl doch erst einen kleinen einfachen Prototyp erstellen, um aufzuzeigen in welche Richtung es gehen könnte. Ich wollte eigentlich zuerst wissen, ob es jemand gebrauchen kann, bevor ich mich ans coden setze. Aber es ist wohl doch besser, wenn ich in Vorleistung gehe.

Das soll jedoch nicht die Diskussion abwürgen. Wenn ihr also ne Meinung zu dem Thema habt, gerne her damit!

Werbeanzeige