Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.
Эта статья относится к игре "Alien Swarm". Нажмите для получения дополнительной информации.

Ru/Swarm C++ Code Overview: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
m (Multipage removal)
 
(10 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar|title = Обзор кода Alien Swarm }}
|en=Swarm C++ Code Overview
{{ASW topicon}}{{source topicon}}
}}


== Компиляция исходного кода ==
{{note|Смотрите {{L|Swarm SDK Create a Mod|Создание мода на Swarm SDK}} для инструкций по компиляции исходного кода Alien Swarm и настройке Visual Studio. }}
 
Смотрите [[Swarm SDK Create a Mod]] для инструкций по компиляции исходного кода Alien Swarm и настройке Visual Studio.  


== Классы Alien Swarm ==
== Классы Alien Swarm ==
 
Это обзор основного числа C++ классов в Alien Swarm. Большинство файлов исходного кода Alien Swarm начинаются с <code>asw_</code>. Название класса начинается на <code>CASW_</code> для серверных классов и <code>C_ASW_</code> для классов клиента.  
Это обзор основного числа C++ классов в Alien Swarm. Большинство файлов исходного кода Alien Swarm начинаются с "asw_". Название класса начинается на CASW_ для серверных классов и C_ASW_ для классов клиента.  
;<code>CASW_Player</code>:Это класс игрока Alien Swarm. В отличие от многих игр движка Source, игрок в Alien Swarm это невидимая сущность-командующий. Она не двигается. Если игрок контролирует солдата, то вызывается метод <code>GetMarine()</code>, который возвращает солдата под управлением игрока.
 
;<code>CASW_Marine</code>:Эта сущность и является солдатом, который бегает по уровням и убивает пришельцев. Наследуется от <code>CAI_BaseNPC</code> класса. Когда солдат "населен" это значит, что он находится под прямым контролем <code>CASW_Player</code>. Когда солдат находится под прямым контролем, его AI отключается, он становится предсказуемой сущностью и управляется вводом игрока.  
;CASW_Player  
:Это класс игрока Alien Swarm. В отличие от многих игр движка Source, игрок в Alien Swarm это невидимая сущность-командующий. Она не двигается. Если игрок контролирует солдата, то вызывается метод GetMarine(), который возвращает солдата под управлением игрока.
 
;CASW_Marine  
:Эта сущность и является солдатом, который бегает по уровням и убивает пришельцев. Наследуется от CAI_BaseNPC класса. Когда солдат "населен" это значит, что он находится под прямым контролем CASW_Player. Когда солдат находится под прямым контролем, его AI отключается, он становится предсказуемой сущностью и управляется вводом игрока.
::Полезные методы:
:::GetCommander() - возвращает CASW_Player который контролирует солдата.
:::GetMarineResource() - возвращает ассоциированный CASW_Marine_Resource.
:::GetASWWeapon( nSlot ) - возвращает оружие, экипированное в указанном слоте (где слотом может являться ASW_INVENTORY_SLOT_PRIMARY, ASW_INVENTORY_SLOT_SECONDARY или ASW_INVENTORY_SLOT_EXTRA).
:::GetMarineProfile() - возвращает профиль для этого солдата.
:::IsInhabited() - возвращает true если солдата контролирует игрок, false если он находится по контролем AI.
 
;CASW_Marine_Resource
:Этот класс содержит некоторые сетевые данные насчет каждого солдата (похожие на ресурсы игрока в других играх движка Source). Он разный для всех солдат в игре. Ресурс солдата существует ещё перед тем, как солдат выбран в брифинге (перед тем как создана сущность asw_marine). Ресурс солдата также остается после смерти солдата и удаления его сущности.
 
::Полезные методы:
:::GetMarineEntity() - если есть хоть один существующий солдат для этого ресурса, будет возвращен он.
:::IsInhabited() - возвращает true если солдат под управлением игрока, false если под контролем AI.
:::GetCommander() - возвращает CASW_Player владеющего этим солдатом.
:::GetProfile() - возвращает профиль для этого солдата.
 
;CASW_Marine_Profile
:Этот класс представляет собой статичные данные относительно каждого персонажа в игре. Предоставляет доступ к таким профилям как Sarge, Jaeger, Wildcat и другим. Из этого класса вы можете получить их имя, портрет, умения.
 
