• Mitspieler gesucht? Du willst dich locker mit der Community austauschen? Schau gerne auf unserem ComputerBase Discord vorbei!

BF3 Technik hinter battlefield 3?

Andymiral

Lt. Commander
Registriert
Apr. 2011
Beiträge
1.432
Ich habe mich heute spontan gefragt, wie ein spiel wie Battlefield 3 technisch umgesetzt wird?

Ich meine, wie _funktioniert_ es im hintergrund.
Was passiert auf meinem pc bzw. dem server wenn wir laufen, schiesen, springen, objekte explodieren. Auch was an Daten gesammelt wird, man kann ja in der statistik sehen mit welcher waffe man wieviel schuss abgegeben hat usw...

Würde mich einfach mal interessieren wie sowas abläuft, ich bin kein programmierer und hab 0 ahnung davon... aber letztendlich müssten das ja ständige berechnungen/abfragen von spielern/objekten/kugeln sein ?

Kennt sich jemand mit der materie aus und kann es ein bischen erklären?
Hat jemand hintergrundinfos?

Grüße
 
Wow. Also das ist mal ein weites Feld :D

Klar, jede klitzekleine Bewegung wird "berechnet". Allerdings ist das ganze wirklich sehr umfangreich, also wenn du dich für sowas interessierst dann gibt es zum Thema programmieren wirklich viel Bücher.

Am besten fängst du mal mit einer einfachen Sprache (ich bin kein Fan von Java, aber das wird häufig empfohlen) an, auch damit lassen sich dann schon kleine Spiele programmieren. Ich würde mir an deiner Stelle das Buch "Java ist auch eine Insel" mal ansehen, ist umsonst im Internet verfügbar.

Da wird es dann Beispiele geben wo man zum Beispiel eine Kugel in einem Fenster hin- und herfliegen lässt, z.b. auch so dass sie im korrekten Winkel von den "Wänden" abprallt.

Daran wirst du dann schon sehen wie sowas im Prinzip funktioniert, natürlich sind Spiele wie Battlefield um ein vielfaches komplexer. Spiele-Design oder -Programmierung gibt es auch als Studienfach...

MfG Tim
 
@D4L4!L4M4 danke für den Tipp mit Java ist auch eine Insel direkt mal geladen wird meine Abendlektüre ;)
 
"c++ für spieleprogrammierer" gibt dir anhand einer programmiersprache und einen beispielspiel einen guten Einblick...

p.s. sehr großes feld. nicht in 2 sätzen erklärt bzw ;)
 
Andymiral schrieb:
Würde mich einfach mal interessieren wie sowas abläuft, ich bin kein programmierer und hab 0 ahnung davon... aber letztendlich müssten das ja ständige berechnungen/abfragen von spielern/objekten/kugeln sein ?

ja, beim schießen müssen die ja nur den abschuss- und zielort festhalten, die animation ist wieder was anderes

java programmierbücher helfen den user in dieser frage wohl wenig weiter
 
In der Counter-Strike-Materie sind die Hergänge auf Server- und Clientseite ziemlich gut erforscht und dokumentiert mittlerweile, wenn dich der rein technische Hintergrund interessiert. Ist zwar nicht 1 zu 1 dieselbe Engine bzw. Netcode, aber das Prinzip ist ähnlich.
 
noay11 schrieb:
ja, beim schießen müssen die ja nur den abschuss- und zielort festhalten, die animation ist wieder was anderes

Dann hätten wir da noch Geschwindigkeit des Projektils, Entfernung, mögliche Verschiebung nach unten, Streuung, mögliche Objekte dazwischen usw.

Einfach nur zu sagen das Objekt X an Position A austritt und in Position B einschlägt ist unklug, vor allem kann dazwischen noch etwas passieren. Jede Position des Projektils wird berechnet, auf mögliche Veränderungen überprüft, an den Client und an den Server geschickt und zurück. Ist alles schon extrem komplex und halt viel Mathe(dürfte eigentlich Vektoren im dreidimensionalem Koordinatensystem sein wenn ich mich nicht irre).

Mich interessiert das ganze auch, ist aber wie gesagt sehr komplex und nicht einfach mal so in ein paar Posts erklärt.
 
Andymiral schrieb:
aber letztendlich müssten das ja ständige berechnungen/abfragen von spielern/objekten/kugeln sein ?
Ja, genauso ist es und diese gigantischen Informationen sind der Grund, weshalb Gaming-PCs am oberen Ende der Leistungsskala anzutreffen sind, wohingegend 10 Jahre alte P4 oder Athlons im Office noch klaglos ihren Dienst versehen.

Grob gesagt gibt es 2 Bereiche: Physik und Grafik.

Physik berechnet das Spielgeschehen, Flugbahnen, Hindernisse. Klingt kompliziert ist aber relativ überschaubar. Im Netzwerk läuft diese Komponente auf einem Server. Für die Lanparty habe ich mal einen dedizierten Server für FFOW unter VMware laufen lassen, das hat kaum Last erzeugt und konnte ohne Probleme im Hintergrund zu einem stattfindenden Match laufen.

