Unreal MCP

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Unreal MCP — это, %username%, очередная НЁХ, призванная научить твой любимый (или ненавистный) Unreal Engine понимать человеческую речь. Ну, не совсем человеческую, а ту, что изрыгают модные нынче ИИ-помощники типа Cursor, Windsurf и десктопного Claude. Задумка проста как кирпич: ты, ленивый быдлокодер, бормочешь что-то вроде «Клод, запили мне куб в центре карты и покрась его в цвет поноса», а эта шайтан-машина через специальный Model Context Protocol (MCP) дёргает API Анрыла и — вуаля! — куб готов. Или не готов. Как повезёт.

СутьЪ[править]

За всем этим шапито стоит некий chongdashu, сумрачный гений с PhD из MIT, успевший поработать на EA и Improbable. Видимо, насмотревшись на эффективных менеджеров и их попытки управлять геймдевом с помощью модных словечек, решил автоматизировать хотя бы часть рутины. Идея, конечно, благая: вместо того чтобы часами дрочить блюпринты или ковырять C++, можно просто надиктовать команды роботу. Мечта любого студента и инди-разработчика с вечно горящими дедлайнами.

Однако, как водится, под капотом скрывается хтонический велосипед. В наличии:

  • Собственно, плагин для Анрыла на C++, который слушает TCP порт 55557.
  • Питонячий сервер (unreal_mcp_server.py), который принимает команды от ИИ-ассистента, парсит их и пересылает плюсовому плагину.
  • Куча JSON-конфигов, чтобы всё это хозяйство хоть как-то взлетело. Причём для каждого ИИ-клиента свой конфиг, хранимый в самых неожиданных местах (~/.config/).
  • И вишенка на торте — сам протокол MCP, который, судя по всему, является надстройкой над JSON-RPC или чем-то подобным, но с блэкджеком и шлюхами в виде собственной сериализации.

И всё это богатство находится в статусе, как нежно указано в README:

⚠️ Experimental Status

This project is currently in an EXPERIMENTAL state. The API, functionality, and implementation details are subject to significant changes. […] Production use is not recommended at this time

Переводя на человеческий: оно может упасть, взорваться, отформатировать твой винчестер или просто не работать. Используй на свой страх и риск, а лучше — не используй вообще, если не готов к увлекательному дебагу. Требует Unreal Engine 5.5+ и Python 3.12+, так что если ты сидишь на старье, можешь проходить мимо.

Чому может научиться Скайнет?[править]

Возможности, заявленные автором, выглядят аппетитно, почти как Гарри Поттер, управляющий Хогвартсом заклинаниями:

  • Актёрами вертеть: Создавать кубики, шарики, источники света и камеры (create_actor), удалять их (delete_actor), двигать, вращать и масштабировать (set_actor_transform). Можно даже спросить у движка, какие актёры вообще есть на уровне (get_actors_in_level) или найти конкретного по имени (find_actors_by_name). Почти бог из машины, только команды надо писать в JSON:
{
  "command": "create_actor",
  "params": {
    "name": "MySuperCube",
    "type": "CUBE",
    "location": [0, 0, 100]
  }
}
  • Блюпринты колдовать: Можно создавать новые классы (create_blueprint), добавлять им компоненты (add_component_to_blueprint), настраивать свойства этих компонентов (set_component_property, set_static_mesh_properties), задавать физику (set_physics_properties), компилировать всё это добро (compile_blueprint) и даже спавнить экземпляры созданного блюпринта в мир (spawn_blueprint_actor). Лулз в том, что типы компонентов надо указывать без префикса U, видимо, для простоты.
  • В графе ноды двигать: Самая мякотка для любителей визуального программирования. Можно добавлять ноды событий (BeginPlay, Tick, etc. — add_blueprint_event_node), ноды вызова функций (add_blueprint_function_node), переменные (add_blueprint_variable), ссылки на себя и компоненты (add_blueprint_self_reference, add_blueprint_get_self_component_reference) и, конечно же, соединять всё это спагетти линиями (connect_blueprint_nodes). Скоро ИИ будет писать игры целиком, а ты будешь только говорить: «Сделай мне MMORPG с эльфийками и лутбоксами».
  • Редактором рулить: Фокусировать камеру вьюпорта на объекте или точке (focus_viewport) и делать скриншоты (take_screenshot). Функционал пока куцый, но обещают больше.