;CASW_Game_Resource
:Содержит массив ресурсов солдат, целей и других игровых состояниях. Вы можете получить экземпляр класса через глобальную функцию ASWGameResource().
::Используйте GetMaxMarineResources() и GetMarineResource(i) чтобы пройтись по всем ресурсам солдат. Если вы хотите пройтись по солдатам, можете использовать GetMarineEntity() для каждого ресурса солдата.
::Используйте ASW_MAX_OBJECTIVES и GetObjective(i) чтобы пройтись по каждой цели.
 
;CAlienSwarm
:Игровый правила для Alien Swarm. Управляет всеми состояниями игры, выбирает солдат, снаряжение, создает солдат, завершает миссию, подключает игроков и прочее. Вы можете получить доступ к экземпляру класса через ASWGameRules().  
::Полезные методы:  
::Полезные методы:  
:::GetSkillLevel() - возвращает 1, 2, 3 или 4 (легко, нормально, сложно, безумие, соответственно)  
:::<code>GetCommander()</code> - возвращает <code>CASW_Player</code> который контролирует солдата.
:::GetGameState() - возвращает текущее состояние игры. Смотрите ASW_GameState enum для возможных состояний.  
:::<code>GetMarineResource()</code> - возвращает ассоциированный <code>CASW_Marine_Resource</code>.
:::StartMission() - вызывается когда все игроки выбрали их солдат и лидер нажал кнопку "Начать Миссию".  
:::<code>GetASWWeapon( nSlot )</code> - возвращает оружие, экипированное в указанном слоте (где слотом может являться <code>ASW_INVENTORY_SLOT_PRIMARY</code>, <code>ASW_INVENTORY_SLOT_SECONDARY</code> или <code>ASW_INVENTORY_SLOT_EXTRA</code>).
:::MissionComplete( bool bSuccess ) - вызывается при завершении миссии.
:::<code>GetMarineProfile()</code> - возвращает профиль для этого солдата.
 
:::<code>IsInhabited()</code> - возвращает true если солдата контролирует игрок, false если он находится по контролем AI.
;CASW_Weapon
;<code>CASW_Marine_Resource</code>:Этот класс содержит некоторые сетевые данные насчет каждого солдата (похожие на ресурсы игрока в других играх движка Source). Он разный для всех солдат в игре. Ресурс солдата существует ещё перед тем, как солдат выбран в брифинге (перед тем как создана сущность <code>asw_marine</code>). Ресурс солдата также остается после смерти солдата и удаления его сущности.
:Это базовый класс оружия для всех оружий в Alien Swarm.
::Полезные методы:
 
:::<code>GetMarineEntity()</code> - если есть хоть один существующий солдат для этого ресурса, будет возвращен он.  
;CASW_WeaponInfo
:::<code>IsInhabited()</code> - возвращает true если солдат под управлением игрока, false если под контролем AI.  
:Содержит статичные данные, ассоциированные с каждым типом оружия, прочитанную из скриптов оружия в "swarm/scripts".
:::<code>GetCommander()</code> - возвращает <code>CASW_Player</code> владеющего этим солдатом.
 
:::<code>GetProfile()</code> - возвращает профиль для этого солдата.
;CASW_Objective
;<code>CASW_Marine_Profile</code>:Этот класс представляет собой статичные данные относительно каждого персонажа в игре. Предоставляет доступ к таким профилям как Sarge, Jæger, Wildcat и другим. Из этого класса вы можете получить их имя, портрет, умения.
:Это базовый класс для каждой цели. Цели получают события из CASW_Mission_Manager и помечают себя как выполненные/невыполненные и потенциально завершают миссию.  
;<code>CASW_Game_Resource</code>:Содержит массив ресурсов солдат, целей и других игровых состояниях. Вы можете получить экземпляр класса через глобальную функцию <code>ASWGameResource()</code>.
::Используйте <code>GetMaxMarineResources()</code> и <code>GetMarineResource(i)</code> чтобы пройтись по всем ресурсам солдат. Если вы хотите пройтись по солдатам, можете использовать <code>GetMarineEntity()</code> для каждого ресурса солдата.  
::Используйте <code>ASW_MAX_OBJECTIVES</code> и <code>GetObjective(i)</code> чтобы пройтись по каждой цели.
;<code>CAlienSwarm</code>:Игровый правила для Alien Swarm. Управляет всеми состояниями игры, выбирает солдат, снаряжение, создает солдат, завершает миссию, подключает игроков и прочее. Вы можете получить доступ к экземпляру класса через <code>ASWGameRules()</code>.  
::Полезные методы:  
::Полезные методы:  
:::IsObjectiveComplete()  
:::<code>GetSkillLevel()</code> - возвращает 1, 2, 3 или 4 (легко, нормально, сложно, безумие, соответственно)  
:::IsObjectiveHidden()  
:::<code>GetGameState()</code> - возвращает текущее состояние игры. Смотрите <code>ASW_GameState</code> enum для возможных состояний.
:::GetObjectiveProgress()
:::<code>StartMission()</code> - вызывается когда все игроки выбрали их солдат и лидер нажал кнопку "Начать Миссию".
 