Physik-2 läuft dann auf dem Client, der baut die gleiche physikalische Welt auf, berechnet diese ebenso um Netzwerkschwankungen zu vertuschen. Korrekturen werden permanent vom Server übermittelt. Das hat z.B. diese Effekte:
Bei einer unterbrochenen Verbindung fahren die Panzer geradlinig weiter, bis das Spiel abbricht eine Steuerung ist nicht möglich.
Bei FFOW werden Korrekturdaten weit entfernter Objekte (z.B. Panzer) seltener übertragen als nahe Ereignisse, um den Datenstrom klein zu halten. Panzer in der Ferne springen dadurch oft hin und her und lassen sich mit der Railgun schwer treffen. Die Fire-and-forget-Rakete wird aber auf dem Server berechnet und trifft.
Es gab Spiele, da lief man auf einen Abgrund und stoppte. Laggt die Verbindung zum Server, fiel man trotzdem in den Abgrund und steht plötzlich wieder an der Kante, weil vom Server die Daten verspätet eintreffen.
Die verursachte Bandbreite ist bei Ego-Shootern erstaunlich gering, oft reichen 1MBit-Leitungen und weniger.

Die Grafik-Berechnung ist der aufwändigere Teil und sorgt für die Hauptlast auf der CPU. 3D-Karten unterstützen die 3D-Darstellung aber nicht wirklich. Die Sichtachsen, Verdeckungen, Spiegelungen, Schatten, Lichtstrahlen, Oberflächen werden weitgehend von der CPU berechnet. Mehr Details erhöhen hier ein wenig die Last, wie auch die Anzahl der Objekte im Sichtbereich. Das Ergebnis ist eine Liste mit Dreiecken, Koordinaten und welche Textur (Nummer der Textur) mit welcher Effektnummer dargestellt werden soll. Z.B. Dreieck x1-y1,x2-y2,x3-y3; Textur 5120, Effekt 238.

Die Grafikkarte nimmt den gewaltigen Datenstrom entgegen (oft aber unter 1GByte/s), weshalb Grafikkarten mit 1-2 PCI-Lanes schon ganz gut funktionieren. Die Grafikkarte zeichnet diese Dreiecke und füllt diese mit Texturen, Pixel für Pixel. Da die Texturen bei aktuellen Spielen sehr groß sind, werden theoretisch große Datenmengen vom Hauptspeicher zur Grafikkarte übertragen, praktisch landen die alle im Speicher der Grafikkarte, wo sie superschnell vor Ort sind. Bildpunkt für Bildpunkt wird abgetastet, welches Dreieck, welche Position auf der Textur, welcher Effekt. Eine Doppelte Anzahl der Pixel (größer Monitor) sorgt für fast doppelte Rechenlast. Die Berechnung von 1920x1200=2.304.000 Bildpunkten erfolgt mehrhundertfach parallel, was die besondere Spezialisierung der Grafikkarten darstellt (einfache Rechenoperationen, hochparallel). Der Datendurchsatz der GPU ist enorm und bedingt schnellen Grafik-Speicher. Eine Übertaktung ist kaum mehr möglich, skaliert aber sehr stark, wenn es gelingt.
Optische Effekte wie Rauch, Falschfarben, Feuer, Flimmereffekte werden auch hier berechnet und Antialiasing/Anisothropische Filter gg. unschöne Muster der Rasterung werden ebenfalls nachträglich über das Bild berechnet.

Raytracing ist eine andere Form der Grafikberechnung, oben beschrieben ist das Rasterizing. In CB gibt es jedes Jahr eine Reportage zum technischen Stand. Hier werden die "Sehstrahlen" einzeln berechnet. Die Recheneinheit braucht dafür Zugang zum physikalischen 3D-Modell der Umwelt. Das hat derzeit nur die CPU, nicht die GPU. Die Rechenschritte sind m.W. aufwändiger als das was die Pixelshader einer Grafikkarte leisten. Dies wird von der CPU (derzeit mit Unterstützung separater sauteurer CPU-Karten) realisiert. Das Ergebnis ist eine echte Lichtbrechung und Fotorealistische Darstellung, also schlichtweg die Zukunft. Quake-RT ist wohl spielbar, allerdings kaum bezahlbar.

Da intel das Geld und die leistungsstärksten CPUs haben und allen klar ist, dass die Rechenleistung für 90% der Kunden irrsinniger Overload darstellt, treiben sie die Forschung auf diesem Gebiet voran.
Hat dieser Weg Erfolg, sind die Kunden wieder hinter schnellen CPUs her und man hat das Patent auf die neue Grafikschnittstelle im Sack. ATI (AMD) und nVidia können ihre Grafiksparte zumachen.

PS: Ich hoffe, ich habe nicht allzuviel Schmarren geschrieben.
 
@Kowa

Auch wenn ich nicht der TE bin, vielen dank für die ausführlichen und verständlichen Informationen.
Ich finde sowas auch höchst interessant.

Kanns kaum erwarten wenn Raytracing zum standard wird.
 
@Kowa
Auch von mir ein herzlichen dank. Habe mir deinen beitarg interesiert gelesen.
 
Zurück
Oben