editor
드릴 편집
선수·공·콘을 드래그해 배치하고, 메타 정보를 다듬은 뒤 DSL 로 내보냅니다.
원을 눌러 선택, 드래그해 이동. 파랑=공격, 빨강=수비, 주황=콘, 흰색=공, 회색=골대. 아래에서 무브의 경로 편집 을 켜면 자홍색 경유점을 캔버스에서 바로 끌 수 있습니다. 엔티티를 지우면 이를 참조하던 움직임도 함께 정리됩니다.
애니메이션 스텝
1
#1
#1
2
#1
#1
3
#1
DSL JSON 보기
{
"version": "0.1.0",
"meta": {
"title": "측면 돌파 후 크로스 마무리",
"ageGroup": "U-14",
"durationMin": 15,
"tags": [
"공격",
"측면",
"크로스",
"마무리"
],
"setup": "하프 코트. 측면 공격수 1명, 문전 공격수 1명, 수비 1명.",
"coachingPoints": [
"크로스 타이밍 전에 문전 침투를 맞춘다",
"니어/파 포스트 중 빈 곳을 노린다"
]
},
"field": {
"type": "soccer_half",
"orientation": "horizontal",
"showGrid": false
},
"entities": [
{
"kind": "player",
"id": "atk1",
"position": {
"x": 30,
"y": 82
},
"team": "attack",
"label": "11"
},
{
"kind": "player",
"id": "atk2",
"position": {
"x": 55,
"y": 45
},
"team": "attack",
"label": "9"
},
{
"kind": "player",
"id": "def1",
"position": {
"x": 78,
"y": 55
},
"team": "defense",
"label": "3"
},
{
"kind": "ball",
"id": "ball1",
"position": {
"x": 31,
"y": 83
}
},
{
"kind": "goal",
"id": "goal1",
"position": {
"x": 95,
"y": 50
},
"widthM": 7.32
}
],
"animation": {
"steps": [
{
"label": "11 측면 돌파(드리블)",
"moves": [
{
"target": "atk1",
"type": "dribble",
"easing": "spring",
"keyframes": [
{
"t": 1.1,
"position": {
"x": 76,
"y": 86
}
}
]
},
{
"target": "ball1",
"type": "dribble",
"easing": "spring",
"keyframes": [
{
"t": 1.1,
"position": {
"x": 77,
"y": 85
}
}
]
}
]
},
{
"label": "크로스, 9 문전 침투",
"moves": [
{
"target": "ball1",
"type": "pass",
"easing": "linear",
"keyframes": [
{
"t": 0.5,
"position": {
"x": 86,
"y": 50
}
}
]
},
{
"target": "atk2",
"type": "run",
"easing": "spring",
"keyframes": [
{
"t": 0.9,
"position": {
"x": 84,
"y": 49
}
}
]
}
]
},
{
"label": "9 헤더/발 마무리",
"moves": [
{
"target": "ball1",
"type": "shot",
"easing": "linear",
"keyframes": [
{
"t": 0.35,
"position": {
"x": 95,
"y": 50
}
}
]
}
]
}
],
"loop": false
}
}영상 만들기
2D: 스텝 자막·나레이션·인트로/아웃로 포함(보통 30~90초). 3D: 선수 캐릭터·골키퍼·나레이션 포함 — GPU 없는 서버라 수십 분 걸리는 배치 렌더입니다. 작업 ID가 나오면 탭을 닫아도 아래에서 그 ID로 결과를 받을 수 있어요(24시간 보관).