> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-ko/sdk7/designing-the-experience/design-games.md).

# 게임 디자인

Decentraland용 게임을 디자인할 때 염두에 두어야 할 사항

이 문서는 Decentraland용 게임을 설계할 때 고려해야 할 몇 가지 핵심 사항을 다룹니다. 다른 씬과의 인접성, LAND의 분산 소유권과 같은 요소는 Decentraland를 독특한 장소로 만들며, 이전 게임에서 가졌을 수 있는 가정을 다시 생각해 보게 만듭니다.

예를 들어, 다른 게임 플랫폼과 달리 Decentraland의 게임은 고립된 상태로 존재하지 않는다는 점을 이해해야 합니다. 인접한 씬에 무엇이 있는지 통제할 수 없고, 플레이어의 아바타나 다른 게임에서 가져올 수 있는 아이템과 같은 특정 세부 사항도 제어할 수 없습니다. 이는 흥미로운 가능성의 문을 열어 주며, 게임 메커니즘을 다른 방식으로 생각하도록 요구합니다.

현재 주류 게임에서 가장 비슷한 것은 Roblox로, 커뮤니티 사용자가 생성한 콘텐츠가 다른 사람들이 탐험하고, 플레이하고, 상호작용할 수 있는 만남의 장소가 될 수 있습니다. Roblox와 달리, Decentraland에서는 서로 무관한 경험들의 메뉴를 둘러보는 방식이 아니라, 모든 씬이 서로 인접해 있는 지형을 직접 탐험하며 이동합니다. 또한 Decentraland는 블록체인을 사용해 토지, 아바타, 자산 등의 소유권을 관리합니다.

SDK는 계속 개선되고 있으므로, 아래의 일부 제한 사항은 향후 업데이트에서 제거될 수 있습니다.

## 씬 경계

**당신의 게임은 \_LAND 안에 완전히 들어가야 합니다**\_\*\*씬이 구축된 기반입니다.\*\* 작은 씬의 경우, 축구 같은 게임을 생각해 보세요. 플레이어가 경기장 밖으로 나갈 수 있더라도, 게임의 규칙이 관련 상호작용을 제한된 공간 안에 유지합니다. 플레이어는 씬의 경계를 벗어나 걸어갈 수 있지만, 씬에 속한 모든 자산이나 엔티티는 씬 안에 남아 있어야 합니다.

씬 밖으로 나간 플레이어도, 가시 범위 안에 있는 한 계속해서 씬이 렌더링됩니다. 너무 멀리 가면 렌더링이 완전히 중지됩니다.

또한 플레이어에게는 알려지지 않은 여러 개의 분리된 토지 구획 전체에 걸쳐 퍼지는 게임을 만들 수도 있으며, 이 경우 세계의 나머지 부분을 탐험하는 것이 게임플레이의 일부가 됩니다. 그런 게임은 여러 개의 별도 *씬*으로 구성되며, 서버를 통해 서로 데이터를 공유할 수 있습니다.