:::<code>MissionComplete( bool bSuccess )</code> - вызывается при завершении миссии.
;CASW_Alien
;<code>CASW_Weapon</code>:Это базовый класс оружия для всех оружий в Alien Swarm.
:Это базовый класс для всех пришельцев в Alien Swarm (кроме CASW_Buzzer и CASW_Grub).
;<code>CASW_WeaponInfo</code>:Содержит статичные данные, ассоциированные с каждым типом оружия, прочитанную из скриптов оружия в <code>swarm/scripts</code>.
 
;<code>CASW_Objective</code>:Это базовый класс для каждой цели. Цели получают события из <code>CASW_Mission_Manager</code> и помечают себя как выполненные/невыполненные и потенциально завершают миссию.  
;CASW_Egg
:Это яйцо пришельцев, которое плодит паразитов.
 
;CASW_Door
:Этот класс используется для дверей. Двери могут самостоятельно открываться, быть запаянными, получать повреждения и падать. Имеют ассоциированный CASW_Door_Area переключатель для переключения авто-открытия и известия о том, что солдат в пределах зоны сварки.
 
;CASW_Button_Area
:Этот переключатель представляет собой интерактивную панель-кнопку. Может быть заблокирована и игроку придется выполнить мини-игру с проводами чтобы открыть ее.
 
;CASW_Computer_Area
:Похожа на CASW_Button_Area, но для компьютера, обычно используется для Цели "Скачать". Если заблокирована, начнется мини-игра "взломай тумблер".
 
;CASW_Marine_Skills
:Этот класс возвращает основанные на умении значения для каждого солдата в игре. Может быть использована улучшения наносимого урона, скорости передвижения и прочего. У каждого солдата свои умения, основанные на его профиле и количестве очков умений, которое он может иметь. Количество очков умений, которое солдат может иметь, устанавливается для игроков через CASW_Game_Resource.
 
;CASW_Spawner
:Эта сущность используется для создания пришельцев на уровне. Устанавливается левел-дизайнером и имеет много полей ввода и вводов для контроля над частотой спавна, максимального количества пришельцев, анимацию появления для пришельца.
 
;CASW_Campaign_Save
:Играя в Alien Swarm через главное меню, игра всегда находится в режиме кампании. Это значит имеется активный объект CASW_Campaign_Save, который содержит информацию о текущей кампании в которую вы играете, какие миссии были завершены, как много попыток было у каждой миссии и какие солдаты были выбраны у игроков в прошлый раз (также количество очков умений каждого солдата, если вы играете со специальными очками умений).
::Вы можете получить сохранение текущей игры через: ASWGameRules()-&gt;GetCampaignSave()
 
;CASW_Campaign_Info
:Описывает данные для кампании. Каждая кампания имеет название, текстуры и массив Campaign_Mission_t, который описывает каждую миссию и как они взаимодействуют друг с другом.  
::Полезные методы:  
::Полезные методы:  
:::GetNumMissions()  
:::<code>IsObjectiveComplete()</code>
:::GetMission(i)
:::<code>IsObjectiveHidden()</code>
 
:::<code>GetObjectiveProgress()</code>
;CASW_Melee_System  
;<code>CASW_Alien</code>:Это базовый класс для всех пришельцев в Alien Swarm (кроме <code>CASW_Buzzer</code> и <code>CASW_Grub</code>).
:Этот класс осуществляет работу с "предсказуемыми" рукопашными атаками (их анимация, события анимации и движение управляемое анимацией предсказуемы и синхронизированы между клиентом и сервером, как и обычное передвижение игрока). Класс CASW_Melee_Attack описывает каждую анимацию атаки, ее повреждение, зону действия и возможность комбинирования с другой атакой.
;<code>CASW_Egg</code>:Это яйцо пришельцев, которое плодит паразитов.
 
