Конфигурации сборки
В C# (ну, технически, в MSBuild) есть система, известная как «конфигурации сборки». По сути, вы получаете удобное выпадающее меню в Visual Studio (или Rider), позволяющее менять способ компиляции и запуска кода.
В стандартном проекте C# у вас есть две конфигурации: Debug и Release.
Debugимеет включённые отладочные проверки (например, asserts) и компилируется/запускается без оптимизаций1.Releaseне имеет отладочных проверок и компилируется с оптимизациями.
В RobustToolbox есть разные инструменты разработки, которые нельзя включать в боевые релизные сборки. Примером этого является интерактивное окно csi C# Interactive, по соображениям безопасности. Эти инструменты обычно компилируются за препроцессорным определением TOOLS, и именно так они и отключаются.
Более того, во время разработки игры может быть в целом полезно запускать оптимизации чаще обычного. Отсутствие стабильного фреймрейта на отладочной сборке может сделать тестирование довольно мучительным, но простое переключение с Debug на Release в стандартной модели C# также убирает проверки вроде asserts, что меняет поведение и может заставить вас пропустить проблемы.
Из-за этого у нас в решениях есть следующий набор конфигураций:
Debug: есть отладочные проверки, инструменты и нет оптимизаций.DebugOpt: какDebug, но с включёнными оптимизациями.Tools: нет отладочных проверок, но инструменты и оптимизации включены. Это то, что вы бы использовали при маппинге.Release: нет отладочных проверок, нет инструментов, оптимизации включены. Задумана как максимально близкая к боевой сборке лаунчера, насколько это возможно.
Включённые оптимизации обычно затрудняют получение точной информации такими инструментами, как отладчики, поэтому на отладочных сборках они отключены.
Как этим пользоваться
Rider

Выберите в том выпадающем списке в верхней части окна.
Visual Studio
Мне слишком лень искать скриншот, но выпадающий список выглядит довольно похоже на Rider.
Visual Studio Code
TODO