당신의 게임이 [Decentraland World](https://github.com/decentraland/docs/tree/main/creator/worlds/about.md)에 게시된다면, 플레이어가 씬 경계 밖에서 보는 것에 대해 더 많은 통제권을 가질 수 있습니다. 월드는 보통 잔디, 나무, 바다로 이루어진 자동 생성 풍경으로 둘러싸여 있지만, [이 풍경을 비활성화](/creator/content-creator-ko/sdk7/kinds-of-projects/scene-metadata.md#landscape-terrain) 할 수 있습니다. 예를 들어, 열린 물 위나 우주에서 진행되는 게임처럼 게임의 배경과 충돌하는 경우입니다.

### 사용자 인벤토리

**현재는 플레이어가 씬 사이를 이동할 때 게임 아이템을 보관할 수 있는 인벤토리가 없습니다.** 현재 사용할 수 있는 대안은 다음과 같습니다:

* 인벤토리 정보를 씬 자체에 저장하고 각 플레이어의 Ethereum 주소(영구 ID로 사용할 수 있음)에 연결할 수 있습니다. 이 정보는 당신의 씬에서만 읽을 수 있습니다.
* 외부의 맞춤형 저장소를 사용하고 모든 씬을 거기에 동기화할 수 있습니다. 이 방법은 더 많은 플레이어 수를 처리할 수 있는 더 견고한 해결책입니다. 또한 당신이나 다른 사람이 소유한 여러 개의 별도 씬에서 이 인벤토리에 대한 접근을 확장할 수도 있습니다.
* 블록체인 토큰을 사용해 아이템의 소유권을 처리합니다.

게임 아이템을 획득할 때, 플레이어의 Ethereum 지갑에 특별한 토큰으로 저장될 수 있습니다. 해당 토큰을 보유한 플레이어가 당신의 씬에 들어오면, 당신의 씬은 그 플레이어에게 게임 내에서 특정 특성을 부여할 수 있습니다.

다른 씬도 같은 토큰에 서로 다른 방식으로 반응할 수 있으며, 이는 게임 간 흥미로운 상호작용을 만들어 낼 수 있습니다.

인벤토리 아이템을 저장하는 데 블록체인을 사용하는 단점은 모든 거래에 플레이어의 비용이 들고 즉시 처리되지 않는다는 점입니다. 블록체인에 대해서는 아래의 별도 섹션에서 더 읽어볼 수 있습니다.

향후 출시에서는 플레이어가 어디든 가지고 다니는 인벤토리를 갖게 되며, 여기에는 온체인 및 오프체인 자산이 모두 포함됩니다.

### 휴대형 경험

{% hint style="info" %}
**💡 팁**: 참고 [휴대형 경험](/creator/content-creator-ko/sdk7/kinds-of-projects/portable-experiences.md) 및 [스마트 웨어러블](/creator/content-creator-ko/sdk7/kinds-of-projects/smart-wearables.md) 이것들을 만드는 방법은 여기서 확인하세요.
{% endhint %}

휴대형 경험은 플레이어가 메타버스를 이동하면서 함께 가져가는 게임플레이의 일부입니다. 이는 토지 구획에 묶여 있지 않으며, 때로는 토큰에 연결되기도 하고, 때로는 탐험가에 의해 실행되기도 합니다. 예를 들어, 플레이어가 당신의 씬에서 눈덩이를 가져가 다른 씬으로 걸어간 뒤, 같은 게임을 하고 있는 다른 플레이어에게 그 눈덩이를 던질 수 있습니다.

스마트 웨어러블은 착용 가능한 토큰에 연결되어 있으며, 플레이어가 해당 옷을 입으면 활성화되는 휴대형 경험의 한 종류입니다. 스마트 웨어러블은 플레이어에게 날 수 있게 해 주는 제트팩처럼 새로운 능력을 부여할 수도 있고, 제네시스 시티 전체에 걸쳐 수집할 수 있는 코인을 무작위로 배치하는 것처럼 세계의 나머지 부분 위에 새로운 콘텐츠 층을 추가할 수도 있습니다.

플레이어가 당신의 씬에서 다른 사람의 휴대형 경험을 사용하고 있을 수도 있다는 점을 염두에 두세요. 현재 플레이어가 어떤 휴대형 경험을 활성화했는지 확인하는 방법은 [사용자 데이터](/creator/content-creator-ko/sdk7/interactivity/user-data.md#get-portable-experiences) 를 참고하세요.

## 게임 지속성

**Decentraland는 지속적인 세계이므로, 플레이어는 언제든지 당신의 씬을 방문할 수 있습니다.** 씬에는 시작 단계나 종료가 없으므로, 언제 들어오거나 나가도 플레이에 참여할 수 있도록 게임 메커니즘을 설계해야 합니다.

씬을 초기 상태로 되돌리는 리셋 메커니즘을 둘 수 있지만, 이미 플레이 중인 플레이어의 게임을 방해하지 않도록 주의해야 합니다.

### 씬 상태 동기화

**기본적으로 씬 상태는 플레이어 간에 공유되지 않습니다.** 각 플레이어는 씬의 자신의 로컬 복사본을 실행합니다. 이것은 씬을 만드는 가장 간단한 방법이지만, 소셜 경험에는 이상적이지 않습니다.

플레이어 간에 상태를 공유하는 가장 쉬운 방법은 `syncEntity` 함수 안에서 실행하면 됩니다. 자세한 내용은 [서버리스 멀티플레이어](/creator/content-creator-ko/sdk7/networking/serverless-multiplayer.md). 이 접근 방식에서는 상태 변경이 어디에도 저장되지 않습니다. 현재 씬 근처에 있는 플레이어가 없어 로드 중인 사람이 없다면, 다음에 로드될 때 씬은 기본 상태로 초기화됩니다.

**서버를 사용해 씬에 대한 정보를 저장하고 모든 플레이어를 거기에 동기화할 수도 있습니다.** 이렇게 하면 근처에 플레이어가 없을 때도 씬 상태가 일관되고 지속적으로 유지되며, 변경 사항을 검증하여 플레이어가 속이지 못하도록 할 수 있습니다. 권장되는 옵션은 [멀티플레이어 서버](/creator/content-creator-ko/sdk7/networking/authoritative-servers.md)를 사용하는 것입니다. Decentraland가 이를 호스팅하고 씬 게시의 일부로 배포해 줍니다. 또한 [자체 서버](/creator/content-creator-ko/sdk7/networking/third-party-servers.md)를 호스팅할 수도 있으며, 이를 통해 보안 토큰과 같은 특정 정보를 서버에만 보관하고 외부에 노출하지 않을 수 있습니다.

### 게임 타이밍

**기본 통신 아키텍처를 사용하는 게임은 플레이어 간에 지연이 있을 수 있다는 점을 고려해야 하며,** 서로 다른 플레이어의 행동 사이에 빠른 반응을 전제로 해서는 안 됩니다. 턴제 게임이나 주로 플레이어 대 환경 상호작용에 기반한 게임을 권장합니다.

플레이어 간 행동의 타이밍이 중요한 게임, 예를 들어 1인칭 슈팅 게임의 경우, 씬의 모든 플레이어 사이에서 실시간 권위 있는 진실의 원천으로 작동하는 자체 서버를 구현해야 합니다.

## 씬의 플레이어

**플레이어는 Decentraland에서 자신의 Ethereum 지갑 주소를 사용해 식별됩니다.** 이 지갑은 플레이어가 소유한 모든 토큰과 이미 연결되어 있는 영구 ID로 사용됩니다.

**현재 Decentraland에 동시에 몇 명의 플레이어가 있을 수 있는지 제한하는 방법은 없습니다.** 별도의 서버에서 서로 다른 게임 세션이 호스팅될 수 있는 다른 많은 게임과 달리, 적어도 지금은 모든 플레이어가 공유하는 Decentraland의 인스턴스는 하나뿐입니다.

언제든지 여러 플레이어가 당신의 씬을 돌아다니고 있을 수 있다는 점을 염두에 두어야 합니다. 그중 일부는 지나가는 중일 뿐 게임에 참여하지 않을 수도 있습니다. 게임 메커니즘이 이런 상황에 쉽게 방해받지 않도록 하세요.

**당신의 씬의 게임 루프는 플레이어에게 직접적인 영향을 줄 수 없습니다**씬은 플레이어의 행동에 대해 반응적인 접근 방식을 취합니다. 플레이어가 엔티티 위에 서 있고 그 엔티티가 움직이거나 회전하면, 플레이어도 그 엔티티와 함께 이동합니다. 이는 엘리베이터, 떠 있는 플랫폼 등에 특히 유용합니다.

씬의 소유자로서, 문제가 있는 플레이어를 강제로 밀어내거나 씬 밖으로 텔레포트시킬 수는 없습니다. 그러나 시그널링 서버에서는 플레이어를 블랙리스트에 올릴 수 있습니다. 또한 씬의 코드에 블랙리스트를 구현하여 블랙리스트에 오른 플레이어에게 특정 서비스를 거부할 수도 있습니다.

## 씬 콘텐츠 제한

**코드의 효율성을 매우 신중하게 고려하여 씬을 제작하세요.** Decentraland는 웹 브라우저와 모바일 기기에서 실행되어야 하며, 플레이어는 메타버스를 이동하면서 동시에 여러 씬을 렌더링하게 됩니다.

**씬을 가볍게 유지하려고 노력해야 합니다.** 같은 텍스처와 자산이 넓은 오픈 월드 전반에 걸쳐 편리하게 반복되는 다른 온라인 게임과 달리, Decentraland에서는 각 씬이 완전히 다른 자산 집합을 가질 수 있습니다. 플레이어가 여러 씬을 이동할 때는 텍스처, 사운드 파일 등을 포함한 씬 콘텐츠 전체를 합리적인 속도로 다운로드할 수 있어야 합니다.

이 때문에 과도한 컴퓨팅 자원 사용을 방지하기 위해 몇 가지 제한을 두었습니다. 이러한 제한이 무엇인지에 대한 자세한 내용은 [씬 제한 사항](/creator/content-creator-ko/sdk7/optimizing/scene-limitations.md) 를 참조하세요.

## 씬 접근성

**Decentraland의 지도는 도로와 공공 광장이 있도록 설계되어 있으며,** 이것들은 다른 사람들이 무엇을 만들든 상관없이 지도의 여러 부분에 쉽게 접근할 수 있도록 보장합니다. 어떤 도로나 광장과도 인접하지 않은 토지 구획은 인접한 씬들에 의해 막힐 위험이 있지만, 대부분의 씬은 걸어서 이동할 수 있고 다른 씬을 가로막지 않을 것으로 예상합니다.

새 플레이어는 지도의 중앙에 있는 Genesis Plaza에서 경험을 시작하게 되며, 여기서 몇 가지 튜토리얼 활동을 따라 한 뒤 세계를 탐험하도록 유도됩니다.

플레이어는 Decentraland 지도에서 특정 좌표의 URL을 직접 입력해 해당 위치로 스폰할 수도 있습니다. 초기 좌표가 하드코딩된 URL 링크를 공유할 수도 있습니다.

플레이어가 벽으로 막히거나 지형보다 낮은 위치에서 시작하면 좋은 경험이 되지 않는다는 점을 기억하세요. 이를 피하기 위해, 당신의 씬에서 스폰하기에 안전한 특정 위치 집합을 정의할 수 있는 방법이 있습니다. [씬 메타데이터](/creator/content-creator-ko/sdk7/kinds-of-projects/scene-metadata.md) 를 참고하세요.

플레이어는 지도와 인기 위치 및 이벤트 목록을 사용해 세계를 빠르게 탐색할 수도 있습니다. 당신의 씬에는 플레이어를 세계의 다른 부분으로 이동시키는 텔레포트도 포함할 수 있습니다. [텔레포트](/creator/content-creator-ko/sdk7/interactivity/external-links.md#teleports).

## 사용자 UI

**플레이어가 Decentraland에 들어올 때 보게 되는 기본 오버레이 UI에는 핵심 요소만 포함되어 있습니다.** 플레이어가 당신의 씬에 있는 동안 이 UI에 추가 요소를 넣을 수 있습니다. Decentraland 기본 UI는 당신의 씬의 모든 요소 위에 표시된다는 점을 기억하고, UI가 이것과 겹치지 않도록 설계하세요.

플레이어가 씬 밖으로 나가면 다른 씬에 간섭하지 않도록 모든 UI 요소가 제거됩니다. 또한 플레이어는 화면에서 씬의 모든 UI 요소를 끄는 버튼을 사용할 수 있는데, 이는 주로 플레이어의 시야 전체를 가리려는 씬의 악용 행위를 방지하는 데 유용합니다.

## Physics

SDK가 엔티티를 위한 완전한 물리 엔진을 제공하지는 않는다는 점을 기억하세요. 플레이어의 아바타에 힘과 임펄스를 적용할 수 있습니다. 자세한 내용은 [플레이어 물리](/creator/content-creator-ko/sdk7/interactivity/player-physics.md)를 참고하세요. 충돌이나 중력 같은 엔티티 간 물리 효과는 라이브러리를 가져오거나 직접 코드를 작성해 구현할 수 있습니다.

## 컨트롤러 입력

**당신의 게임 조작은 SDK가 지원하는 입력 동작 집합으로 제한되어야 합니다**: 이동 키, 점프, 포인트 앤 클릭, 기본(E) 및 보조(F) 버튼, 그리고 번호가 매겨진 동작 버튼(1\~4)입니다. 이러한 입력은 물리적 키에서 추상화되어 있으므로 모바일 앱의 화면 조작이나 다른 기기에도 매핑될 수 있습니다. 모두가 키보드를 가지고 있다고 가정하지 마세요. 전체 목록은 [포인터 버튼](/creator/content-creator-ko/sdk7/interactivity/button-events/click-events.md#pointer-buttons) 를 참고하고, [모바일에서의 입력](/creator/content-creator-ko/build-for-mobile/develop/input-on-mobile.md) 모바일 플레이어를 대상으로 할 때 무엇을 우선해야 하는지는

이 모든 입력은 전역 *버튼 업* 및 *버튼 다운* 이벤트와, 엔티티가 플레이어의 조준선 안에 있었는지 식별할 수 있게 해 주는 히트 이벤트를 모두 지원합니다.

## 아바타

**플레이어는 다양한 착용 아이템 카탈로그를 통해 자신의 아바타를 만들 수 있습니다**여기에는 Decentraland Marketplace에서 커뮤니티 제작자가 만들고 판매한 착용 아이템도 포함됩니다. 당신의 씬은 플레이어가 무엇을 입고 있는지 읽고 그것에 반응할 수 있습니다. 자세한 내용은 [사용자 데이터](/creator/content-creator-ko/sdk7/interactivity/user-data.md#get-player-data).

## 플레이어 간 커뮤니케이션

**플레이어는 서로 채팅하고, 음성 채팅으로 대화하며, 이모트를 재생해 바디랭귀지를 전달할 수 있습니다** 예를 들어 춤추기, 박수치기, 손 흔들기 등이 있으며, 커뮤니티 제작자가 판매한 이모트도 포함됩니다.

당신의 씬은 플레이어가 이모트를 사용할 때 이를 감지할 수 있고, 플레이어의 아바타가 애니메이션을 재생하도록 만들 수도 있습니다. 자세한 내용은 [플레이어가 애니메이션을 재생함](/creator/content-creator-ko/sdk7/interactivity/event-listeners.md#player-plays-animation) 및 [이모트 트리거](/creator/content-creator-ko/sdk7/interactivity/player-avatar.md).

## 게임 알림

**현재 씬 간 알림 시스템은 없습니다.** 현재 씬 밖에 표시되는 알림이 필요한 게임은 외부 서비스를 사용해 이를 구현해야 합니다.

## 블록체인 사용

**Decentraland에서는 블록체인을 소유권 정보를 저장하는 데 사용합니다.** 현재 이는 주로 LAND 소유권을 의미하지만, 게임 아이템, 착용 아이템, 특별 아바타, 이모트, 그리고 특정 게임 특권이나 게임 접근을 보장할 수 있는 토큰의 소유권에도 사용할 수 있습니다.

블록체인은 게임 상태, 플레이어 위치 또는 실시간으로 변경되어야 하는 어떤 것도 저장하는 데 사용되지 않습니다.

### LAND와 MANA

**플레이어는 메타버스에 참여하기 위해 토지 구획을 소유할 필요가 없습니다.** 사실 대다수의 플레이어는 소유하지 않을 것입니다. 플레이어 아바타와 그들이 소유한 LAND 토큰은 어떤 직접적인 방식으로도 연결되어 있지 않습니다.

**플레이어가 Decentraland에 들어오기 위해 미리 Ethereum 지갑이나 MANA 토큰을 소유하고 있을 필요는 없습니다.** 게임플레이가 토큰 소유에 크게 의존한다면 대부분의 플레이어를 배제하게 됩니다. 프리미엄 게임 모델은 두 사용자층 모두에 맞추는 이상적인 방법이 될 수 있습니다.

### 기타 NFT

**특수한 대체 불가능 토큰(NFT)을 사용해 게임 아이템, 맞춤 아바타 또는 착용 아이템을 나타낼 수 있습니다.** 플레이어가 이러한 토큰 중 하나를 소유하고 있다면, 당신의 씬은 그것에 서로 다른 방식으로 반응할 수 있습니다.

NFT가 무엇인지에 대해서는 [이 블로그 글](https://decentraland.org/blog/technology/what-are-nfts/).

### 인게임 거래

**당신의 씬은 플레이어가 토큰을 구매하거나 획득할 수 있도록 블록체인 거래를 지원할 수 있습니다.**

블록체인 거래는 즉시 이루어지지 않으며, 검증 시간이 필요하고 Ether 비용이 듭니다. 시간과 비용은 모두 현재 네트워크 사용량에 따라 달라집니다.

Decentraland는 Polygon 사이드체인을 사용하여 Ethereum 네트워크보다 더 빠르고 저렴하게 거래를 처리합니다. 이 사이드체인은 게임 내 거래에 이상적이며, 변경 사항이 더 실시간에 가깝게, 그리고 매우 낮은 비용으로 발생할 수 있습니다. 보안이 더 중요하고 더 많은 비용과 시간이 들더라도 감당할 수 있는 거래에는 여전히 메인 Ethereum 체인을 사용하는 것이 권장됩니다. 자세한 내용은 [2계층](/creator/content-creator-ko/sdk7/blockchain/second-layer.md).

플레이어는 항상 자신의 Ethereum 클라이언트에서 이러한 거래를 명시적으로 승인해야 합니다. 예를 들어 Metamask를 사용할 때 Metamask는 거래가 처리되기 전에 각 거래를 수락하도록 플레이어에게 요청합니다.

플레이어는 또한 특정 주소에서 요청하거나 특정 조건 내에서 이루어지는 모든 거래를 자동으로 승인하는 계약에 서명할 수 있어, 거래 승인으로 인한 중단을 피할 수 있습니다.

스마트 계약을 사용해 맞춤 조건에 따라 거래를 조건화할 수도 있습니다. 예를 들어 플레이어가 게임 결과에 베팅을 걸고, 결과가 알려지는 즉시 해당 지급이 자동으로 이루어지게 할 수 있습니다.

씬 코드에 블록체인 상호작용을 구현하려면 Ethereum 네트워크와 연동하는 외부 라이브러리를 사용해야 합니다. SDK의 향후 출시에서는 이러한 기능을 더 간단한 방식으로 제공하는 맞춤형 API가 포함될 예정입니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-ko/sdk7/designing-the-experience/design-games.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
