Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Окт 2025
- Сообщения
- 101
- Реакции
- 4
Народ, раз уж тема ночной слепоты в расте всплывает регулярно, решил поделиться небольшим методом для светлой ночи. Ничего революционного, но в адекватном виде в паблике попадалось нечасто, поэтому оформляю как основу под ваш external.
Идея простая: работаем с клиентскими параметрами времени/освещения, чтобы убрать именно «чёрную яму» ночью и сделать её ближе к раннему утру. Это не вечный день, а именно более комфортная ночная картинка, когда всё ещё понятно, что ночь, но бегать и стрелять уже не мучение.
Подход:
- получаем доступ к объекту, который отвечает за класс 'TOD_SKY';
- отслеживаем текущий `night_params` и 'ambient_params', после сдвигаем их в более светлый диапазон;
- при необходимости слегка поднимаем яркость окружения, чтобы не проваливались тёмные участки.
Реализацию метода и структуру можете встроить в свой цикл обновления или рендер‑луп, в зависимости от архитектуры проекта. Оффсеты под конкретную версию игры придётся подобрать самостоятельно — после каждого крупного обновления они обычно меняются, так что без актуального дампа обойтись не получится.
Исходник с примером работы и набором оффсетов прикреплю ниже. Дальше — дело за вами: кто хочет максимально легит, может делать плавный переход и минимальные правки параметров, кто делает purely rage — можете крутить значения более агрессивно.
Если кто уже использует похожий подход или делает светлую ночь через другие параметры (постобработку, цветокор, шейдеры), будет интересно посмотреть альтернативы — пишите, чем обошлись и как это ведёт себя на свежих билдах.
Идея простая: работаем с клиентскими параметрами времени/освещения, чтобы убрать именно «чёрную яму» ночью и сделать её ближе к раннему утру. Это не вечный день, а именно более комфортная ночная картинка, когда всё ещё понятно, что ночь, но бегать и стрелять уже не мучение.
Подход:
- получаем доступ к объекту, который отвечает за класс 'TOD_SKY';
- отслеживаем текущий `night_params` и 'ambient_params', после сдвигаем их в более светлый диапазон;
- при необходимости слегка поднимаем яркость окружения, чтобы не проваливались тёмные участки.
Реализацию метода и структуру можете встроить в свой цикл обновления или рендер‑луп, в зависимости от архитектуры проекта. Оффсеты под конкретную версию игры придётся подобрать самостоятельно — после каждого крупного обновления они обычно меняются, так что без актуального дампа обойтись не получится.
Исходник с примером работы и набором оффсетов прикреплю ниже. Дальше — дело за вами: кто хочет максимально легит, может делать плавный переход и минимальные правки параметров, кто делает purely rage — можете крутить значения более агрессивно.
Код:
uintptr_t night_params =read<uintptr_t>(tod_sky_chain + O::Sky::NightParameters);
uintptr_t ambient_params = read<uintptr_t>(tod_sky_chain + O::Sky::AmbientParameters);
if (night_params != 0) {
write<float>( night_params + O::Sky::TOD_NightParameters::runtimeAmbientMultiplier,13.0f);
}
if (ambient_params != 0) {
write<float>(ambient_params + O::Sky::TOD_AmbientParameters::Saturation, 0.0f);
}
Если кто уже использует похожий подход или делает светлую ночь через другие параметры (постобработку, цветокор, шейдеры), будет интересно посмотреть альтернативы — пишите, чем обошлись и как это ведёт себя на свежих билдах.