Талмуды с описанием всех команд прилагаются, если вдруг захочется понять, как именно твой ИИ-помощник будет насиловать Unreal Editor.

Зачем?[править]

ВОЗникает резонный вопрос: нахуя? Автор утверждает, что это для автоматизации рутины и ускорения прототипирования. Представь: ты лежишь на диване, лениво цедишь пиво и голосом командуешь: «Клод, добавь врагу компонент здоровья, сделай ему 100 хп и заставь патрулировать зону». Звучит как фантастика из киберпанка.

На практике же, учитывая «экспериментальный» статус и сложность настройки, это пока больше похоже на игрушка для гиков и демонстрацию возможностей ИИ. Прежде чем оно станет реально полезным инструментом, пройдёт немало итераций допиливания напильником. Да и не факт, что взлетит — сколько уже было подобных протоколов и фреймворков, канувших в Лету? Тем не менее, сама идея управления сложным софтом через естественный язык выглядит интригующе. Возможно, через пару лет мы действительно будем разговаривать с нашими IDE и игровыми движками. А пока что Unreal MCP — это скорее забавный артефакт эпохи хайпа вокруг ИИ, интересный для изучения, но страшно использовать в реальном продакшене. Годнота или очередное УГ? Покажет только время и количество багрепортов на GitHub.

Ссылки[править]

