nyuuzyou/wikis huggingface dataset:
Ru/L4D2 Level Design/Weapon and Item Spawning

__toc__
Возможности размещения оружия на картах L4D2 были расширены. В то время как вы все ещё можете размещать определенные предметы, оружия и предметы так же как и в L4D1, новый weapon_spawn обеспечивает большую гибкость, позволяя 'директору' процедурно создавать арсенал вашего игрока. Другим преимуществом использования новых объектов спавна является то, что они будут предоставлять совпадающие элементы для команд versus/scavenge.
==Размещение спавнеров оружия==
Активируйте инструмент и выберите объект в раскрывающемся меню Objects.
Используя 3D view, перейдите в стартовую область на карте и нажмите, чтобы поместить оружие на стол. Вы должны увидеть более старое оружие, появляющееся в экземпляре. Просто поместите его рядом с ним.
Хотя он отображается в окне просмотра Hammer как винтовка M16 для целей размещения, то, что появится во время игры, будет отличаться.
Теперь ограничем это спавнер, что бы он выдавал только начальное оружие, для этого в свойствах weapon_spawn щелкните поле Selection и в раскрывающемся меню выберете "Any tier 1 primary".
Как вы можете видеть из раскрывающегося списка, вы точно так же можете ограничить его определенным оружием, таким как любой дробовик, любой пистолет и т.д..
==Холодное оружие==
Помещение оружия ближнего боя процедурно работает во многом таким же образом, используя объект . Разместите один из них на карте и откройте диалоговое окно Properties.
Оружие, которое вы хотите разрешить спавнится в этом месте, должно быть включено в текстовое поле. Имена включают:
* golfclub
* fireaxe
* frying_pan
* machete
* baseball_bat
* crowbar
* cricket_bat
* tonfa
* katana
* electric_guitar
* riotshield
* Any – director will place any available melee weapon
Вы также можете перечислить несколько конкретных рукопашных орудий, разделенных запятой, и 'директор' выберет из этого подмножества оружии:
 crowbar,fireaxe,machete
Примечание: щит лежит ровно в другой ориентации, чем большинство других видов оружия: 90 0 0, а не 0 0 90.
==Предметный спавнер==
Предметный спавнер работает почти таким же как weapon_item_spawn, обеспечивает создания любого из множества элементов. Давайте продолжим и добавим пару в арсенал на столе.
В разделе Properties вы можете указать элементы, которые вы хотите разрешить, изменив их значение на 1. Аналогично, лазерные прицелы и пакеты обновления боеприпасов размещаются с использованием объекта upgrade_spawn.
==Тестовый запуск==
Запустите свою карту. Каждый раз, при перезапуске уровня, вы должны увидеть различные виды оружия, за исключением ружья из L4D1 в оригинальном экземпляре.Это оружие останется неизменным, так как это .
Ru/L4D Level Design/Additional Finale Components

== Creating a Rescue Closet ==
Rescue closets can be placed anywhere in Left 4 Dead levels, not just finales. It's basically a room with a closed door and 3 info_survivor_rescue entities in it. The nav mesh can be marked with the RESCUE_CLOSET attribute, but this usually happens automatically when you analyze the nav.
Start by creating the room.
The room doesn't have to be any specific size or shape. It can even have more than one doorway. Most of the rescue closets in Left 4 Dead are closets or bathrooms.
Now, place a prop_door_rotating in the doorway. Open up its properties.
The only thing to note is that the Spawn Position should be "Closed".
Inside the closet, place 3 info_survivor_rescue entities. A maximum of three Survivors can be rescued at once.
Go to the Entity Tool and select "info_survivor_rescue" from the Objects drop-down menu.
Place 3 of these inside the closet.
Save and compile your level and run it in the game with .
Create the nav mesh for the rescue closet area.
Select the nav mesh inside the rescue closet () and use "mark RESCUE_CLOSET" to mark it with the RESCUE_CLOSET attribute.
== Adding a Minigun ==
Go to the Entity Tool and select "prop_minigun" from the Objects list.
Place it in the Camera viewport.
Done.
The optional fortification model is a prop_static with the World model called "props_fortifications/fortification_indoor_01.mdl". You can find it if you type "fortifications" in the filter.
Don't forget to modify the nav mesh where the minigun is placed.
Ru/L4D Level Design/Clip Brushes

