Чи доступний вихідний код Source Engine?


9

Чи доступний повний код C ++ вихідного двигуна?

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

Відповіді:


35

Ні, це не. Ви можете отримати ліцензію на джерело від Valve, але саме джерело не є відкритим кодом.


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

Вихідний код лише розповідає про те, як приймаються конкретні дизайнерські рішення, а не те, чому стоїть більшість таких рішень, що часто є надзвичайно важливим, враховуючи, що стільки варіантів в інженерії програмного забезпечення є серед загально не менш достовірних варіантів. Вам потрібен контекст, щоб зрозуміти, чому вибір хороший, і якщо ви просто подивитесь на джерело якогось двигуна та папуги, їхні методи та ідіоми, навряд чи ви навчитесь нічого корисного.

Крім того, лише через те, що гра, що надсилається кодом, не робить цей код хорошим (зокрема, джерело схильне до багатьох дуже застарілих дизайнерських рішень стосовно C ++ та OO, наприклад). У кодових базах двигунів навіть найуспішніших назв AAA є багато історій жахів. І як вражаючий неофіт, як ви зможете сказати добрий код від поганого?

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


3
"Вихідний код лише говорить вам про те, як приймаються конкретні дизайнерські рішення, а не те, чому стоїть більшість тих рішень, що часто надзвичайно важливо, враховуючи, що стільки варіантів в інженерії програмного забезпечення є серед загально не менш достовірних варіантів." Я думаю, що це мій відповідь.
Сумний розробник CRUD

@BDillan дійсно, деякі люди дізнаються, що це нелегкий шлях .. хоча компанії наймуть вас працювати з величезною купою коду двигуна, який ви не розумієте, і не маєте часу і в кінцевому підсумку просто налагоджувати.
теодрон

Зауважте, що програмне забезпечення ID зробило доступними кілька своїх двигунів: github.com/id-Software
pjc50

1
Як легкий дотичний погляд на код комерційного двигуна може бути дуже навчальним, якщо у вас є професіонал під рукою, щоб пояснити різницю між "цей код хороший" і "цей код - це некрасивий хакер, який був необхідний ще в старому" дні »; наприклад -> fabiensanglard.net
Шиш

5

tl; dr: Навчання як зробити двигун часто настільки ж корисне для створення ігор, як і навчання побудови власного комп’ютера та операційної системи з нуля. Якщо ви не фахівець у цій галузі, ви, мабуть, не хочете робити двигун. Зробіть натомість гру, частина двигуна вже існує. Згодом, якщо жоден з двигунів, у яких ви не маєте доступу, щоб відповідати критеріям вашого ігрового дизайну, ви можете зосередитись на створенні цього конкретного аспекту і пекла, що може бути корисним і для інших, оскільки ви створюєте щось нове і не переробляєте менш надійну версію чогось, у що люди вже інвестували тисячі годин.

Довга версія: Якщо ви дійсно хочете навчитися писати двигун, ще не дивіться на існуючий двигун. Дізнайтеся замість частин (алгоритмів), які створюють двигун, будь то рендерінг, фізика або пошук шляху тощо. Після того, як ви глибоко зрозумієте конкретний аспект, ви можете перевірити джерело.

Зазвичай ви не хочете вчитися безпосередньо з джерела, якщо немає чудової альтернативи. Навіть досвідчені програмісти зазвичай не дивляться на джерело цілого двигуна, щоб навчитися йому (якщо вони зможуть йому допомогти), вони, швидше за все, оглянуть певну його частину або переробляють певну її частину. Намагання дивитись на джерело з чистою метою навчання не піддавало б процедурі та продуманому процесу за кодом двигуна; Це було б як розірвати будівлю на частини, намагаючись побачити її нутро, щоб навчитися будувати її. Поки я погоджуюся з відповіддю Джоша, я зроблю його ще на крок далі, ви навіть не вивчаєте "Як" у багатьох сенсах (якщо ви не знайомі з полем); наприклад, яку методологію використовувала команда програмування? На які принципи вони покладалися для впровадження робочого коду? Які інструменти та методи вони використовували для налагодження? Усі ці питання іноді важливіші, ніж сам код (для навчальних цілей).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.