что такое лаунчер и с чем его едят

  • Привет! Если твой основной форумник заблокирован - ты можешь оставить заявку в этом разделе: Нажми на меня!, НЕ создавая новый форумный аккаунт.
  • Гость, цивильный бизнес — это твой главный источник крутого ролевого сюжета, уважения и стабильного дохода. Забирай коммерческое предприятие уже сегодня и сделай свое заведение центром тусовки всего сервера!

damirtakioma

Постоянный
Автор темы
Assistant
State Section
174
2,292
так, ну.. идея написать пост появилась у меня еще вчера, когда я переписывал свои скрипты под корректную работу с лаунчером. поэтому вот.

ЛАУНЧЕР.
так ну.. начну с того, что я сам всегда играл в сампик со своей сборки. всегда было отвращение играть с другими таймциклами/фовами/скриптами. и в целом вплоть до, наверное, недавнего момента, я позиционировал лаунчер как «ебаные костыли» с очень кривой настройкой. в общем-то, с моей стороны это было в коей-то мере даже обоснованно: до момента перехода лаунчера на р1 у меня действительно не работало ничего из старой сборки и я отказывался играть на нем. после перехода лаунчера на р1 уже, потестив, я заметил что половина луа скриптов не работают из-за того, что лаунчер не принимает библиотеку евентса, но это уже пофиксили после топика в ппу. недавно когда @шкипер попросил меня переписать скрипт под работу с лаунчером (а он на нем почему-то не работал, но я уже фиксанул), мне пришлось лезть и разбирать побайтово весь лаунчер и его функционал.
в общем-то, облазив файлики, образовался вывод: в целом-то лаунчер вещь действительно хорошая: под капотом оказался лимит аджастер, асишка лаунчера, свой цеф и пару фиксов в модлоадере. больше то я не нашел ничего. если кратко, асишка лаунчера оптимизирует игру и предотвращает краши, цеф, кстати, как я понял написан на Rust — как минимум, его внутриигровая часть, что позволяет цефкам работать быстрее. фиксы самые базовые, также автоматически включен чат++, но он выключается в настройках модлоадера. как только я покопался в архитектуре и пофиксил свой скрипт, я попробовал перенести свою сборку на лаунчер: из визуала это мой скайгфкс и геймтвикер который содержит таймцикл, настройки времени и погоды. ниже: сравнение визуала и тесты по фпс в одной и той же локации в одно и то же время.
лаунчер: удалось заскринить 131 фпс, но в пике замечал и 143+-. монитор у меня 180.
1794236357125.png
так, ну и сборка, я играю без фпс-увеличителей на ней или что-то еще, выводит 92 на скрине, максимум 95.
1794240423101.png
ладно, мы тут не за цифрами. веду к чему — на лаунчер можно спокойно перенести вообще любые моды из своей сборки, что графические, что не графические, правда скрипты что активно работают с памятью может перехватывать гамбиткор — но их в целом легко переделать.

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

ладно, не думайте что мне заплатили, тут будет и критика
к примеру: инициализация игры дольше. я понимаю для чего это сделано, но сам факт минуса есть. также один из главных минусов — навязывание своего худа, карты и цефок. технически, цефки отключить можно, и вроде бы под это даже зашит отдельный режим, но я не проверял. также, в целом, лично я могу выделить статичность цефок того же самого инвентаря или меню, когда их было бы прикольно подвигать по экрану. одним словом — проблема кастомизации.

подвести итог — я не вижу в лаунчере сильных минусов, . если вы это дочитали, что маловероятно, объясню зачем я это вообще пишу. в целом в дев-индустрии сампика я сижу давно, почти 3 года, ну и вот, завидев как скептически относятся на гамбите к лаунчеру и новым обновам — решил расписать сюда, чтобы хоть эта тема афишировалась. лично я в целом перехожу на лаунчер, советую и другим. считайте, это небольшой гайд на объяснение причины «почему лаунчер это круто». как говорили хэппинес, форест, шекли, нечаев, ну и в общем-то все-все-все, переход на лаунчер должен быть с согласия игроков, а не резким. но на такой нынешней инициативе — мы упираемся в стенку. от себя лишь хочу поблагодарить @f0Re3t за разработку сервера и лаунчера. этот топик — полностью моя идея, никто больше в этом не замешан. ну хоть спасибо, если почитали!
 
Последнее редактирование:
  • Нравится
Реакции: f0Re3t и DANETDA071

Metanoia

Легенда
3,011
11,542
есть какой то перечень всех изменений этой самой лаунчеровской асишки? было бы полезно узнать
 

damirtakioma