Looking around the tutorial_standards.vmf level in Hammer, you may have noticed that some of the brushes placed do not actually render in the game version of the level.
Similar to the trigger_changelevel brush that you created in the checkpoint tutorial, all trigger brush entities are invisible in the game.
There are also clip brushes that can block survivors and infected.
You can use these to cover geometry that players can get stuck on. The railings for the stairs in tutorial_standards.vmf are a good example of this.
To make a clip brush, simply create a brush and attach the tools/toolsclip texture to it.
Brushes with this texture applied to them will block all players, npc's, and physics objects. They will not block bullets.
You can also just block players by using the tools/toolsplayerclip texture.
This is handy for above walls and fences that you want infected to climb over but you don't want players to accidentally get knocked over.
The exterior area shown here from tutorial_standards.vmf is a good example of this.
== Nav Blockers ==
Sometimes, you may want to block the nav mesh without adding a clip brush. You might even want to block the nav for just survivor bots or just infected. You can use a brush entity called a func_nav_blocker to block the nav.
In the tutorial_standards map, a func_nav_blocker brush entity has been used to keep the survivor bots from trying to use the ladder nav before the ladder has been raised.
To create a func_nav_blocker:
# Use the Block Tool to create a brush along the area of the floor that you want to block the nav.
#: 
# Apply the "tools/toolstrigger" texture to the brush.
# Use Tools > Tie to Entity to turn the brush into a brush entity and open the brush properties.
# Change the Class to "func_nav_blocker".
# Change the Name to something unique. In this case, I've used "ladder_nav_blocker".
# Change the Team(s) to block to "Survivor". If you want to block infected only, then change it to "Infected".
You can also unblock the nav that a func_nav_blocker is blocking by sending an input to it.
Add an output with the following:
* My output named: "OnFullyClosed" (This is set up for the ladder that gets raised.)
* Target entities named: "ladder_nav_blocker"
* Via this input: "UnblockNav"
Ru/L4D Level Design/Finale Events Part 1

Последняя карта любой кампании Left 4 Dead заканчивается финалом, где выжившие запрашивают помощь по радио, сражаются с волнами зараженных и двумя танками, и в конце эвакуируются на спасательном транспорте. Такой пример есть на карте tutorial_standards.
== Компоненты финала ==
Для нормальной компоновки финала, нам необходимы:
* trigger_finale – рация, с помощью которой вы вызываете спасителя.
* Зоны навигации, промаркированные FINALE.
* Спасательный транспорт (Обычно это prop_dynamic с анимацией).
* trigger_multiple для проверки наличия всех выживших в транспорте спасателя.
* Четыре info_survivor_positions в которые телепортируются выжившие, после спасения.
Так же необходимо учитывать стандарты финала:
* Припасы (Патроны, оружие, аптечки).
* point_viewcontrol_multiplayer камера для финала.
* Немного env_fade энитий, которые затеняют камеру по окончании ролика финала.
* Энтитя "env_outtro_stats" чтобы показать титры по окончании кампании.
* prop_minigun - пулемет, который выжившие используют для обороны.
* A rescue closet – маленькая комната с дверью, содержащая три энтити info_survivor_rescue.
== Создание trigger_finale ==
Нажимаем Entity Tool и выбираем "trigger_finale" на панели Objects в выпадающем списке.
Ставим его куда желаем нужным, напиример на стол и открываем свойства.
Нажимаем кнопку World model и кликаем на кнопку Browse справа.
Вводим "radio" в поле Filter.
Выбираем модель радио "props\terror\hamradio.mdl" и нажимаем OK.
Меняем Name на "radio".
Меняем Disable Shadows на "Yes".
Это позволит нам посылать input на "radio" или trigger_finale и запретит отбрасывать тень на стол.
Обратите внимание на опцию Use Delay. Это количество секунд, прежде чем начнется финал после нажатия кнопки. Сейчас оставьте значение по умолчанию: 0.
Сохраняем и компилируем карту клавишей .
Когда ваша карта загрузится, войдите в режим редактирования навигационных зон .
Используйте консольную команду "noclip" чтобы долететь до trigger_finale.
Выберите навигационные зоны вокруг trigger_finale и дополните выделение точно также как и с зонами BATTLEFIELD в наступлении орды/Минифинале.
Используйте "mark FINALE" в консоли чтобы промаркировать атрибутом FINALE выбранную зону.
Довольно часто используемые атрибуты навигационных зон:
* PLAYER_START
* EMPTY
* CHECKPOINT
* BATTLEFIELD
* BATTLESTATION
* FINALE
* NOT_CLEARABLE
* NO_MOBS
* OBSCURED
* RESCUE_CLOSET
* RESCUE_VEHICLE
Ru/L4D Level Design/Getting Started

