是否可以使用源引擎的完整C ++源代码?
我知道SDK可以通过购买基于源的游戏获得,但是我的目标是找到一个开放源代码的游戏引擎,其中包括用于学习目的的完整实现细节。
是否可以使用源引擎的完整C ++源代码?
我知道SDK可以通过购买基于源的游戏获得,但是我的目标是找到一个开放源代码的游戏引擎,其中包括用于学习目的的完整实现细节。
Answers:
不它不是。您可以从Valve获得源许可证,但是Source本身不是开源的。
此外,在没有大量参与该引擎开发的人员指导的情况下,使用整个现有引擎作为学习材料通常是非常危险的方法。
单独的源代码只告诉你如何的特别设计决策,而不是为什么背后最这些决定给这往往是非常重要的,以便在软件工程中有很多选择从通常相等有效的选项之一。您需要上下文来了解为什么选择是好的,并且,如果您仅查看某些引擎的来源并模仿其技术和习惯用法,那么您几乎不会学到任何有用的东西。
此外,仅仅因为代码运比赛,并不意味着代码良好(来源特别是容易产生很多现在很过时的设计决策,相对于C ++和面向对象,例如)。即使最成功的AAA标题,引擎代码库中也充斥着许多恐怖故事。作为一个令人印象深刻的新手,您将如何分辨出好的代码?
使用源代码作为学习资源时要格外小心,并确保将其与尽可能多的补充信息配对。
tl; dr:学习如何制作引擎通常与学习从头开始构建自己的计算机和操作系统一样对游戏制作有用。如果您不是该领域的专家,则可能不想制造引擎。而是做一个游戏,引擎部分已经存在。以后,如果您没有一个引擎能够满足您的游戏设计标准,则可以专注于构建该特定方面,这对其他人也可能有用,因为您正在创建新内容而不是重新散布不那么健壮的版本人们已经在其中投入了数千小时的时间。
加长版:如果您真的想学习如何编写引擎,请不要考虑现有的引擎。而不是学习构成引擎的各个部分(算法),无论是渲染,物理还是路径查找等。一旦您对特定方面有了深刻的了解,您可能需要查看源代码。
除非没有别的选择,否则您通常不希望直接从源中学习。即使是经验丰富的程序员,通常也不会看整个引擎的源来学习(如果他们可以帮助的话),他们很可能会检查整个引擎的特定部分或对其进行某些调整。试图从纯粹的学习目的看源代码不会暴露引擎代码背后的过程和思考过程。这就像将建筑物撕成碎片,试图看到其内部,从而学习如何构建建筑物。尽管我同意乔希的回答,但我将进一步走下去,您甚至不会从很多方面学到“如何做”(除非您熟悉该领域)。例如,编程团队使用了什么方法?他们依靠什么原则来实现工作代码?他们使用了哪些工具和技术进行调试?所有这些问题有时比代码本身更重要(出于学习目的)。
如果您确实希望从源中学习,请寻找有据可查并拥有强大社区的源。即使您自己编写代码,也要阅读(引擎)代码,这通常会造成混乱。