클라우드 마켓플레이스(Cloud Marketplace)로서의 상인 성장 시스템, Cloud Caravan 구축기
요약
Minecraft 내에서 클라우드 마켓플레이스 모델을 구현한 'Cloud Caravan' 시스템 구축기를 다룹니다. 상인 엔티티와 당나귀를 활용한 성장 시스템 설계와 인벤토리 동기화 관련 디버깅 경험을 공유합니다.
핵심 포인트
- 클라우드 계층(IaaS, PaaS, SaaS)을 게임 내 상인 시스템으로 매핑
- 거래 완료를 통해 프리미엄 아이템을 잠금 해제하는 엘리트 성장 모델 구현
- 커스텀 스폰 알을 통한 복합 엔티티(상인, 당나귀, 아이템) 생성 로직
- NBT를 활용한 당나귀 상자 인벤토리 확장 및 동기화 버그 해결
모든 클라우드 플랫폼에는 마켓플레이스 (Marketplace)가 있습니다. AWS에는 AWS Marketplace가 있고, Azure에도 자체적인 것이 있으며, GCP 또한 마찬가지입니다. 이곳은 스스로 구축할 수 없는 서비스를 제공하는 전문 벤더 (Vendors)를 찾는 곳이며, 더 많이 구매할수록 그들은 더 많은 것을 제안합니다.
우리는 이를 Minecraft에서 구현했습니다: Cloud Caravan Merchants. 전리품 상자를 실은 당나귀와 함께 이동하는 세 명의 전문 상인들로, 각각 5개의 기본 거래를 제공하며, 미션을 완료하면 엘리트 (Elite) 상인으로 진화하여 Elytra, Tridents, Totems of Undying을 포함한 프리미엄 거래를 잠금 해제합니다.
🎮 학습 관점: 엘리트 성장 시스템은 클라우드 마켓플레이스 벤더가 작동하는 방식을 반영합니다. 기본적인 제공 사항으로 시작하여, 당신이 진지한 고객임을 증명하고 (거래 완료), 엔터프라이즈 계층 (Enterprise-tier) 제품을 잠금 해제하는 방식입니다. 3가지 상인 유형은 클라우드 전문 분야에 매핑됩니다: 인프라 (Infrastructure - Packet Runner), 플랫폼 (Platform - Protocol Broker), 그리고 애플리케이션 계층 (Application layer - Quantum Courier).
3명의 상인 — 3개의 클라우드 계층
| 상인 | 색상 | 전문 분야 | 클라우드 계층 |
|---|---|---|---|
| Packet Runner | Cyan | 원자재 및 자원 | 인프라 (IaaS) |
| ... |
스폰 알 (Spawn Egg) — 전체 카라반 유닛
커스텀 스폰 알은 단순히 상인 한 명만 생성하지 않습니다. 전체 유닛을 생성합니다:
- 상인 엔티티 (Merchant entity, 커스텀 유형, 방랑 상인 모델)
- 당나귀 (Donkey, 길들여짐, 상자 포함)
- 상자 안의 전리품 (Loot in the chest, 전리품 테이블 (Loot table)을 통해)
- 당나귀와 상인을 연결하는 끈 (Leash)
@Override
public ActionResult useOnBlock(ItemUsageContext context) {
// 1. 상인 생성
...
당나귀 상자 버그 — 전쟁 이야기
재미있는 디버깅 이야기: 1.20.1 버전의 당나귀에는 items라고 불리는 SimpleInventory 필드가 있습니다. setHasChest(true)를 호출하면 인벤토리가 2개 슬롯(안장 + 갑옷)에서 17개 슬롯(+ 15개 상자 슬롯)으로 확장되어야 합니다. 하지만 이 확장은 인벤토리를 재생성하는 onChestedStatusChanged()에서 발생합니다.
인벤토리 크기가 제대로 조정되기
BEFORE(전)에 상자에 아이템을 넣으려고 하면 ArrayIndexOutOfBoundsException이 발생합니다. 스폰된
AFTER(후)에 넣으면 인벤토리가 아직 클라이언트에 동기화되지 않았을 수도 있습니다.
해결책: NBT를 통해 상자 내용물을 작성합니다. NBT 컴파운드(compound)에 ChestedHorse: true와 Items: [...]를 설정한 다음, readNbt()를 호출합니다. 이렇게 하면 엔티티가 올바른 크기와 이미 배치된 아이템을 가지고 인벤토리를 강제로 재구성하게 됩니다.
엘리트 성장 (Elite Progression) — 로열티 프로그램 (Loyalty Program)
5개의 기본 거래(매진될 때까지 사용)를 모두 완료하면 상인이 진화합니다:
기본 (거래 5회) → 엘리트 ★ (거래 7회) → 엘리트 ★★ (거래 9회) → 엘리트 ★★★ (거래 11회)
각 승급 시:
- 프리미엄 아이템이 포함된 2개의 새로운 거래 추가
- 상인의 이름이 별이 달린 금색으로 변경
- 불사의 토템 (Totem of Undying) 파티클 폭발 트리거
- 주변에 엔드 막대 (END_ROD) 파티클 추가
private void checkElitePromotion() {
int requiredTrades = 5 + (eliteLevel * 2);
if (completedTrades >= requiredTrades && eliteLevel < 3) {
...
엘리트 거래 (Elite Trades) — 프리미엄 바닐라 아이템
| 사이클 | 패킷 러너 (Packet Runner) | 프로토콜 브로커 (Protocol Broker) | 퀀텀 쿠리어 (Quantum Courier) |
|---|---|---|---|
| ★ | 양자 파편 (Quantum Shards), 망원경 (Spyglass) | 네더링크 플레이팅 (Netherlink Plating), 마법이 부여된 황금 사과 (Enchanted Golden Apple) | 배치된 룬 (Deployed Runes), 엔더의 눈 (Ender Eyes) |
| ... |
엔드게임 거래는 클라우드 크레딧 (Cloud Credits)과 희귀 재료를 대가로, 평소에 얻기 매우 어려운 아이템(겉날개 (Elytra), 삼차창 (Trident))을 제공합니다. 이는 클라우드 마켓플레이스의 프리미엄 티어입니다.
자연 스폰 (Natural Spawning) — 카라반의 도착
실제 시간으로 약 1시간마다, 무작위 플레이어로부터 48-96 블록 떨어진 곳에서 카라반이 스폰될 확률이 15% 있습니다:
private static void spawnCaravan(ServerWorld world, BlockPos pos, Random random) {
int caravanSize = 1 + random.nextInt(3); // 1, 2, 또는 3명의 상인
// 중복을 피하기 위해 유형을 섞음 (Shuffle)
...
전체 카라반(상인 3명)은 모든 전문화 분야에 한 번에 접근할 수 있게 해줍니다. 마치 클라우드 컨퍼런스처럼 모든 판매자가 한곳에 모여 있는 것과 같습니다.
디스폰 방지 (Never Despawn) — 지속 가능한 인프라
40분 후에 사라지는 바닐라(vanilla) 방랑 상인과 달리, Cloud Merchants는 영구적입니다:
this.setPersistent();
this.setDespawnDelay(Integer.MAX_VALUE);
한 번 상인을 발견(또는 스폰)하면, 그들은 영원히 머뭅니다. 그들은 여러분의 인프라(infrastructure)입니다. 여러분이 그들에게 투자했기에, 그들은 곁에 머뭅니다.
커스텀 텍스처 (Custom Textures) — 시각적 정체성
각 상인은 Python PIL을 사용하여 생성된, 색상이 변경된 방랑 상인 텍스처를 사용합니다:
def recolor(data, hue_shift):
"""스킨이 아닌 픽셀의 색조(hue)를 변경"""
for pixel in data:
...
- Packet Runner: 청록색(cyan) 색조 변경 (네트워킹)
- Protocol Broker: 주황색(orange) 색조 변경 (화염/보안)
- Quantum Courier: 보라색(purple) 색조 변경 (양자/마법)
룬 테이블 레시피 (Rune Table Recipes) — 모드 상호운용성 (Mod Interop)
또한 Rune Crafting Altar(Runes 모드 제공)를 위한 레시피를 추가했습니다:
| 룬 (Rune) | 제단 입력 (Altar Input) | 출력 (Output) | 절약 (Savings) |
|---|---|---|---|
| Packet | Cloud Shard + Redstone | ×2 | -1 Lapis, +1 출력 |
| ... |
이것이 모드 상호운용성(mod interop)입니다. 다른 모드의 제작(crafting) 시스템을 사용하여 대안적인 레시피를 제공하는 것이죠. 직접 구축하는 것보다 저렴한 제3자 서비스(third-party service)를 사용하는 것과 같습니다.
교훈 (Lessons Learned)
| 도전 과제 (Challenge) | 해결책 (Solution) |
|---|---|
| 당나귀 상자의 인벤토리 크기 | 직접적인 슬롯 접근 대신 NBT를 통해 아이템을 작성 |
| ... |
시리즈 마무리
8개의 포스트를 통해, 우리는 "AWS 서비스가 마인크래프트 검이라면 어떨까"라는 질문에서 시작하여 다음과 같은 기능을 갖춘 완전한 기술-마법 모드로 나아갔습니다:
- 고유 능력을 가진 7개의 클라우드 테마 검
- 9개의 주문서를 아우르는 28개의 주문 (spells)
- 세트 보너스가 있는 4개의 방어구 세트
- BFS 에너지 네트워크를 갖춘 멀티블록 기계 (Multiblock machines)
- Cloud Credits 경제를 갖춘 7개의 주민 직업
- 엘리트 진행도를 가진 3명의 Caravan 상인
- 650개 이상의 모드 팩과 완전한 호환성
이 모드는 개념을 직접 경험하게 함으로써 클라우드 컴퓨팅을 가르칩니다. 여러분은 오토 스케일링(Auto Scaling)에 대해 읽는 것이 아니라, 데미지 스택이 쌓이는 것을 느낍니다. 결함 허용(fault tolerance)을 공부하는 것이 아니라, 양자 방어구(Quantum Armor)로 공격을 피합니다. 서비스 티어(service tiers)를 암기하는 것이 아니라, 그것들을 통해 성장해 나갑니다.
이것이 바로 게임 기반 학습 (game-based learning)의 힘입니다. 그리고 우리는 이 모든 것을 AI를 부조종사 (co-pilot)로 활용하여 구축했습니다.
전체 모드(mod)는 GitHub에서 확인할 수 있습니다. 클론(Clone)하고, 빌드(build)하여, 플레이해 보세요.
저와 연결하기:
저는 Carlos Cortez입니다. 지금까지 _Breaking the Cloud_였습니다. 이 시리즈는 클라우드 (cloud)를 배우는 가장 좋은 방법은 그것을 직접 플레이하는 것임을 증명했습니다. 다음 모험에서 만나요! 🎮☁️⚔️
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기