[{"data":1,"prerenderedAt":388},["ShallowReactive",2],{"navigation_docs_ru":3,"-ru-concepts-projects-and-versions":110,"-ru-concepts-projects-and-versions-surround":383},[4,20,55,70,90,100],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Начало работы",false,"\u002Fru\u002Fgetting-started","ru\u002F1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Введение","\u002Fru\u002Fgetting-started\u002Fintroduction","ru\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Быстрый старт","\u002Fru\u002Fgetting-started\u002Fquickstart","ru\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":21,"icon":6,"path":22,"stem":23,"children":24,"page":6},"Концепции","\u002Fru\u002Fconcepts","ru\u002F2.concepts",[25,30,35,40,45,50],{"title":26,"path":27,"stem":28,"icon":29},"Проекты и версии","\u002Fru\u002Fconcepts\u002Fprojects-and-versions","ru\u002F2.concepts\u002F1.projects-and-versions","i-lucide-boxes",{"title":31,"path":32,"stem":33,"icon":34},"Файлы конфигурации","\u002Fru\u002Fconcepts\u002Ffiles","ru\u002F2.concepts\u002F2.files","i-lucide-file-json",{"title":36,"path":37,"stem":38,"icon":39},"Публикация","\u002Fru\u002Fconcepts\u002Fpublishing","ru\u002F2.concepts\u002F3.publishing","i-lucide-send",{"title":41,"path":42,"stem":43,"icon":44},"Доступ и роли","\u002Fru\u002Fconcepts\u002Faccess","ru\u002F2.concepts\u002F4.access","i-lucide-users",{"title":46,"path":47,"stem":48,"icon":49},"Шифрование","\u002Fru\u002Fconcepts\u002Fencryption","ru\u002F2.concepts\u002F5.encryption","i-lucide-lock",{"title":51,"path":52,"stem":53,"icon":54},"Git-интеграция","\u002Fru\u002Fconcepts\u002Fgit","ru\u002F2.concepts\u002F6.git","i-lucide-git-branch",{"title":56,"icon":6,"path":57,"stem":58,"children":59,"page":6},"SDK","\u002Fru\u002Fsdk","ru\u002F3.sdk",[60,65],{"title":61,"path":62,"stem":63,"icon":64},"Node.js","\u002Fru\u002Fsdk\u002Fnodejs","ru\u002F3.sdk\u002F1.nodejs","i-simple-icons-nodedotjs",{"title":66,"path":67,"stem":68,"icon":69},"Unity","\u002Fru\u002Fsdk\u002Funity","ru\u002F3.sdk\u002F2.unity","i-simple-icons-unity",{"title":71,"icon":6,"path":72,"stem":73,"children":74,"page":6},"API и MCP","\u002Fru\u002Fapi","ru\u002F4.api",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"API-токены","\u002Fru\u002Fapi\u002Fauthentication","ru\u002F4.api\u002F1.authentication","i-lucide-key-round",{"title":81,"path":82,"stem":83,"icon":84},"REST API","\u002Fru\u002Fapi\u002Frest-api","ru\u002F4.api\u002F2.rest-api","i-lucide-plug",{"title":86,"path":87,"stem":88,"icon":89},"MCP для ИИ-агентов","\u002Fru\u002Fapi\u002Fmcp","ru\u002F4.api\u002F3.mcp","i-lucide-bot",{"title":91,"icon":6,"path":92,"stem":93,"children":94,"page":6},"Поддержка","\u002Fru\u002Fsupport","ru\u002F5.support",[95],{"title":96,"path":97,"stem":98,"icon":99},"Обратная связь","\u002Fru\u002Fsupport\u002Ffeedback","ru\u002F5.support\u002F1.feedback","i-lucide-message-circle",{"title":101,"icon":6,"path":102,"stem":103,"children":104,"page":6},"Правовая информация","\u002Fru\u002Flegal","ru\u002F6.legal",[105],{"title":106,"path":107,"stem":108,"icon":109},"Политика конфиденциальности","\u002Fru\u002Flegal\u002Fprivacy","ru\u002F6.legal\u002F1.privacy","i-lucide-shield",{"id":111,"title":26,"body":112,"description":374,"extension":375,"links":376,"meta":377,"navigation":378,"path":27,"seo":379,"stem":28,"__hash__":382},"docs_ru\u002Fru\u002F2.concepts\u002F1.projects-and-versions.md",{"type":113,"value":114,"toc":365},"minimark",[115,120,232,244,248,261,281,291,297,303,307,314,318,333,337,351,355],[116,117,119],"h2",{"id":118},"модель","Модель",[121,122,123,136],"table",{},[124,125,126],"thead",{},[127,128,129,133],"tr",{},[130,131,132],"th",{},"Сущность",[130,134,135],{},"Что это",[137,138,139,152,172,199,210,221],"tbody",{},[127,140,141,149],{},[142,143,144,148],"td",{},[145,146,147],"strong",{},"Проект"," (project)",[142,150,151],{},"Контейнер верхнего уровня. Имя, alias, владелец и собственное место на CDN.",[127,153,154,160],{},[142,155,156,159],{},[145,157,158],{},"Версия"," (version)",[142,161,162,163,167,168,171],{},"Именованная линия файлов проекта, например ",[164,165,166],"code",{},"default"," или ",[164,169,170],{},"staging",".",[127,173,174,180],{},[142,175,176,179],{},[145,177,178],{},"Файл"," (file)",[142,181,182,183,186,187,186,190,186,193,167,196,171],{},"Файл конфигурации: ",[164,184,185],{},"json",", ",[164,188,189],{},"lua",[164,191,192],{},"txt",[164,194,195],{},"css",[164,197,198],{},"scss",[127,200,201,207],{},[142,202,203,206],{},[145,204,205],{},"Потребитель"," (consumer)",[142,208,209],{},"Клиент, получающий конфиги (сборка игры, бэкенд-сервис).",[127,211,212,218],{},[142,213,214,217],{},[145,215,216],{},"Тег"," (tag)",[142,219,220],{},"Произвольная метка для группировки и фильтрации файлов.",[127,222,223,229],{},[142,224,225,228],{},[145,226,227],{},"Бандл"," (bundle)",[142,230,231],{},"Именованный набор файлов, которые выдаются вместе. Состав задаётся отдельно для каждой версии.",[233,234,235,236,239,240,243],"p",{},"Проекты создаются в веб-интерфейсе Veresk. Версии, файлы, теги и публикация доступны также через ",[237,238,81],"a",{"href":82}," и ",[237,241,242],{"href":87},"MCP",". Потребители, бандлы, шифрование и Git настраиваются в интерфейсе.",[116,245,247],{"id":246},"версии-образуют-цепочку","Версии образуют цепочку",[233,249,250,251,253,254,256,257,260],{},"У каждого проекта есть корневая версия ",[164,252,166],{},". Новая версия создаётся от родителя (по умолчанию — от ",[164,255,166],{},") и ",[145,258,259],{},"наследует все файлы"," родителя.",[262,263,264,271,278],"ul",{},[265,266,267,268,171],"li",{},"Версия без собственной копии файла ",[145,269,270],{},"отдаёт содержимое родителя",[265,272,273,274,277],{},"Когда вы меняете файл в версии, у неё появляется ",[145,275,276],{},"собственная копия",", и этот файл она больше не наследует. Остальные файлы продолжают наследоваться.",[265,279,280],{},"Файл можно сбросить, и он снова будет наследоваться от родителя.",[282,283,289],"pre",{"className":284,"code":286,"language":287,"meta":288},[285],"language-text","default      settings.json   prices.json   events.lua\n  └─ staging settings.json*  (наследует prices.json, events.lua)\n       └─ season-5  events.lua*  (остальное наследует от staging)\n","text","",[164,290,286],{"__ignoreMap":288},[233,292,293,296],{},[164,294,295],{},"*"," — у файла есть собственная копия в этой версии.",[233,298,299,300,302],{},"Так небольшие изменения обходятся дёшево: создайте ",[164,301,170],{},", правьте один файл и публикуйте, не дублируя весь проект.",[116,304,306],{"id":305},"блокировка","Блокировка",[233,308,309,310,313],{},"Версию можно ",[145,311,312],{},"заблокировать",". Заблокированная версия доступна только для чтения: файлы править нельзя. Используйте это, чтобы зафиксировать выпущенное.",[116,315,317],{"id":316},"сравнение-и-перенос","Сравнение и перенос",[233,319,320,321,186,324,327,328,330,331,171],{},"Две версии можно сравнить по файлам. Каждый файл ",[164,322,323],{},"same",[164,325,326],{},"different"," или присутствует только с одной стороны. Выбранные файлы можно скопировать из одной версии в другую, например, чтобы перенести проверенные изменения из ",[164,329,170],{}," в ",[164,332,166],{},[116,334,336],{"id":335},"потребители","Потребители",[233,338,339,340,343,344,239,347,350],{},"Потребитель определяет, ",[145,341,342],{},"какие файлы получает клиент",". Файл попадает к потребителю, только если назначен ему. Клиент указывает потребителя по имени, поэтому ",[164,345,346],{},"backend",[164,348,349],{},"game-client"," могут получать из одной версии разные наборы файлов.",[116,352,354],{"id":353},"теги","Теги",[233,356,357,358,239,361,364],{},"Теги помогают находить файлы в длинном списке. Файлы, созданные или изменённые через API, автоматически получают теги ",[164,359,360],{},"api-created",[164,362,363],{},"api-edited",", и вы видите, что трогала автоматизация.",{"title":288,"searchDepth":366,"depth":366,"links":367},2,[368,369,370,371,372,373],{"id":118,"depth":366,"text":119},{"id":246,"depth":366,"text":247},{"id":305,"depth":366,"text":306},{"id":316,"depth":366,"text":317},{"id":335,"depth":366,"text":336},{"id":353,"depth":366,"text":354},"Базовые сущности Veresk и то, как версии наследуют файлы друг от друга.","md",null,{},{"icon":29},{"title":380,"description":381},"Проекты, версии и файлы в Veresk","Как Veresk организует конфигурацию в проекты, версии, файлы, потребителей, теги и бандлы и как работает наследование версий.","uouxxj1SU7ntgQFCvOI_sH0fLx8yuD1UPa4bm2ZS5mc",[384,386],{"title":16,"path":17,"stem":18,"description":385,"icon":19,"children":-1},"Создайте проект, опубликуйте конфиг и прочитайте его из приложения.",{"title":31,"path":32,"stem":33,"description":387,"icon":34,"children":-1},"Поддерживаемые форматы, проверка синтаксиса, комментарии и что происходит с файлом при публикации.",1793977344165]