Постоянный
Автор темы
Assistant
State Section
174
2,292
есть какой то перечень всех изменений этой самой лаунчеровской асишки? было бы полезно узнать
  • spawn guard: блокирует искажённые / повреждённые spawn RPC (blocked malformed spawn rpc).
  • object guard: фильтрует RPC создания/удаления объектов, автоматически удаляет дубликаты (deleted duplicate object), подчищает "висячие" слоты объектов при удалении сервером.
  • vehicle guard / vehicle create guard: предотвращает краши от некорректных ID моделей транспорта или повреждённых пакетов создания машин.
  • skin guard: блокирует недопустимые ID скинов, блокирует смену скина во время анимации посадки в транспорт.
  • pickup guard & material guard: валидация моделей и полезной нагрузки пикапов и кастомных материалов.
  • textdraw guard: строгая фильтрация TextDraw с проверкой длины и максимального ID (лимит до 2304). Предотвращает переполнение буфера текста.
  • pool guard: принудительная очистка пулов объектов, транспорта, пикапов и текстдравов при дисконнекте/реконнекте для предотвращения утечек памяти и зависаний.
  • focus guard: предотвращает фризы и паузу игры при сворачивании (Alt+Tab), очищает флаг паузы таймера (focus guard cleared timer pause after restore), перезапускает процедуру восстановления контекста (InitAfterLostFocus).
  • d3d reset guard: защищает Direct3D9 устройство при сворачивании/разворачивании игры, предотвращая краш D3DERR_DEVICELOST.
  • engine parser fixes:
    • carcols guard в LoadVehicleColours (защита от краша при нестандартных цветах).
    • vehicles.ide sscanf defaults (защита от опечаток в IDE-файлах транспорта).
    • ReadLine zero-fill hook и LoadLine null-terminate hook (защита от чтения мусора за пределами строк в файлах данных).
  • engine stability: перехват RwStreamRead, синхронизация CdStream, защита потоковой анимации RtAnim.
  • particle optimizer: динамическое ограничение количества частиц, дальности спавна и обновления эффектов огня/дыма.
  • alpha foliage culling: адаптивное отсечение листвы деревьев и кустов по дистанции и бюджету кадра для повышения FPS.
  • train crossing guard: фикс ванильного бага краша GTA SA на ж/д переездах (модели 1373/1374).
  • Стриминг маппинга (mapping.json): очередь плавного создания объектов (smooth_queue, max_create_per_frame: 16), механизм мягкого сокрытия/кэширования (soft_destroy_cache).
  • Пиннинг горячих моделей (stream.json, stream_hot.json): ядро ведёт статистику частоты использования скинов, авто и объектов. Самые популярные модели получают высокий score и закрепляются в памяти (Stream Pinning), предотвращая микрофризы при их появлении в кадре.
можешь почитать выжимку с нейронки, все равно чистые значения тяжело понять
 

f0Re3t

Один в поле воен, если в руках автомат
Developer
1,700
35,038
  • spawn guard: блокирует искажённые / повреждённые spawn RPC (blocked malformed spawn rpc).
  • object guard: фильтрует RPC создания/удаления объектов, автоматически удаляет дубликаты (deleted duplicate object), подчищает "висячие" слоты объектов при удалении сервером.
  • vehicle guard / vehicle create guard: предотвращает краши от некорректных ID моделей транспорта или повреждённых пакетов создания машин.
  • skin guard: блокирует недопустимые ID скинов, блокирует смену скина во время анимации посадки в транспорт.
  • pickup guard & material guard: валидация моделей и полезной нагрузки пикапов и кастомных материалов.
  • textdraw guard: строгая фильтрация TextDraw с проверкой длины и максимального ID (лимит до 2304). Предотвращает переполнение буфера текста.
  • pool guard: принудительная очистка пулов объектов, транспорта, пикапов и текстдравов при дисконнекте/реконнекте для предотвращения утечек памяти и зависаний.
  • focus guard: предотвращает фризы и паузу игры при сворачивании (Alt+Tab), очищает флаг паузы таймера (focus guard cleared timer pause after restore), перезапускает процедуру восстановления контекста (InitAfterLostFocus).
  • d3d reset guard: защищает Direct3D9 устройство при сворачивании/разворачивании игры, предотвращая краш D3DERR_DEVICELOST.
  • engine parser fixes:
    • carcols guard в LoadVehicleColours (защита от краша при нестандартных цветах).
    • vehicles.ide sscanf defaults (защита от опечаток в IDE-файлах транспорта).
    • ReadLine zero-fill hook и LoadLine null-terminate hook (защита от чтения мусора за пределами строк в файлах данных).
  • engine stability: перехват RwStreamRead, синхронизация CdStream, защита потоковой анимации RtAnim.
  • particle optimizer: динамическое ограничение количества частиц, дальности спавна и обновления эффектов огня/дыма.
  • alpha foliage culling: адаптивное отсечение листвы деревьев и кустов по дистанции и бюджету кадра для повышения FPS.
  • train crossing guard: фикс ванильного бага краша GTA SA на ж/д переездах (модели 1373/1374).
  • Стриминг маппинга (mapping.json): очередь плавного создания объектов (smooth_queue, max_create_per_frame: 16), механизм мягкого сокрытия/кэширования (soft_destroy_cache).
  • Пиннинг горячих моделей (stream.json, stream_hot.json): ядро ведёт статистику частоты использования скинов, авто и объектов. Самые популярные модели получают высокий score и закрепляются в памяти (Stream Pinning), предотвращая микрофризы при их появлении в кадре.
можешь почитать выжимку с нейронки, все равно чистые значения тяжело понять
пасиба)) но фиксов там наверное даже больше, часть просто не попала в код ибо я не доделал их :) еще игрался с ректксутром, маппингом. но, на лаунчер было принято чуть другое решение это "застатизировать" маппинг, хы
 
  • Нравится
Реакции: damirtakioma
🎃 Хэллоуин