;<code>CASW_Door</code>:Этот класс используется для дверей. Двери могут самостоятельно открываться, быть запаянными, получать повреждения и падать. Имеют ассоциированный <code>CASW_Door_Area</code> переключатель для переключения авто-открытия и известия о том, что солдат в пределах зоны сварки.
;<code>CASW_Button_Area</code>:Этот переключатель представляет собой интерактивную панель-кнопку. Может быть заблокирована и игроку придется выполнить мини-игру с проводами чтобы открыть ее.
;<code>CASW_Computer_Area</code>:Похожа на <code>CASW_Button_Are</code>, но для компьютера, обычно используется для Цели "Скачать". Если заблокирована, начнется мини-игра "взломай тумблер".
;<code>CASW_Marine_Skills</code>:Этот класс возвращает основанные на умении значения для каждого солдата в игре. Может быть использована улучшения наносимого урона, скорости передвижения и прочего. У каждого солдата свои умения, основанные на его профиле и количестве очков умений, которое он может иметь. Количество очков умений, которое солдат может иметь, устанавливается для игроков через <code>CASW_Game_Resource</code>.
;<code>CASW_Spawner</code>:Эта сущность используется для создания пришельцев на уровне. Устанавливается левел-дизайнером и имеет много полей ввода и вводов для контроля над частотой спавна, максимального количества пришельцев, анимацию появления для пришельца.
;<code>CASW_Campaign_Save</code>:Играя в Alien Swarm через главное меню, игра всегда находится в режиме кампании. Это значит имеется активный объект <code>CASW_Campaign_Save</code>, который содержит информацию о текущей кампании в которую вы играете, какие миссии были завершены, как много попыток было у каждой миссии и какие солдаты были выбраны у игроков в прошлый раз (также количество очков умений каждого солдата, если вы играете со специальными очками умений).
::Вы можете получить сохранение текущей игры через: <code>ASWGameRules()-&gt;GetCampaignSave()</code>.
;<code>CASW_Campaign_Info</code>:Описывает данные для кампании. Каждая кампания имеет название, текстуры и массив <code>Campaign_Mission_t</code>, который описывает каждую миссию и как они взаимодействуют друг с другом.
::Полезные методы:
:::<code>GetNumMissions()</code>
:::<code>GetMission(i)</code>
;<code>CASW_Melee_System</code>:Этот класс осуществляет работу с "предсказуемыми" рукопашными атаками (их анимация, события анимации и движение управляемое анимацией предсказуемы и синхронизированы между клиентом и сервером, как и обычное передвижение игрока). Класс <code>CASW_Melee_Attack</code> описывает каждую анимацию атаки, ее повреждение, зону действия и возможность комбинирования с другой атакой.
== Другие интересные файлы ==
== Другие интересные файлы ==
 
;<code>asw_shareddefs.cpp/.h</code>:Содержит различные определения, collision-группы, классификации и прочее для Alien Swarm.
;asw_shareddefs.cpp/.h  
;<code>clientmode_asw.cpp/.h</code>:Присутствует на клиенте и получает вызовы функций при инициализации уровня, его освобождении и обновление кадров.
:Содержит различные определения, collision-группы, классификации и прочее для Alien Swarm.
;<code>asw_playeranimstate.cpp/.h</code>:Отвечает за анимацию солдата. Исходя из типа перемещения сущности, углов и событий анимации решается, какую анимацию проиграть.
 
;<code>asw_marine_gamemovement.cpp/.h</code>:Отвечает за команды перемещения и передвижение солдата.
;clientmode_asw.cpp/.h  
;<code>asw_input.cpp</code>, <code>asw_in_main.cpp</code>, <code>asw_in_mouse.cpp</code>:Эти файлы читают ввод с клавиатуры/мыши и превращают его в <code>CUserCmd</code> которая управляет солдатом, прицелом и стрельбой. Они также отвечают за вертикальное автоприцеливание на стороне клиента и представление позиции мыши в мировую координату.
:Присутствует на клиенте и получает вызовы функций при инициализации уровня, его освобождении и обновление кадров.
 
;asw_playeranimstate.cpp/.h  
:Отвечает за анимацию солдата. Исходя из типа перемещения сущности, углов и событий анимации решается, какую анимацию проиграть.
 
;asw_marine_gamemovement.cpp/.h  
:Отвечает за команды перемещения и передвижение солдата.
 
;asw_input.cpp, asw_in_main.cpp, asw_in_mouse.cpp  
:Эти файлы читают ввод с клавиатуры/мыши и превращают его в CUserCmd которая управляет солдатом, прицелом и стрельбой. Они также отвечают за вертикальное автоприцеливание на стороне клиента и представление позиции мыши в мировую координату.


