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.05.2014, 22:12

Wie funktioniert ein PC-Spiel???

Hallo zusammen,
heute mal eine ganz grundlegende Frage. Wie funktioniert ein PC-Spiel überhaupt?? Also wonach muss ich suchen wenn es um die Beziehung von Spiele-Software zur Hardware geht? Vor allem würde ich gerne mehr über die Zusammenarbeit vom RAM und Festplatte wissen, denn soviel ich weiß werden die Daten eines Programms ja eh erst alle in den RAM geladen, da hier deutlich schneller gearbeitet wird. Doch wie arbeitet der Quatsch denn nun zusammen??

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

2

26.05.2014, 11:08

Ich denke da gibt es genügen Informationen im Internet oder in Büchern. Im eigentlichen Sinn fragst du nämlich, wie ein PC funktioniert, denn ein Spiel ist nichts anderes als eine Applikation, welche etwas mehr Grafisch orientiert arbeitet.
Um die PC Architektur zu verstehen gibt es dann auch wieder einfachere und kompliziertere Erklärungen.

Hier mal ein Stichwort welches du verwenden kannst um mehr Informationen zu beschaffen: Von Neumann Architektur

Falls du gut Englisch kannst und wirklich lernen willst wie das alles aufgebaut ist, dann kannst du auch einen Blick auf From NAND to Tetris werfen.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

@zimmer

Alter Hase

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

3

26.05.2014, 11:16

Willst du ein cheat Programm schreiben? :P Schreib doch weniger geschwollen und einfach was du vorhast, vielleicht kommen ja blöde bemerkungen aber du bekommst so ehr etwas genauere Antworten

4

26.05.2014, 12:35

Wie funktioniert ein Computerspiel?
Dahinter steckt die Frage, was in einem Spiel zusammenarbeitet - denn Spiele bestehen grundsätzlich aus mehreren Modulen. So willst du mit deiner Frage über die Struktur dieser Module bescheid wissen. Du möchtest aber auch die Funktionsweise dieser Module über einen Zeitraum erklärt haben.

1. Strukturell

1.1 Aus Sicht des Rechners
Man kann das aus verschiedenen Perspektiven betrachten. Vom Computer aus selber ist es nichts weiter als ein Programm, dass die CPU anweist, diverse Berechnungen zu machen, verschiedene Assets zu laden und zu verarbeiten und mit der GPU zu kommunizieren. Wenn du nicht weißt, was CPU und GPU sind, solltest du an dieser Stelle besser erstmal googlen.

1.2 Aus Sicht des Programmierers
Aus Sicht des Programmierers steckt dahinter natürlich viel mehr. Er muss die Struktur des Programms verstehen. Grob erklärt sich diese in den meisten Spielen wie folgt:
Es gibt mehrere Schnittstellen innerhalb der Anwendung, die verschiedene "Levels" (nicht zu verwechseln mit den Welten in einem Spiel) abgrenzen. Das oberste Level (High-Level) entsteht bei der Spieleentwicklung. Dabei geht es im Grunde hauptsächlich darum, die nötigen artistischen (Game-Design, Story, Charaktere, Texturen, ...) und technischen Schritte (evtl. Editoren, Effekte, Verhalten, ...) zu gehen, um viele Hilfsmittel, verschiedene Werkzeuge etc. zusammen zu führen und die eigentlich Anwendung (das Spiel) zu schreiben. Das kannst du dir letztendlich wie eine Art komplexe Maschine vorstellen, die aus mehreren Modulen und Ressourcen dann etwas auf deinen Bildschirm bringt, oder aus den Lautsprechern pfeffert. Einige dieser Module können in mehreren Spielen verwendet werden. Darum werden sie häufig zusammengefasst ausgelagert - in "Engines".

Ein weiteres Level ist die sog. API. Das sind beispielsweise DirectX oder OpenGL. Diese stellen Hilfsmittel für die Programmierer zur Verfügung, um Objekte auf dem Bildschirm zu zeichnen, Mausbewegungen abzufangen oder coole Sounds aus den Boxen zu dreschen.
Was erkennen wir an diesem Level? Nun, die API scheint also irgendwie eine Schnittstelle in Bezug zur Hardware darzustellen. Allerdings nicht direkt. Die API steuert entsprechend den Treiber der Hardware an, welcher dann direkt der Hardware Answeisungen geben kann, beispielsweise vereinfacht "Zeichne Pixel mit Koordinaten 2,2 in grün".


2. Zeitlich

