1270 lines
83 KiB
Markdown
1270 lines
83 KiB
Markdown
<!DOCTYPE html>
|
|
<html lang="ko-KR" data-theme="gitea-light">
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>DS-Asset_Export_to_JSON/README.md at master - DS-Asset_Export_to_JSON - Gitea: Git with a cup of tea</title>
|
|
<link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiR2l0ZWE6IEdpdCB3aXRoIGEgY3VwIG9mIHRlYSIsInNob3J0X25hbWUiOiJHaXRlYTogR2l0IHdpdGggYSBjdXAgb2YgdGVhIiwic3RhcnRfdXJsIjoiaHR0cHM6Ly9yZXBvc2l0b3JpZXMuYWN0aW9uMnF1YXJlLmNvbS8iLCJpY29ucyI6W3sic3JjIjoiaHR0cHM6Ly9yZXBvc2l0b3JpZXMuYWN0aW9uMnF1YXJlLmNvbS9hc3NldHMvaW1nL2xvZ28ucG5nIiwidHlwZSI6ImltYWdlL3BuZyIsInNpemVzIjoiNTEyeDUxMiJ9LHsic3JjIjoiaHR0cHM6Ly9yZXBvc2l0b3JpZXMuYWN0aW9uMnF1YXJlLmNvbS9hc3NldHMvaW1nL2xvZ28uc3ZnIiwidHlwZSI6ImltYWdlL3N2Zyt4bWwiLCJzaXplcyI6IjUxMng1MTIifV19">
|
|
<meta name="author" content="jinilkim">
|
|
<meta name="description" content="DS-Asset_Export_to_JSON - 언리얼 에디터에서 DataTable, Blueprint, AnimMontage, CurveTable 어셋을 JSON 형태로 익스포트하는 기능">
|
|
<meta name="keywords" content="go,git,self-hosted,gitea">
|
|
<meta name="referrer" content="no-referrer">
|
|
|
|
|
|
<link rel="alternate" type="application/atom+xml" title="" href="/jinilkim/DS-Asset_Export_to_JSON.atom">
|
|
<link rel="alternate" type="application/rss+xml" title="" href="/jinilkim/DS-Asset_Export_to_JSON.rss">
|
|
|
|
<link rel="icon" href="/assets/img/favicon.svg" type="image/svg+xml">
|
|
<link rel="alternate icon" href="/assets/img/favicon.png" type="image/png">
|
|
|
|
<script>
|
|
|
|
window.addEventListener('error', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);});
|
|
window.addEventListener('unhandledrejection', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);});
|
|
window.config = {
|
|
appUrl: 'https:\/\/repositories.action2quare.com\/',
|
|
appSubUrl: '',
|
|
assetVersionEncoded: encodeURIComponent('1.24.2'),
|
|
assetUrlPrefix: '\/assets',
|
|
runModeIsProd: true ,
|
|
customEmojis: {"codeberg":":codeberg:","git":":git:","gitea":":gitea:","github":":github:","gitlab":":gitlab:","gogs":":gogs:"},
|
|
csrfToken: '1OxtcFNze5ZgsVV_aaL0c4SVb-g6MTc2MjMxMDU1MDY2OTk1MjMwMA',
|
|
pageData: {},
|
|
notificationSettings: {"EventSourceUpdateTime":10000,"MaxTimeout":60000,"MinTimeout":10000,"TimeoutStep":10000},
|
|
enableTimeTracking: true ,
|
|
|
|
mermaidMaxSourceCharacters: 50000 ,
|
|
|
|
i18n: {
|
|
copy_success: "Copied!",
|
|
copy_error: "Copy failed",
|
|
error_occurred: "An error occurred",
|
|
network_error: "Network error",
|
|
remove_label_str: "Remove item \"%s\"",
|
|
modal_confirm: "Confirm",
|
|
modal_cancel: "취소",
|
|
more_items: "More items",
|
|
},
|
|
};
|
|
|
|
window.config.pageData = window.config.pageData || {};
|
|
</script>
|
|
<script src="/assets/js/webcomponents.js?v=1.24.2"></script>
|
|
|
|
|
|
|
|
<meta property="og:title" content="DS-Asset_Export_to_JSON/README.md at master">
|
|
<meta property="og:url" content="https://repositories.action2quare.com//jinilkim/DS-Asset_Export_to_JSON/src/branch/master/README.md">
|
|
|
|
|
|
<meta property="og:type" content="object">
|
|
|
|
<meta property="og:image" content="https://repositories.action2quare.com/avatars/21dcf4a87f77c7896226587a3f1224ea">
|
|
|
|
|
|
<meta property="og:site_name" content="Gitea: Git with a cup of tea">
|
|
|
|
<link rel="stylesheet" href="/assets/css/index.css?v=1.24.2">
|
|
<link rel="stylesheet" href="/assets/css/theme-gitea-light.css?v=1.24.2">
|
|
|
|
|
|
</head>
|
|
<body hx-headers='{"x-csrf-token": "1OxtcFNze5ZgsVV_aaL0c4SVb-g6MTc2MjMxMDU1MDY2OTk1MjMwMA"}' hx-swap="outerHTML" hx-ext="morph" hx-push-url="false">
|
|
|
|
|
|
<div class="full height">
|
|
<noscript>This website requires JavaScript.</noscript>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<nav id="navbar" aria-label="Navigation Bar">
|
|
<div class="navbar-left">
|
|
|
|
<a class="item" id="navbar-logo" href="/" aria-label="대시보드">
|
|
<img width="30" height="30" src="/assets/img/logo.svg" alt="Logo" aria-hidden="true">
|
|
</a>
|
|
|
|
|
|
<div class="ui secondary menu navbar-mobile-right only-mobile">
|
|
|
|
|
|
<a id="mobile-notifications-icon" class="item" href="/notifications" data-tooltip-content="알림" aria-label="알림">
|
|
<div class="tw-relative">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
|
|
<span class="notification_count tw-hidden">0</span>
|
|
</div>
|
|
</a>
|
|
|
|
<button class="item ui icon mini button tw-m-0" id="navbar-expand-toggle" aria-label="Navigation Menu"><svg viewBox="0 0 16 16" class="svg octicon-three-bars" aria-hidden="true" width="16" height="16"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75m0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75M1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5"/></svg></button>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<a class="item" href="/issues">이슈들</a>
|
|
|
|
|
|
<a class="item" href="/pulls">풀 리퀘스트</a>
|
|
|
|
|
|
|
|
<a class="item" href="/milestones">마일스톤</a>
|
|
|
|
|
|
<a class="item" href="/explore/repos">탐색</a>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="navbar-right">
|
|
|
|
|
|
|
|
<a class="item not-mobile" href="/notifications" data-tooltip-content="알림" aria-label="알림">
|
|
<div class="tw-relative">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
|
|
<span class="notification_count tw-hidden">0</span>
|
|
</div>
|
|
</a>
|
|
|
|
<div class="ui dropdown jump item" data-tooltip-content="생성하기">
|
|
<span class="text">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-plus" aria-hidden="true" width="16" height="16"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2"/></svg>
|
|
<span class="not-mobile"><svg viewBox="0 0 16 16" class="svg octicon-triangle-down" aria-hidden="true" width="16" height="16"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg></span>
|
|
<span class="only-mobile">생성하기</span>
|
|
</span>
|
|
<div class="menu">
|
|
<a class="item" href="/repo/create">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-plus" aria-hidden="true" width="16" height="16"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2"/></svg> 새 저장소
|
|
</a>
|
|
|
|
<a class="item" href="/repo/migrate">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-repo-push" aria-hidden="true" width="16" height="16"><path d="M1 2.5A2.5 2.5 0 0 1 3.5 0h8.75a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0V1.5h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 3.5 9h3.25a.75.75 0 0 1 0 1.5H3.5a1 1 0 0 0 0 2h5.75a.75.75 0 0 1 0 1.5H3.5A2.5 2.5 0 0 1 1 11.5Zm13.23 7.79zl-1.224-1.224v6.184a.75.75 0 0 1-1.5 0V9.066L10.28 10.29a.75.75 0 0 1-1.06-1.061l2.505-2.504a.75.75 0 0 1 1.06 0L15.29 9.23a.75.75 0 0 1-.018 1.042.75.75 0 0 1-1.042.018"/></svg> 새 마이그레이션
|
|
</a>
|
|
|
|
|
|
<a class="item" href="/org/create">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-organization" aria-hidden="true" width="16" height="16"><path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5q0 .127-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.8.8 0 0 1-.197-.026q-.148.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5M3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75m4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75M7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5M3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75M7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5"/></svg> 새로운 조직
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ui dropdown jump item" data-tooltip-content="프로파일 및 설정">
|
|
<span class="text">
|
|
<img loading="lazy" alt class="ui avatar tw-align-middle tw-mr-1" src="/avatars/21dcf4a87f77c7896226587a3f1224ea?size=48" title="jinilkim" width="24" height="24"/>
|
|
<span class="only-mobile">jinilkim</span>
|
|
<span class="not-mobile"><svg viewBox="0 0 16 16" class="svg octicon-triangle-down" aria-hidden="true" width="16" height="16"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg></span>
|
|
</span>
|
|
|
|
|
|
<div class="menu user-menu">
|
|
<div class="header">
|
|
다음 사용자로 로그인됨 <strong>jinilkim</strong>
|
|
</div>
|
|
|
|
<div class="divider"></div>
|
|
<a class="item" href="/jinilkim">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-person" aria-hidden="true" width="16" height="16"><path d="M10.561 8.073a6 6 0 0 1 3.432 5.142.75.75 0 1 1-1.498.07 4.5 4.5 0 0 0-8.99 0 .75.75 0 0 1-1.498-.07 6 6 0 0 1 3.431-5.142 3.999 3.999 0 1 1 5.123 0M10.5 5a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0"/></svg>
|
|
프로필
|
|
</a>
|
|
|
|
<a class="item" href="/jinilkim?tab=stars">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-star" aria-hidden="true" width="16" height="16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25m0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41z"/></svg>
|
|
즐겨찾기
|
|
</a>
|
|
|
|
<a class="item" href="/notifications/subscriptions">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-bell" aria-hidden="true" width="16" height="16"><path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16M3 5a5 5 0 0 1 10 0v2.947q0 .076.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.26.26 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556-.003.01.001.006q0 .003.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007-.003-.01-1.703-2.554a1.75 1.75 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5"/></svg>
|
|
Subscriptions
|
|
</a>
|
|
<a class="item" href="/user/settings">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-tools" aria-hidden="true" width="16" height="16"><path d="M5.433 2.304A4.49 4.49 0 0 0 3.5 6c0 1.598.832 3.002 2.09 3.802.518.328.929.923.902 1.64v.008l-.164 3.337a.75.75 0 1 1-1.498-.073l.163-3.33c.002-.085-.05-.216-.207-.316A6 6 0 0 1 2 6a6 6 0 0 1 2.567-4.92 1.48 1.48 0 0 1 1.673-.04c.462.296.76.827.76 1.423v2.82c0 .082.041.16.11.206l.75.51a.25.25 0 0 0 .28 0l.75-.51A.25.25 0 0 0 9 5.282V2.463c0-.596.298-1.127.76-1.423a1.48 1.48 0 0 1 1.673.04A6 6 0 0 1 14 6a6 6 0 0 1-2.786 5.068c-.157.1-.209.23-.207.315l.163 3.33a.752.752 0 0 1-1.094.714.75.75 0 0 1-.404-.64l-.164-3.345c-.027-.717.384-1.312.902-1.64A4.5 4.5 0 0 0 12.5 6a4.49 4.49 0 0 0-1.933-3.696c-.024.017-.067.067-.067.16v2.818a1.75 1.75 0 0 1-.767 1.448l-.75.51a1.75 1.75 0 0 1-1.966 0l-.75-.51A1.75 1.75 0 0 1 5.5 5.282V2.463c0-.092-.043-.142-.067-.159"/></svg>
|
|
설정
|
|
</a>
|
|
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-question" aria-hidden="true" width="16" height="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13M6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.76 2.76 0 0 1 1.637.525c.503.377.863.965.863 1.725 0 .448-.115.83-.329 1.15-.205.307-.47.513-.692.662-.109.072-.22.138-.313.195l-.006.004a6 6 0 0 0-.26.16 1 1 0 0 0-.276.245.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661q.154-.1.313-.195l.007-.004c.1-.061.182-.11.258-.161a1 1 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.61.61 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1 1 0 0 0-.34.398M9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></svg>
|
|
도움말
|
|
</a>
|
|
|
|
|
|
<div class="divider"></div>
|
|
<a class="item link-action" href data-url="/user/logout">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-sign-out" aria-hidden="true" width="16" height="16"><path d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25Zm10.44 4.5-1.97-1.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734l1.97-1.97H6.75a.75.75 0 0 1 0-1.5Z"/></svg>
|
|
로그아웃
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
|
|
|
|
<div role="main" aria-label="DS-Asset_Export_to_JSON/README.md at master" class="page-content repository file list ">
|
|
<div class="secondary-nav">
|
|
|
|
<div class="ui container">
|
|
<div class="repo-header">
|
|
<div class="flex-item tw-items-center">
|
|
<div class="flex-item-leading">
|
|
|
|
|
|
<svg viewBox="0 0 16 16" class="svg octicon-repo" aria-hidden="true" width="24" height="24"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.5 2.5 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.25.25 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg>
|
|
|
|
|
|
</div>
|
|
<div class="flex-item-main">
|
|
<div class="flex-item-title tw-text-18">
|
|
<a class="muted tw-font-normal" href="/jinilkim">jinilkim</a>/<a class="muted" href="/jinilkim/DS-Asset_Export_to_JSON">DS-Asset_Export_to_JSON</a>
|
|
</div>
|
|
</div>
|
|
<div class="flex-item-trailing">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex-text-block tw-flex-wrap">
|
|
|
|
|
|
|
|
<a class="ui compact small basic button" href="/jinilkim/DS-Asset_Export_to_JSON.rss" data-tooltip-content="RSS Feed">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-rss" aria-hidden="true" width="16" height="16"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.5 10.5 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7 7 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.5 5.5 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489M2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></svg>
|
|
</a>
|
|
|
|
<form class="flex-text-inline" hx-boost="true" hx-target="this" method="post" action="/jinilkim/DS-Asset_Export_to_JSON/action/unwatch">
|
|
<div class="ui labeled button" >
|
|
|
|
|
|
<button type="submit" class="ui compact small basic button" aria-label="보지않기">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-eye" aria-hidden="true" width="16" height="16"><path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14s-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2M1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5s2.825-.742 3.955-1.715c1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5s-2.825.742-3.955 1.715c-1.124.967-1.954 2.096-2.366 2.717M8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10"/></svg>
|
|
<span class="not-mobile" aria-hidden="true">보지않기</span>
|
|
</button>
|
|
<a hx-boost="false" class="ui basic label" href="/jinilkim/DS-Asset_Export_to_JSON/watchers">
|
|
1
|
|
</a>
|
|
</div>
|
|
</form>
|
|
|
|
|
|
<form class="flex-text-inline" hx-boost="true" hx-target="this" method="post" action="/jinilkim/DS-Asset_Export_to_JSON/action/star">
|
|
<div class="ui labeled button" >
|
|
|
|
|
|
<button type="submit" class="ui compact small basic button" aria-label="좋아요">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-star" aria-hidden="true" width="16" height="16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25m0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41z"/></svg>
|
|
<span class="not-mobile" aria-hidden="true">좋아요</span>
|
|
</button>
|
|
<a hx-boost="false" class="ui basic label" href="/jinilkim/DS-Asset_Export_to_JSON/stars">
|
|
0
|
|
</a>
|
|
</div>
|
|
</form>
|
|
|
|
|
|
|
|
<div class="ui labeled button
|
|
|
|
disabled
|
|
"
|
|
|
|
data-tooltip-content="자신의 저장소를 포크 할 수 없습니다."
|
|
|
|
>
|
|
<a class="ui compact small basic button"
|
|
|
|
|
|
|
|
>
|
|
<svg viewBox="0 0 16 16" class="svg octicon-repo-forked" aria-hidden="true" width="16" height="16"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0M5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0m6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5m-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0"/></svg><span class="text not-mobile">포크</span>
|
|
</a>
|
|
<a class="ui basic label" href="/jinilkim/DS-Asset_Export_to_JSON/forks">
|
|
0
|
|
</a>
|
|
</div>
|
|
<div class="ui small modal" id="fork-repo-modal">
|
|
<div class="header">
|
|
You've already forked DS-Asset_Export_to_JSON
|
|
</div>
|
|
<div class="content tw-text-left">
|
|
<div class="ui list">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div class="ui container">
|
|
<overflow-menu class="ui secondary pointing menu">
|
|
|
|
<div class="overflow-menu-items">
|
|
|
|
<a class="active item" href="/jinilkim/DS-Asset_Export_to_JSON">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-code" aria-hidden="true" width="16" height="16"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215m-6.56 0a.75.75 0 0 1 1.042.018.75.75 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"/></svg> 코드
|
|
</a>
|
|
|
|
|
|
|
|
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/issues">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-issue-opened" aria-hidden="true" width="16" height="16"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3"/><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0"/></svg> 이슈
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/pulls">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" aria-hidden="true" width="16" height="16"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25m5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354M3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0"/></svg> 풀 리퀘스트
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/actions">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-play" aria-hidden="true" width="16" height="16"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0m4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215"/></svg> Actions
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<a href="/jinilkim/DS-Asset_Export_to_JSON/packages" class="item">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-package" aria-hidden="true" width="16" height="16"><path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0M7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.25.25 0 0 0-.25 0M2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"/></svg> Packages
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<a href="/jinilkim/DS-Asset_Export_to_JSON/projects" class="item">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-project" aria-hidden="true" width="16" height="16"><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0M1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25M11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75m-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3"/></svg> Projects
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/releases">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-tag" aria-hidden="true" width="16" height="16"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.75 1.75 0 0 1 1 7.775m1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2"/></svg> 릴리즈
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/wiki">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-book" aria-hidden="true" width="16" height="16"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.74 3.74 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574M8.755 4.75l-.004 7.322a3.75 3.75 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25"/></svg> 위키
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
<a class="item" href="/jinilkim/DS-Asset_Export_to_JSON/activity">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-pulse" aria-hidden="true" width="16" height="16"><path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.75.75 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.75.75 0 0 1 6 2"/></svg> 활동
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="item-flex-space"></span>
|
|
<a class=" item" href="/jinilkim/DS-Asset_Export_to_JSON/settings">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-tools" aria-hidden="true" width="16" height="16"><path d="M5.433 2.304A4.49 4.49 0 0 0 3.5 6c0 1.598.832 3.002 2.09 3.802.518.328.929.923.902 1.64v.008l-.164 3.337a.75.75 0 1 1-1.498-.073l.163-3.33c.002-.085-.05-.216-.207-.316A6 6 0 0 1 2 6a6 6 0 0 1 2.567-4.92 1.48 1.48 0 0 1 1.673-.04c.462.296.76.827.76 1.423v2.82c0 .082.041.16.11.206l.75.51a.25.25 0 0 0 .28 0l.75-.51A.25.25 0 0 0 9 5.282V2.463c0-.596.298-1.127.76-1.423a1.48 1.48 0 0 1 1.673.04A6 6 0 0 1 14 6a6 6 0 0 1-2.786 5.068c-.157.1-.209.23-.207.315l.163 3.33a.752.752 0 0 1-1.094.714.75.75 0 0 1-.404-.64l-.164-3.345c-.027-.717.384-1.312.902-1.64A4.5 4.5 0 0 0 12.5 6a4.49 4.49 0 0 0-1.933-3.696c-.024.017-.067.067-.067.16v2.818a1.75 1.75 0 0 1-.767 1.448l-.75.51a1.75 1.75 0 0 1-1.966 0l-.75-.51A1.75 1.75 0 0 1 5.5 5.282V2.463c0-.092-.043-.142-.067-.159"/></svg> 설정
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</overflow-menu>
|
|
</div>
|
|
<div class="ui tabs divider"></div>
|
|
</div>
|
|
|
|
<div class="ui container fluid padded">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="repo-view-container">
|
|
<div class="repo-view-file-tree-container not-mobile tw-hidden" data-user-is-signed-in>
|
|
<div class="flex-text-block repo-button-row">
|
|
<button class="ui compact basic icon button"
|
|
data-global-click="onRepoViewFileTreeToggle" data-toggle-action="hide"
|
|
data-tooltip-content="Hide file tree">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-sidebar-expand" aria-hidden="true" width="16" height="16"><path d="m4.177 7.823 2.396-2.396A.25.25 0 0 1 7 5.604v4.792a.25.25 0 0 1-.427.177L4.177 8.177a.25.25 0 0 1 0-.354"/><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25H9.5v-13Zm12.5 13a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11v13Z"/></svg>
|
|
</button>
|
|
<b>Files</b>
|
|
</div>
|
|
|
|
|
|
<div id="view-file-tree" class="tw-overflow-auto tw-h-full is-loading"
|
|
data-repo-link="/jinilkim/DS-Asset_Export_to_JSON"
|
|
data-tree-path="README.md"
|
|
data-current-ref-name-sub-url="branch/master"
|
|
></div>
|
|
|
|
</div>
|
|
<div class="repo-view-content">
|
|
|
|
|
|
|
|
|
|
<div class="repo-button-row">
|
|
<div class="repo-button-row-left">
|
|
|
|
<button class="repo-view-file-tree-toggle-show ui compact basic button icon not-mobile "
|
|
data-global-click="onRepoViewFileTreeToggle" data-toggle-action="show"
|
|
data-tooltip-content="Show file tree">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-sidebar-collapse" aria-hidden="true" width="16" height="16"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"/><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0M1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25M11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"/></svg>
|
|
</button>
|
|
|
|
|
|
|
|
<div class=""
|
|
data-global-init="initRepoBranchTagSelector"
|
|
data-text-release-compare="Compare"
|
|
data-text-branches="브랜치"
|
|
data-text-tags="태그"
|
|
data-text-filter-branch="Filter Branch"
|
|
data-text-filter-tag="Find tag"
|
|
data-text-default-branch-label="default"
|
|
data-text-create-tag="Create tag %s"
|
|
data-text-create-branch="%s 브랜치 생성"
|
|
data-text-create-ref-from="from "%s""
|
|
data-text-no-results="No results found."
|
|
data-text-view-all-branches="View all branches"
|
|
data-text-view-all-tags="View all tags"
|
|
|
|
data-current-repo-default-branch="master"
|
|
data-current-repo-link="/jinilkim/DS-Asset_Export_to_JSON"
|
|
data-current-tree-path="README.md"
|
|
data-current-ref-type="branch"
|
|
data-current-ref-short-name="master"
|
|
|
|
data-ref-link-template="{RepoLink}/src/{RefType}/{RefShortName}/{TreePath}"
|
|
data-ref-form-action-template=""
|
|
data-dropdown-fixed-text=""
|
|
data-show-tab-branches="true"
|
|
data-show-tab-tags="true"
|
|
data-allow-create-new-ref="true"
|
|
data-show-view-all-refs-entry="true"
|
|
|
|
data-enable-feed="true"
|
|
>
|
|
|
|
<div class="ui dropdown custom branch-selector-dropdown ellipsis-text-items">
|
|
<div class="ui compact button branch-dropdown-button">
|
|
<span class="flex-text-block gt-ellipsis">
|
|
|
|
|
|
<svg viewBox="0 0 16 16" class="svg octicon-git-branch" aria-hidden="true" width="16" height="16"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.5 2.5 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25m-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0m8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5M4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5"/></svg>
|
|
|
|
<strong class="tw-inline-block gt-ellipsis">master</strong>
|
|
|
|
</span>
|
|
<svg viewBox="0 0 16 16" class="dropdown icon svg octicon-triangle-down" aria-hidden="true" width="14" height="14"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427"/></svg>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a id="new-pull-request" role="button" class="ui compact basic button" href="/jinilkim/DS-Asset_Export_to_JSON/compare/master...master?expand=1"
|
|
data-tooltip-content="새 풀 리퀘스트">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" aria-hidden="true" width="16" height="16"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25m5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354M3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5m8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0"/></svg>
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="breadcrumb repo-path tw-ml-1">
|
|
<a class="section" href="/jinilkim/DS-Asset_Export_to_JSON/src/branch/master" title="DS-Asset_Export_to_JSON">DS-Asset_Export_to_JSON</a><span class="breadcrumb-divider">/</span><span class="active section" title="README.md">README.md</span>
|
|
<button class="btn interact-fg tw-mx-1" data-clipboard-text="README.md" data-tooltip-content="Copy path"><svg viewBox="0 0 16 16" class="svg octicon-copy" aria-hidden="true" width="14" height="14"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg></button></span>
|
|
|
|
</div>
|
|
|
|
<div class="repo-button-row-right">
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-size-4 non-diff-file-content">
|
|
|
|
|
|
<div id="repo-file-commit-box" class="ui segment list-header tw-mb-4 tw-flex tw-justify-between">
|
|
<div class="latest-commit">
|
|
|
|
|
|
<img loading="lazy" alt class="ui avatar tw-align-middle" src="/avatars/21dcf4a87f77c7896226587a3f1224ea?size=48" title="jinilkim" width="24" height="24"/>
|
|
|
|
<a class="muted author-wrapper" title="jinilkim" href="/jinilkim"><strong>jinilkim</strong></a>
|
|
|
|
|
|
|
|
<a href="/jinilkim/DS-Asset_Export_to_JSON/commit/4671fcc0bbf9b3d94e739b2082f02300f48182d0" class="ui label commit-id-short " rel="nofollow">4671fcc0bb</a>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="grey commit-summary" title="Add single asset export functionality and enhance README with usage details"><span class="message-wrapper"><a href="/jinilkim/DS-Asset_Export_to_JSON/commit/4671fcc0bbf9b3d94e739b2082f02300f48182d0" class="muted">Add single asset export functionality and enhance README with usage details</a></span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="text grey age">
|
|
<relative-time prefix="" tense="past" datetime="2025-10-23T21:02:50+09:00" data-tooltip-content data-tooltip-interactive="true">2025-10-23 21:02:50 +09:00</relative-time>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<h4 class="file-header ui top attached header tw-flex tw-items-center tw-justify-between tw-flex-wrap">
|
|
<div class="file-header-left tw-flex tw-items-center tw-py-2 tw-pr-4">
|
|
|
|
<div class="file-info tw-font-mono">
|
|
|
|
|
|
|
|
<div class="file-info-entry">
|
|
19 KiB
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<div class="file-header-right file-actions tw-flex tw-items-center tw-flex-wrap">
|
|
|
|
<div class="ui compact icon buttons">
|
|
<a href="?display=source" class="ui mini basic button " data-tooltip-content="View Source"><svg viewBox="0 0 16 16" class="svg octicon-code" aria-hidden="true" width="15" height="15"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215m-6.56 0a.75.75 0 0 1 1.042.018.75.75 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"/></svg></a>
|
|
<a href="/jinilkim/DS-Asset_Export_to_JSON/src/branch/master/README.md" class="ui mini basic button active" data-tooltip-content="View Rendered"><svg viewBox="0 0 16 16" class="svg octicon-file" aria-hidden="true" width="15" height="15"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914z"/></svg></a>
|
|
</div>
|
|
|
|
|
|
<div class="ui buttons tw-mr-1">
|
|
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/raw/branch/master/README.md">Raw</a>
|
|
|
|
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/src/commit/4671fcc0bbf9b3d94e739b2082f02300f48182d0/README.md">고유링크</a>
|
|
|
|
|
|
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/blame/branch/master/README.md">Blame</a>
|
|
|
|
<a class="ui mini basic button" href="/jinilkim/DS-Asset_Export_to_JSON/commits/branch/master/README.md">히스토리</a>
|
|
|
|
</div>
|
|
<a download class="btn-octicon" data-tooltip-content="Download file" href="/jinilkim/DS-Asset_Export_to_JSON/raw/branch/master/README.md"><svg viewBox="0 0 16 16" class="svg octicon-download" aria-hidden="true" width="16" height="16"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"/><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06z"/></svg></a>
|
|
<a class="btn-octicon " data-global-click="onCopyContentButtonClick" data-link="/jinilkim/DS-Asset_Export_to_JSON/raw/branch/master/README.md" data-tooltip-content="Copy content"><svg viewBox="0 0 16 16" class="svg octicon-copy" aria-hidden="true" width="16" height="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg></a>
|
|
|
|
<a class="btn-octicon" href="/jinilkim/DS-Asset_Export_to_JSON/rss/branch/master/README.md" data-tooltip-content="RSS Feed">
|
|
<svg viewBox="0 0 16 16" class="svg octicon-rss" aria-hidden="true" width="16" height="16"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.5 10.5 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7 7 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.5 5.5 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489M2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></svg>
|
|
</a>
|
|
|
|
|
|
|
|
<a class="btn-octicon" data-tooltip-content="파일 편집" href="/jinilkim/DS-Asset_Export_to_JSON/_edit/master/README.md"><svg viewBox="0 0 16 16" class="svg octicon-pencil" aria-hidden="true" width="16" height="16"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.25.25 0 0 0-.064.108l-.558 1.953 1.953-.558a.25.25 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"/></svg></a>
|
|
|
|
|
|
<a class="btn-octicon btn-octicon-danger" data-tooltip-content="파일 삭제" href="/jinilkim/DS-Asset_Export_to_JSON/_delete/master/README.md"><svg viewBox="0 0 16 16" class="svg octicon-trash" aria-hidden="true" width="16" height="16"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75M4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.75 1.75 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15M6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25"/></svg></a>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</h4>
|
|
<div class="ui bottom attached table unstackable segment">
|
|
|
|
<div class="file-view markup markdown">
|
|
|
|
<h1 id="user-content-asset-export-to-json---언리얼-엔진-에디터-확장-기능" dir="auto">Asset Export to JSON - 언리얼 엔진 에디터 확장 기능</h1>
|
|
<h2 id="user-content-개요" dir="auto">개요</h2>
|
|
<p dir="auto">본 에디터 확장 기능은 언리얼 엔진 에셋을 JSON 형식으로 변환하여 LLM 기반 전투 밸런스 분석을 수행할 수 있는 포괄적인 에셋 익스포트 시스템을 제공합니다. 다양한 에셋 타입에서 상세한 데이터를 추출하여 AI 시스템이 분석할 수 있는 텍스트 기반 문서를 생성합니다.</p>
|
|
<p dir="auto"><strong>목적</strong>: 대규모 언어 모델(LLM) 처리에 적합한 구조화된 텍스트 기반 게임 에셋 표현을 제공하여 포괄적인 전투 밸런스 분석을 가능하게 합니다.</p>
|
|
<p dir="auto"><strong>지원 에셋 타입</strong>:</p>
|
|
<ul dir="auto">
|
|
<li><strong>DataTable</strong> - 완전한 행/열 데이터</li>
|
|
<li><strong>Blueprint</strong> - 변수, 함수, 컴포넌트, 노드 연결을 포함한 이벤트 그래프</li>
|
|
<li><strong>AnimMontage</strong> - 섹션, 노티파이, 커스텀 프로퍼티, 슬롯 애니메이션</li>
|
|
<li><strong>CurveTable</strong> - 키-값 커브 데이터 (RichCurves 및 SimpleCurves)</li>
|
|
</ul>
|
|
<h2 id="user-content-주요-기능" dir="auto">주요 기능</h2>
|
|
<h3 id="user-content-설정-기반-익스포트" dir="auto">설정 기반 익스포트</h3>
|
|
<ul dir="auto">
|
|
<li><strong>프로젝트 설정 통합</strong>: <code>편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON</code>에서 익스포트 경로 설정</li>
|
|
<li><strong>영구 설정</strong>: 설정이 <code>Config/DefaultEditor.ini</code>에 저장되어 SVN/Git을 통한 팀 공유 가능</li>
|
|
<li><strong>다중 폴더 지원</strong>: 한 번의 클릭으로 여러 폴더 경로에서 익스포트</li>
|
|
<li><strong>에셋 타입 필터링</strong>: 설정을 통해 특정 에셋 타입 활성화/비활성화</li>
|
|
</ul>
|
|
<h3 id="user-content-두-가지-익스포트-방식" dir="auto">두 가지 익스포트 방식</h3>
|
|
<h4 id="user-content-1-대량-익스포트-tools-메뉴" dir="auto">1. 대량 익스포트 (Tools 메뉴)</h4>
|
|
<ul dir="auto">
|
|
<li>설정된 모든 폴더의 에셋을 한 번에 익스포트</li>
|
|
<li>프로젝트 전체 밸런스 분석에 적합</li>
|
|
<li><code>Tools → WorldStalker → Export Assets to JSON</code></li>
|
|
</ul>
|
|
<h4 id="user-content-2-단일-에셋-익스포트-우클릭-메뉴" dir="auto">2. 단일 에셋 익스포트 (우클릭 메뉴)</h4>
|
|
<ul dir="auto">
|
|
<li>Content Browser에서 개별 에셋 우클릭 후 즉시 익스포트</li>
|
|
<li>빠른 테스트 및 반복 작업에 적합</li>
|
|
<li>타임스탬프 파일명 자동 생성</li>
|
|
</ul>
|
|
<h3 id="user-content-포괄적인-데이터-추출" dir="auto">포괄적인 데이터 추출</h3>
|
|
<h4 id="user-content-blueprint-익스포트" dir="auto">Blueprint 익스포트</h4>
|
|
<p dir="auto"><strong>변수 추출 - 3가지 소스</strong>:</p>
|
|
<ol dir="auto">
|
|
<li>
|
|
<p dir="auto"><strong>Blueprint 커스텀 변수</strong> (<code>Blueprint->NewVariables</code>)</p>
|
|
<ul dir="auto">
|
|
<li>Blueprint 에디터에서 추가한 모든 커스텀 변수</li>
|
|
<li>변수 GUID, 타입 정보 (Category, SubCategory, ContainerType)</li>
|
|
<li>Property flags (IsEditable, IsBlueprintVisible, IsExposedOnSpawn 등)</li>
|
|
<li>카테고리명 및 전체 메타데이터</li>
|
|
<li>Replication 설정</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p dir="auto"><strong>C++ 부모 클래스 프로퍼티</strong> (<code>Category = "WorldStalker"</code>)</p>
|
|
<ul dir="auto">
|
|
<li><span class="emoji" aria-label="sparkles">✨</span> <strong>NEW</strong>: C++ 부모 클래스에서 정의된 중요 프로퍼티 추출</li>
|
|
<li><strong>ActivationOrderGroup</strong> - 스킬 실행 순서 그룹</li>
|
|
<li><strong>bDisableOrderGroup</strong> - 순서 그룹 비활성화 여부</li>
|
|
<li><strong>bCanBeCancel</strong> - 취소 가능 여부</li>
|
|
<li><strong>ActivationTrigger</strong> - 발동 트리거 타입</li>
|
|
<li><strong>bStopAutoTargetWhenEndAbility</strong> - 어빌리티 종료 시 자동 타겟 중지</li>
|
|
<li>Source 필드로 "C++ParentClass" 표시</li>
|
|
<li>OwnerClass 필드로 정의된 C++ 클래스 명시</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<p dir="auto"><strong>컴파일된 클래스 프로퍼티</strong></p>
|
|
<ul dir="auto">
|
|
<li>부모 클래스에서 상속된 기타 프로퍼티</li>
|
|
</ul>
|
|
</li>
|
|
</ol>
|
|
<p dir="auto"><strong>함수</strong>:</p>
|
|
<ul dir="auto">
|
|
<li>입력/출력 파라미터를 포함한 함수 목록</li>
|
|
<li>FunctionGraphs에서 추출</li>
|
|
</ul>
|
|
<p dir="auto"><strong>컴포넌트</strong>:</p>
|
|
<ul dir="auto">
|
|
<li>컴포넌트 계층 구조</li>
|
|
<li>SimpleConstructionScript에서 추출</li>
|
|
</ul>
|
|
<p dir="auto"><strong>이벤트 그래프</strong>: 다음을 포함한 완전한 노드 그래프</p>
|
|
<ul dir="auto">
|
|
<li>노드 타입, 제목, 위치, 코멘트</li>
|
|
<li>핀 타입, 방향, 기본값</li>
|
|
<li>핀 간 연결 그래프</li>
|
|
<li>노드별 프로퍼티</li>
|
|
</ul>
|
|
<h4 id="user-content-animmontage-익스포트" dir="auto">AnimMontage 익스포트</h4>
|
|
<ul dir="auto">
|
|
<li>시작/종료 시간을 포함한 섹션</li>
|
|
<li>세그먼트를 포함한 슬롯 애니메이션 트랙</li>
|
|
<li><strong>노티파이 이벤트</strong>: 다음을 포함한 완전한 노티파이 데이터
|
|
<ul dir="auto">
|
|
<li>노티파이 타입 및 트리거 시간</li>
|
|
<li>노티파이 클래스의 커스텀 프로퍼티</li>
|
|
<li>블렌드 인/아웃 설정</li>
|
|
<li>트랙 인덱스 및 싱크 마커</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h4 id="user-content-curvetable-익스포트" dir="auto">CurveTable 익스포트</h4>
|
|
<ul dir="auto">
|
|
<li>RichCurves와 SimpleCurves 모두 지원</li>
|
|
<li>시간, 값, 탄젠트 정보를 포함한 키 데이터</li>
|
|
<li>커브 보간 모드</li>
|
|
</ul>
|
|
<h3 id="user-content-진행-상황-로깅" dir="auto">진행 상황 로깅</h3>
|
|
<ul dir="auto">
|
|
<li><span class="emoji" aria-label="sparkles">✨</span> <strong>NEW</strong>: 10개 에셋마다 진행 상황 로그 출력</li>
|
|
<li>Output Log에서 실시간 진행 상황 확인 가능</li>
|
|
<li>에디터가 먹통처럼 보이는 현상 방지</li>
|
|
<li>로그 카테고리: <code>LogAssetExporter</code></li>
|
|
</ul>
|
|
<h3 id="user-content-출력-관리" dir="auto">출력 관리</h3>
|
|
<ul dir="auto">
|
|
<li><strong>타임스탬프 익스포트</strong>: 익스포트 히스토리 보관을 위한 선택적 타임스탬프 하위 폴더</li>
|
|
<li><strong>타입별 파일 분리</strong>: 에셋 타입별 개별 JSON 파일 (DataTable.json, Blueprint.json 등)</li>
|
|
<li><strong>보기 좋은 JSON 형식</strong>: 들여쓰기가 적용된 사람이 읽기 쉬운 형식</li>
|
|
<li><strong>중복 검출</strong>: 폴더가 겹칠 때 중복 익스포트 방지</li>
|
|
</ul>
|
|
<h2 id="user-content-설치-방법" dir="auto">설치 방법</h2>
|
|
<h3 id="user-content-1-파일-구조" dir="auto">1. 파일 구조</h3>
|
|
<p dir="auto">다음 파일들을 프로젝트에 복사하세요:</p>
|
|
<p dir="auto"><strong>새 파일</strong> (<code>Source/WorldStalkerEditor/Utility/</code>에 복사):</p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">AssetExportSettings.h
|
|
AssetExportSettings.cpp
|
|
AssetExporterToJSON.h
|
|
AssetExporterToJSON.cpp
|
|
</code></pre></div><p dir="auto"><strong>수정된 파일</strong> (수동으로 변경사항 병합):</p>
|
|
<ul dir="auto">
|
|
<li><code>WorldStalkerEditor.h</code> - MERGE_INSTRUCTIONS.md 참조</li>
|
|
<li><code>WorldStalkerEditor.cpp</code> - MERGE_INSTRUCTIONS.md 참조</li>
|
|
</ul>
|
|
<h3 id="user-content-2-빌드-설정" dir="auto">2. 빌드 설정</h3>
|
|
<p dir="auto"><code>WorldStalkerEditor.Build.cs</code>에 다음을 추가하세요:</p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-csharp display"><span class="n">PublicDependencyModuleNames</span><span class="p">.</span><span class="n">AddRange</span><span class="p">(</span><span class="k">new</span> <span class="kt">string</span><span class="p">[]</span> <span class="p">{</span>
|
|
<span class="s">"AssetRegistry"</span><span class="p">,</span>
|
|
<span class="s">"Json"</span><span class="p">,</span>
|
|
<span class="s">"JsonUtilities"</span>
|
|
<span class="p">});</span>
|
|
|
|
<span class="n">PrivateDependencyModuleNames</span><span class="p">.</span><span class="n">AddRange</span><span class="p">(</span><span class="k">new</span> <span class="kt">string</span><span class="p">[]</span> <span class="p">{</span>
|
|
<span class="s">"UnrealEd"</span><span class="p">,</span>
|
|
<span class="s">"Engine"</span><span class="p">,</span>
|
|
<span class="s">"Slate"</span><span class="p">,</span>
|
|
<span class="s">"SlateCore"</span><span class="p">,</span>
|
|
<span class="s">"ToolMenus"</span><span class="p">,</span>
|
|
<span class="s">"DeveloperSettings"</span><span class="p">,</span>
|
|
<span class="s">"ContentBrowser"</span> <span class="c1">// 우클릭 메뉴용</span>
|
|
<span class="p">});</span>
|
|
</code></pre></div><h3 id="user-content-3-프로젝트-리빌드" dir="auto">3. 프로젝트 리빌드</h3>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-batch display"># Visual Studio 프로젝트 파일 생성
|
|
GenerateVSProjectFile.bat
|
|
|
|
# 에디터 모듈 빌드
|
|
# 또는 Visual Studio에서 리빌드
|
|
</code></pre></div><h2 id="user-content-설정-방법" dir="auto">설정 방법</h2>
|
|
<h3 id="user-content-1단계-프로젝트-설정-열기" dir="auto">1단계: 프로젝트 설정 열기</h3>
|
|
<p dir="auto">다음으로 이동: <code>편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON</code></p>
|
|
<h3 id="user-content-2단계-익스포트-경로-설정" dir="auto">2단계: 익스포트 경로 설정</h3>
|
|
<p dir="auto"><strong>Export Folder Paths</strong> (배열):</p>
|
|
<ul dir="auto">
|
|
<li><code>/Game/</code> 콘텐츠 디렉토리 기준 상대 경로로 폴더 경로 추가</li>
|
|
<li>예시 경로:
|
|
<ul dir="auto">
|
|
<li><code>Blueprints/Enemy</code></li>
|
|
<li><code>Blueprints/Characters</code></li>
|
|
<li><code>Blueprints/Abilities</code></li>
|
|
<li><code>DataTables</code></li>
|
|
</ul>
|
|
</li>
|
|
<li><code>+</code> 버튼으로 새 경로 추가</li>
|
|
<li><code>-</code> 버튼으로 경로 제거</li>
|
|
</ul>
|
|
<p dir="auto"><strong>기본 경로</strong> (자동 설정됨):</p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">Blueprints/Enemy
|
|
Blueprints/Characters
|
|
Blueprints/Abilities
|
|
DataTables
|
|
</code></pre></div><h3 id="user-content-3단계-출력-설정-구성" dir="auto">3단계: 출력 설정 구성</h3>
|
|
<p dir="auto"><strong>Output Directory</strong> (출력 디렉토리):</p>
|
|
<ul dir="auto">
|
|
<li>기본값: <code>Exports</code> (Content 폴더 기준 상대 경로)</li>
|
|
<li>원하는 경우 커스텀 경로 설정</li>
|
|
</ul>
|
|
<p dir="auto"><strong>Create Timestamped Folder</strong> (타임스탬프 폴더 생성):</p>
|
|
<ul dir="auto">
|
|
<li>활성화: <code>Export_2025_01_15_143022</code>와 같은 하위 폴더 생성</li>
|
|
<li>비활성화: 출력 디렉토리의 파일을 덮어씀</li>
|
|
</ul>
|
|
<h3 id="user-content-4단계-에셋-타입-선택" dir="auto">4단계: 에셋 타입 선택</h3>
|
|
<p dir="auto">특정 에셋 타입에 대한 익스포트 활성화 또는 비활성화:</p>
|
|
<ul dir="auto">
|
|
<li>☑ Export DataTables (데이터테이블 익스포트)</li>
|
|
<li>☑ Export Blueprints (블루프린트 익스포트)</li>
|
|
<li>☑ Export AnimMontages (애님 몽타주 익스포트)</li>
|
|
<li>☑ Export CurveTables (커브테이블 익스포트)</li>
|
|
</ul>
|
|
<h2 id="user-content-사용-방법" dir="auto">사용 방법</h2>
|
|
<h3 id="user-content-방법-1-대량-익스포트-tools-메뉴" dir="auto">방법 1: 대량 익스포트 (Tools 메뉴)</h3>
|
|
<p dir="auto"><strong>전체 프로젝트 밸런스 분석용</strong></p>
|
|
<ol dir="auto">
|
|
<li>언리얼 에디터 열기</li>
|
|
<li>다음으로 이동: <code>Tools → WorldStalker → Export Assets to JSON</code></li>
|
|
<li>Output Log에서 진행 상황 확인 (<code>Window → Developer Tools → Output Log</code>)
|
|
<ul dir="auto">
|
|
<li>로그 필터: <code>LogAssetExporter</code></li>
|
|
</ul>
|
|
</li>
|
|
<li>익스포트 완료 대기 (알림 대화상자가 표시됨)</li>
|
|
</ol>
|
|
<p dir="auto"><strong>Output Log 예시</strong>:</p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">LogAssetExporter: Starting Asset Export to JSON process...
|
|
LogAssetExporter: Export path: /Game/Blueprints/Abilities
|
|
LogAssetExporter: Found 45 Blueprints to export
|
|
LogAssetExporter: Processing Blueprint 1/45: GA_Skill_Cazimord_Flash
|
|
LogAssetExporter: Processing Blueprint 10/45: GA_Skill_Fireball
|
|
LogAssetExporter: Processing Blueprint 20/45: GA_Skill_IceSpear
|
|
...
|
|
LogAssetExporter: Exported 45 Blueprints
|
|
LogAssetExporter: Export completed! Total assets exported: 168
|
|
</code></pre></div><h3 id="user-content-방법-2-단일-에셋-익스포트-우클릭" dir="auto">방법 2: 단일 에셋 익스포트 (우클릭)</h3>
|
|
<p dir="auto"><strong>빠른 테스트 및 반복 작업용</strong></p>
|
|
<ol dir="auto">
|
|
<li>Content Browser에서 익스포트할 에셋 찾기</li>
|
|
<li>에셋 우클릭</li>
|
|
<li><strong>"Export to JSON"</strong> 선택</li>
|
|
<li>즉시 익스포트 완료 (확인 대화상자 표시)</li>
|
|
</ol>
|
|
<p dir="auto"><strong>지원 에셋 타입</strong>:</p>
|
|
<ul dir="auto">
|
|
<li>DataTable</li>
|
|
<li>Blueprint</li>
|
|
<li>AnimMontage</li>
|
|
<li>CurveTable</li>
|
|
</ul>
|
|
<p dir="auto"><strong>출력 파일명 형식</strong>:</p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">Blueprint_GA_Skill_Cazimord_Flash_20251023_143205.json
|
|
AnimMontage_AM_Attack_Combo_20251023_143210.json
|
|
</code></pre></div><h3 id="user-content-익스포트-출력" dir="auto">익스포트 출력</h3>
|
|
<p dir="auto">파일이 저장되는 위치: <code>Content/Exports/</code> (또는 설정된 출력 디렉토리)</p>
|
|
<p dir="auto"><strong>출력 구조</strong> (타임스탬프 폴더 사용 시):</p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">Content/
|
|
└── Exports/
|
|
└── Export_2025_01_15_143022/
|
|
├── DataTable.json
|
|
├── Blueprint.json
|
|
├── AnimMontage.json
|
|
└── CurveTable.json
|
|
</code></pre></div><h3 id="user-content-출력-형식-예시" dir="auto">출력 형식 예시</h3>
|
|
<h4 id="user-content-datatablejson" dir="auto">DataTable.json</h4>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-json display"><span class="p">{</span>
|
|
<span class="nt">"ExportedAt"</span><span class="p">:</span> <span class="s2">"2025-10-23 14:32:05"</span><span class="p">,</span>
|
|
<span class="nt">"TotalCount"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
|
<span class="nt">"Assets"</span><span class="p">:</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"AssetName"</span><span class="p">:</span> <span class="s2">"DT_CharacterStats"</span><span class="p">,</span>
|
|
<span class="nt">"AssetPath"</span><span class="p">:</span> <span class="s2">"/Game/DataTables/DT_CharacterStats"</span><span class="p">,</span>
|
|
<span class="nt">"RowStructure"</span><span class="p">:</span> <span class="s2">"FCharacterStats"</span><span class="p">,</span>
|
|
<span class="nt">"Rows"</span><span class="p">:</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"RowName"</span><span class="p">:</span> <span class="s2">"Warrior"</span><span class="p">,</span>
|
|
<span class="nt">"Data"</span><span class="p">:</span> <span class="p">{</span>
|
|
<span class="nt">"Name"</span><span class="p">:</span> <span class="s2">"Warrior"</span><span class="p">,</span>
|
|
<span class="nt">"Health"</span><span class="p">:</span> <span class="mf">1000.0</span><span class="p">,</span>
|
|
<span class="nt">"Attack"</span><span class="p">:</span> <span class="mf">150.0</span><span class="p">,</span>
|
|
<span class="nt">"Defense"</span><span class="p">:</span> <span class="mf">100.0</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
<span class="p">]</span>
|
|
<span class="p">}</span>
|
|
<span class="p">]</span>
|
|
<span class="p">}</span>
|
|
</code></pre></div><h4 id="user-content-blueprintjson---변수-섹션" dir="auto">Blueprint.json - 변수 섹션</h4>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-json display"><span class="p">{</span>
|
|
<span class="nt">"AssetName"</span><span class="p">:</span> <span class="s2">"GA_Skill_Cazimord_Flash"</span><span class="p">,</span>
|
|
<span class="nt">"AssetPath"</span><span class="p">:</span> <span class="s2">"/Game/Blueprints/Abilities/GA_Skill_Cazimord_Flash"</span><span class="p">,</span>
|
|
<span class="nt">"ParentClass"</span><span class="p">:</span> <span class="s2">"WSGameplayAbility"</span><span class="p">,</span>
|
|
<span class="nt">"Variables"</span><span class="p">:</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"Name"</span><span class="p">:</span> <span class="s2">"ActivationOrderGroup"</span><span class="p">,</span>
|
|
<span class="nt">"Type"</span><span class="p">:</span> <span class="s2">"uint8"</span><span class="p">,</span>
|
|
<span class="nt">"DefaultValue"</span><span class="p">:</span> <span class="s2">"1"</span><span class="p">,</span>
|
|
<span class="nt">"CategoryName"</span><span class="p">:</span> <span class="s2">"WorldStalker"</span><span class="p">,</span>
|
|
<span class="nt">"Source"</span><span class="p">:</span> <span class="s2">"C++ParentClass"</span><span class="p">,</span>
|
|
<span class="nt">"OwnerClass"</span><span class="p">:</span> <span class="s2">"WSGameplayAbility"</span><span class="p">,</span>
|
|
<span class="nt">"IsEditable"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
|
|
<span class="nt">"IsBlueprintVisible"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
|
|
<span class="nt">"IsBlueprintReadOnly"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
|
|
<span class="nt">"IsEditDefaultsOnly"</span><span class="p">:</span> <span class="kc">true</span>
|
|
<span class="p">},</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"Name"</span><span class="p">:</span> <span class="s2">"bDisableOrderGroup"</span><span class="p">,</span>
|
|
<span class="nt">"Type"</span><span class="p">:</span> <span class="s2">"bool"</span><span class="p">,</span>
|
|
<span class="nt">"DefaultValue"</span><span class="p">:</span> <span class="s2">"False"</span><span class="p">,</span>
|
|
<span class="nt">"CategoryName"</span><span class="p">:</span> <span class="s2">"WorldStalker"</span><span class="p">,</span>
|
|
<span class="nt">"Source"</span><span class="p">:</span> <span class="s2">"C++ParentClass"</span><span class="p">,</span>
|
|
<span class="nt">"OwnerClass"</span><span class="p">:</span> <span class="s2">"WSGameplayAbility"</span>
|
|
<span class="p">},</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"Name"</span><span class="p">:</span> <span class="s2">"CustomDamageMultiplier"</span><span class="p">,</span>
|
|
<span class="nt">"VarGuid"</span><span class="p">:</span> <span class="s2">"A1B2C3D4-E5F6-7890-ABCD-EF1234567890"</span><span class="p">,</span>
|
|
<span class="nt">"Category"</span><span class="p">:</span> <span class="s2">"float"</span><span class="p">,</span>
|
|
<span class="nt">"DefaultValue"</span><span class="p">:</span> <span class="s2">"1.5"</span><span class="p">,</span>
|
|
<span class="nt">"Source"</span><span class="p">:</span> <span class="s2">"Blueprint"</span><span class="p">,</span>
|
|
<span class="nt">"IsEditable"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
|
|
<span class="nt">"IsBlueprintVisible"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
|
|
<span class="nt">"CategoryName"</span><span class="p">:</span> <span class="s2">"Combat"</span><span class="p">,</span>
|
|
<span class="nt">"MetaData"</span><span class="p">:</span> <span class="p">{</span>
|
|
<span class="nt">"DisplayName"</span><span class="p">:</span> <span class="s2">"데미지 배율"</span><span class="p">,</span>
|
|
<span class="nt">"Tooltip"</span><span class="p">:</span> <span class="s2">"스킬 데미지 최종 배율"</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
<span class="p">],</span>
|
|
<span class="nt">"Functions"</span><span class="p">:</span> <span class="p">[</span><span>...</span><span class="p">],</span>
|
|
<span class="nt">"Components"</span><span class="p">:</span> <span class="p">[</span><span>...</span><span class="p">],</span>
|
|
<span class="nt">"EventGraphs"</span><span class="p">:</span> <span class="p">[</span><span>...</span><span class="p">]</span>
|
|
<span class="p">}</span>
|
|
</code></pre></div><p dir="auto"><strong>변수 Source 타입 설명</strong>:</p>
|
|
<ul dir="auto">
|
|
<li><code>"Blueprint"</code>: Blueprint 에디터에서 추가한 커스텀 변수</li>
|
|
<li><code>"C++ParentClass"</code>: C++ 부모 클래스에서 정의된 프로퍼티 (Category = "WorldStalker")</li>
|
|
<li><code>"CompiledClass"</code>: 기타 컴파일된 클래스 프로퍼티</li>
|
|
</ul>
|
|
<h4 id="user-content-animmontagejson" dir="auto">AnimMontage.json</h4>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-json display"><span class="p">{</span>
|
|
<span class="nt">"AssetName"</span><span class="p">:</span> <span class="s2">"AM_Attack_Combo"</span><span class="p">,</span>
|
|
<span class="nt">"AssetPath"</span><span class="p">:</span> <span class="s2">"/Game/Animations/AM_Attack_Combo"</span><span class="p">,</span>
|
|
<span class="nt">"SequenceLength"</span><span class="p">:</span> <span class="mf">2.5</span><span class="p">,</span>
|
|
<span class="nt">"RateScale"</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">,</span>
|
|
<span class="nt">"Sections"</span><span class="p">:</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"SectionName"</span><span class="p">:</span> <span class="s2">"Combo1"</span><span class="p">,</span>
|
|
<span class="nt">"StartTime"</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span>
|
|
<span class="nt">"NextSectionName"</span><span class="p">:</span> <span class="s2">"Combo2"</span>
|
|
<span class="p">}</span>
|
|
<span class="p">],</span>
|
|
<span class="nt">"AnimNotifies"</span><span class="p">:</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"NotifyName"</span><span class="p">:</span> <span class="s2">"DealDamage"</span><span class="p">,</span>
|
|
<span class="nt">"TriggerTime"</span><span class="p">:</span> <span class="mf">0.5</span><span class="p">,</span>
|
|
<span class="nt">"Duration"</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span>
|
|
<span class="nt">"NotifyType"</span><span class="p">:</span> <span class="s2">"Notify"</span><span class="p">,</span>
|
|
<span class="nt">"NotifyClass"</span><span class="p">:</span> <span class="s2">"ANS_DealDamage"</span><span class="p">,</span>
|
|
<span class="nt">"CustomProperties"</span><span class="p">:</span> <span class="p">{</span>
|
|
<span class="nt">"DamageAmount"</span><span class="p">:</span> <span class="s2">"50.0"</span><span class="p">,</span>
|
|
<span class="nt">"DamageType"</span><span class="p">:</span> <span class="s2">"Physical"</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
<span class="p">],</span>
|
|
<span class="nt">"SlotAnimTracks"</span><span class="p">:</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"SlotName"</span><span class="p">:</span> <span class="s2">"DefaultSlot"</span><span class="p">,</span>
|
|
<span class="nt">"AnimSegments"</span><span class="p">:</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="nt">"AnimReference"</span><span class="p">:</span> <span class="s2">"AS_Attack1"</span><span class="p">,</span>
|
|
<span class="nt">"AnimPath"</span><span class="p">:</span> <span class="s2">"/Game/Animation/Sequences/AS_Attack1"</span><span class="p">,</span>
|
|
<span class="nt">"StartPos"</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span>
|
|
<span class="nt">"AnimStartTime"</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span>
|
|
<span class="nt">"AnimEndTime"</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">,</span>
|
|
<span class="nt">"AnimPlayRate"</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">,</span>
|
|
<span class="nt">"LoopingCount"</span><span class="p">:</span> <span class="mi">1</span>
|
|
<span class="p">}</span>
|
|
<span class="p">]</span>
|
|
<span class="p">}</span>
|
|
<span class="p">],</span>
|
|
<span class="nt">"BlendInTime"</span><span class="p">:</span> <span class="mf">0.25</span><span class="p">,</span>
|
|
<span class="nt">"BlendOutTime"</span><span class="p">:</span> <span class="mf">0.25</span><span class="p">,</span>
|
|
<span class="nt">"BlendModeIn"</span><span class="p">:</span> <span class="s2">"Standard"</span><span class="p">,</span>
|
|
<span class="nt">"BlendModeOut"</span><span class="p">:</span> <span class="s2">"Standard"</span>
|
|
<span class="p">}</span>
|
|
</code></pre></div><h2 id="user-content-전투-밸런스-분석-활용-예시" dir="auto">전투 밸런스 분석 활용 예시</h2>
|
|
<h3 id="user-content-워크플로우" dir="auto">워크플로우</h3>
|
|
<ol dir="auto">
|
|
<li>
|
|
<p dir="auto"><strong>전체 스킬 익스포트</strong></p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">Project Settings → Asset Export to JSON
|
|
Export Folder Paths에 "/Game/Blueprints/Abilities" 추가
|
|
Tools → Export Assets to JSON 실행
|
|
</code></pre></div></li>
|
|
<li>
|
|
<p dir="auto"><strong>익스포트된 JSON 분석</strong></p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-python display"><span class="kn">import</span> <span class="nn">json</span>
|
|
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'Content/Exports/Blueprint.json'</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
<span class="n">data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
|
|
|
<span class="c1"># ActivationOrderGroup 분석</span>
|
|
<span class="k">for</span> <span class="n">asset</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="s1">'Assets'</span><span class="p">]:</span>
|
|
<span class="k">if</span> <span class="s1">'GA_Skill'</span> <span class="ow">in</span> <span class="n">asset</span><span class="p">[</span><span class="s1">'AssetName'</span><span class="p">]:</span>
|
|
<span class="n">variables</span> <span class="o">=</span> <span class="n">asset</span><span class="p">[</span><span class="s1">'Variables'</span><span class="p">]</span>
|
|
|
|
<span class="c1"># C++ 부모 클래스 프로퍼티 찾기</span>
|
|
<span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="n">variables</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">var</span><span class="p">[</span><span class="s1">'Source'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'C++ParentClass'</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">var</span><span class="p">[</span><span class="s1">'Name'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'ActivationOrderGroup'</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">asset</span><span class="p">[</span><span class="s1">'AssetName'</span><span class="p">]</span><span class="si">}</span><span class="s2">: Order Group = </span><span class="si">{</span><span class="n">var</span><span class="p">[</span><span class="s1">'DefaultValue'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
</code></pre></div></li>
|
|
<li>
|
|
<p dir="auto"><strong>특정 스킬 수정 후 빠른 재분석</strong></p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">1. GA_Skill_Cazimord_Flash 블루프린트 수정
|
|
2. Content Browser에서 우클릭 → Export to JSON
|
|
3. 생성된 단일 JSON 파일로 LLM 분석
|
|
4. 밸런스 피드백 받기
|
|
5. 반복
|
|
</code></pre></div></li>
|
|
</ol>
|
|
<h3 id="user-content-llm-프롬프트-예시" dir="auto">LLM 프롬프트 예시</h3>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-text display">다음 스킬 Blueprint JSON을 분석해주세요:
|
|
|
|
[JSON 데이터 붙여넣기]
|
|
|
|
분석 포인트:
|
|
1. ActivationOrderGroup 값이 적절한가?
|
|
2. 같은 그룹의 다른 스킬들과 밸런스가 맞는가?
|
|
3. CustomProperties의 데미지 배율이 적정한가?
|
|
4. AnimMontage의 타이밍과 DealDamage 노티파이 시점이 일치하는가?
|
|
</code></pre></div><h2 id="user-content-문제-해결" dir="auto">문제 해결</h2>
|
|
<h3 id="user-content-출력-파일이-생성되지-않음" dir="auto">출력 파일이 생성되지 않음</h3>
|
|
<p dir="auto"><strong>문제</strong>: 익스포트가 완료되었지만 JSON 파일이 생성되지 않음
|
|
<strong>해결</strong>: 익스포트 경로에 활성화된 타입의 에셋이 포함되어 있는지 확인</p>
|
|
<h3 id="user-content-우클릭-메뉴가-나타나지-않음" dir="auto">우클릭 메뉴가 나타나지 않음</h3>
|
|
<p dir="auto"><strong>문제</strong>: Content Browser에서 에셋 우클릭 시 "Export to JSON" 메뉴가 없음
|
|
<strong>해결</strong>:</p>
|
|
<ul dir="auto">
|
|
<li>지원되는 에셋 타입인지 확인 (DataTable, Blueprint, AnimMontage, CurveTable)</li>
|
|
<li>단일 에셋만 선택했는지 확인 (다중 선택 시 메뉴 비활성화)</li>
|
|
<li>에디터 재시작 시도</li>
|
|
</ul>
|
|
<h3 id="user-content-c-프로퍼티가-익스포트되지-않음" dir="auto">C++ 프로퍼티가 익스포트되지 않음</h3>
|
|
<p dir="auto"><strong>문제</strong>: ActivationOrderGroup 같은 C++ 프로퍼티가 JSON에 없음
|
|
<strong>해결</strong>:</p>
|
|
<ul dir="auto">
|
|
<li>Property에 <code>Category = "WorldStalker"</code> 메타데이터가 있는지 확인</li>
|
|
<li>C++ 헤더 파일에서 <code>UPROPERTY(EditDefaultsOnly, Category = "WorldStalker")</code> 선언 확인</li>
|
|
<li>최신 코드로 빌드되었는지 확인</li>
|
|
</ul>
|
|
<h3 id="user-content-출력에-중복-에셋" dir="auto">출력에 중복 에셋</h3>
|
|
<p dir="auto"><strong>문제</strong>: 동일한 에셋이 JSON에 여러 번 나타남
|
|
<strong>해결</strong>: 이제 중복 검출로 방지됨 - 설정에서 겹치는 폴더 경로 확인</p>
|
|
<h3 id="user-content-진행-상황이-보이지-않음" dir="auto">진행 상황이 보이지 않음</h3>
|
|
<p dir="auto"><strong>문제</strong>: 익스포트 중 에디터가 먹통처럼 보임
|
|
<strong>해결</strong>: Output Log 열기 (<code>Window → Developer Tools → Output Log</code>)</p>
|
|
<ul dir="auto">
|
|
<li>필터에 <code>LogAssetExporter</code> 입력</li>
|
|
<li>10개 에셋마다 진행 상황 로그 확인 가능</li>
|
|
</ul>
|
|
<h3 id="user-content-통합-후-빌드-오류" dir="auto">통합 후 빌드 오류</h3>
|
|
<p dir="auto"><strong>문제</strong>: 누락된 헤더에 대한 컴파일 오류
|
|
<strong>해결</strong>: 모든 의존성이 <code>.Build.cs</code> 파일에 추가되었는지 확인 (설치 섹션 참조)</p>
|
|
<h3 id="user-content-대형-프로젝트에서-익스포트-중단" dir="auto">대형 프로젝트에서 익스포트 중단</h3>
|
|
<p dir="auto"><strong>문제</strong>: 익스포트가 매우 오래 걸림
|
|
<strong>해결</strong>: 익스포트 경로 수를 줄이거나 필요하지 않은 에셋 타입 비활성화</p>
|
|
<h3 id="user-content-설정이-유지되지-않음" dir="auto">설정이 유지되지 않음</h3>
|
|
<p dir="auto"><strong>문제</strong>: 에디터 재시작 후 설정 초기화
|
|
<strong>해결</strong>: <code>Config/DefaultEditor.ini</code>가 쓰기 가능하고 잠겨있지 않은지 확인</p>
|
|
<h2 id="user-content-기술-세부사항" dir="auto">기술 세부사항</h2>
|
|
<h3 id="user-content-언리얼-엔진-버전" dir="auto">언리얼 엔진 버전</h3>
|
|
<ul dir="auto">
|
|
<li><strong>테스트 환경</strong>: 언리얼 엔진 5.5.4 (커스텀 빌드)</li>
|
|
<li><strong>API 호환성</strong>: UE 5.5+ CurveTable API 사용 (GetRichCurveRowMap/GetSimpleCurveRowMap)</li>
|
|
</ul>
|
|
<h3 id="user-content-모듈-의존성" dir="auto">모듈 의존성</h3>
|
|
<ul dir="auto">
|
|
<li><strong>AssetRegistry</strong> - 에셋 검색 및 필터링</li>
|
|
<li><strong>Json/JsonUtilities</strong> - JSON 직렬화</li>
|
|
<li><strong>UnrealEd</strong> - 에디터 통합</li>
|
|
<li><strong>ToolMenus</strong> - 메뉴 확장 시스템</li>
|
|
<li><strong>DeveloperSettings</strong> - 프로젝트 설정 통합</li>
|
|
<li><strong>ContentBrowser</strong> - 우클릭 컨텍스트 메뉴</li>
|
|
</ul>
|
|
<h3 id="user-content-성능-특성" dir="auto">성능 특성</h3>
|
|
<ul dir="auto">
|
|
<li><strong>재귀 검색</strong>: 설정된 경로의 모든 하위 폴더 검색</li>
|
|
<li><strong>메모리 사용량</strong>: 메모리 사용량을 최소화하기 위해 에셋을 하나씩 로드</li>
|
|
<li><strong>익스포트 속도</strong>: 에셋 복잡도에 따라 초당 약 10-50개 에셋</li>
|
|
<li><strong>진행 상황</strong>: 10개 에셋마다 로그 출력으로 진행 상황 실시간 확인</li>
|
|
</ul>
|
|
<h3 id="user-content-blueprint-변수-추출-상세" dir="auto">Blueprint 변수 추출 상세</h3>
|
|
<p dir="auto">시스템은 3가지 소스에서 변수를 추출합니다:</p>
|
|
<p dir="auto"><strong>1. Blueprint 커스텀 변수 (<code>Blueprint->NewVariables</code>)</strong></p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-cpp display"><span class="k">for</span> <span class="p">(</span><span class="k">const</span> <span class="n">FBPVariableDescription</span><span class="o">&</span> <span class="nl">Variable</span> <span class="p">:</span> <span class="n">Blueprint</span><span class="o">-></span><span class="n">NewVariables</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="c1">// VarName, VarGuid, VarType, DefaultValue 추출
|
|
</span><span class="c1"></span> <span class="c1">// PropertyFlags, Category, MetaData 추출
|
|
</span><span class="c1"></span><span class="p">}</span>
|
|
</code></pre></div><p dir="auto"><strong>2. C++ 부모 클래스 프로퍼티 (Category = "WorldStalker")</strong></p>
|
|
<div class="code-block-container code-overflow-scroll"><pre class="code-block"><code class="chroma language-cpp display"><span class="k">for</span> <span class="p">(</span><span class="n">TFieldIterator</span><span class="o"><</span><span class="n">FProperty</span><span class="o">></span> <span class="n">PropIt</span><span class="p">(</span><span class="n">Blueprint</span><span class="o">-></span><span class="n">GeneratedClass</span><span class="p">);</span> <span class="n">PropIt</span><span class="p">;</span> <span class="o">++</span><span class="n">PropIt</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">const</span> <span class="n">FString</span><span class="o">*</span> <span class="n">CategoryMeta</span> <span class="o">=</span> <span class="n">PropIt</span><span class="o">-></span><span class="n">FindMetaData</span><span class="p">(</span><span class="n">TEXT</span><span class="p">(</span><span class="s">"Category"</span><span class="p">));</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">CategoryMeta</span> <span class="o">&&</span> <span class="n">CategoryMeta</span><span class="o">-></span><span class="n">Equals</span><span class="p">(</span><span class="n">TEXT</span><span class="p">(</span><span class="s">"WorldStalker"</span><span class="p">)))</span>
|
|
<span class="p">{</span>
|
|
<span class="c1">// ActivationOrderGroup 등 중요 프로퍼티 추출
|
|
</span><span class="c1"></span> <span class="p">}</span>
|
|
<span class="p">}</span>
|
|
</code></pre></div><p dir="auto"><strong>3. 기타 컴파일된 클래스 프로퍼티</strong></p>
|
|
<ul dir="auto">
|
|
<li>부모 클래스에서 상속된 기타 프로퍼티</li>
|
|
</ul>
|
|
<h3 id="user-content-blueprint-이벤트-그래프-추출" dir="auto">Blueprint 이벤트 그래프 추출</h3>
|
|
<p dir="auto">시스템은 Blueprint 그래프 구조를 순회하여 다음을 추출합니다:</p>
|
|
<ul dir="auto">
|
|
<li><code>UbergraphPages</code>의 모든 노드 (이벤트 그래프)</li>
|
|
<li>노드 메타데이터 (클래스, 제목, 위치, 코멘트)</li>
|
|
<li>핀 정보 (타입, 방향, 기본값)</li>
|
|
<li>핀 간 연결 그래프 (LinkedTo 관계)</li>
|
|
<li>그래프 노드의 프로퍼티 값</li>
|
|
</ul>
|
|
<h3 id="user-content-animmontage-커스텀-프로퍼티-추출" dir="auto">AnimMontage 커스텀 프로퍼티 추출</h3>
|
|
<p dir="auto">커스텀 프로퍼티는 다음 방식으로 Notify 객체에서 추출됩니다:</p>
|
|
<ol dir="auto">
|
|
<li>모든 <code>AnimNotifyEvent</code> 항목 반복</li>
|
|
<li>Notify 객체 클래스 프로퍼티 리플렉션</li>
|
|
<li>편집 가능한 프로퍼티 필터링 (<code>CPF_Edit</code> 플래그)</li>
|
|
<li>프로퍼티 값을 JSON으로 직렬화</li>
|
|
</ol>
|
|
<h2 id="user-content-알려진-제한사항" dir="auto">알려진 제한사항</h2>
|
|
<ol dir="auto">
|
|
<li><strong>Blueprint 비주얼 스크립트 로직</strong>: 노드 그래프 구조는 익스포트하지만 비주얼 스크립트 바이트코드 실행 흐름은 익스포트하지 않음</li>
|
|
<li><strong>바이너리 에셋</strong>: 바이너리 데이터 (메시, 텍스처, 오디오)는 익스포트할 수 없음</li>
|
|
<li><strong>복잡한 프로퍼티 타입</strong>: 일부 복잡한 UObject 프로퍼티는 객체 참조로만 익스포트될 수 있음</li>
|
|
<li><strong>대형 Blueprint</strong>: 수천 개의 노드가 있는 매우 큰 블루프린트는 익스포트에 상당한 시간이 걸릴 수 있음</li>
|
|
<li><strong>카테고리 필터</strong>: 현재 "WorldStalker" 카테고리만 C++ 프로퍼티를 추출 (필요시 코드 수정으로 다른 카테고리 추가 가능)</li>
|
|
</ol>
|
|
<h2 id="user-content-개발-히스토리" dir="auto">개발 히스토리</h2>
|
|
<h3 id="user-content-version-10-2025-10-23" dir="auto">Version 1.0 (2025-10-23)</h3>
|
|
<p dir="auto"><strong>초기 릴리스</strong>: 포괄적인 에셋 추출 기능을 갖춘 INI 기반 설정 시스템</p>
|
|
<p dir="auto"><strong>주요 기능</strong>:</p>
|
|
<ul dir="auto">
|
|
<li><span class="emoji" aria-label="check mark button">✅</span> Blueprint 커스텀 변수 (NewVariables) 완전 추출</li>
|
|
<li><span class="emoji" aria-label="check mark button">✅</span> C++ 부모 클래스 프로퍼티 추출 (Category = "WorldStalker")
|
|
<ul dir="auto">
|
|
<li>ActivationOrderGroup 등 중요 프로퍼티 지원</li>
|
|
</ul>
|
|
</li>
|
|
<li><span class="emoji" aria-label="check mark button">✅</span> 우클릭 컨텍스트 메뉴로 단일 에셋 빠른 익스포트</li>
|
|
<li><span class="emoji" aria-label="check mark button">✅</span> 진행 상황 로깅 (10개 에셋마다)</li>
|
|
<li><span class="emoji" aria-label="check mark button">✅</span> AnimMontage 커스텀 프로퍼티 추출</li>
|
|
<li><span class="emoji" aria-label="check mark button">✅</span> 이벤트 그래프 노드 연결 추출</li>
|
|
<li><span class="emoji" aria-label="check mark button">✅</span> INI 기반 영구 설정</li>
|
|
</ul>
|
|
<p dir="auto"><strong>주요 설계 결정</strong>:</p>
|
|
<ul dir="auto">
|
|
<li>반복 사용의 편의성을 위해 체크박스 UI 대신 INI 기반 설정 선택</li>
|
|
<li>버전 관리를 통한 팀 협업을 위한 UDeveloperSettings 통합</li>
|
|
<li>겹치는 폴더 경로로부터 중복 익스포트 방지를 위한 중복 검출</li>
|
|
<li>사람의 가독성과 LLM 처리를 위한 보기 좋은 JSON 형식</li>
|
|
<li>C++ 부모 클래스 프로퍼티 추출로 스킬 밸런스 분석 강화</li>
|
|
</ul>
|
|
<h2 id="user-content-지원" dir="auto">지원</h2>
|
|
<p dir="auto">이슈, 질문 또는 기능 요청:</p>
|
|
<ol dir="auto">
|
|
<li>본 README 및 MERGE_INSTRUCTIONS.md 확인</li>
|
|
<li>언리얼 에디터의 출력 로그에서 오류 메시지 검토</li>
|
|
<li>연락처: <a href="mailto:jinilkim@oneunivrs.com" data-markdown-generated-content="" rel="nofollow">jinilkim@oneunivrs.com</a></li>
|
|
</ol>
|
|
<h2 id="user-content-라이선스" dir="auto">라이선스</h2>
|
|
<p dir="auto">Copyright Epic Games, Inc. All Rights Reserved.
|
|
WorldStalker (DungeonStalkers) 프로젝트의 일부입니다.</p>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<footer class="page-footer" role="group" aria-label="Footer">
|
|
<div class="left-links" role="contentinfo" aria-label="About Software">
|
|
|
|
<a target="_blank" rel="noopener noreferrer" href="https://about.gitea.com">Gitea 제공</a>
|
|
|
|
|
|
버전:
|
|
|
|
1.24.2
|
|
|
|
|
|
|
|
페이지: <strong>344ms</strong>
|
|
템플릿: <strong>3ms</strong>
|
|
|
|
</div>
|
|
<div class="right-links" role="group" aria-label="Links">
|
|
<div class="ui dropdown upward">
|
|
<span class="flex-text-inline"><svg viewBox="0 0 16 16" class="svg octicon-globe" aria-hidden="true" width="14" height="14"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M5.78 8.75a9.64 9.64 0 0 0 1.363 4.177q.383.64.857 1.215c.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a10 10 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.51 6.51 0 0 0 4.666 5.5q-.184-.271-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948m-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948q.18-.295.353-.552a6.51 6.51 0 0 0-4.666 5.5m10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948q-.18.296-.353.552a6.51 6.51 0 0 0 4.666-5.5Zm2.733-1.5a6.51 6.51 0 0 0-4.666-5.5q.184.272.353.552c.714 1.192 1.436 2.874 1.58 4.948Z"/></svg> 한국어</span>
|
|
<div class="menu language-menu">
|
|
<a lang="id-ID" data-url="/?lang=id-ID" class="item ">Bahasa Indonesia</a>
|
|
<a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a>
|
|
<a lang="en-US" data-url="/?lang=en-US" class="item ">English</a>
|
|
<a lang="es-ES" data-url="/?lang=es-ES" class="item ">Español</a>
|
|
<a lang="fr-FR" data-url="/?lang=fr-FR" class="item ">Français</a>
|
|
<a lang="ga-IE" data-url="/?lang=ga-IE" class="item ">Gaeilge</a>
|
|
<a lang="it-IT" data-url="/?lang=it-IT" class="item ">Italiano</a>
|
|
<a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">Latviešu</a>
|
|
<a lang="hu-HU" data-url="/?lang=hu-HU" class="item ">Magyar nyelv</a>
|
|
<a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a>
|
|
<a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">Polski</a>
|
|
<a lang="pt-PT" data-url="/?lang=pt-PT" class="item ">Português de Portugal</a>
|
|
<a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">Português do Brasil</a>
|
|
<a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">Suomi</a>
|
|
<a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">Svenska</a>
|
|
<a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a>
|
|
<a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">Čeština</a>
|
|
<a lang="el-GR" data-url="/?lang=el-GR" class="item ">Ελληνικά</a>
|
|
<a lang="bg-BG" data-url="/?lang=bg-BG" class="item ">Български</a>
|
|
<a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">Русский</a>
|
|
<a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a>
|
|
<a lang="fa-IR" data-url="/?lang=fa-IR" class="item ">فارسی</a>
|
|
<a lang="ml-IN" data-url="/?lang=ml-IN" class="item ">മലയാളം</a>
|
|
<a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a>
|
|
<a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a>
|
|
<a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a>
|
|
<a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a>
|
|
<a lang="ko-KR" data-url="/?lang=ko-KR" class="item selected">한국어</a>
|
|
</div>
|
|
</div>
|
|
<a href="/assets/licenses.txt">Licenses</a>
|
|
<a href="/api/swagger">API</a>
|
|
|
|
</div>
|
|
</footer>
|
|
|
|
|
|
<script src="/assets/js/index.js?v=1.24.2" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script>
|
|
|
|
|
|
</body>
|
|
</html>
|
|
|