== Подробнее ==
== Подробнее ==
* Присоединяйтесь к hlcoders: [http://list.valvesoftware.com/mailman/listinfo/hlcoders mailing list] и [irc://irc.gamesurge.net/hlcoders IRC channel]
* Присоединяйтесь к hlcoders: [http://list.valvesoftware.com/mailman/listinfo/hlcoders mailing list] и [irc://irc.gamesurge.net/hlcoders IRC channel]
* По вопросам относительно специфики кода Alien Swarm, вы можете обратиться сюда: [mailto:jonathan@valvesoftware.com?subject=Alien%20Swarm%20code jonathan@valvesoftware.com].
* По вопросам относительно специфики кода Alien Swarm, вы можете обратиться сюда: [mailto:jonathan@valvesoftware.com?subject=Alien%20Swarm%20code jonathan@valvesoftware.com].
 
{{ACategory|Alien Swarm}}{{ACategory|Programming}}
[[Category:Alien Swarm]]
[[Category:Programming]]

Latest revision as of 11:21, 12 July 2024

English (en)Русский (ru)Translate (Translate)

Note.pngПримечание:Смотрите Создание мода на Swarm SDK(en) для инструкций по компиляции исходного кода Alien Swarm и настройке Visual Studio.

Классы Alien Swarm

Это обзор основного числа C++ классов в Alien Swarm. Большинство файлов исходного кода Alien Swarm начинаются с asw_. Название класса начинается на CASW_ для серверных классов и C_ASW_ для классов клиента.

CASW_Player
Это класс игрока Alien Swarm. В отличие от многих игр движка Source, игрок в Alien Swarm это невидимая сущность-командующий. Она не двигается. Если игрок контролирует солдата, то вызывается метод GetMarine(), который возвращает солдата под управлением игрока.
CASW_Marine
Эта сущность и является солдатом, который бегает по уровням и убивает пришельцев. Наследуется от CAI_BaseNPC класса. Когда солдат "населен" это значит, что он находится под прямым контролем CASW_Player. Когда солдат находится под прямым контролем, его AI отключается, он становится предсказуемой сущностью и управляется вводом игрока.
Полезные методы:
GetCommander() - возвращает CASW_Player который контролирует солдата.
GetMarineResource() - возвращает ассоциированный CASW_Marine_Resource.
GetASWWeapon( nSlot ) - возвращает оружие, экипированное в указанном слоте (где слотом может являться ASW_INVENTORY_SLOT_PRIMARY, ASW_INVENTORY_SLOT_SECONDARY или ASW_INVENTORY_SLOT_EXTRA).
GetMarineProfile() - возвращает профиль для этого солдата.
IsInhabited() - возвращает true если солдата контролирует игрок, false если он находится по контролем AI.
CASW_Marine_Resource
Этот класс содержит некоторые сетевые данные насчет каждого солдата (похожие на ресурсы игрока в других играх движка Source). Он разный для всех солдат в игре. Ресурс солдата существует ещё перед тем, как солдат выбран в брифинге (перед тем как создана сущность asw_marine). Ресурс солдата также остается после смерти солдата и удаления его сущности.
Полезные методы:
GetMarineEntity() - если есть хоть один существующий солдат для этого ресурса, будет возвращен он.
IsInhabited() - возвращает true если солдат под управлением игрока, false если под контролем AI.
GetCommander() - возвращает CASW_Player владеющего этим солдатом.
GetProfile() - возвращает профиль для этого солдата.
CASW_Marine_Profile
Этот класс представляет собой статичные данные относительно каждого персонажа в игре. Предоставляет доступ к таким профилям как Sarge, Jæger, Wildcat и другим. Из этого класса вы можете получить их имя, портрет, умения.
CASW_Game_Resource
Содержит массив ресурсов солдат, целей и других игровых состояниях. Вы можете получить экземпляр класса через глобальную функцию ASWGameResource().
Используйте GetMaxMarineResources() и GetMarineResource(i) чтобы пройтись по всем ресурсам солдат. Если вы хотите пройтись по солдатам, можете использовать GetMarineEntity() для каждого ресурса солдата.
Используйте ASW_MAX_OBJECTIVES и GetObjective(i) чтобы пройтись по каждой цели.
CAlienSwarm
Игровый правила для Alien Swarm. Управляет всеми состояниями игры, выбирает солдат, снаряжение, создает солдат, завершает миссию, подключает игроков и прочее. Вы можете получить доступ к экземпляру класса через ASWGameRules().
Полезные методы:
GetSkillLevel() - возвращает 1, 2, 3 или 4 (легко, нормально, сложно, безумие, соответственно)
GetGameState() - возвращает текущее состояние игры. Смотрите ASW_GameState enum для возможных состояний.
StartMission() - вызывается когда все игроки выбрали их солдат и лидер нажал кнопку "Начать Миссию".
MissionComplete( bool bSuccess ) - вызывается при завершении миссии.
CASW_Weapon
Это базовый класс оружия для всех оружий в Alien Swarm.
CASW_WeaponInfo
Содержит статичные данные, ассоциированные с каждым типом оружия, прочитанную из скриптов оружия в swarm/scripts.
CASW_Objective
Это базовый класс для каждой цели. Цели получают события из CASW_Mission_Manager и помечают себя как выполненные/невыполненные и потенциально завершают миссию.
Полезные методы:
IsObjectiveComplete()
IsObjectiveHidden()
GetObjectiveProgress()
CASW_Alien
Это базовый класс для всех пришельцев в Alien Swarm (кроме CASW_Buzzer и CASW_Grub).
CASW_Egg
Это яйцо пришельцев, которое плодит паразитов.
CASW_Door
Этот класс используется для дверей. Двери могут самостоятельно открываться, быть запаянными, получать повреждения и падать. Имеют ассоциированный CASW_Door_Area переключатель для переключения авто-открытия и известия о том, что солдат в пределах зоны сварки.
CASW_Button_Area
Этот переключатель представляет собой интерактивную панель-кнопку. Может быть заблокирована и игроку придется выполнить мини-игру с проводами чтобы открыть ее.
CASW_Computer_Area
Похожа на CASW_Button_Are, но для компьютера, обычно используется для Цели "Скачать". Если заблокирована, начнется мини-игра "взломай тумблер".
CASW_Marine_Skills
Этот класс возвращает основанные на умении значения для каждого солдата в игре. Может быть использована улучшения наносимого урона, скорости передвижения и прочего. У каждого солдата свои умения, основанные на его профиле и количестве очков умений, которое он может иметь. Количество очков умений, которое солдат может иметь, устанавливается для игроков через CASW_Game_Resource.
CASW_Spawner
Эта сущность используется для создания пришельцев на уровне. Устанавливается левел-дизайнером и имеет много полей ввода и вводов для контроля над частотой спавна, максимального количества пришельцев, анимацию появления для пришельца.
CASW_Campaign_Save
Играя в Alien Swarm через главное меню, игра всегда находится в режиме кампании. Это значит имеется активный объект CASW_Campaign_Save, который содержит информацию о текущей кампании в которую вы играете, какие миссии были завершены, как много попыток было у каждой миссии и какие солдаты были выбраны у игроков в прошлый раз (также количество очков умений каждого солдата, если вы играете со специальными очками умений).
Вы можете получить сохранение текущей игры через: ASWGameRules()->GetCampaignSave().
CASW_Campaign_Info
Описывает данные для кампании. Каждая кампания имеет название, текстуры и массив Campaign_Mission_t, который описывает каждую миссию и как они взаимодействуют друг с другом.
Полезные методы:
GetNumMissions()
GetMission(i)
CASW_Melee_System
Этот класс осуществляет работу с "предсказуемыми" рукопашными атаками (их анимация, события анимации и движение управляемое анимацией предсказуемы и синхронизированы между клиентом и сервером, как и обычное передвижение игрока). Класс CASW_Melee_Attack описывает каждую анимацию атаки, ее повреждение, зону действия и возможность комбинирования с другой атакой.

Другие интересные файлы

asw_shareddefs.cpp/.h
Содержит различные определения, collision-группы, классификации и прочее для Alien Swarm.
clientmode_asw.cpp/.h
Присутствует на клиенте и получает вызовы функций при инициализации уровня, его освобождении и обновление кадров.
asw_playeranimstate.cpp/.h
Отвечает за анимацию солдата. Исходя из типа перемещения сущности, углов и событий анимации решается, какую анимацию проиграть.
asw_marine_gamemovement.cpp/.h
Отвечает за команды перемещения и передвижение солдата.
asw_input.cpp, asw_in_main.cpp, asw_in_mouse.cpp
Эти файлы читают ввод с клавиатуры/мыши и превращают его в CUserCmd которая управляет солдатом, прицелом и стрельбой. Они также отвечают за вертикальное автоприцеливание на стороне клиента и представление позиции мыши в мировую координату.

Подробнее