Zeitlich gesehen machen diese einzelnen Module nur ihre Funktion und geben ihr Ergebnis dem nächsten Modul weiter. Es entsteht also eine Art Pipeline (Reihenfolge / Ablauf / ...). Pro Bild (Frame) werden mehrere (nahezu alle) dieser Module durchlaufen und machen dann ihren Job. Grob gesehen könnte das wie folgt aussehen:
  1. Input: Abfragen der Status von Tastatur und Maus, um Benutzereingaben zu ermöglichen
  2. Dynamics (häufig mit "Update" bezeichnet): Alles, was sich in einem Spiel bewegt, zerfällt, zerstört oder gebogen wird, .. alles, was kreucht und fleucht, was plötzlich da ist und wieder verschwindet. Beispielsweise werden hier die Bewegungen der Gegner berechnet
  3. Rendering (engl. für Bildsynthese): Jetzt wollen wir den ganzen Quatsch auf den Bildschirm pressen. Dazu werden Effekte eingesetzt und sog. Draw-Calls ausgeführt (also man gibt die Anweisung, dass eine spezifische Geometrie dargestellt (gerendert) werden soll)
  4. Presenting / Output / Flush: Streng genommen wurden im vorherigen Schritt die Befehle nur aufgezeichnet und werden nun an die Grafikkarte geschickt und dort ausgeführt. Dabei kommt also ein Bild zustande (Backbuffer), dass dann lediglich zum Ausgang (Front-Buffer) geschickt werden muss. Diesen Prozess nennt man auch Buffer-Swap.
Danach geht alles eben wieder von vorne los.

3. Fazit

Ein Computerspiel ist eine komplexe Anwendung. Grund dafür ist, dass mehrere an sich schon komplexe Module zusammenarbeiten und letztendlich vom Rechner einfach immer wieder stur als Programm abgearbeitet werden. Am Ende kommt pro Abarbeitung ein Bild auf dein Monitor und der Spieler sieht, dass er bspw. mit W nach vorne laufen kann.
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »iSmokiieZz« (26.05.2014, 12:48)


5

26.05.2014, 20:59

Super, danke für die vielen Antworten. Nun ich denke es wird Sinn machen ich mehr über die Funktionsweise modernden PC's zu informieren. Warum ich die frage gestellt hab: Nun ich habe überlegt wie ich Anwendungen (also Hauptsächlich PC-Spiele) von meinem Home-Server(einfacher Windows-Server) aus starten kann aber lokal auf meinem PC verarbeite, also alle Rechenprozesse auf meinem PC stattfinden und nicht auf dem Server. Somit sollte der Server nur als Speichermedium arbeiten. Fragt nicht warum man sowas machen sollte, ich hab halt alles gern Zentral :pillepalle: ;)

6

26.05.2014, 21:35

Edit: Quark entfernt - nicht richtig gelesen.
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »iSmokiieZz« (26.05.2014, 22:13)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

26.05.2014, 21:40

Auf Gamona gibt es einen Artikel dazu: http://www.gamona.de/games/hinter-den-di…le,2451375.html
Habe dem Autoren da ein wenig unter die Arme gegriffen. Bitte nicht zu kritisch sein, es ist für Laien formuliert.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

26.05.2014, 21:57

Super, danke für die vielen Antworten. Nun ich denke es wird Sinn machen ich mehr über die Funktionsweise modernden PC's zu informieren. Warum ich die frage gestellt hab: Nun ich habe überlegt wie ich Anwendungen (also Hauptsächlich PC-Spiele) von meinem Home-Server(einfacher Windows-Server) aus starten kann aber lokal auf meinem PC verarbeite, also alle Rechenprozesse auf meinem PC stattfinden und nicht auf dem Server. Somit sollte der Server nur als Speichermedium arbeiten. Fragt nicht warum man sowas machen sollte, ich hab halt alles gern Zentral :pillepalle: ;)

In den meisten Fällen kannst du das Spiel einfach auf den Server kopieren, den Ordner per Dateifreigabe verfügbar machen und das Spiel mit dem Client von dort starten. Wenn das Spiel mit den Pfaden nicht klarkommt, kannst du noch ein Netzlaufwerk daraus machen. Das sollte die meisten Spiele und Anwendungen zufrieden stellen, da es dem Dateizugriff egal ist, über welches Medium es geht. Dafür sorgt das Betriebssystem.

Dir sollte aber im Klaren sein das das übliche Netzwerk deutlich langsamer ist als der Zugriff auf ein Laufwerk und damit die Ladezeiten deutlich in die Höhe schießen werden.

Swoerm

Alter Hase

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

9

26.05.2014, 22:03

@Tobiking
Wenn ich dich richtig verstehe wird dann aber nicht die IP des Servers sondern die des Client-PCs verwendet. D.h. wenn der Spieler über die Server-IP dem Server joinen will kann er das nicht da die Client-IP verwendet wird.

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Toemsel

Treue Seele

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

10

27.05.2014, 02:37

Erinnert mich an Client - Server Kernel Architektur. Hierbei ist es uninteressant welcher "Dienst" auf welchem Rechner läuft.
Klarer Nachteil: Zugriffszeit. Sollte es sich rein nur um die Berechnung handeln: Cloud Computing.

Zitat

Hallo, auf den Ram werden alle Variabeln und Instanzen von Klassen und strukturen etc. Gespeichert, auf der Festplatte werden z.b. die Spielstände gespeichert, also alles was man nicht nur Temporär benötigt.

Stimmt so übrigens nicht. Logisch sind zwar 4GB pro Prozess vorhanden, jedoch physikalisch weniger.
Ist klar von der Speicherverwaltung des Betriebssystems abhängig. Daten bzw. "Seiten" werden "on demand" geladen.
Und je nach der Anzahl an Prozessen wird der Physikalische Bereich im Ram von anderen Prozessen überschrieben. (Seitenflattern)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Toemsel« (27.05.2014, 02:45)


Werbeanzeige