Ресурси для вивчення двигуна Quake 3 [закрито]


14

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

Мені дуже цікаво знати, як вона структурована для освітніх цілей і, можливо, зробити якісь модифікації.

Відповіді:


13

Отже, для початку слід переглянути статтю Wikipedia про id Tech 3 . Це можна доповнити підсумком розмов про GDC Брайана Гука та деякими старими матеріалами на блозі Element 61 . На додаток до цього, вам доведеться пробиратися через купу будь-яких старих навчальних посібників з мод, щоб ви могли спробувати і реконструювати те, що відбувається.

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

Деякі ключові моменти, які допомогли мені, коли я працював з ним:

  • Завжди є сервер; також може бути логіка клієнта, що сидить зверху на обробці кадру.
  • Введення спрямовується спочатку на консоль, якщо цікавить, то на графічний інтерфейс, потім на власну гру.
  • Сам двигун відокремлений (важко!) Від логіки гри, використовуючи функції пастки. Загляньте (якщо пам'ять обслуговує) проекти cgame та візуалізації, щоб знайти фактичний код двигуна.
  • Логіка гри може бути повністю написана для запуску у віртуальній машині Quake 3. Під час модифікації та використання нативних dll, вам доведеться запускати гру так quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0, щоб дозволити двигуну запускати нативний код замість VM-коду.
  • Інтерфейс користувача для системи меню - це дивний, злий, скручений стек структур та зворотних викликів. Це можна використовувати, як тільки ви загадуєте це, але це може спричинити деякі проби та помилки. Пам'ятайте, це стек.
  • Якщо ви пишете код у рідній. Ви також можете використовувати STL - немає жодної причини жорстко слідувати ідіомам C, за винятком випадків, коли ви безпосередньо взаємодієте з двигуном.

Деякі акуратні речі, які я створив для цього разом із колегою:

  • Простий інтерфейс командного рядка для виклику команд оболонки з консолі та скидання потоків stdout / stderr назад до консолі (консолі Quake).
  • Інтерфейс із базою даних SQL для витягування та відображення записів.
  • Гнучка вікна та інструменти для віджетів для створення гнучких дисплеїв на клієнтській хаді (за допомогою смужкових діаграм, текстових полів, графічних коробок, контекстних меню, змінних вікон тощо).
  • Повільні ракети. :)

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

Нарешті, не відчувайте себе погано, якщо потрібно провести час. Мені знадобилося, можливо, місяць, щоб я справді змогла знати, де знайти те, що шукала в двигуні; якщо все інше не вдається, почніть з програми init і просто тунель вниз, залишаючи коментарі для себе як покажчики. Мій монітор виявився вкритим рожевими повідомленнями із повідомленнями функцій, номерами рядків та короткими описами того, що вони робили.



1

Абсолютно.

http://en.wikipedia.org/wiki/Quake_engine - це хороший огляд того, що там є, але ви можете детально ознайомитися з деталями його архітектури за допомогою цитат.

Можна також запропонувати кілька книг про архітектуру ігрових механізмів, які можуть відповідати тому, що ви шукаєте. Хоча це не Quake, вони детально розглядають конструкцію двигуна та працюють паралельно багатьом аспектам двигунів Quake:

  • 3D-архітектура двигунів ігор - 978-0122290640
  • Програмування 3D-ігрових двигунів - 978-1592003518

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