На каком языке написан Red Dead Redemption 2: C++, RAGE, скрипты и шейдеры

На каком языке написан Red Dead Redemption 2: C++, RAGE, скрипты и шейдеры окт, 1 2025

Red Dead Redemption 2 - это большая приключенческая игра с открытым миром от Rockstar Games, построенная на собственном движке. Также известна как RDR2, она вышла на консолях в 2018 году и на ПК в 2019-м. Главный технический ответ: ядро игры и движок пишутся на C++, надстройки используют проприетарные скрипты, а графика работает на шейдерах HLSL/консольных диалектах с бэкендами Vulkan и DirectX 12 на ПК.

Коротко по сути

  • Движок RDR2 - Rockstar Advanced Game Engine (RAGE), написан в основном на C++.
  • Геймплейная логика миссий - проприетарные скрипты RAGE (байткод YSC), вызывающие «native»-функции движка.
  • Шейдеры - HLSL - язык шейдеров для DirectX и консольные диалекты (PSSL на PlayStation, HLSL на Xbox); на ПК рендер работает через Vulkan - графический API с компиляцией в SPIR‑V и DirectX 12 - низкоуровневый API Microsoft.
  • Анимационная физика тел - интеграция с Euphoria - middleware NaturalMotion для процедурной анимации, интерфейс - C++.
  • Инструменты и пайплайн контента - смесь C++/C#/Python (по вакансиям Rockstar и стандартам индустрии).

Red Dead Redemption 2 язык программирования - прежде всего C++, но без шейдеров и проприетарных скриптов эта картина неполная.

Что именно «написано на C++» в RDR2

RDR2 живёт внутри движка RAGE, который с середины 2000‑х развивается в Rockstar под крупные открытые миры. C++ здесь - рабочая лошадка: им реализованы рендер, стриминг мира, ИИ‑системы, физика, звук, сеть, управление, сохранения и тысячи утилитных подсистем.

Почему C++? Он даёт контроль над памятью и кэшами процессора, SIMD‑векторизацией и параллелизмом. Для 60+ систем, которые непрерывно обслуживают огромный мир и сотни ИИ‑агентов, это критично. В горячих местах движка программисты могут опускаться до платформенного ассемблера (например, для SIMD на архитектуре AMD GCN в консолях прошлого поколения), но это локальные оптимизации, а не основной язык.

Критичные к производительности блоки - система стриминга ассетов (текстуры, меши, анимации), асинхронный I/O, планировщики задач и очередь работ для CPU/GPU - тоже реализованы на C++. Так же на C++ пишутся привязки к middleware: системе процедурной анимации Euphoria и библиотекам физики/коллизий, а также «native»-интерфейсы, которые потом вызывают скрипты.

Скрипты: как устроена игровая логика поверх движка

Миссии, эвенты, поведение НПС и триггеры собираются не прямо в C++, а в проприетарные сценарии RAGE. Исторически Rockstar использует собственный скриптовый язык (внутри студии его называют SC), который компилируется в байткод формата YSC. Этот байткод исполняется VM движка и через хэши/идентификаторы вызывает «native»-функции, реализованные на C++.

Зачем так? Скрипты быстрее перезагружать, ими удобнее управлять контенту (дизайнерам, scripters), а VM даёт изоляцию и воспроизводимость. Такой подход похож на Blueprints в Unreal (визуальные графы) или Lua‑скрипты в других игровых движках, но у Rockstar - свой язык и формат.

Что попадает в скрипты: последовательности миссий, условия завершения, поведение толпы, правила лута, подсказки в интерфейсе, логика мини‑игр. Что остаётся в C++: то, что должно работать миллионы раз в секунду или требовательно к памяти - навигация, рендер, ИИ‑поиск путей, физика, стриминг.

Подтверждения этой архитектуры можно найти в разборе байткода моддинг‑сообщества и по косвенным данным из вакансий Rockstar (в них регулярно требуют опыт «native/VM», C++, знание пайплайнов). Rockstar официально не публикует мануалы по скриптовому языку, а внутренние инструменты закрыты.

Графика и шейдеры: HLSL, PSSL, Vulkan и DirectX 12

На ПК RDR2 поддерживает два графических бэкенда: Vulkan и DirectX 12. Для Xbox One семейства шейдеры пишутся на HLSL. Для PlayStation 4 - на PSSL (PlayStation Shader Language), диалекте, близком к HLSL. Типичный современный пайплайн в таких случаях - писать на HLSL и кросс‑компилировать его: на ПК - в DXIL для DX12 или в SPIR‑V для Vulkan, на PS4 - в формат компилятора Sony.

