Доступен ли исходный код Source Engine?

9

Доступен ли полный исходный код C ++ для Source Engine?

Я знаю, что SDK доступен с приобретением игры на основе исходного кода , но моя цель - найти игровой движок с открытым исходным кодом, который включает в себя полную информацию о реализации для целей обучения.

Сад CRUD Разработчик
источник

Ответы:

35

Нет это не так. Вы можете получить исходную лицензию от Valve, но сам Source не является открытым.


Кроме того, как правило, очень опасный подход - использовать все существующие движки в качестве учебного материала без руководства от кого-то, кто активно участвовал в разработке этого движка.

Один только исходный код говорит вам о том, как принимаются конкретные проектные решения, а не о причинах, лежащих в основе большинства из этих решений, что часто чрезвычайно важно, учитывая, что так много вариантов в разработке программного обеспечения принадлежат в целом одинаково допустимым вариантам. Вам нужен контекст, чтобы понять, почему выбор хорош, и если вы просто посмотрите на источник какого-то движка и попробуйте его методы и идиомы, вы вряд ли узнаете что-нибудь полезное.

Кроме того, только потому , что код погружен в игре , не делает этот код хорошо (Источник , в частности , склонен к многим в настоящее время очень устаревшие проектных решений по отношению к C ++ и ОО, к примеру). В кодовых базах движка даже самых успешных игр ААА есть множество страшных историй. И как впечатлительный новичок, как вы сможете отличить хороший код от плохого?

Будьте очень осторожны, используя исходный код в качестве учебного ресурса, и убедитесь, что он сопряжен с как можно большим количеством дополнительной информации.


источник
3
«Один только исходный код говорит вам о том, как принимаются конкретные проектные решения, а не о причинах, лежащих в основе большинства из этих решений, что зачастую чрезвычайно важно, учитывая, что так много вариантов в разработке программного обеспечения принадлежат в целом одинаково допустимым вариантам». Я думаю, что это мой ответ.
Грустный разработчик CRUD
@BDillan, действительно, некоторые люди узнают, что это трудный путь ... хотя компании будут нанимать вас для работы с огромными кучами кода движка, который вы не понимаете, и у вас нет времени и в итоге просто отладка.
Теодрон
Обратите внимание, что программное обеспечение ID сделало несколько своих движков доступными: github.com/id-Software
pjc50
1
В качестве небольшого касания рассмотрение кода коммерческого движка может быть очень познавательным, если у вас есть профессионал, который объяснит разницу между «этот код хорош» и «этот код - отвратительный взлом, который был необходим в прежние времена». дней "; например -> fabiensanglard.net
Шиш
5

tl; dr: научиться создавать движок часто так же полезно для создания игр, как и научиться создавать свой собственный компьютер и операционную систему с нуля. Если вы не специалист в данной области, вы, вероятно, не хотите делать двигатель. Сделайте игру вместо этого, движок уже существует. Позже, если ни один из движков, к которым у вас есть доступ, не соответствует критериям для вашего игрового дизайна, вы могли бы сосредоточиться на создании этого конкретного аспекта, и, черт возьми, это может быть полезно и другим, поскольку вы создаете что-то новое, а не перефразируете менее надежную версию. о том, что люди уже вложили тысячи часов.

Длинная версия: Если вы действительно хотите научиться писать движок, пока не смотрите на существующий движок. Учитесь вместо частей (алгоритмов), которые делают движок, будь то рендеринг, физика или поиск путей и т. Д. Как только вы получите глубокое понимание определенного аспекта, вы можете захотеть проверить источник.

Вы обычно не хотите учиться непосредственно из источника, если нет лучшей альтернативы. Даже опытные программисты обычно не смотрят на источник всего движка, чтобы извлечь из него урок (если они могут ему помочь), они, скорее всего, проверят определенную его часть или настроят определенную ее часть. Попытка взглянуть на исходный код исключительно для целей обучения не будет раскрывать процедуры и мыслительный процесс, стоящие за кодом движка; Это было бы все равно что разорвать здание на части, пытаясь увидеть его внутренности, чтобы узнать, как его построить. Хотя я согласен с ответом Джоша, я сделаю еще один шаг вперед, вы даже не узнаете «как» во многих смыслах (если вы не знакомы с этой областью); например, какая методология использовалась командой программистов? На какие принципы они опирались при реализации рабочего кода? Какие инструменты и методы они использовали для отладки? Все эти вопросы иногда более важны, чем сам код (в учебных целях).

Если вы хотите учиться у источника, поищите источник, который хорошо документирован и на нем построено сильное сообщество. Чтение (движкового) кода, даже если вы написали его самостоятельно, часто сбивает с толку.

AturSams
источник