App.png Весьма полезная вещь, позволяет машинам работать с помощью коммандычей
МетаПрограммаDRM (SecuROMStarForceАналоговая дыра) • БагБот (Автоответчик) • Варез (Repack) • ГлюкГуйДонатКопирайт (By design) • ЛогНюкРут (Не работай под рутом) • Спортивное программированиеМегапиксельКомпьютерВерсия 2.0КодОбфускацияСкриншотДатамайнПлагинТекстовый файлБольшие данныеАльфа и бета-тестыТаймстампКэшШаблоныHello WorldНейросетиФайлИнсталляцияВидеоМощный сбой Microsoft 19 июля 2024 годаCrowdStrikeПроект GNUUserscriptDxvkVkd3dБратан хорош давай давай впередКонечный автоматLumenЗаступник (приложение)NeeUnreal MCP
ФичиБагрепорт12309BSODCookiesEmbrace, extend and extinguishFL StudioSheep.exeWinlogon.exeБубенЗащита от дуракаКостыльМашинный переводПасхальные яйцаСвистелки и перделкиСм. рис. 1Съешь ещё этих мягких французских булокTermuxGNU MetroИндусский кодНескучные обои • Сжатие (За сжатие ДжипегаШакалШкала) • Работает — не трогайРандомайзерPDF (Распознавание PDF) • Дело Google в ФАСЧат-ботXMLМакросКритическая ошибкаФреймворкСинонимайзерSourceТрёхмерное отслеживаниеТрассировка фотоновHZB OcclusionДаунгрейд RTX 4070TressFXАвтопереводчикVSCodiumThorium Browser
ВредоносноеБотнетБрутфорсВинлокЗвонилкаКитайские пингвиныПиксель смертиТроянЧервь МоррисаBonziBuddyMediaGetBrowser hijackingTinderМиссис МажорУтечка буфера обменаWin 10 TweakerОпараш Mozilla FirefoxЯндекс.МузыкаКрэкерБезопасность через умолчаниеGrifter.aviTrojan.Winlock.DeathМиссис МажорСредаDirectStorageDriverpackГенератор случайных чиселDisable Core 0РомхакингDDrawCompatWingetCreateWinGetCoowonЯндекс МессенджерVCPkgSELinuxXfireYouTube Auto-ResumeTape OperatorBotFatherMTProtoSignalDoubleClickFixGitee
КомпанииApple / Apple (AppleScript) • GoogleMicrosoftSAPЯндексExiled Exchange 2BraveAdNauseamСкурвление FirefoxCafe BazaarAMD FEMFXPPSSPPАвтохукQuick machine recoveryMAXBypassNROWizTreeJTube
Движения8-bitOpen source (КрасноглазикиЛинуксоиды) • Вирусная сценаДаунгрейдДемосценаМоддингMMDDirectDrawЛагиБлокировка Дискорда в РоссииOpera GXНесоответствие MIME-типаRenoisePygameLs (UNIX)МетаданныеПатчNginxПиксельЭмуляторSearxТамТамMallocСвязный списокSOLIDGreasemonkeyПлатные сообщенияFlatpakNouveauFuse.js
Офис3DS MAXGIMPGNU EmacsMovie MakerMS Paint • OpenOffice • PowerPointviMicrosoft WordExcelБлокнотФотошопАнтивирус КасперскогоAvast!TikZShareXAlternativeToСкрепышMicrosoft OfficeТекстовый редакторWeChatZoomДиспетчер задачMicrosoft CortanaWinampBallonTranslatorKerish DoctorОбщая ошибкаFirefox: Как один баг сломал весь YouTubeМеждулициеMeld StudioLadybirdCheat EngineTotal Commander
ОСAndroidBSDDOSMenuetOSReactOSWindows (Phone 7Phone 878Vista) / МаздайЛинуксРусская ОСФантом ОСIndex.phpCompassУход мэйнтейнера NouveauБойкот лаунчеровAria2cNoiceMinecraft-Installer.exe
БраузерыInternet ExplorerОпера / Opera • Тормозилла (ОгнелисLolifoxMozilla FirefoxFirefoxFirefox Klar) • Хром (шпионаж) • SafariЯндекс.БраузерУведомления в браузереVivaldiTor-браузерЗосимаФронтенд
ИнтернетAdobe Systems (Flash) • I2PLow Orbit Ion CannonTorTunatic • Чат−клиенты (MirandaQIPSkypeЖабберDiscordVIPole) • HTTPSПрокси-сервер (Proxifier) • Торрент (Magnet-ссылкаΜTorrent) • JavaScriptCSSHTMLБаннермейкерИзменение TTL сетевых пакетовКапчаICQFiddlerViberZonaSteamSillyTavernWickr Me
РазработкаBrainFuckCC++C#JavaHaskellАссемблерChaos ConstructionsBATMySQLGitHubAutoHotKey (AutoHotInterception) • Sublime TextAPK (APKPureзапрет) • BASICPerlPythonPHPФоркUnity3DSAISIPСАПРФлагUTAUФласк макросАуработRaidCallAdobe MingОфициальный™ список кошерных программDevOpsНиколай Дуров
ЛюдиВеб-мастерLovinGODБалмерГейтсГенерал ФейлорДжобсМитникПоттерингде РаадтСпольскиСтоллманТорвальдсШахиджанянAche666Марк ЦукербергЕвгений ПоповДенис КумпонМассовая компьютерная безграмотность
КостылиCygwin • PunkBusterT9WineWishmasterАнтивирусыХакинтошСборки WindowsDenuvoЧистая установкаКалькулятор Consul WarMicrosoft StoreUBlock OriginLightshotAdBlockSearchApp.exeCPU-ZГуглPhotoshopКаптча с пчёламиВзлом Windows через MetasploitЩЩ Мессенджер
Команды^H^WAlt+F4Ctrl+Alt+Delman/me/quitrm -rf
Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++Scala
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёздыПрограммист (существо)Тернарный операторUnreal MCP
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворкБыдлокодIndex.phpОхота за жукамиКуМирКлеточный автоматПроцедурное программированиеПоиск файлов в Unix по содержимомуPetoohФункция активации нейронаПерегрузка операторов в PythonЗерокодинг
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3DКнижный PythonMallocСвязный списокSOLIDООПУказательNULLWeLang++XenonRecompFuse.js
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард СноуденСеймур Пейперт
Прочее++i + ++iДедлайн%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодачХукCurl cffi