Ru/Creating a portal elevator: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
m (obsolete language category)
 
(11 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{otherlang2
{{lang|title=Создание лифта для Portal/Portal 2|Creating a portal elevator}}
|title=Утечка
{{todo|Данная статья переведена не полностью.}}
|en=Leak
}}
{{DISPLAYTITLE:Создание лифта для игры Portal/Portal2}}
== Введение ==
== Введение ==


Не смотря на кажущуюся сложность, создание лифта достаточно простой процесс. А при желании можно создать заготовку с лифтом ([[prefab]]) и необходимыми атрибутами для последующего дублирования в ваших картах, что в конечном итоге позволит избежать лишней работы.
Не смотря на кажущуюся сложность, создание лифта достаточно простой процесс. А при желании можно создать заготовку с лифтом ({{L|prefab}}) и необходимыми атрибутами для последующего дублирования в ваших картах, что в конечном итоге позволит избежать лишней работы.


== Основа лифта ==
== Основа лифта ==


Первое, что нужно сделать, это создать основу для лифта. Она состоит из [[brush]] и [[func_detail]].
Первое, что нужно сделать, это создать основу для лифта. Она состоит из {{L|brush|браша}} и энтити {{en}}[[func_detail]].


=== Посадочная платформа ===
=== Посадочная платформа ===


[[Image:Eletut.jpg|right|thumb|Шаг 1]]
[[File:Eletut.jpg|right|thumb|Шаг 1]]


Наша платформа будет состоять состоит из 7 стен, пола и потолка с отверстием как на рисунке справа. Пожалуйста, обратите внимание, что на изображение справа сетка равна 16 юнитам. По образу и подобию создайте ещё одну платформу (достаточно просто скопировать) и разместите её чуть выше первой. Таким образом у нас получилось две платформы между которыми будет ходить наш лифт.
Наша платформа будет состоять из 7 стен, пола и потолка с отверстием как на рисунке справа. Пожалуйста, обратите внимание, что на изображение справа сетка равна 16 юнитам. По образу и подобию создайте ещё одну платформу (достаточно просто скопировать) и разместите её чуть выше первой. Таким образом у нас получилось две платформы, между которыми будет ходить наш лифт.


=== Основа шахты лифта ===
=== Основа шахты лифта ===


[[Image:Eletut_(1).jpg|right|thumb|Шаг 2]]
[[File:Eletut_(1).jpg|right|thumb|Шаг 2]]
Шахта будет состоять из 3 частей. Средняя часть шахты будет соединять наши 2 платформы, а верхняя и нижняя части будут закрывать вверх и низ у платформ соответственно (смотри рисунок справа).  
Шахта будет состоять из 3 частей. Средняя часть шахты будет соединять наши 2 платформы, а верхняя и нижняя части будут закрывать вверх и низ у платформ соответственно (смотри рисунок справа).  
Среднею часть шахты сделайте высотой 384 юнита, верхнею и нижнею части высотой 64 юнита. Длину и ширину стен у всех частей шахты сделайте 192*16 юнитов.
Среднею часть шахты сделайте высотой 384 юнита, верхнею и нижнею части высотой 64 юнита. Длину и ширину стен у всех частей шахты сделайте 192*16 юнитов.
Line 27: Line 24:
=== Доработка шахты лифта (использование func_detail) ===
=== Доработка шахты лифта (использование func_detail) ===


