> 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는 또한 블록체인을 토지, 아바타, 자산 등의 소유권을 관리하는 방식으로 사용합니다.

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/avatars/avatar-animations.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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