__NOTOC__ 
Первые шаги в запуске Hammer, редактора карт для Left 4 Dead и других игр на движке Source.
Откройте окно Steam, выберите вкладку Tools и сделайте двойной щелчок на Left 4 Dead Authoring Tools.
Если это ваш первый запуск Authoring Tools, то подождите немного, пока он скачается и установится.
 
Сделайте двойной щелчок на Hammer World Editor для запуска редактора уровней.
 
Запустив Hammer, вы можете создать новую карту нажатием File -> New.
 
Перед вами появится 4 окна проекции. 
 
 
 
== Описание интерфейса редактора Hammer ==
 
В этой части статьи вы узнаете, как использовать те или иные предметы в этом уроке, так что не переживайте насчет того, что вы не знаете всех их функций.
=== Панели Map Views и Operations ===
Эти панели находятся вверху окна. В них содержатся кнопки для управлением просмотром объектов на карте, такие как управление сеткой или инструмент привязки.
=== Панель Tools ===
Панель Tools переключает редактор между разными режимами, что позволяет вам выбирать, строить, размещать, текстурировать и манипулировать над любыми объектами на вашем уровне.
=== Панель Selection Mode ===
Панель Selection Mode позволит сменить режим выделения объектов на вашей карте. Доступные режимы:
* Groups — при выделении одного объекта из групы будут выбраны все объекты, входящие в группу.
* Objects — Вы сможете выбрать весь объект, даже если он состоит больше чем из 1 компонента.
* Solids — Вы сможете выделять лишь компоненты (браши) объекта.
=== Панель Texture ===
Панель Texture позволяет вам увидеть выбранную текстуру и просматривать другие нажатием на кнопку Browse.... 
=== Панель Object ===
Используется для размещения объектов со сложной геометрией на вашем уровне. Браши - это ваши основные "строительные блоки" для создания уровней, а энтити, размещенные на панели Object, используются для создания всего остального. Вы можете размещать лампочки, пропы (модели) и предметы, используя панель Object. 
=== Панель VisGroups ===
VisGroups - это путь к организации вашего уровня. Вы можете размещать объекты любого типа в VisGroup панели и обозначать их. Вы можете скрыть и или убрать из группы. Это позволяет вам видеть то, над чем вы сейчас работаете, спрятав все ненужное.
=== Панель Status ===
В нижней строке состояния показывается часто изменяемую информацию во время редактирования, например, размер сетки или размер выбранного объекта.
Ru/L4D Level Design/Nav Flow

The flow is a numeric representation of the distance from the starting checkpoint towards the ending checkpoint.
Flow values let the AI systems quickly decide who is "ahead" or "behind," when players are near the checkpoint, etc. The flow is determined by setting the attributes: PLAYER_START, CHECKPOINT, and FINALE.
To see the flow of the whole nav mesh at once, enter these commands:
 z_debug 1
 z_show_flow_delta 2