[[Image:Eletut_(2).jpg|right|thumb|Шаг 3]]
[[File:Eletut_(2).jpg|right|thumb|Шаг 3]]
* 1. Создайте 4 браша размерами 16*16 и разместите их по углам шахты. Далее превратите их в [[func_detail]].
* 1. Создайте 4 браша размерами 16*16 и разместите их по углам шахты. Далее превратите их в {{L|func_detail}}.
* 2. Затем, создайте блок, размерами 8*8*160 (это у нас будут балки шахты лифта, тем самым мы придадим более реалистичный вид нашей шахте):
* 2. Затем, создайте блок, размерами 8*8*160 (это у нас будут балки шахты лифта, тем самым мы придадим более реалистичный вид нашей шахте):
:A. Примените к блоку текстуру - plasticwall002a.
:A. Примените к блоку текстуру - plasticwall002a.
:B. Разделите наш блок при помощи инструмента [[Hammer_Clipping_Tool|Clipping Tool]] по вертикали на 3 части: 2, 4 и 2 юнита соответственно.  
:B. Разделите наш блок при помощи инструмента {{L|Hammer_Clipping_Tool|Clipping Tool}} по вертикали на 3 части: 2, 4 и 2 юнита соответственно.  
:C. Затем возьмите среднею часть, которая у нас 4 юнита и уменьшите по ширине до 2х юнитов. Примените к этой части текстуру white008. В итоге у вас должна получиться балка в виде лежащей буквы П. (смотрите рисунок, шаг 3 нижняя проекция).
:C. Затем возьмите среднею часть, которая у нас 4 юнита и уменьшите по ширине до 2х юнитов. Примените к этой части текстуру white008. В итоге у вас должна получиться балка в виде лежащей буквы П. (смотрите рисунок, шаг 3 нижняя проекция).
:D. Продублируйте нашу балку по периметру шахты. Т.е. в итоге у нас получилось 4 балки.
:D. Продублируйте нашу балку по периметру шахты. Т.е. в итоге у нас получилось 4 балки.
Line 38: Line 35:
=== Доработка посадочной платформы ===
=== Доработка посадочной платформы ===


[[Image:Eletut_(3).jpg|right|thumb|Шаг 4]]
[[File:Eletut_(3).jpg|right|thumb|Шаг 4]]
На посадочной платформе также можно разместить источники света по периметру как в оригинальных картах игры. Для простоты вы может открыть карту с примерами из SDK и скопировать оттуда. В примерах карт используется 16 источников света. (смотрите рисунок шаг 4, проекция вида сверху)
На посадочной платформе также можно разместить источники света по периметру как в оригинальных картах игры. Для простоты вы может открыть карту с примерами из SDK и скопировать оттуда. В примерах карт используется 16 источников света. (смотрите рисунок шаг 4, проекция вида сверху)
<br>
<br>
Line 51: Line 48:
=== Модель лифта ===
=== Модель лифта ===


[[Image:Eletut_(4).jpg|right|thumb|Step 5]]
[[File:Eletut_(4).jpg|right|thumb|Шаг 5]]
Разместите [[prop_dynamic]] со следующими параметрами:
Разместите {{en}}[[prop_dynamic]] со следующими параметрами:
{| class=standard-table
{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 63: Line 60:
|}
|}


=== The func_ tracktrain ===
=== Добавление func_ tracktrain ===


