Dynamische Schadensmodell-berechnung?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Dynamische Schadensmodell-berechnung?

BeitragSa, Apr 23, 2011 1:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Hab die Tage mal wieder GTA 4 gespielt und mich dabei gefragt, ob es möglich sei, eine dynamische Schadensmodell-berechnung in BlitzBasic zu programmieren. Habe mir direkt danach mal gedanken gemacht und bin zu folgenden enschluss gekommen:
Um dynamische Schadensmodelle zu erstellen muss erstmal ein neues 3D-File format erstellt werden (z.b.: .rcm (RealCollisionModel)). Eine solche Datei wird erstellt, in dem man ein Programm schreibt, welches ähnlich Google SketchUp aufgebaut ist (Linien werden vom User gezeichnet, Sie dienen als "Verschiebungslinien"). In der Datei werden die Start- sowie Endpunkte einer Linie gespeichert. Hat der User ein Modell erstellt, wird es über den Befehl RCM_LoadVehicle(File$) geladen. Nun wird pro Frame geprüft, ob das geladene Modell mit einem anderen kollidiert ist. Ist das der Fall, so wird geprüft, wie stark die Kollision ist, bzw. wie weit die Linien gekürzt werden müssen. Alle anliegenden Linien müssen nun entsprechend verändert werden, sodass sie wieder mit der gekürzten Linie "zusammenhängen". Um das mal zu veranschaulichen, habe ich mal ein BeispielModell mit SkechUp erstellt:

Sagen wir, der Programmierer hat ein Modell (Auto) erstellt, was vorher so aussieht:
user posted image

Nun fährt der spätere Benutzer - sagen wir - mit 40km/h links vor eine Mauer, das Modell sollte nun wie folgt aussehen:
user posted image

Mein größtes Problem dabei: Wie kann man in BB 3D-Linien erstellen und danach auch noch ausrechnen, wie stark, bzw. wie schnell der Benutzer vor ein anderes Modell gefahren ist? Oder wie weit die Linien verkürzt werden müssen? Oder wie man die Grad-zahlen für zwei aneinanderliegenden Linien ändert? oder ob BB so schnell ist, das es die modelle neben anderen Berechnungen noch relativ schnell berechnen kann?

Ich hoffe ich konnte mein Problem einigermaßen verständlich schildern,
mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragSa, Apr 23, 2011 2:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist dein Spiel schon so weit fortgeschritten, dass es Spaß macht und man gewinnen und verlieren kann?
Ist es für dein Spiel ein integrales Feature ohne dass das Spiel nicht funktioniert?
Wenn du keine dieser Fragen mit einem lauten, JA beantworten kannst, würde ich generell davon abraten solche winzigen Details mit enormen Aufwand zu implementieren.

Davon abgesehen: Klar ginge das, wenn man weiß was man tut, natürlich ist Blitz schnell genug, wenn man es optimiert. Wenn du aber nach 3D-Linien fragst, würde ich dir raten, kleiner und mit den Grundlagen an zu fangen. Vektorrechnung & Kollisionsnormalen wären ein guter Anfang...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Chrise

Betreff: Re: Dynamische Schadensmodell-berechnung?

BeitragSa, Apr 23, 2011 2:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Man könnte das ganze jetzt natürlich mit irgendwelchen Verlet-physiken erreichen, ich bezweifle allerdings, dass das effizient bei vielen Verbindungen zwischen Vertices im Modell funktionieren kann.

Also wenn ich dem Problem konfrontiert wäre, würde ich einfach Improvisieren. Ein stark vereinfachtes Modell im Programm oder extern Konstruieren und dann Einflussbereiche auf verschiedene Vertices erstellen (Vielleicht an möglichst vielfältigen Stellen/Knotenpunkten). Wenn einer dieser Einflussbereiche betroffen ist (durch Kollision oder schüsse oder was weiß ich) verschiebt sich dieser Bereich und mit ihm die ihm zugeordneten Vertices des Modells. Vielleicht je nach Entfernung zum Einflussbereich, verschieden stark, sodass ein Vertex mehreren Einflussbereichen zugeordnet sein kann.

Wäre insgesamt ein improvisierter Lösungsvorschlag, keine Goldene Regel, aber der Spieler würde am Schluss keineswegs merken, ob es sich um eine absolut realistische Berechnung handelt, oder ob es sich um eine ansatzweise korrekte aber nicht exakte Berechnung handelt.

Gibt bestimmt aber noch tausend bessere Möglichkeiten, das ist und war nur ein Vorschlag Wink

lg Chrise
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

Noobody

BeitragSa, Apr 23, 2011 2:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Realistische dynamische Schadensmodelle sind unheimlich kompliziert und sind in Echtzeit eigentlich nicht wirklich umsetzbar. Wie sich gewisse Punkte auf dem Modell im Verhältnis zu anderen verschieben, alles abhängig von Kollisionspunkt, -stärke, Material des Modells, Form (und somit Stabilität) etc. etc. sind Fragen, die sich Entwickler von professionellen Simulationstools stellen, aber für einen normalen Menschen ist sowas kaum umsetzbar.