Что в шейдерах: физически корректный рендеринг (PBR), теневые карты, отражения, объемные эффекты (туман, лучи), пост‑процессинг, кожа/волосы, мех/трава, атмосферное рассеяние. RDR2 активно грузит compute‑шейдеры (асинхронные очереди) и использует тайловые/кластерные подходы для света. Это всё в коде шейдеров, которые на уровне движка связывает C++‑рендерер.

Выбор API на ПК объясним: DirectX 12 хорош на Windows и тесно интегрирован с экосистемой драйверов, а Vulkan даёт низкоуровневый контроль и зачастую более стабильную многопоточную загрузку командных буферов. Аналитики Digital Foundry в своё время отмечали, что RDR2 на Vulkan часто ведёт себя ровнее на широком спектре ПК‑конфигураций, хотя выбор лучшего API зависит от железа и драйверов.

Инструменты и пайплайн: чем собирают такой мир

Кроме собственно игры есть огромный «цех»: редакторы миссий и трёхмерных сцен, конвертеры ассетов, билд‑сервера, тест‑фермы, валидаторы данных. По вакансиям Rockstar и стандартной практике AAA‑индустрии, инструменты часто пишутся на C# (быстрая разработка UI/редакторов на Windows) и Python (скрипты пайплайна, автоматизация, генерация данных), плюс C++ для плагинов к DCC (Maya/3ds Max) и высокопроизводительных частей. Это не про «язык игры», но без этого кода игра не собирается.

Форматы данных гибридные: части описаний - в бинарном виде (для быстрого стриминга), части - в человекочитаемом (XML/JSON‑подобные для конфигов). На последней стадии всё пакуется в собственные архивы движка, а индексы и хэши помогают быстро находить нужные куски мира, когда вы скачете галопом через три биома за минуту.

Сравнение: RAGE (RDR2) против популярных движков

Сравнение языков и стека: RDR2 (RAGE) vs Unreal Engine vs Unity
Движок / Игра Ядро движка Геймплейные скрипты Шейдерный язык Графические API на ПК
RAGE (RDR2) C++ Проприетарный байткод YSC (SC → VM) HLSL/PSSL (кросс‑компиляция), консольные диалекты Vulkan, DirectX 12
Unreal Engine (UE4/UE5) C++ Blueprints (визуальные графы) + C++ HLSL (через материалки/узлы) DirectX 12, Vulkan
Unity С++ (движок), C# (высокий слой) C# (Mono/.NET) HLSL/Shader Graph DirectX 11/12, Vulkan
Если вы моддер: что реально можно делать и что знать

Если вы моддер: что реально можно делать и что знать

Синглплеерная моддинг‑сцена RDR2 исследует VM‑скрипты и «native»-вызовы через хук‑инструменты. Но есть важные правила:

  • Онлайн‑режим модифицировать нельзя: это нарушает правила и может привести к блокировке.
  • Синглплеерные моды держите изолированно и делайте резервные копии файлов.
  • Понимайте устройство байткода: скрипты в RDR2 - это YSC, который вызывает нативные функции движка по идентификаторам.
  • Для шейдерных модов нужен опыт с HLSL и понимание рендер‑пайплайна (буферы, ресурсы, синхронизация).

Базовый стек знаний моддера: C++ (чтение сигнатур, вызовы), основы реверса, HLSL, структура ресурсов игры, осторожная работа с античит‑механизмами (в офлайне - отключёнными).

Хочется делать игры уровня RDR2: что учить по шагам

  1. Системный C++: современный стандарт (C++17/20), RAII, аллокаторы, профилирование, многопоточность.
  2. Архитектура движков: ECS/компонентные модели, стриминг данных, кэш‑эффективные структуры.
  3. Математика для игр: линейная алгебра, кватернионы, численные методы.
  4. Графика: HLSL, DX12/Vulkan, вычислительные шейдеры, PBR, рендер‑архитектура.
  5. Игровой ИИ: поведенческие деревья, планирование (GOAP), навигация (navmesh), LOD‑логика.
  6. Инструменты: C# для редакторов и Python для пайплайна; сборки, CI, ассет‑валидаторы.
  7. Чтение первоисточников: доклады GDC/SIGGRAPH по рендерингу открытых миров и оптимизации стриминга.