[[Image:Eletut_(5).jpg|right|thumb|Step 6]]
[[File:Eletut_(5).jpg|right|thumb|Шаг 6]]
Hide world details and make a [[func_tracktrain]] out of invisible brushes as shown.
Hide world details and make a {{L|func_tracktrain}} out of invisible brushes as shown.
{| class=standard-table
{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 89: Line 86:
=== Fixing door collisions ===
=== Fixing door collisions ===


[[Image:Eletut_(6).jpg|right|thumb|Step 7]]
[[File:Eletut_(6).jpg|right|thumb|Шаг 7]]
Create a brush textured with tools\toolsinvisible and place it as shown. Tie this brush to a func_brush. This will stop a player from getting stuck in the door when collisions are enabled.
Create a brush textured with tools\toolsinvisible and place it as shown. Tie this brush to a func_brush. This will stop a player from getting stuck in the door when collisions are enabled.
{| class=standard-table
{| class=standard-table
Line 103: Line 100:
=== The Paths ===
=== The Paths ===


[[Image:Eletut_(7).jpg|right|thumb|Step 8]]
[[File:Eletut_(7).jpg|right|thumb|Шаг 8]]
Place two paths in the center of the room. Call the first one "elevator1_path1," and the second one "elevator1_path2." Do not set the second path to point to anything.
Place two paths in the center of the room. Call the first one "elevator1_path1," and the second one "elevator1_path2." Do not set the second path to point to anything.
Enable props and test the map using [[ent_fire]]. Determine if the paths need to be repositioned. In my case I needed to move it back 8 units and down 16.
Enable props and test the map using {{L|ent_fire}}. Determine if the paths need to be repositioned. In my case I needed to move it back 8 units and down 16.


== The Details ==
== The Details ==
Line 111: Line 108:
=== Beams ===
=== Beams ===


[[Image:Eletut_(8).jpg|right|thumb|Step 9]]
[[File:Eletut_(8).jpg|right|thumb|Шаг 9]]
Place an [[info_particle_system]] with the following values:
Place an {{L|info_particle_system}} with the following values:
{| class=standard-table
{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 137: Line 134:
=== Lights ===
=== Lights ===


[[Image:Eletut_(9).jpg|right|thumb|Step 10]]
[[File:Eletut_(9).jpg|right|thumb|Шаг 10]]
Place two [[light]]s with the following settings:
Place two {{L|light}}s with the following settings:
{| class=standard-table
{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 154: Line 151:
=== Sounds ===
=== Sounds ===


[[Image:Eletut_(10).jpg|right|thumb|Step 11]]
[[File:Eletut_(10).jpg|right|thumb|Шаг 11]]
Place three [[sound]]s, with their source set to the elevator model.
Place three {{L|sound}}s, with their source set to the elevator model.
They should be:
They should be:
* Portal.elevator_chime
* Portal.elevator_chime
Line 165: Line 162:
=== Shake ===
=== Shake ===


Add an [[env_shake]] with these settings:
Add an {{L|env_shake}} with these settings:
{| class=standard-table
{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 178: Line 175:
== The Trigger ==
== The Trigger ==


Create a [[trigger]] brush inside the elevator with these outputs:
Create a {{L|trigger}} brush inside the elevator with these outputs:


{| class=standard-table
{| class=standard-table
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_doors || SetAnimation || close || 0.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_doors || SetAnimation || close || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_doors || EnableCollision ||  || 0.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_doors || EnableCollision ||  || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_block || Enable ||  || 0.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_block || Enable ||  || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_train || StartForward ||  || 5.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_train || StartForward ||  || 5.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_start || PlaySound ||  || 5.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_start || PlaySound ||  || 5.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_shake || StartShake ||  || 5.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_shake || StartShake ||  || 5.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_lights || TurnOn ||  || 8.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_lights || TurnOn ||  || 8.00 || No
|}
|}


Line 202: Line 199:
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_shake || StartShake ||  || 0.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_shake || StartShake ||  || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_close || PlaySound ||  || 0.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_close || PlaySound ||  || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_lights || TurnOff ||  || 0.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_lights || TurnOff ||  || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_chime || PlaySound ||  || 1.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_chime || PlaySound ||  || 1.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_doors || SetAnimation || open || 1.00 || No
| [[File:Io11.png]] || OnTrigger || elevator1_doors || SetAnimation || open || 1.00 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_block || Disable ||  || 1.50 || No
| [[File:Io11.png]] || OnTrigger || elevator1_block || Disable ||  || 1.50 || No
|-
|-
| [[Image:Io11.png]] || OnTrigger || elevator1_doors || DisableCollision ||  || 1.50 || No
| [[File:Io11.png]] || OnTrigger || elevator1_doors || DisableCollision ||  || 1.50 || No
|}
|}


== Final Touches ==
== Final Touches ==
Place a [[soundscape]] (portal_testchmb.elevator_shaft) in the center of the shaft. You may add a changelevel, which fires with the [[path_track]]. Change levels will not be covered in this tutorial.
Place a {{L|soundscape}} (portal_testchmb.elevator_shaft) in the center of the shaft. You may add a changelevel, which fires with the {{L|path_track}}. Change levels will not be covered in this tutorial.


To make this an elevator at the beginning, simply change the train's first stop target to elevator1_path2.
To make this an elevator at the beginning, simply change the train's first stop target to elevator1_path2.
Line 226: Line 223:
To make a multiple stop elevator, simply add another path track, and set the middle path tracks to fire a stop event to the train. A trigger can be placed at every floor and disabled until required.
To make a multiple stop elevator, simply add another path track, and set the middle path tracks to fire a stop event to the train. A trigger can be placed at every floor and disabled until required.


Remember to disable collision when placing your trigger in your level.  Otherwise, you will not be able to enter the elevator.</div>
Remember to disable collision when placing your trigger in your level.  Otherwise, you will not be able to enter the elevator.
 


== См. также ==
== См. также ==
* [[Category:Level_Design:ru|Дизайн Уровней]]
* [[Category:Level_Design:ru|Дизайн Уровней]]
* [[Portal_Level_Creation:ru|Разработка уровней для Portal]]
* {{LCategory|Portal level design|Разработка уровней для Portal}}
* [[:Category:Portal_2_Level_Design:ru|Разработка уровней для Portal 2]]
* {{LCategory|Portal_2_Level_Design|Разработка уровней для Portal 2}}


[[Category:Level_Design:ru]]
{{ACategory|Level_Design}}
[[Category:Portal_Level_Creation:ru]]
[[Category::Category:Portal level design/ru]]
[[Category:Portal 2 Level Design:ru]]
{{ACategory|Portal 2 Level Design}}
[[Category:Portal 2 Tutorials:ru]]
{{ACategory|Portal 2 Tutorials}}

Latest revision as of 03:43, 22 August 2024

English (en)Русский (ru)Translate (Translate)
Нужно сделать: Данная статья переведена не полностью.

Введение

Не смотря на кажущуюся сложность, создание лифта достаточно простой процесс. А при желании можно создать заготовку с лифтом (prefab(en)) и необходимыми атрибутами для последующего дублирования в ваших картах, что в конечном итоге позволит избежать лишней работы.

Основа лифта

Первое, что нужно сделать, это создать основу для лифта. Она состоит из браша(en) и энтити Englishfunc_detail.

Посадочная платформа

Шаг 1

Наша платформа будет состоять из 7 стен, пола и потолка с отверстием как на рисунке справа. Пожалуйста, обратите внимание, что на изображение справа сетка равна 16 юнитам. По образу и подобию создайте ещё одну платформу (достаточно просто скопировать) и разместите её чуть выше первой. Таким образом у нас получилось две платформы, между которыми будет ходить наш лифт.

Основа шахты лифта

Шаг 2

Шахта будет состоять из 3 частей. Средняя часть шахты будет соединять наши 2 платформы, а верхняя и нижняя части будут закрывать вверх и низ у платформ соответственно (смотри рисунок справа). Среднею часть шахты сделайте высотой 384 юнита, верхнею и нижнею части высотой 64 юнита. Длину и ширину стен у всех частей шахты сделайте 192*16 юнитов. Текстуру для нашей шахты можно использовать plasticwall002a.

Доработка шахты лифта (использование func_detail)

Шаг 3
  • 1. Создайте 4 браша размерами 16*16 и разместите их по углам шахты. Далее превратите их в func_detail(en).
  • 2. Затем, создайте блок, размерами 8*8*160 (это у нас будут балки шахты лифта, тем самым мы придадим более реалистичный вид нашей шахте):
A. Примените к блоку текстуру - plasticwall002a.
B. Разделите наш блок при помощи инструмента Clipping Tool(en) по вертикали на 3 части: 2, 4 и 2 юнита соответственно.
C. Затем возьмите среднею часть, которая у нас 4 юнита и уменьшите по ширине до 2х юнитов. Примените к этой части текстуру white008. В итоге у вас должна получиться балка в виде лежащей буквы П. (смотрите рисунок, шаг 3 нижняя проекция).
D. Продублируйте нашу балку по периметру шахты. Т.е. в итоге у нас получилось 4 балки.
E. Преобразуйте наши балки в func_detail и разместите их через каждые 64 юнита в центральной части шахты (смотрите рисунок справа, шаг 3).

Доработка посадочной платформы

Шаг 4

На посадочной платформе также можно разместить источники света по периметру как в оригинальных картах игры. Для простоты вы может открыть карту с примерами из SDK и скопировать оттуда. В примерах карт используется 16 источников света. (смотрите рисунок шаг 4, проекция вида сверху)





Лифт

Модель лифта

Шаг 5

Разместите Englishprop_dynamic со следующими параметрами:

Property Name Value
Name elevator1_model
Parent elevator1_train
World Model models/props/round_elevator_body.mdl

Добавление func_ tracktrain

Шаг 6

Hide world details and make a func_tracktrain(en) out of invisible brushes as shown.

Property Name Value
Change Angles None
First Stop Target elevator1_path1
Height Above Track 0
Max Speed 65
Name elevator1_train
Stop Sound eli_lab.elevator_stop
Volume 1

Check every flag except Fixed Orient, and Use Max Speed. Set these settings:

Fixing door collisions

Шаг 7

Create a brush textured with tools\toolsinvisible and place it as shown. Tie this brush to a func_brush. This will stop a player from getting stuck in the door when collisions are enabled.

Property Name Value
Name elevator1_block
Parent elevator1_train
Start Disabled Yes

The Paths

Шаг 8

Place two paths in the center of the room. Call the first one "elevator1_path1," and the second one "elevator1_path2." Do not set the second path to point to anything. Enable props and test the map using ent_fire(en). Determine if the paths need to be repositioned. In my case I needed to move it back 8 units and down 16.

The Details

Beams

Шаг 9

Place an info_particle_system(en) with the following values:

Property Name Value
Name elevator1_beam
Parent elevator1_train
Particle System Name elevator_beam
Start Active Yes

Place an env_citidel_energy_core with these settings:

Property Name Value
Name elevator1_core
Parent elevator1_train

Lights

Шаг 10

Place two light(en)s with the following settings:

Property Name Value
Name elevator1_lights
Appearence Slow strobe
Brightness 183 204 218 60
Brightness HDR 183 204 218 40

Also, set initially dark.

Sounds

Шаг 11

Place three sound(en)s, with their source set to the elevator model. They should be:

  • Portal.elevator_chime
  • Portal.elevator_start
  • Doors.FullClose11

Name them something unique.

Shake

Add an env_shake(en) with these settings:

Property Name Value
Duration 2
Name elevator1_shake
Parent elevator1_train

The Trigger

Create a trigger(en) brush inside the elevator with these outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger elevator1_doors SetAnimation close 0.00 No
Io11.png OnTrigger elevator1_doors EnableCollision 0.00 No
Io11.png OnTrigger elevator1_block Enable 0.00 No
Io11.png OnTrigger elevator1_train StartForward 5.00 No
Io11.png OnTrigger elevator1_start PlaySound 5.00 No
Io11.png OnTrigger elevator1_shake StartShake 5.00 No
Io11.png OnTrigger elevator1_lights TurnOn 8.00 No

Set the second path track to have these outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger elevator1_shake StartShake 0.00 No
Io11.png OnTrigger elevator1_close PlaySound 0.00 No
Io11.png OnTrigger elevator1_lights TurnOff 0.00 No
Io11.png OnTrigger elevator1_chime PlaySound 1.00 No
Io11.png OnTrigger elevator1_doors SetAnimation open 1.00 No
Io11.png OnTrigger elevator1_block Disable 1.50 No
Io11.png OnTrigger elevator1_doors DisableCollision 1.50 No

Final Touches

Place a soundscape(en) (portal_testchmb.elevator_shaft) in the center of the shaft. You may add a changelevel, which fires with the path_track(en). Change levels will not be covered in this tutorial.

To make this an elevator at the beginning, simply change the train's first stop target to elevator1_path2.

Note: You should save the elevator in its own file and copy and paste it to preserve the grouping, so you can easily turn it into a multi stop elevator.

To make a multiple stop elevator, simply add another path track, and set the middle path tracks to fire a stop event to the train. A trigger can be placed at every floor and disabled until required.

Remember to disable collision when placing your trigger in your level. Otherwise, you will not be able to enter the elevator.

См. также

[[Category::Category:Portal level design/ru]]