Vor allem aber sind solche Schadensmodelle für ein Spiel gar nicht wichtig. Da du schätzungsweise mit Autos zu tun hast, mach einfach für einzelne Autoteile (Scheiben, Motorhaube, Kotflügel etc.) verschiedene Texturen oder gar Meshes und tausche sie je nach Schadensniveau aus. Dazu kommt natürlich noch der Einwand von Xeres, dass man sich um solche Spielereien eigentlich erst kümmern sollte, wenn das Spiel schon fertig ist, wenn man dem Projekt nicht gerade den Todesstoss durch Featureitis verpassen will.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

BladeRunner

Moderator

BeitragSa, Apr 23, 2011 7:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Schliesse mich meinen Vorrednern an. Mach Doch erst mal die wesentliche Spielmechanik bevor du dich ans EyeCandy wagst. Und lern einen anderen Modeller als Sketchup zu benutzen, sonst wird das eh nichts mit dem Spiel Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

TimBo

BeitragSa, Apr 23, 2011 10:37
Antworten mit Zitat
Benutzer-Profile anzeigen
SketchUp ist cool Very Happy

nein zum Thema:
bei GTA war es doch auch nichts anderes, als das iwelche Teile vom Auto durch irgendwelche anderen Meshs ausgetauscht wurden. Gestört hat das doch niemand wirklich...
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

CO2

ehemals "SirMO"

BeitragSa, Apr 23, 2011 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres: Nein... Ich sagte ja, das mir die Idee beim GTA IV zocken kam Rolling Eyes

@ Chrise: DAnke für die Antwort!

@ Noobody: Ok, werd das auch mal ausprobieren!

@ BladeRunner: Wieder das SketchUp - "Problem" Rolling Eyes ... Ja ich weiß: Das macht zu viele Polygone. Und meine Antwort (wie immer): Zeig mir einen Modeller, der so simpel aufgebaut ist, wie SketchUp... Blender hab ich schon Probiert, da sehen meine Modelle aber aus wie Sch****!

@ TimBo:
Zitat:
bei GTA war es doch auch nichts anderes, als das iwelche Teile vom Auto durch irgendwelche anderen Meshs ausgetauscht wurden. Gestört hat das doch niemand wirklich...
Du meinst jetzt hoffentlich nicht GTA IV... Da haben die doch so rumgeprahlt, das jede Bewegung berechnet wird, und das auch die Schadensmodelle dynamisch erstellt werden...


mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

BladeRunner

Moderator

BeitragSo, Apr 24, 2011 7:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum sollte ich Dir einen anderen Modeller zeigen? Willst Du dieses Spiel schreiben oder ich? Dann muss Dir klar sein dass Du auch Arbeit dafür investieren musst. SketchUp ist und bleibt völlig ungeeignet für den Job.
Auch das erstellen von Modellen ist etwas was sehr viel Übung erfordert, wenn man es richtig machen will.
Programme mit denen das gelingen kann gibt es zu hauf, allerdings musst Du dann auch unter Umständen was löhnen. So ist das eben im Leben.
Ich finde es eben einfach nur Perlen vor die Säue, mit solchen Anfragen wie dieser hier zu kommen solange Du noch nicht mal die Grundbedingungen für dein Vorankommen geklärt hast (und das obwohl dir die Problematik ja hinlänglich bekannt ist).
Du willst Sketchup weiter benutzen? Gern, ist dein Bier, aber erwarte nicht dass man dir hilft solange Du unrealistische Zielsetzungen verfolgst. Mit den von Sketchup generierten Modellen wirst Du niemals einen dermaßen vernünftigen Polycount erreichen dass ein gut laufendes Spiel zustande kommt. Das ist ein Fakt.
Und ebenso ist ein Fakt dass ein dynamisches Schadensmodell volllkommen unnütz ist solange Du kein spielbares Spiel hast um es rein zu bauen. Das ist Featureitis, sonst nix. Leg Deine eigene Messlatte nicht auf GTA4. Mach erst mal ein Spiel, und dann kannst Du es uberpimpen. So ist alles Gerede nur verschwendete Zeit, denn Du wirst mit dieser Arbeitsmethode niemals zu was benutzbarem kommen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

TimBo

Betreff: Frohe Ostern erstmal :) ...

BeitragSo, Apr 24, 2011 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
ich dachte bei GTA San Andreas gab es auch schon Schäden am Auto.. ist aber schon etwas her. Entschuldigung, falls ich da Mist geredet habe.

Versuche Blender, hat sich einiges getan. Die neue Version macht um einiges mehr Spaß als die Alte. Die Oberfläche ist sehr viel mehr intiutiv, als die Alte, die mich regelrecht zum verzweifeln gebracht hat Wink
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

CO2

ehemals "SirMO"

BeitragSo, Apr 24, 2011 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
@ BladeRunner: gut

@ TimBo: Nicht falsch verstehen: In GTA SA gab es auch Schadensmodelle, so wie du beschrieben hattest... Ich meinte nur die dynamische Schadensmodell-berechnung.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragSo, Apr 24, 2011 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Man könnte die Vertices der Kollisionsflächen auch ein Stück + Zufall in Kollisionsrichtung verschieben. Ist zumindest Dynamisch, wenn auch wenig realistisch.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group