Race 2 «Верхние ярусы», фаза 1: карта, вентиляторы, ускоряющие полосы, правила общие с Race
- maps/race2/: сцена, race2.gd (ворота со световыми столбами, лазеры, вентиляторы, полосы, срыв, дождь, гул), данные и модель из Blender models/race_02 (раскладка layout.py -> build_race.py -> bake.py; свет пока запечён грубо, небо и музыка — копии Race) - objects/vent.gd, objects/boost_strip.gd + хуки apply_vent()/apply_boost() в player/player.gd (MAX_SPEED и остальная физика не тронуты) - race_rules.gd берёт данные у карты (общий код правил для Race и Race 2) - портал RACE 2 в хабе, пресет экспорта Race2 + export_all.sh, Net.TIMED_MAPS/MAP_TITLES для race2 (RPC не менялись; серверу нужен deploy_server.sh) - тесты: race_game_test.sh с MAP=race2 (бот проводит игроков телепортами), race2_check.txt - README: раздел «Карта Race 2», результаты ботов по веткам Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# Сгенерировано Blender models/race_02/build_race.py из layout.py — не править руками
|
||||
extends RefCounted
|
||||
|
||||
# Старт: 8 слотов в ряд поперёк трассы, лицом по трассе (-Z); центр капсулы
|
||||
const START_SLOTS := [
|
||||
Vector3(-9.80, 61.25, -28.00),
|
||||
Vector3(-7.00, 61.25, -28.00),
|
||||
Vector3(-4.20, 61.25, -28.00),
|
||||
Vector3(-1.40, 61.25, -28.00),
|
||||
Vector3(1.40, 61.25, -28.00),
|
||||
Vector3(4.20, 61.25, -28.00),
|
||||
Vector3(7.00, 61.25, -28.00),
|
||||
Vector3(9.80, 61.25, -28.00),
|
||||
]
|
||||
|
||||
# Ворота по порядку: [центр капсулы на полу ворот, полуширина поперёк трассы (м), рыскание (град; 0 = -Z, -90 = на +X, 180 = на +Z)]. Последний = ФИНИШ
|
||||
# Ворота стоят там, где ветки (безопасная / рискованная / секретная) сливаются.
|
||||
const CHECKPOINTS := [
|
||||
[Vector3(0.00, 61.20, -70.00), 8.0, 0.0], # cp1
|
||||
[Vector3(0.00, 62.20, -104.00), 17.0, 0.0], # cp2
|
||||
[Vector3(107.00, 62.20, -232.00), 25.0, 0.0], # cp3
|
||||
[Vector3(109.00, 53.00, -352.00), 12.0, 0.0], # cp4
|
||||
[Vector3(110.00, 53.00, -384.00), 20.0, 0.0], # cp5
|
||||
[Vector3(110.00, 53.00, -468.00), 50.0, 0.0], # cp6
|
||||
[Vector3(110.00, 53.00, -508.00), 22.0, 0.0], # cp7
|
||||
[Vector3(110.00, 53.00, -577.00), 26.0, 0.0], # cp8
|
||||
[Vector3(110.00, 53.00, -634.00), 18.0, 0.0], # cp9
|
||||
[Vector3(150.00, 48.00, -652.00), 28.0, -90.0], # cp10
|
||||
[Vector3(200.00, 29.00, -560.00), 12.0, 180.0], # cp11
|
||||
[Vector3(203.00, 25.00, -530.00), 33.0, 180.0], # cp12
|
||||
[Vector3(210.00, 75.00, -488.00), 14.0, 180.0], # cp13
|
||||
]
|
||||
|
||||
# Лазеры: центр, размер, режим (0 — всегда, 1 — пульсирует), период, время включения, сдвиг
|
||||
const LASERS := [
|
||||
[Vector3(108.00, 52.25, -544.25), Vector3(4.00, 0.90, 0.50), 1, 3.00, 1.00, 0.00], # mL0
|
||||
[Vector3(112.00, 52.25, -544.25), Vector3(4.00, 0.90, 0.50), 1, 3.00, 1.00, 1.50], # mR0
|
||||
[Vector3(108.00, 53.45, -560.25), Vector3(4.00, 0.70, 0.50), 1, 3.00, 1.00, 0.00], # mL1
|
||||
[Vector3(112.00, 53.45, -560.25), Vector3(4.00, 0.70, 0.50), 1, 3.00, 1.00, 1.50], # mR1
|
||||
[Vector3(108.00, 52.25, -576.25), Vector3(4.00, 0.90, 0.50), 1, 3.00, 1.00, 0.00], # mL2
|
||||
[Vector3(112.00, 52.25, -576.25), Vector3(4.00, 0.90, 0.50), 1, 3.00, 1.00, 1.50], # mR2
|
||||
[Vector3(108.00, 53.45, -592.25), Vector3(4.00, 0.70, 0.50), 1, 3.00, 1.00, 0.00], # mL3
|
||||
[Vector3(112.00, 53.45, -592.25), Vector3(4.00, 0.70, 0.50), 1, 3.00, 1.00, 1.50], # mR3
|
||||
[Vector3(108.00, 52.25, -608.25), Vector3(4.00, 0.90, 0.50), 1, 3.00, 1.00, 0.00], # mL4
|
||||
[Vector3(112.00, 52.25, -608.25), Vector3(4.00, 0.90, 0.50), 1, 3.00, 1.00, 1.50], # mR4
|
||||
]
|
||||
|
||||
# Вентиляционные потоки: центр решётки на полу, сечение (X, Z), высота столба
|
||||
const VENTS := [
|
||||
[Vector3(107.00, 43.80, -450.00), Vector2(6.00, 6.00), 14.00], # v_tn
|
||||
[Vector3(230.00, 23.80, -505.00), Vector2(6.00, 6.00), 15.00], # v1
|
||||
[Vector3(230.00, 36.30, -477.00), Vector2(6.00, 6.00), 15.00], # v2
|
||||
[Vector3(198.00, 48.80, -465.00), Vector2(6.00, 6.00), 15.00], # v3
|
||||
[Vector3(190.00, 61.30, -481.00), Vector2(6.00, 6.00), 15.00], # v4
|
||||
[Vector3(210.00, 23.80, -504.00), Vector2(8.00, 8.00), 53.00], # v_lift
|
||||
]
|
||||
|
||||
# Ускоряющие полосы: центр на полу, размер (ширина, длина), рыскание (направление разгона), скорость
|
||||
const STRIPS := [
|
||||
[Vector3(61.00, 62.00, -105.00), Vector2(6.00, 8.00), -45.0, 22.0], # s_p2a
|
||||
[Vector3(0.00, 60.00, -70.00), Vector2(6.00, 14.00), 0.0, 22.0], # s_b1
|
||||
[Vector3(9.00, 61.00, -105.00), Vector2(6.00, 16.00), -90.0, 22.0], # s_T2
|
||||
[Vector3(79.00, 52.80, -304.00), Vector2(5.00, 8.00), 0.0, 22.0], # s_ruin
|
||||
[Vector3(109.00, 51.80, -335.00), Vector2(6.00, 8.00), 0.0, 22.0], # s_LM
|
||||
[Vector3(107.00, 43.80, -408.00), Vector2(5.00, 10.00), 0.0, 22.0], # s_tn
|
||||
[Vector3(101.00, 48.20, -524.00), Vector2(4.00, 12.00), 0.0, 22.0], # s_cw524
|
||||
[Vector3(101.00, 48.20, -548.00), Vector2(4.00, 12.00), 0.0, 22.0], # s_cw548
|
||||
[Vector3(101.00, 48.20, -572.00), Vector2(4.00, 12.00), 0.0, 22.0], # s_cw572
|
||||
[Vector3(101.00, 48.20, -596.00), Vector2(4.00, 12.00), 0.0, 22.0], # s_cw596
|
||||
[Vector3(149.00, 46.80, -649.00), Vector2(6.00, 14.00), -90.0, 22.0], # s_d1
|
||||
[Vector3(113.00, 51.80, -642.00), Vector2(6.00, 14.00), -90.0, 22.0], # s_q1
|
||||
[Vector3(202.00, 41.80, -652.00), Vector2(6.00, 14.00), 180.0, 22.0], # s_d3
|
||||
[Vector3(202.00, 34.80, -604.00), Vector2(6.00, 10.00), 180.0, 22.0], # s_d5
|
||||
[Vector3(200.00, 23.80, -530.00), Vector2(6.00, 10.00), 180.0, 22.0], # s_f0
|
||||
]
|
||||
|
||||
# Закрытые места без дождя (траншея, шахта): x0, x1, z0, z1 (Godot), пол, потолок
|
||||
const COVERED := [
|
||||
[102.0, 112.0, -408.0, -452.0, 42.8, 47.2], # траншея
|
||||
[204.0, 216.0, -510.0, -500.0, 22.8, 76.8], # шахта-лифт
|
||||
]
|
||||
|
||||
# Портал в хаб за финишем: позиция на полу площадки
|
||||
const PORTAL := Vector3(210.00, 73.80, -476.00)
|
||||
# Длина безопасного маршрута, м
|
||||
const TRACK_LENGTH := 1227.9
|
||||
# Срыв: на столько ниже последнего чекпоинта — возрождение
|
||||
const KILL_DEPTH := 32.0
|
||||
Reference in New Issue
Block a user