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

Quellcode eines PC-Spieles

estre

Commander
Registriert
Dez. 2005
Beiträge
3.006
Nabend zusammen,

eine Frage die sich bestimmt schon einige gestellt haben:
Wo befindet sich beispielsweise in einem aktuellen PC-Game der Quellcode :) ?
Und wieso ist es so schwer daran zu kommen, heutztage scheint doch nichts mehr ,,unhackbar'' :) .......
Mit welchen Programmen werden überhaupt Spiele geschrieben und vorallem wie muss man sich diesen Quellcode denn vorstellen; etwa wie in Delphi z.B., wo in jeder Zeile ein Befehl steht und es überall Schleifen und sowetwas gibt ?

Bin mal auf eure Antworten gespannt :)

Danke und viele Grüße
 
das spiel wird bein Hersteller kompiliert und in MAschienensprache übersetzt. Da ist es schwierig, den quellecode herauszukriegen. Den quellcode selber wird nicht auf die DVD gepackt. Da wäre der Hersteller ziemlich blöd wenn er das machen würde
 
Also es sieht glaube ich aus, wie ein ganz normales C Programm, also mit Schleifen für diverse Parameterabfragen und und und.

mfg Chuck
 
C++ ist sehr beliebt und meine auch die Sprache für Games, weil man mit dieser sprache so gut wie alles machen kann, bzw. sehr viele Vorteile bietet
 
Trotzdem sollte man doch ansatzweise auf den Quellcode schließen können.
Wenn man den Compiler kennt sogar recht genau, ansonsten zumindest in etwa.

Bin der Frage noch nie so genau nachgegangen, aber eig isses wirklich interessant... Warum is das so schwer, die Kompilierung wieder rückgängig zu machen... Zumindest hin zu einem Text, der das selbe ergibt?
 
jop sollte aussehen wie ein normales programm, mit noch extragewusel für die engine.
du wirst millionen fallunterscheidungen schleifen usw finden.
wenn jmd mehr weiß, würde mich das auch mal genauer interessieren.
 
das problem sind die 0en und 1en. verschiedene kombinationen können verschiedenes bedeuten. Deshalb braucht man einen ansatz um ein Programm wieder zu dekompilieren
 
Wurde nich zb für Quake3 damals der Quellcode freigegeben..
Guck da doch mal rein
 
Man kann ja sehen, was es macht... Und daraus kann müsste doch schließen können, was da früher mal gestanden haben könnte, sodass diese Funktionalität entsteht.
 
reverse engineering wird benutzt, auch beispielsweise für mods, cracks etc. auf eine konkrete sprache ist man nicht festgelegt, aber wie schon gesagt ist c natürlich sehr beliebt.

ist der code einmal in maschinensprache kompiliert, lässt er sich nicht so einfach wiederherstellen, dafür sorgen diverse sicherheitsmechanismen. warum das so ist, ist schwer zu erklären... vll shcaust du mal hier rein: http://de.wikipedia.org/wiki/Reverse_engineering
 
der einzige mit einer korrekten information ist sejaar - alles andere wie zu oft bullshit.

EDIT: und paddo

ich geh jetzt nach hause... schönen feierabend an alle ;)
 
Nennt sich das nicht Disassemblieren?

Ist soweit ich weiß sehr sehr schwierig, da du einen Teil des Codes selber schreiben musst.
Es gibt glaub kein Programm, was das 100%ig beherrscht und dir einen fertigen Quellcode ausspuckt.

Strafbar ist es bei Kostenpfichtigen Programmen obendrein auch noch, da sich damit Cracks usw. erstellen lassen.

Ohne Gewähr;)
 
Ein Spiel vereint:
Open GL || DX Befehle mit einem Script interpreter (LUA meist)
Ein paar Formante für Maps etc werden geschrieben die dann von der Rendereinheit in 3d umgerechnet werden.
Eine Einheit die ton ausgibt und natürlich Netzwerkfähigkeit also hat eine Engine ein paar Kommunikationsalgorythmen.
Meist sind Spiele in C++ geschrieben.

Für Quelloffene Beispiele stehen:
Nexuiz alles ( Dark Places Engine modifizierte Quake Engine)
Sauerbraten Engine nicht Content (relativ modern)
Spring Engine
Open Arena ( Engine ID Tech 2 oder 3 in C)
Scorched 3d

Sieh dir den QuellKOT an.

Open Source ist meist nicht da das schlechteste, obwohl die damit erstellten Spiele nicht so der Hammer sind.
Was viele Komerzielle Spiele besser machen ist das sie efizienter mit Texturgrößen und Shadern arbeiten. Es werden im Modelling mehr Gestaltungstrick angewandt um die Performance der gängigen PCs nicht zu überschreiten.
Beispiel:
Oblivion spiegelte keine Models nur die Map, während in Nexuiz nicht wirklich effizient gearbeitet wurde. Wenn du nun aber bei Nexuiz die einige feinheiten anschaust wirst du merken das einige Bump Maps extrem geil.
 
Zuletzt bearbeitet:
Wenn du ein modernes Spiel hast, dann ist das interessante die Executable.

Diverse .dlls mögen auch noch interessant sein, aber eher zweitrangig.


Um den Code(in dem Falle Assembler) zu sehen musst du erstmal diverse Schutzmechanismen umgehen die eben dieses verhindern wollen.

Dieser Schritt nennt sich auch "unpack", hat aber nichts mit winzip und co zu tun.


Da dies extrem schwierig ist wäre es sinnvoll du lädst dir für diverse Untersuchungen eine "gecrackte" exe runter, diese sind schon "entpackt" und meist nur minimal verändert.


Dann kannst dir mit ollydbg oder ähnlichen(disassembler/debugger) den assembler-code ansehen und wenn man es einigermaßen versteht, dann lässt sich so auch struktur erkennen. Veränderungen am Code sind so auch problemlos möglich.


Willst du es übersichtlicher, dann brauchst du noch einen decompiler.

Problematisch wird es allerdings schon deshalb, weil dieser weg nicht eindeutig ist.

So wird es ggf schwierig die ursprünglichen Variablen- und Funktionsnamen zu erhalten.

Von Struktur wollen wir erst garnicht sprechen.



Wenn du also einen Blick auf sowas werfen willst empfehle ich quelloffene Spiele oder ein wenig Beschäftigung mit Assembler.
 
estre schrieb:
Mit welchen Programmen werden überhaupt Spiele geschrieben und vorallem wie muss man sich diesen Quellcode denn vorstellen; etwa wie in Delphi z.B., wo in jeder Zeile ein Befehl steht und es überall Schleifen und sowetwas gibt ?
nehe gamedev tutorials - dort kannst du dir kompletten opengl code ansehen und für was dieser bestimmt ist, steht eigentlich in jedem schritt des tutorials drin (siehe in der linken navi die einzelnen tutorials). beispielcode gibts dafür natürlich auch. in verschiedenen programmiersprachen ist es natürlich auch noch verfügbar. somit kannst du wenigstens zum teil erkennen, was dort alles gemacht wird.
 
Zurück
Oben