Обзор исходного кода quake

Обновлено: 07.07.2024


Я с удовольствием читаюИсходный код Quake World, Это то, что я понимаю, я надеюсь, что это поможет другим плавать в этом.

Эта статья состоит из четырех частей:

Отсюда мы можем определить три элемента землетрясения:

  • Интернет CL_ReadPackets с участием CL_SendCmd
  • прогнозирование CL_SetUpPlayerPrediction , CL_PredictMove с участием CL_EmitEntities
  • оказание SCR_UpdateScreen

Сетевой уровень (также называемый Net Channel) передает мировую информацию Вне кадра (Array frame_t ). Они принимаются уровнем прогнозирования, где также выполняется обнаружение столкновений, данные находятся в Указах видимости ( cl_visedicts ) И POV определение формата вывода. В дополнение к POV ( cl.sim* Переменные для рендеринга сцены, VisEdicts также используются рендерингом слоя.


Укажите путь к коду, если возникнет какая-либо ошибка, программа вернется сюда.

Получить ввод с джойстика.

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

буфер запуска игры exec quake.rc Эта команда будет выполнена.

CL_ReadPackets с участием CL_SendCmd :

CL_SetUpPlayerPrediction , CL_PredictMove с участием CL_EmitEntities :

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

Часть рендеринга движка. Здесь широко используются bsp / pvs. Это тоже include / define Там, где есть код в коде. Движок Quake может быть визуализирован с использованием программного или аппаратного ускорения.
полныйразделВ этот.

Откройте zip и скомпилируйте

Откройте почтовый индекс:

После открытия источников q1 есть две папки / проекты Visual Studio: QW с участием WinQuake 。

  • WinQuake Клиентский и серверный код выполняются вместе в одном процессе (в идеале, если DOS его поддерживает, это должны быть два разных процесса). Поддержка LAN для игр.
  • QW Это проект "Quake World", сервер и клиент работают на разных компьютерах (обратите внимание на функцию запуска клиента WinMain (в sys_win.c ), пока сервер Является основным (Также sys_win.c )。

Я изучаю версию Quake World для рендеринга openGL, в открытом решении вы можете увидеть 4 подпроекта:

  • gas2asm —— Код сборки GNU преобразован в сборку x86
  • qwcl --Client
  • QWFwd --Прокси-сервер
  • qwsv --server


После установки Windows и DirectXsdk Visual Studio 2008 компилирует один ошибки

.\net_wins.c(178) : error C2072: '_errno' : initialization of a function

Ссылка LIBC.lib ошибка, просто добавьте ее в «игнорировать конкретную библиотеку».

инструмент

Visual Studio IDE。
Если вы хотите больше узнать о движке BSP / PVS, IdSoftware и Quake, я настоятельно рекомендую прочитать несколько книг. Примечание переводчика: рендеринг в режиме реального времени, язык Си, черная книга (электронная версия вышла из печати), DOOM Revelation.

Книги на книжной полке, когда я изучал исходный код Quake:


Интеллектуальная рекомендация

Начало работы с jdbc

Что такое jdbc? (понимание) использоватьjavaОтправка кода (программы)sqlТехника предложенияjdbcтехнологии! нота: Без jdbcРаньше javaРазработчикам необходимо поддерживать драйверы для разных баз .


Windows устанавливает nodejs с помощью nvm


Пример унарной линейной регрессии (нативная реализация, реализация sklearn)

Справочник статей 0. Подготовка необработанных данных 0,1 данные 0.2 Графический дисплей 1. Нативная реализация Python 1.1 Путеводитель 1.2 Рассчитать среднеквадратичную ошибку 1.3 Градиентный спуск 1.

Рассчитайте геометрию простого многоугольного ядра (будь то звездный многоугольник)

Что такое звездный полигон? На самом деле, есть точка A внутри многоугольника, и соединение между любой точки многоугольника находится внутри полигона, который называется звездоолигон, который называе.


[Коллекционное издание] Длинная статья, объясняющая регулярные выражения Python

оглавление Во-первых, обычная функция Два, повторный вызов модуля Три, жадный режим В-четвертых, группировка V. Модификаторы регулярных выражений Шесть, режим регулярного выражения VII. Общие регулярн.

SV_BuildClientSnapshot создает снимок, определяет, какие физические объекты будут в поле зрения клиента, а затем копирует состояние игрока.

// Добавляем объекты, которые могут видеть глаза игрока. Эти объекты могут включать объекты портала, которые включают другие точки обзора.

SV_AddEntitiesVisibleFromPoint( org, frame, &entityNumbers, qfalse );

pvs
SV_AddEntitiesVisibleFromPoint
Кодировка Хаффмана
Обнаружение столкновений

Интеллектуальная рекомендация

Начало работы с jdbc

Что такое jdbc? (понимание) использоватьjavaОтправка кода (программы)sqlТехника предложенияjdbcтехнологии! нота: Без jdbcРаньше javaРазработчикам необходимо поддерживать драйверы для разных баз .


Windows устанавливает nodejs с помощью nvm


Пример унарной линейной регрессии (нативная реализация, реализация sklearn)

Справочник статей 0. Подготовка необработанных данных 0,1 данные 0.2 Графический дисплей 1. Нативная реализация Python 1.1 Путеводитель 1.2 Рассчитать среднеквадратичную ошибку 1.3 Градиентный спуск 1.

Рассчитайте геометрию простого многоугольного ядра (будь то звездный многоугольник)

Что такое звездный полигон? На самом деле, есть точка A внутри многоугольника, и соединение между любой точки многоугольника находится внутри полигона, который называется звездоолигон, который называе.


[Коллекционное издание] Длинная статья, объясняющая регулярные выражения Python

оглавление Во-первых, обычная функция Два, повторный вызов модуля Три, жадный режим В-четвертых, группировка V. Модификаторы регулярных выражений Шесть, режим регулярного выражения VII. Общие регулярн.




Сама игра написана языке Си. Но для удобства большинства своих зрителей, в видео используется объяснение на примере псевдопитона.

В момент, когда игрок находится на земле, скорость его перемещения вычисляется при помощи функции:

Что же касательно вычисления скорости в момент нахождения в воздухе, то за это отвечает другая функция:

На основе этой базы строятся такие «фишки» серии Quake как распрыжка, wall running и зигзагинг. При этом, стоит отметить, что в дальнейшем все эти движения стали частью и других серий. Так, благодаря использованию одной из версий id Tech в качестве основы для движка Half-Life, чуть позже Counter-Strike также стала известна распрыжками.

Вчера, 19 августа, Bethesda выпустила ремастер шутера Quake с поддержкой современных ОС, улучшенной графикой и дополнительным контентом. Фанаты игры заметили, что обновлённая игра может нарушать лицензию GPL, ведь сооснователь id Software Джон Кармак (John Carmack) давно опубликовал исходники Quake с одной оговоркой — авторы коммерческих проектов на их базе должны также делиться со всеми обновлённым исходным кодом.

Источник: Bethesda

В обсуждении потенциального нарушения представители сообщества моддеров отметили, что с технической стороной ремастера помогала Nightdive Studios, которая могла использовать свой движок KEX Engine. Это значит, что исходники не модифицировались, а все улучшения добавлены поверх оригинального кода.

Один из пользователей Twitter поинтересовался у Кармака, как он относится к ремастеру своей игры 25-летней давности. Оказалось, что легендарный разработчик не был в курсе: «‎Ничего об этом не знал, но выглядит отлично! Было бы замечательно, если бы они опубликовали обновлённый исходный код так же, как мы сделали это с Doom 3: BFG Edition».

Пока что Bethesda никак не прокомментировала исходный код обновлённой Quake. Сам Кармак покинул id Software и присоединился к команде Oculus Rift в 2013 году. С 2019 года он работает над собственным проектом по созданию сильного искусственного интеллекта.

Читайте также: