# Prealpha 0.7.8 — две свежие дуэли, база Xaero 5 и исправления исполнения

19.10.2026. Версия установлена на изолированный 27961 после проверки отсутствия людей. Это prealpha: два провальных матча 0.7.6 не являются основанием объявлять близость к 1.0. Новая сила проверяется отдельными дуэлями.

## Полные доступные данные двух демок

Исходники сохранены неизменными в `демки для обучения/RESTORED_DEMOS_20261019` и `C:/Users/user/Desktop/Quake SERVER/PsyZ0r-bot/demos`. SHA в `training/FRESH_FEEDBACK_078.json`. UDT завершил обе записи: 24 525 и 24 531 снимок. Это POV владельца: положение бота берётся отдельно из серверных PSYZ_NAV, не из собственных координат игрока. Нажатия WASD/mouse отсутствуют.

| Демо | Участник | Фраги:смерти | Damage дан / получен | RA / Mega / YA |
|---|---|---:|---:|---:|
| nekitz0r(POV)-vs-Psyz0r_bot-bloodrun-2026_10_19-17_51_59.dm_91 | Psyz0r_bot | 1:29 | 2324 / 5586 | 1 / 4 / 14 |
| nekitz0r(POV)-vs-Psyz0r_bot-bloodrun-2026_10_19-17_51_59.dm_91 | nekitz0r | 29:1 | 5586 / 2324 | 15 / 11 / 16 |
| nekitz0r(POV)-vs-Psyz0r_bot-bloodrun-2026_10_19-18_02_34.dm_91 | Psyz0r_bot | 3:13 | 2065 / 2982 | 1 / 4 / 9 |
| nekitz0r(POV)-vs-Psyz0r_bot-bloodrun-2026_10_19-18_02_34.dm_91 | nekitz0r | 13:3 | 2982 / 2065 | 7 / 6 / 20 |

| Демо / бот | MG | SG | RL | LG | RG | Plasma |
|---|---:|---:|---:|---:|---:|---:|
| nekitz0r(POV)-vs-Psyz0r_bot-bloodrun-2026_10_19-17_51_59.dm_91 | 23% | не стрелял | 38% | 16% | 0% | 11% |
| nekitz0r(POV)-vs-Psyz0r_bot-bloodrun-2026_10_19-18_02_34.dm_91 | 18% | не стрелял | 33% | 5% | 10% | 3% |

Статистика подборов совпала с серверным логом: RA=1 и Mega=4 в каждом матче. При сопоставлении исправлена важная ошибка: serverTime после смены карты повторяется, поэтому старые smoke-эпохи нельзя складывать с новыми матчами. Выбрана последняя подходящая монотонная эпоха, покрывающая каждый 600175-мс интервал.

Неподвижность: 14 кандидатов в первом матче, 12 во втором; наиболее длинный второй — 11,2с в радиусе 32u. Бой/ожидание могут давать неподвижность, поэтому это очередь эпизодов, не автоматически 26 технических ошибок. Координаты, цели и времена есть в JSON; подробные корреляционные логи и 49 056 снимков сохранены в `out/feedback-078`.

## Причины в коде и внесённые изменения

1. **Ослабленный character вместо боевой базы Xaero 5.** Было attack/aim skill .85, view factor .8, maxchange 240, reaction .20, projectile aim skill .8. Теперь attack/aim .95, view 1.0/360, projectile aim skill 1.0 по установленному Xaero skill 5. Реакция оставлена человеческой .12; crouch=0, обычный jumper=.25, weaponjump=0: специальные RJ остаются нашим исполнителем. Свои веса оружия сохранены. Полный diff и SHA — `training/XAERO_PROFILE_078.json`. Это профиль QL, а не заново написанный AI.
2. **Остановка при защитном MG-огне.** `forwardmove=0` при недостатке Trinity убран. Штатные ходьба, прицел и выстрел сохраняются; недобор оружия повышает ресурсные приоритеты, но не превращает защиту в AFK. Полноценная осмысленная модель отхода ещё требует работы.
3. **Заниженные свободные основные предметы.** Раньше recovery давал Mega 65, RA 55 против YA 160. У свободной Mega и нужного RA поднят приоритет, а gate «две пушки» сохранён для ещё не появившихся предметов, но снят для уже лежащих. При HP<40 принудительный приоритет RA отключён; полный стек не гоняется за лишним бронежилетом. Больший чужой стек сам по себе не даёт сведений о его позиции.
4. **Сторож только при запросе цели и сброс при смене item.** Добавлен отдельный motion-watch на каждом think. Радиус 32u, 1,8с реальной остановки, ограниченная пауза на бой/ожидание. При срабатывании 3с не вмешиваемся в штатное движение/AAS, плохой маршрут и цель получают cooldown. Это локальная память ошибок, не нейросеть. Ждать под красным из-за одной близости нельзя.
5. **Предположение о слоте 0.** Goal/movement/aim/pickup определяют Psyz0r по bot flag и очищенному имени. Человек в слоте 0 не записывается как бот, а Psyz0r в другом слоте не теряет надстройку. Xaero при сравнении не модифицируется.
6. **Чат.** Исправлена проверка Python object identity на Steam ID/слот. Добавлены нуб/nub/noob и RU/EN темы; нет блокировки retort до конца матча. Короткий контекст 45с, пауза между пользовательскими ответами 4с, избегаем последней реплики. Метки #bot и команды исключены. Это ограниченная тематическая система, не языковая модель. Корпус предложений английский, русский ввод понимается.

## Точность победителей: новый ориентир

Из 500 профессиональных демок найдены 478 матчей с однозначно сопоставленным именем победителя и строкой scoreboard. У большинства файлов нет полной оружейной таблицы: поэтому N для конкретной пушки меньше 478. Исключены отсутствующие поля и shots=0, а не заполнены нулями. Среднее — арифметическое reported accuracy по матчам победителей; pooled = сумма hits / сумма shots отдельно.

| Пушка | N | Среднее матчей | Pooled | Настроенный диапазон |
|---|---:|---:|---:|---:|
| gauntlet | 0 | нет данных | — | не задаётся |
| machinegun | 131 | 29.9 | 32.72 | 22.4–37.4 |
| shotgun | 49 | 24.3 | 23.03 | 16.8–31.8 |
| rocketLauncher | 169 | 29.1 | 29.61 | 21.6–36.6 |
| lightningGun | 169 | 32.7 | 33.32 | 25.2–40.2 |
| railgun | 169 | 43 | 44.95 | 35.5–50.5 |
| plasmaGun | 160 | 10.2 | 12.16 | 2.7–17.7 |
| bfg | 0 | нет данных | — | не задаётся |

GL исключён из новой процентовки. Для перчатки нет положительных shots, процент не придумывается. Проценты accuracy не равны урону: splash/SG имеют свои правила учёта. Диапазон ±7,5 процентного пункта влияет на дополнительную ошибку наведения. **Это цели калибровки, не гарантия фактического процента.** Урон пули, число pellets, projectile и hit-result не меняются.

У каждой пушки отдельный `qlx_psyzAimErrorN`: MG .35°, SG .6°, RL .8°, LG 1.25°, RG .35°, plasma 3°. Для MG прежняя общая ошибка уменьшена; одновременно возвращено качество stock-наведения. Дистанция/движение цели и LG-context продолжают влиять. После человеческих тестов сверить фактические hits/shots, особенно LG 5%/16% в прежних матчах.

## Найдена демонстрация кругов и спама

`demo0000.dm_91`, SHA `0e2a34dcbc24acb0395e501788a8afec4186f6b07ab5fbbebd60dc2cf751ad5a`: Blood Run, один участник nekitz0r, 17 033 снимка. 19 GL, 90 plasma, 54 RL, 5 LG и 1 RG выстрел. Наблюдаемые основные подборы: 10 RA, 8 Mega, 20 YA; 3 кандидата 360°. Это нужный дополнительный источник, отличный от прежнего `nekitz0r_ZTN_solo_01`, где были только RL-выстрелы.

| Оружие | Время от начала демки | Выстрелов | Позиция XYZ | Yaw / pitch |
|---|---:|---:|---|---|
| GL | 233.625с | 2 | [681.96, -401.14, 88.12] | 116.5 / -1.12 |
| GL | 237.025с | 2 | [688.97, -411.65, 88.12] | 113.0 / 2.42 |
| GL | 255.175с | 4 | [725.35, -1089.49, 88.12] | -175.49 / -46.31 |
| GL | 262.250с | 6 | [-167.65, -404.11, 408.24] | 23.42 / 22.22 |
| Plasma | 303.550с | 7 | [253.3, -1096.46, 280.29] | -16.89 / -0.33 |
| Plasma | 322.825с | 24 | [255.73, -1088.67, 280.29] | -12.73 / -1.9 |
| Plasma | 334.525с | 30 | [-149.69, 37.63, 537.12] | -120.88 / 8.65 |
| Plasma | 340.850с | 11 | [-163.79, 36.74, 537.12] | -121.1 / 7.93 |
| Plasma | 345.275с | 16 | [-506.03, 311.27, 536.31] | -99.64 / 7.6 |

Сохранены все 9 эпизодов, включая дополнительные точки. Координаты — позиция стрелка, углы — его взгляд. Они ещё не доказывают точку столкновения снаряда или будущий респаун. Две основные plasma-группы повторяются около (255,-1090,280) и (-155,37,537); отдельная третья позиция сохранена для проверки. Перед включением GL/plasma spam нужны геометрия и разрешённое основание знать противника, а для GL — отсутствие возможности быстрого сближения. Сольный круг пригоден как ресурсный пример, но не доказывает безопасность под противодействием.

## Что с обучением Xaero

У открытого Q3 действительно есть отдельный genetic/interbreeding режим для fuzzy weights: `BotInterbreedBots`, `BotInterbreeding`, явные bot_interbreed cvars. Это не доказательство, что штатный Xaero QL постоянно обучается конкретному человеку во время обычной дуэли. Нативный QL AI закрыт; такую возможность не заявляем. Проверенный первичный код: [id Software, ai_main.c](https://github.com/id-Software/Quake-III-Arena/blob/master/code/game/ai_main.c). В этой версии добавлена ограниченная память плохих маршрутов, не имитация доказанного онлайн-обучения.

## Проверки и что реально установлено

- Python 121/121; CTest Debug 17/17; Linux 5/5. Основной PID 415921 сохранён. Тестовый PID после обновления 422762.
- Backup: `/home/qlserver/backups/psyz-078-20261019T182430Z` — бинарник, plugin, profile PK3 и cfg. Native SHA `d2c9252430da1b0c92d05fe8e134f3d3e97c1ed0e6a2793977f0940f21d3da79`.
- Smoke 80с против Xaero 5: 17 подборов, RA 1, Mega 0, LG-лог 1, fatal=False. Нет подтверждённой полной победы, устойчивого dodge или стопроцентной навигации.
- В smoke нет стартовых strafe jump1/jump2 событий. Исправление первого разгона не засчитывается; это следующий отдельный блок, а не якобы готовая распрыжка.
- После smoke оставлен один Psyz0r_bot, карта Blood Run, штатный лимит Duel. На текущих тестах проверить свободные RA/Mega, MG на респауне, застревания, `нуб`, `noob`, `hi`, `mega` с паузой 4с.
- Combo/arrival 0.7.7 остаются LOCAL; подтверждённый damage/corpse-сенсор ещё не установлен. Расстрел трупа и месть после нефатального урона не объявляются работающими.
- Mind Map v8: 273 правила, сохранены все 262 предыдущих ID; HTML содержит таблицы исходных провалов, targets accuracy и результаты новой версии.

## Дополнительное наблюдение без соперника

После удаления Trial_Xaero записано 351.8с solo warmup: Mega 9, RA 7, stock escapes 5. Новых подключений в этом интервале 0. Два Mega-подбора с задержкой 25мс относительно engine due. Есть и опоздания до 53с по RA, в том числе при почти полном стеке: это не доказательство стабильного цикла. Следующий отдельный пункт — отличие собственной потребности от denial в режиме контроля; при 190–199 HP/armor текущая политика ещё слишком рано занижает предметы. Данные `training/UNOPPOSED_078.json`.

Chat diagnostic `qlx !psychat` подтвердил загрузку плагина и broadcast ответа после обновления. Обычные RU/EN сообщения от живого клиента требуют проверки владельцем. Runtime загружает только psyz_chat, поэтому команды plugin_manager !reload в нём нет; горячая загрузка не заявляется. В диагностике прав есть отдельная ошибка незаданного Owner Steam ID, она не используется для обычного chat hook и не исправлялась изменением прав.