For z_show_flow_delta, "1" will show the delta for the area you point at, "2" shows the flow for the whole active area set.
If the flow is broken, the survivor bots will not be able to compute a path to the ending checkpoint, there will be no wandering Infected, Tanks, or Witches and the rescue closets won't work correctly. Basically, the game will be broken.
Another way to tell if the flow is broken is to run the following:
 z_debug 1
 z_show_flow_distance 1
This will show two numbers on each area. The numbers represent Units Increasing Toward Goal/Units Increasing Away From Start.
If the numbers are -9999/-9999, then the numbers are invalid and the flow is broken.
If the flow appears to be broken, that means that Survivors can not reach the destination of the level (the end checkpoint or the finale).
This could mean a few things:
* The starting area (the PLAYER_START area or the starting CHECKPOINT) is not set up correctly
* The destination area (the end CHECKPOINT or the FINALE) is not set up correctly
* The nav mesh does not connect throughout the level correctly.
Double-check that your level has a PLAYER_START area or a CHECKPOINT at the beginning. The CHECKPOINT at the start must have the requirements mentioned in the Checkpoint Rooms Tutorial.
Double-check that your level has an ending CHECKPOINT area or a FINALE. The CHECKPOINT at the end must have the requirements mentioned in the Checkpoints and Checkpoint Rooms Tutorials. The FINALE must have the requirements mentioned in the Finale Events Tutorial.
You can perform a "nav_trouble_report orphan" check to see if the nav mesh does not connect throughout the level. It should also select the part of the map so that you can check the border area where it should connect.
Ru/L4D Level Design/Visibility

== Visibility basics ==
Файл компилируемых карт имеет расширение .bsp. BSP является аббревиатурой Binary Space Partitioning. Строго говоря, игровой движок должен отрисовать только те области игрового уровня, которые видны из точки, в которой находится игрок. Это улучшает производительность в уровне (т.е. влияет на то, насколько быстро происходит смена кадров). Чтобы этого добиться, движок делит уровень на порции, называемые leafs (листья). Если игрок находится в листе из котрого виден следующий дист, тогда тот лист также отрисовывается. Постоянные (не сущностные) браши определяют, где лист будет разрезаться. Браши сущностей, такие как func_ladder, которые мы создавали в предыдущей секции, не влияют на порядок разрезания уровня.
Так почему бы не сделать браши для разрезания уровня на большое количество листов?
Если будет много брашей, режущих уровень на листы видимости, движок вынужден будет делать больше работы при вычислении видимости большего количества деталей для прорисовки.
Любой созданный Вами браш, которые не должен блокировать видимость, должен быть сущностным брашем (func_detail). Эти func_detail браши являются уже твердыми телами в мире, но игнорируются при вычислении области видимости.
* Это довольно общее представление системы визуализации в игровом движке. Для более подробной информации об BSP и графической визуализации смотрите .
== Создайте tutorial03.vmf ==
В первую очередь нам нужно создать новую версию карты, что мы использовали в предыдущем разделе.
Откройте файл карты tutorial01.vmf который вы создали ранее в Hammer (если он еще не открыт). Он расположен в папке mapsrc, по умолчанию:
 C:\Program Files\Steam\steamapps\common\left 4 dead\sdk_content\mapsrc\
Итак мы сделаем новую рабочую версию и скомпилируем ее: 
* Для этого проходим в меню File и выбираем Save As...
* Меняем имя на tutorial03.vmf.
== Creating a Platform ==
Sticking with our level called tutorial02, let's create a platform that extends the upper floor where we created our ladder.
Using the Selection tool, duplicate the back wall brush that we extended out to create the upper story in the last tutorial by -dragging it. Reshape it to be a platform that extends out from the upper story on one side.
It should be 368 units wide, 176 units long, and 16 units deep.
Feel free to re-texture the bottom of the platform so that it matches the ceiling and floor.
Now, go to the Tools menu and choose Tie to Entity. You can also use the + keyboard shortcut.
The default Class for a brush entity is func_detail.
If you see something else under the Class drop-down menu, you will need to change a setting in Tools > Options > Game Configurations tab.
Make sure the Default SolidEntity Class field is set to "func_detail".
That's it. You're done! You just created a brush that will not cut up the BSP into more leafs.
== Run the map ==
Press to open the Run Map dialog and click on the OK Button to compile the map and run it in the game.
== Good candidates for func_detail brushes ==
So how do you know to make a brush a func_detail or not?
Details such as:
* Columns and beams
* Trim
* Frames
* Small platforms
* Posts
* Furniture
* Trusses
Ru/LOD

