Ist der Quellcode der Source Engine verfügbar?

Antworten:

35

Nein ist es nicht. Sie können eine Quelllizenz von Valve erhalten, aber Source selbst ist nicht Open Source.


Darüber hinaus ist es im Allgemeinen ein sehr gefährlicher Ansatz, ganze vorhandene Motoren als Lernmaterial ohne Anleitung von jemandem zu verwenden, der stark an der Entwicklung dieses Motors beteiligt war.

Der Quellcode allein sagt Ihnen nur das Wie bestimmter Entwurfsentscheidungen, nicht das Warum hinter den meisten dieser Entscheidungen, was oft äußerst wichtig ist, da so viele Auswahlmöglichkeiten in der Softwareentwicklung aus allgemein gleichwertigen Optionen stammen. Sie brauchen einen Kontext, um zu verstehen, warum eine Wahl gut ist, und wenn Sie sich nur die Quelle einiger Motoren ansehen und deren Techniken und Redewendungen nachahmen, lernen Sie kaum etwas Nützliches.

Nur weil Code, der in einem Spiel ausgeliefert wird, diesen Code nicht gut macht (insbesondere Source ist anfällig für viele derzeit sehr veraltete Designentscheidungen in Bezug auf C ++ und OO). Es gibt viele Horrorgeschichten in den Motorcodebasen selbst der erfolgreichsten AAA-Titel. Und wie können Sie als beeindruckbarer Neuling den guten Code vom schlechten unterscheiden?

Seien Sie sehr vorsichtig, wenn Sie den Quellcode als Lernressource verwenden, und stellen Sie sicher, dass Sie ihn mit so vielen zusätzlichen Informationen wie möglich koppeln.


quelle
3
"Der Quellcode allein sagt nur das Wie bestimmter Entwurfsentscheidungen aus, nicht das Warum hinter den meisten dieser Entscheidungen, was oft äußerst wichtig ist, da so viele Auswahlmöglichkeiten in der Softwareentwicklung aus allgemein gleichwertigen Optionen stammen." Ich denke, dies ist meine Antworten.
Trauriger CRUD-Entwickler
@ BDillan in der Tat, einige Leute lernen das auf die harte Tour. Obwohl Unternehmen Sie einstellen, um mit riesigen Haufen von Motorcode zu arbeiten, verstehen Sie das nicht und haben nicht die Zeit, am Ende nur zu debuggen.
Teodron
Beachten Sie, dass ID-Software mehrere ihrer Engines zur Verfügung gestellt hat: github.com/id-Software
pjc50
1
Als kleine Tangente kann das Betrachten des Codes einer kommerziellen Engine sehr lehrreich sein, wenn Sie einen Profi zur Hand haben, der den Unterschied zwischen "Dieser Code ist gut" und "Dieser Code ist ein hässlicher Hack, der früher notwendig war" erklärt Tage"; zum Beispiel -> fabiensanglard.net
Shish
5

tl; dr: Das Erlernen des Erstellens einer Engine ist für das Erstellen von Spielen oft genauso nützlich wie das Erlernen des eigenen Computers und Betriebssystems von Grund auf neu. Wenn Sie kein Experte auf diesem Gebiet sind, möchten Sie wahrscheinlich keinen Motor bauen. Machen Sie stattdessen ein Spiel, der Engine-Teil ist bereits vorhanden. Wenn später keine der Engines, auf die Sie Zugriff haben, die Kriterien für Ihr Spieldesign erfüllt, können Sie sich darauf konzentrieren, diesen bestimmten Aspekt zu entwickeln, und es könnte auch für andere nützlich sein, da Sie etwas Neues erstellen und keine weniger robuste Version erneut aufbereiten von etwas, in das die Leute bereits Tausende von Stunden investiert haben.

Lange Version: Wenn Sie wirklich lernen möchten, wie man eine Engine schreibt, schauen Sie sich noch keine vorhandene Engine an. Lernen Sie anstelle der Teile (Algorithmen), aus denen eine Engine besteht, sei es Rendering, Physik oder Pfadfindung usw. Sobald Sie ein tiefes Verständnis für einen bestimmten Aspekt erlangt haben, möchten Sie möglicherweise die Quelle überprüfen.

Normalerweise möchten Sie nicht direkt von der Quelle lernen, es sei denn, es gibt keine überlegene Alternative. Selbst erfahrene Programmierer würden normalerweise nicht auf die Quelle einer gesamten Engine schauen, um daraus zu lernen (wenn sie helfen können), sie würden höchstwahrscheinlich einen bestimmten Teil davon inspizieren oder einen bestimmten Teil davon optimieren. Der Versuch, die Quelle für reine Lernzwecke zu betrachten, würde das Verfahren und den Denkprozess hinter dem Engine-Code nicht offenlegen. Das wäre, als würde man ein Gebäude in Stücke zerreißen, um sein Inneres zu sehen und zu lernen, wie man eines baut. Obwohl ich mit Joshs Antwort einverstanden bin, werde ich noch einen Schritt weiter gehen. Sie lernen nicht einmal das "Wie" in vielerlei Hinsicht (es sei denn, Sie sind mit dem Gebiet vertraut). zum Beispiel, Welche Methodik wurde vom Programmierteam verwendet? Auf welche Grundsätze stützten sie sich bei der Implementierung des Arbeitscodes? Welche Tools und Techniken haben sie zum Debuggen verwendet? All diese Fragen sind manchmal wichtiger als der Code selbst (zu Lernzwecken).

Wenn Sie aus der Quelle lernen möchten, suchen Sie nach einer Quelle, die gut dokumentiert ist und eine starke Community aufweist. Das Lesen von (Motor-) Code, selbst wenn Sie ihn selbst geschrieben haben, ist oft verwirrend.

AturSams
quelle