Практика: соберите свой прототип открытого мира - тайловый стриминг высот, базовый ночной/дневной цикл, толпа из 50+ агентов. Это лучший учитель, чем сто статей подряд.

Частые мифы и как на них смотреть

  • «RDR2 написан на одной технологии». Нет. Это смесь C++, проприетарной VM, десятков форматов данных, шейдеров и инструментов.
  • «Скрипты медленные - всё нужно делать на C++». Скрипты намеренно оставляют там, где важнее гибкость, чем микросекунды. Критичные петли уезжают в C++.
  • «Unreal/Unity автоматически дадут AAA‑качество». Инструменты помогают, но качество определяет команда, пайплайн и годы шлифовки. У Rockstar - собственный путь и движок, отточенный под их задачи.
  • «Vulkan всегда быстрее DX12». Бывает наоборот. Всё упирается в вашу видеокарту, драйвер и то, насколько движок натренирован под конкретный API.

Как мы это знаем и на что опираемся

Rockstar не публикует полный технический дизайн движка. Но есть три опоры: 1) многолетние вакансии Rockstar (C++, VM, пайплайны, C#/Python для инструментов), 2) анализ PC‑версии и API режимов профильными изданиями, 3) живой разбор байткода YSC/«native»-вызовов моддерским сообществом. Плюс законы жанра: практически все AAA‑движки текущего/прошлого поколения строятся на C++ с узлами на своих скриптах и HLSL‑семействе шейдеров.

Практические шпаргалки

  • Если видите «native» в контексте RAGE - это C++‑функция движка, доступная из скрипта.
  • HLSL → DX12: компилятор dxc, выход - DXIL; HLSL → Vulkan: тот же dxc, выход - SPIR‑V.
  • Сценарии миссий удобно держать в VM: быстрые итерации для дизайнеров и воспроизводимые сценарии багрепортов.
  • Для больших миров критичен стриминг ассетов, а не только «красивые шейдеры». Упирайтесь в I/O и асинхронную загрузку.

Следующие шаги и разные сценарии

  • Новичок в геймдеве: пройдите бесплатные туториалы по C++ и напишите мини‑рендер на DX12 или Vulkan. Добавьте HLSL‑постпроцесс и счётчик FPS с профилировщиком.
  • Графический программист: сделайте кросс‑компиляцию HLSL → SPIR‑V, проверьте поведение на Vulkan (многопоточное заполнение командных буферов).
  • Геймплейщик: попробуйте скрипты в публичных движках (Unreal Blueprints/Lua в других движках), чтобы понять, где VM удобнее, чем C++.
  • Моддер: работайте только с офлайном, держите чистую папку игры, логируйте «native»-вызовы и не смешивайте моды.
Частые вопросы

Частые вопросы

На каком языке написано ядро Red Dead Redemption 2?

На C++ в составе собственного движка Rockstar Advanced Game Engine (RAGE). В особо «горячих» местах могут использоваться платформенные оптимизации, но основной язык - C++.

Какие языки используются для скриптов и миссий в RDR2?

Rockstar использует собственный скриптовый язык (внутренний SC), который компилируется в байткод YSC и исполняется виртуальной машиной движка. Скрипты вызывают «native»-функции, реализованные в C++.

Какие шейдерные языки и графические API применяются в RDR2 на ПК?

Шейдеры пишутся на HLSL/диалектах, с кросс‑компиляцией. На ПК доступны два рендер‑бэкенда: Vulkan и DirectX 12. На Xbox - HLSL/DX12, на PlayStation - PSSL (диалект, близкий к HLSL).

Использует ли RDR2 Euphoria для анимаций и физики персонажей?

Да, в серии Rockstar интегрирует Euphoria от NaturalMotion для процедурной реакции тела и переходов анимации. Связка с движком реализована на C++.

Можно ли модифицировать онлайн‑режим RDR2?

Нет. Модификации онлайн‑режима нарушают правила и приводят к санкциям. Моддинг - только для офлайн‑режима и на свой риск, с резервными копиями.

Если хочу делать похожие игры, с чего начать изучение?

Начните с системного C++ (C++17/20), затем изучите DX12/Vulkan и HLSL, архитектуру стриминга больших миров и инструменты на C#/Python. Соберите прототип с открытым миром и базовым рендером.

Почему Rockstar не использует Unity или Unreal для RDR2?

RAGE создавался под нужды Rockstar: их масштаб открытых миров, собственные пайплайны и сетевые/скриптовые системы. Свой движок позволяет им точечно оптимизировать под нужные платформы и задачи.