SI 스폰 및 특수 감염자 AI 난이도
두 층입니다. 스폰은 언제·어디서 나올지, AI 난이도는 팀 PPM으로 특감 행동을 정합니다.
두 시스템의 역할부터 구분
난이도 등급은 스폰 전략과 AI 행동 모두에 영향을 주지만 두 시스템의 담당 기능은 다릅니다.
infected_control은 킬 관찰 창, 전체 16초 카운트다운, Anti-Bait 연장, 방향성 Nav 후보, 스폰 안전성 검사와 후보 점수를 관리합니다.
동적 AI 플러그인은 인간 생존자 개인별 PPM 평균으로 등급을 정한 뒤 급습, 버니홉, 혀, 토사, 돌진 및 Tank 행동 파라미터를 적용합니다.
AI 5단계 결정 방식
시스템은 각 인간 생존자의 개인 PPM을 먼저 계산한 뒤 산술평균을 냅니다. 팀 전체 점수를 전체 시간으로 나누는 방식이 아닙니다. 자동 모드는 쉬움부터 극한까지 5개 등급만 선택합니다.
| 등급 | 팀 PPM | 확인 창 | 전체 카운트다운 | 저압 SI 임계값 | 점수 계산 후보 수 | 최적의 지점 폭 | 체감 |
|---|---|---|---|---|---|---|---|
| 쉬움 | < 30.89 | 16s | 16s | 12% / 6 특 <= 1 | 9 | 1.25x | 가장 늦은 확인 시작 |
| 보통 | 30.89 - 43.23 | 12s | 16s | 20% / 6 특 <= 1 | 10 | 1.15x | 기본 압박 |
| 어려움 | 43.23 - 63.70 | 10s | 16s | 27% / 6 특 <= 1 | 11 | 1.08x | 기본 카운트다운 조기 시작 |
| 전문가 | 63.70 - 77.57 | 8s | 16s | 34% / 6 특 <= 2 | 12 | 1.00x | 주력 전투 등급 |
| 극한 | >= 77.57 | 6s | 16s | 50% / 6 특 <= 3 | 12 | 1.00x | 가장 빠른 판단, 가장 높은 파라미터 |
기본적으로 전체 랭킹 통계를 사용합니다. 서버 관리자는 분기별 통계를 켤 수 있으며 개인별 분기 플레이 시간이 최소 300분이어야 합니다. 세이프룸에서는 임시 등급으로 팀 변경 시 다시 계산하고 세이프룸을 나가면 이번 라운드 등급을 고정합니다. 일일 P60 / P75 / P90 / P95 임계값을 사용할 수 없거나 오래된 경우 설정 기본값으로 되돌립니다.
SI 웨이브 타임라인
16초는 킬 관찰이 끝난 뒤 새로 시작되는 완전한 카운트다운이며 두 웨이브의 마지막 성공 스폰 사이 강제 간격이 아닙니다.
먼저 이 웨이브의 일반 스폰 대기열을 채운 뒤 현재 등급의 킬 관찰 창에 들어갑니다.
일반 및 비동기 스폰 대기열이 비고 활성 SI가 저압 임계값까지 내려가며 생존자가 건강하고 Tank 압박이 없으면 일찍 시작할 수 있습니다. 그렇지 않으면 등급 확인 시각까지 기다립니다.
기본 카운트다운은 독립적으로 진행됩니다. 이전 SI 스폰 시점의 경과 시간으로 상쇄할 수 없으며 SI 수가 적어도 다시 단축되지 않습니다.
Anti-Bait는 마지막 4초에만 작동할 수 있습니다. 건강한 팀이 2초 동안 안정적으로 뭉친 채 정지하면 마감 시 무제한 홀드에 들어갑니다.
홀드가 없으면 마감 시 웨이브를 방출합니다. 홀드 중에는 전진, 대형 해제, 고립 또는 취약 상태가 2초간 안정적으로 지속되면 즉시 방출합니다.
Anti-Bait가 홀드를 판단하는 방법
특정 한 명의 정지 여부만 보지 않고 팀 진행도, 대형 구조와 취약 상태를 함께 봅니다. 흩어져 정지한 팀은 돌파 웨이브 준비 대상이지만 무제한 Hold에는 들어가지 않습니다.
진행 여부는 팀의 하위 중앙값 Flow로 판단하므로 한 명이 빨리 달려도 팀 전체 타이머를 재설정하지 못합니다.
기본 카운트다운 마지막 4초에만 Pressure에 들어갈 수 있습니다.
건강하고 유효 생존자 2명 이상이며 안정적으로 뭉친 채 계속 정지한 상태입니다.
전진, 대형 해제, 고립, 다운, ledge grab, pin 또는 Flow 무효화 후 상태가 안정적으로 확인되어야 합니다.
유효 생존자 최소 2명이 필요합니다. 팀은 하나의 연결된 그룹이어야 하며 1200유닛 이상 고립된 구성원이 없어야 합니다. 또한 최대 분산 거리가 800 이하이거나, 최대 분산 거리가 1500 이하이면서 평균 최근접 팀원 거리도 800 이하이어야 합니다. 다운, ledge grab, pin, 사망 또는 유효한 Flow를 읽을 수 없는 상태는 모두 취약 상태로 간주합니다.
스폰 지점이 가깝거나 멀거나 높은 곳에 생기는 이유
현재 주 경로는 더 이상 Flow 버킷으로 후보를 열거하지 않습니다. 확장이 방향성 Nav 그래프에서 도달 가능한 후보를 먼저 제공하고 SourcePawn이 안전 필터와 클래스 점수를 적용합니다. 그래프를 사용할 수 없을 때만 모든 Nav 영역과 실제 경로 검사로 폴백합니다.
후보가 어느 생존자에서든 250유닛 미만이면 즉시 제외됩니다. 이는 3D 직선 거리이며 Nav 우회 경로와 무관합니다.
클래스별 최소·최대 거리, 거리 스위트 스폿과 가까운 순·먼 순 후보 정렬은 모두 후보 Nav에서 목표 Nav까지의 방향성 경로 거리를 사용합니다.
Nav 속성, 진행 위치, 같은 구역 밀도, 끼임 상태, 가시성 및 실제 경로를 순서대로 검사합니다. 안전하지 않은 지점은 점수 계산에 들어가지 않습니다.
안전한 후보만 거리, 높이, Flow, 분산도 및 클래스별 전술 품질을 종합해 현재 가장 적합한 위치로 선택합니다.
클래스 경로 거리 범위
각 클래스는 가까운 우선 범위를 먼저 검색합니다. 실패하면 원거리 상한만 늘리고 클래스별 최소 거리는 유지하며 이전 범위 밖의 새로운 Nav 구간만 검색합니다. 아래 값은 모두 후보 Nav에서 목표 Nav까지의 방향성 경로 거리입니다.
| 클래스 | 우선 거리 범위 | 2차 완화 범위 | 최종 완화 범위 |
|---|---|---|---|
| Smoker | 500-1200 | 500-2100 | 500-3000 |
| Boomer | 250-550 | 250-1000 | 250-1800 |
| Hunter | 350-950 | 350-1750 | 350-2900 |
| Spitter | 300-800 | 300-1450 | 300-2300 |
| Jockey / Charger | 250-700 | 250-1250 | 250-2200 |
후보가 목표 눈높이보다 32유닛 초과 높으면 추가 높이를 1.5배로 원래 Nav 거리에서 차감하며 최대 감산량은 1000입니다. 상한과 점수만 완화하고 250 직선 하드 제외를 우회하거나 클래스 최소 거리를 낮추지는 않습니다.
후보가 목표 눈높이보다 32유닛 초과 높으면 추가 높이를 1.15배로 차감하며 최대 800입니다. 따라서 Nav 우회가 길어도 지붕이나 고지대가 계속 점수 계산에 참여할 수 있습니다.
5개 자동 AI 등급의 체감
현재 자동 프로필 전체에서 제어하는 cvar는 97개입니다. 여기서는 게임에서 체감하기 쉬운 속도 차이를 정리하며 Extreme은 공식 스킬 설정도 추가로 인계합니다.
| 핵심 행동 | 쉬움 | 보통 | 어려움 | 전문가 | 극한 |
|---|---|---|---|---|---|
Hunter / Jockey 공중 속도hunter_pounce_air_speed / jockey_pounce_air_speed |
700 | 750 | 800 | 850 | 900 |
Smoker 버니홉 속도ai_SmokerBhopSpeed |
70 | 90 | 105 | 120 | 150 |
Jockey 버니홉 속도ai_JockeyBhopSpeed |
50 | 60 | 70 | 80 | 150 |
Spitter 버니홉 속도ai_SpitterBhopSpeed |
45 | 65 | 85 | 100 | 250 |
Charger 버니홉 속도ai_ChagrerBhopSpeed |
45 | 60 | 75 | 90 | 150 |
Boomer 버니홉 속도ai_BoomerBhopSpeed |
70 | 95 | 125 | 150 | 250 |
Tank 버니홉 속도 상한ai_tank3_bhop_max_speed |
700 | 800 | 900 | 1000 | 1050 |
극한
- 대상 탐색 대기 시간이 0으로 줄고 Smoker 빗나간 혀 쿨다운은 3초, 혀 사거리는 800, 혀 속도는 1200입니다.
- Hunter는 변환 급습, 반사 및 초장거리 설정을 활성화하고 Jockey 후방 시야를 100으로 높입니다.
- Spitter 산성 피해는 3 / 2로 설정되며 Boomer 토사 피로도는 1500, 사거리는 300입니다.
- Charger 돌진 거리는 280, 조준 오프셋은 35이며 공중 보정 강도가 높아집니다.
Neri
자동 PPM은 절대 6등급을 선택하지 않습니다. Neri는 Extreme을 기반으로 Anne-Neri 행동을 추가합니다. 스폰 전략은 Extreme과 동일하며 6초 확인 창, 16초 전체 카운트다운, 12개 점수 계산 후보를 사용합니다.
- Anne-Neri 공중 능력 패치와 Smoker 점프 당기기를 활성화합니다.
- Hunter 급습 간격과 쿨다운은 모두 0입니다.
- Charger 조준 오프셋은 180, 공중 보정 보간은 0.50으로 높아집니다.
- Boomer 점프 토사를 활성화하고 토사 피로도는 0, 토사 사거리는 400으로 높입니다.
- Tank 버니홉 추격 거리는 99999, 투척력은 1000, 사다리 애니메이션 속도는 4이며 Witch 분노 속도는 1입니다.
플러그인은 1~6등급에서 제어하는 모든 cvar를 먼저 기준값으로 복원한 뒤 대상 프로필을 적용합니다. 현재 등급별 항목 수는 84 / 84 / 84 / 84 / 97 / 105이며 Neri를 포함하면 총 105개의 고유 cvar가 적용됩니다.
서버 관리자의 성능 조정 방법
이 설정은 런타임 ConVar입니다. 성능이 낮은 시스템에서는 프레임당 시도 수, Nav 검사 수 또는 밀리초 예산을 줄일 수 있습니다. 핫 루프는 캐시된 값을 읽으며 변경하면 현재 검색 진행도가 초기화됩니다.
| 설정 | 기본값 | 기능 |
|---|---|---|
inf_spawn_attempts_per_frame |
4 | 프레임당 진행 가능한 일반/텔레포트 SI 스폰 시도 최대치 |
inf_spawn_frame_budget_ms |
2.0 ms | 프레임당 SI 스폰 시도의 소프트 시간 예산 |
inf_spawn_nav_candidates_per_slice |
256 | 단일 검색 슬라이스에서 검사하는 Nav 후보 최대 수 |
inf_spawn_nav_expensive_per_slice |
8 | 단일 슬라이스에서 가시성·경로 검사까지 진행하는 후보 최대 수 |
inf_spawn_nav_slice_budget_ms |
1.0 ms | 단일 Nav 검색 슬라이스의 소프트 시간 예산 |
백그라운드 후보 새로고침 빈도
최근 스폰 작업이 없으면 확장은 약 1초마다 후보를 갱신합니다. 작업이 이미 있거나 첫 웨이브·스폰 타이머가 실행 중이거나 방출까지 1초 이하로 남으면 약 0.1초 간격으로 전환합니다. 후보 결과 페이지는 0.2초 후 만료되어 오래된 위치를 장기간 재사용하지 않습니다.