Структура Движка
Этот раздел в настоящее время находится в стадии разработки. Пожалуйста, не стесняйтесь добавлять любые идеи, которые вы можете отнести к структуре движка Source, которыми вы бы хотели поделиться с сообществом.
Введение
Движок "Source" разработан в необыкновенной, модульной форме. Это было сделано, для обеспечения как легких обновлений, так и засекречивания кода. Это руководство не покажет вам, как получить доступ к этим засекреченным областям, но даст вам представление о том, что представляют собой эти модули, как они взаимодействуют и как их лучше всего расширить.
Подсистема
Движок Source использует ряд отдельных подсистем с очень стандартизированной структурой. Каждая подсистема определяет абстрактный интерфейс в " .h файле", при типичной реализации и создании глобальной переменной в " .cpp файле". С помощью макросов или просто добавив её в функцию инициализации клиента/сервера, эта глобальная переменная добавляется в список активных систем. После подключения, существующие обработчики позаботятся об инициализации, завершении работы и вызове соответствующих функций обновления по мере необходимости.
Существует два разных, используемых, типа обработки системы. Первый, и более простой, IAppSystem используется для системы Клиента. Это не означает, что на них также нельзя ссылаться в серверной библиотеке dll, однако между клиентом и сервером нет никакой информации. Он предлагает только обработку, необходимых для инициализации подсистем с возможными ссылками на другие подсистемы, и выключение в нужное время. Файл, материал, и физические системы все вытекают из этого интерфейса.
Второй это IGameSystem . Сравнительно более сложный интерфейс, он предназначен для систем, которые должны иметь функции обновления вызова, и он может быть, при необходимости, синхронизирован между клиентом и сервером. Помимо стандартных обработок инициализации и завершения работы, он также предлагает обработки, которые вызываются для ряда событий, включая загрузку карты, сохранения / восстановления, пред/пост-рендеринг и функцию обновления с прошедшим временем фрейма.
Служебные библиотеки
Tier0
Tier1
STL, консольные команды/переменные от Valve и многое другое; смотрите в Tier1 .