Level of Detail (LOD). Понижает количество полигонов, которые будут визуализированы. engine отобразит низкополигональную модель, если объект очень далеко. Если он приближается к точке зрения игрока, модель заменяется на более высокополигональную, с более качественной текстурой. Дальнейшее приближение будет повышать детализацию, доводя её до максимального качества. 
Преимущество использования LOD очевидны: Объекты вдалеке, где высокая детализация, всё равно не видна, не будут занимать большое количество памяти и ресурсов процессора. В крайнем случае, они могут не отображаться вообще. От разработчика зависит как много уровней качества требуется для модели и на какой дистанции стоит "активировать" их. Например в , персонаж G-man имел пять различных моделей.
== Предостерижение ==
Будьте внимательны при выборе дистанции, на которой модель будет использовать LOD на карте.
Если, например, игрок смотрит на модель во время смены моделей - это может быть замечено.
== См. также ==
*
* 
* похожий метод, применяемый для текстур брашей, в то время как LOD применяется для моделей.
Ru/Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization

Ян Берньер (yahn@valvesoftware.com), 2001
Инженер разработки ПО (Инженер по разработке программного обеспечения)
==Введение==
Разработка мультиплеерных экшнов от первого лица - нетривиальная задача. Надёжный, хорошо работающий многопользовательский геймплей - это необходимое условие для успеха и реиграбельности вашего продукта. Вдобавок, сегодня разработчики на ПК вынуждены создавать игры для большого спектра конфигураций пользовательских компьютеров, и чаще всего эти конфигурации оказываются далёкими от идеала. Так же далеки от идеала их Интернет-соединения.
Широкополосный доступ в Интернет обычно преподносится как панацея от всех болячек онлайн-игр, но на самом деле быстрый Интернет не освобождает программиста от учитывания ограничений среды передачи данных, таких, как задержки (latency). Пройдёт некоторое количество времени, прежде чем широкополосный доступ станет повсеместным в Соединённых Штатах, и намного большее количество времени, прежде чем широкополосный доступ станет доступным для ваших клиентов в других странах. К тому же, существует множество дешёвых широкополосных провайдеров со значительными задержками и потерями пакетов (packet loss) в своих подключениях, несмотря на их, казалось бы, достойную пропускную способность (bandwidth).
Ваша игра должна адекватно вести себя в этих условиях. В этой статье описаны базовые компромиссы, на которые приходится идти при разработке своего сетевого экшна.
Ru/Latest News

== Последние новости ==
Source SDK Update
Wed Oct 19th, 2011
The Source SDK is . 
----
VDC Site Update
Monday Jun 27th, 2011
The site has gone through a software upgrade and a new look. Read more about the improvements on the Release Notes page.
----
Source SDK Update
Tue May 11th, 2010
A new version of the Source SDK is . 
----
VDC Site Update
Thursday Jun 18th, 2009
The site has gone through a software upgrade. Read more about the improvements on the Release Notes page.
----
A New and Improved VDC!
Thursday, Jan 15, 2009
The site has gone through a major upgrade with many new editing features! Read more about the changes on the Release Notes page.
Category: Wiki
Ru/Launching Without Background Maps

Добавьте -console в ярлык запуска игры и фоновая 3D карта не загрузится.
Вы так же можете добавить это к "Additional game parameters" в Hammer'е в диалоге Run Map.
И последнее место, куда в можете это добавить - окно запуск игр в Steam'е: Правый клик на игре, и выберите Properties. Затем кликните на кнопку Launch Options и добавьте -console в текстовое поле.
Ru/Launching from Visual Studio

