Files
DS-Combat_analy/분석도구/legacy/analyze_ge_blueprints.py
2025-10-27 17:04:37 +09:00

105 lines
3.0 KiB
Python

#!/usr/bin/env python3
"""
GameplayEffect Blueprint 분석
"""
import json
import sys
from pathlib import Path
def extract_ge_name(ge_path):
"""GE 경로에서 이름 추출"""
return ge_path.split('/')[-1].split('.')[0]
def analyze_ge_blueprint(ge_asset):
"""GE Blueprint에서 중요 정보 추출"""
asset_name = ge_asset.get('AssetName', '')
# Variables 섹션 찾기
variables = []
if 'Variables' in ge_asset:
for var in ge_asset['Variables']:
var_name = var.get('Name', '')
var_value = var.get('Value', '')
var_type = var.get('Type', '')
variables.append({
'name': var_name,
'value': var_value,
'type': var_type
})
# EventGraph 섹션에서 로직 확인
event_graphs = []
if 'EventGraphs' in ge_asset:
for graph in ge_asset['EventGraphs']:
graph_name = graph.get('Name', '')
event_graphs.append(graph_name)
return {
'name': asset_name,
'variables': variables,
'event_graphs': event_graphs
}
def main():
if len(sys.argv) < 3:
print("사용법: python analyze_ge_blueprints.py <Blueprint.json> <ultimate_ge_list.json>")
sys.exit(1)
bp_path = Path(sys.argv[1])
ge_list_path = Path(sys.argv[2])
# GE 목록 로드
with open(ge_list_path, 'r', encoding='utf-8') as f:
ge_data = json.load(f)
target_ge_classes = ge_data['all_ge_classes']
target_ge_names = [extract_ge_name(ge) for ge in target_ge_classes]
print(f"Blueprint 로딩 중: {bp_path} (24MB, 시간 소요)")
with open(bp_path, 'r', encoding='utf-8') as f:
bp_data = json.load(f)
assets = bp_data.get('Assets', [])
print(f"{len(assets)}개 Blueprint Assets 로드 완료")
print("\n" + "=" * 100)
print("GameplayEffect Blueprint 상세 분석")
print("=" * 100)
results = {}
for target_name in target_ge_names:
# Blueprint에서 GE 찾기
ge_asset = next((a for a in assets if a.get('AssetName', '') == target_name), None)
if not ge_asset:
print(f"\n{target_name}")
print(f" → Blueprint에서 찾을 수 없음")
continue
analysis = analyze_ge_blueprint(ge_asset)
results[target_name] = analysis
print(f"\n{target_name}")
if analysis['variables']:
print(f" Variables: {len(analysis['variables'])}")
for var in analysis['variables']:
print(f" - {var['name']} ({var['type']}): {var['value']}")
else:
print(f" Variables: 없음")
if analysis['event_graphs']:
print(f" EventGraphs: {', '.join(analysis['event_graphs'])}")
# 결과 저장
output_file = ge_list_path.parent / "ge_blueprint_analysis.json"
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print(f"\n\n분석 결과 저장: {output_file}")
if __name__ == "__main__":
main()