[{"data":1,"prerenderedAt":346},["ShallowReactive",2],{"navigation_docs_en":3,"-en-sdk-unity":110,"-en-sdk-unity-surround":341},[4,20,55,70,90,100],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fen\u002Fgetting-started\u002Fquickstart","en\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":21,"icon":6,"path":22,"stem":23,"children":24,"page":6},"Concepts","\u002Fen\u002Fconcepts","en\u002F2.concepts",[25,30,35,40,45,50],{"title":26,"path":27,"stem":28,"icon":29},"Projects and versions","\u002Fen\u002Fconcepts\u002Fprojects-and-versions","en\u002F2.concepts\u002F1.projects-and-versions","i-lucide-boxes",{"title":31,"path":32,"stem":33,"icon":34},"Config files","\u002Fen\u002Fconcepts\u002Ffiles","en\u002F2.concepts\u002F2.files","i-lucide-file-json",{"title":36,"path":37,"stem":38,"icon":39},"Publishing","\u002Fen\u002Fconcepts\u002Fpublishing","en\u002F2.concepts\u002F3.publishing","i-lucide-send",{"title":41,"path":42,"stem":43,"icon":44},"Access and roles","\u002Fen\u002Fconcepts\u002Faccess","en\u002F2.concepts\u002F4.access","i-lucide-users",{"title":46,"path":47,"stem":48,"icon":49},"Encryption","\u002Fen\u002Fconcepts\u002Fencryption","en\u002F2.concepts\u002F5.encryption","i-lucide-lock",{"title":51,"path":52,"stem":53,"icon":54},"Git integration","\u002Fen\u002Fconcepts\u002Fgit","en\u002F2.concepts\u002F6.git","i-lucide-git-branch",{"title":56,"icon":6,"path":57,"stem":58,"children":59,"page":6},"SDKs","\u002Fen\u002Fsdk","en\u002F3.sdk",[60,65],{"title":61,"path":62,"stem":63,"icon":64},"Node.js","\u002Fen\u002Fsdk\u002Fnodejs","en\u002F3.sdk\u002F1.nodejs","i-simple-icons-nodedotjs",{"title":66,"path":67,"stem":68,"icon":69},"Unity","\u002Fen\u002Fsdk\u002Funity","en\u002F3.sdk\u002F2.unity","i-simple-icons-unity",{"title":71,"icon":6,"path":72,"stem":73,"children":74,"page":6},"API and MCP","\u002Fen\u002Fapi","en\u002F4.api",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"API tokens","\u002Fen\u002Fapi\u002Fauthentication","en\u002F4.api\u002F1.authentication","i-lucide-key-round",{"title":81,"path":82,"stem":83,"icon":84},"REST API","\u002Fen\u002Fapi\u002Frest-api","en\u002F4.api\u002F2.rest-api","i-lucide-plug",{"title":86,"path":87,"stem":88,"icon":89},"MCP for AI agents","\u002Fen\u002Fapi\u002Fmcp","en\u002F4.api\u002F3.mcp","i-lucide-bot",{"title":91,"icon":6,"path":92,"stem":93,"children":94,"page":6},"Support","\u002Fen\u002Fsupport","en\u002F5.support",[95],{"title":96,"path":97,"stem":98,"icon":99},"Feedback","\u002Fen\u002Fsupport\u002Ffeedback","en\u002F5.support\u002F1.feedback","i-lucide-message-circle",{"title":101,"icon":6,"path":102,"stem":103,"children":104,"page":6},"Legal","\u002Fen\u002Flegal","en\u002F6.legal",[105],{"title":106,"path":107,"stem":108,"icon":109},"Privacy policy","\u002Fen\u002Flegal\u002Fprivacy","en\u002F6.legal\u002F1.privacy","i-lucide-shield",{"id":111,"title":66,"body":112,"description":332,"extension":333,"links":334,"meta":335,"navigation":336,"path":67,"seo":337,"stem":68,"__hash__":340},"docs_en\u002Fen\u002F3.sdk\u002F2.unity.md",{"type":113,"value":114,"toc":326},"minimark",[115,127,132,140,151,155,174,267,271,290,294,322],[116,117,118,119,126],"p",{},"Repository: ",[120,121,125],"a",{"href":122,"rel":123},"https:\u002F\u002Fgithub.com\u002FSaleyIlya\u002FVereskUnitySdk",[124],"nofollow","VereskUnitySdk",". Requires Unity 2022.3 or newer.",[128,129,131],"h2",{"id":130},"install","Install",[116,133,134,135,139],{},"In Unity open ",[136,137,138],"strong",{},"Package Manager → Add package from git URL"," and enter:",[141,142,148],"pre",{"className":143,"code":145,"language":146,"meta":147},[144],"language-text","https:\u002F\u002Fgithub.com\u002FSaleyIlya\u002FVereskUnitySdk.git#1.0.0\n","text","",[149,150,145],"code",{"__ignoreMap":147},[128,152,154],{"id":153},"connect","Connect",[116,156,157,158,161,162,165,166,169,170,173],{},"The ",[136,159,160],{},"Integration"," page generates this snippet for your project. The SDK builds URLs as ",[149,163,164],{},"BaseUrl\u002FProjectId\u002F…",", so the CDN URL of the project is split at its last segment: everything before it is ",[149,167,168],{},"BaseUrl",", the last segment is ",[149,171,172],{},"ProjectId",".",[141,175,179],{"className":176,"code":177,"language":178,"meta":147,"style":147},"language-csharp shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","using VereskSDK;\nusing VereskSDK.Models;\n\nVereskAPI.Init(new VereskSetupData\n{\n    BaseUrl = \"\u003CCDN base URL>\",\n    ProjectId = \"\u003Cproject id>\",\n    Version = \"default\",\n    Consumer = \"game-client\",\n});\n\n\u002F\u002F File name -> raw content of every config of the consumer.\n\u002F\u002F Throws when the CDN is unreachable and nothing is cached yet.\nDictionary\u003Cstring, string> configs = await VereskAPI.LoadConfigs();\n","csharp",[149,180,181,189,195,202,208,214,220,226,232,238,244,249,255,261],{"__ignoreMap":147},[182,183,186],"span",{"class":184,"line":185},"line",1,[182,187,188],{},"using VereskSDK;\n",[182,190,192],{"class":184,"line":191},2,[182,193,194],{},"using VereskSDK.Models;\n",[182,196,198],{"class":184,"line":197},3,[182,199,201],{"emptyLinePlaceholder":200},true,"\n",[182,203,205],{"class":184,"line":204},4,[182,206,207],{},"VereskAPI.Init(new VereskSetupData\n",[182,209,211],{"class":184,"line":210},5,[182,212,213],{},"{\n",[182,215,217],{"class":184,"line":216},6,[182,218,219],{},"    BaseUrl = \"\u003CCDN base URL>\",\n",[182,221,223],{"class":184,"line":222},7,[182,224,225],{},"    ProjectId = \"\u003Cproject id>\",\n",[182,227,229],{"class":184,"line":228},8,[182,230,231],{},"    Version = \"default\",\n",[182,233,235],{"class":184,"line":234},9,[182,236,237],{},"    Consumer = \"game-client\",\n",[182,239,241],{"class":184,"line":240},10,[182,242,243],{},"});\n",[182,245,247],{"class":184,"line":246},11,[182,248,201],{"emptyLinePlaceholder":200},[182,250,252],{"class":184,"line":251},12,[182,253,254],{},"\u002F\u002F File name -> raw content of every config of the consumer.\n",[182,256,258],{"class":184,"line":257},13,[182,259,260],{},"\u002F\u002F Throws when the CDN is unreachable and nothing is cached yet.\n",[182,262,264],{"class":184,"line":263},14,[182,265,266],{},"Dictionary\u003Cstring, string> configs = await VereskAPI.LoadConfigs();\n",[128,268,270],{"id":269},"read-a-config","Read a config",[141,272,274],{"className":176,"code":273,"language":178,"meta":147,"style":147},"using Newtonsoft.Json; \u002F\u002F ships with the SDK\n\nvar settings = JsonConvert.DeserializeObject\u003CSettings>(configs[\"settings.json\"]);\n",[149,275,276,281,285],{"__ignoreMap":147},[182,277,278],{"class":184,"line":185},[182,279,280],{},"using Newtonsoft.Json; \u002F\u002F ships with the SDK\n",[182,282,283],{"class":184,"line":191},[182,284,201],{"emptyLinePlaceholder":200},[182,286,287],{"class":184,"line":197},[182,288,289],{},"var settings = JsonConvert.DeserializeObject\u003CSettings>(configs[\"settings.json\"]);\n",[128,291,293],{"id":292},"notes","Notes",[295,296,297,305,316],"ul",{},[298,299,300,301,304],"li",{},"Configs are ",[136,302,303],{},"cached on the device"," and served from the cache when the CDN is unreachable.",[298,306,307,308,311,312,315],{},"The SDK does ",[136,309,310],{},"not"," decrypt files. ",[120,313,314],{"href":47},"Encrypted"," files arrive as ciphertext, so do not use encryption for configs a Unity client must read.",[298,317,318,319,173],{},"Version and consumer are addressed by ",[136,320,321],{},"name",[323,324,325],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":147,"searchDepth":191,"depth":191,"links":327},[328,329,330,331],{"id":130,"depth":191,"text":131},{"id":153,"depth":191,"text":154},{"id":269,"depth":191,"text":270},{"id":292,"depth":191,"text":293},"Load Veresk configs in a Unity game with caching on the device.","md",null,{},{"icon":69},{"title":338,"description":339},"Veresk Unity SDK","Install VereskUnitySdk with the Unity Package Manager, load configs from the CDN, and rely on the on-device cache when the network is down.","WxgQSiFwH0EAHTgXeMs9mtarcRIn2UU_pqgccEls0R8",[342,344],{"title":61,"path":62,"stem":63,"description":343,"icon":64,"children":-1},"Load and read Veresk configs from a Node.js service.",{"title":76,"path":77,"stem":78,"description":345,"icon":79,"children":-1},"Create a personal API token and authenticate REST and MCP requests.",1793977349217]