В этом руководстве вы узнаете как запустить мод с помощью Visual Studio 2005, 2008 или 2010 года, это позволяет быстро протестировать его и добавить изменения. В качестве примера используется фиктивный(выдуманный) мод с названием MyMod. Во время выполнения шагов, замените название мода на своё собственное.
== Настройка строки отладки ==
# Нажмите правой кнопкой мыши по Вашему проекту и выберете: Properties > Configuration Properties > Debugging.
# В Configuration в левом верхнем углу выберете пункт All Configurations.
# Выберите поле "Command", кликните на стрелку рядом с ней и выберите "Browser..."
# Используйте директорию C:\Program Files\Steam\steamapps\имя пользователя\half-life 2 episode two\ (или соответствующую базу source sdk, если вы создавали мод с нуля) и выбираем hl2.exe 
# Выберете поле Command Arguments. Введите команду ниже, при этом заменив MyMod на ваш собственный. После нажимаем на OK: -allowdebug -novid -game "C:\Program Files\Steam\steamapps\SourceMods\MyMod"
== Запуск ==
Существует несколько способов начать отладку вашего мода.
# Нажать F5
# Main Menu > Debug > Start Debugging
# Найдите кнопку напоминающею зеленую стрелку, а так же отображающеюся в возле меню опций.
Если появляется сообщение, что символы для отладки не найдены - не беспокойтесь, там хранится исключительно информация для отладки и она совершенно не нужна, если используется параметр запуска -allowdebug.
Чтобы отключить это сообщение поставьте галочку в поле "Не показывать снова".
Ru/Launching from Visual Studio 2013

В этом уроке вы научитесь как запускать ваш мод в Visual Studio 2013, позволяя вам быстро протестировать и отладить изменения. В примерах используется фиктивный(ненастоящий) мод MyMod. При повторении шагов замените его на название своего мода.
== Настройка командной строки отладки ==
#Нажмите правой кнопкой мыши на проекте Client и идите в Свойства > Настройки конфигурации > Отладка.
#В меню Конфигурация в левой верхней части окна выберете пункт Все Конфигурации
#Выберете поле Команда, кликните на стрелку вниз, и выберете Обзор...
#Пройдите к папке установленного Source SDK Base 2013 Multiplayer/Singleplayer 2013 и выберете файл hl2.exe
#Выберете поле Аргументы команды. Введите следующее заменив MyMod на название директории вашего мода. После этого нажмите OK.
-allowdebug -novid -game "C:\Program Files (x86)\Steam\steamapps\sourcemods\MyMod"
== Настройка Беты ==
Valve периодически обновляют SDK Base. Часто изменения не выполняются в стабильной версии SDK Base, и вместо этого мы должны использовать 'upcoming' или 'beta' ветку. Если вы не выполните этот шаг, вы, возможно, не сможете запустить клиент (с 10 октября 2015 г. вы должны использовать ветку beta_test с последним кодом). После того, как вы переключили ветки, дайте ему время для обновления файлов.
#Откройте Steam
#Пройдите в 'Инструменты' > 'Source SDK Base Multiplayer/Singleplayer 2013'
#Кликните правой кнопкой мыши > 'Свойства' > 'Бета-Версии' и выберете beta_test
== Запуск ==
Вот некоторые способы как запустить отладку вашего мода
*Нажать F5
*Отладка > Начать отладку
*Нажать на кнопку с зелёной стрелкой 'Локальный отладчик Windows'
Появится сообщение о том, что невозможно найти символы для hl2.exe. Это просто означает, что нет никакой отладочной информации для hl2.exe, но нас не особо интересует сам hl2.exe. Это наши Client.dll и Server.dll, сделанные нашим проектом, которые мы будем отлаживать. Установите флажок «Больше не показывать этот диалог» и нажмите «Да». Ваш мод теперь загрузит несколько модулей, а через несколько секунд ваш мод появится. Рекомендуется отредактировать параметры видео и выбрать оконный режим. Это облегчит переключение между вашим модом и VS.
: Уроки , Програмирование