메이플스토리 월드 강의
무한 점프맵 만들기
메이플스토리 월드로 끝없이 위로 올라가는 점프 게임을 처음부터 출시까지 만듭니다. 글만 읽어도 따라 할 수 있게 그림과 코드를 함께 실었습니다.

전체 글
1화무엇을 만들고 무엇을 배우나메이플스토리 월드로 끝없이 위로 올라가는 무한 점프맵을 처음부터 만듭니다. 첫 글에서는 완성된 게임의 규칙과 장애물, 탑이 끝없이 이어지는 원리, 메이플스토리 월드가 게임 만들기를 쉽게 해 주는 이유, 준비물과 강의 흐름을 정리합니다.2화손으로 탑 1층코드 없이 새 월드를 만들고, 발판 일곱 개와 시작점을 손으로 놓아 탑 1층을 완성합니다. 캐릭터가 얼마나 뛸 수 있는지에 맞춰 발판 사이를 정하고, 떨어지면 시작점으로 돌아오는 기본 동작과 맵 경계도 살펴봅니다.3화첫 코드로 계단 만들기첫 스크립트를 만들고, 테이블과 반복문으로 발판 일곱 개를 계단 모양으로 옮깁니다. 실행 중에 옮긴 발판을 밟으려면 무엇이 필요한지, 움직이는 발판만 있을 때 맵 경계를 어떻게 정하는지도 함께 다룹니다.4화무작위로 층 만들기캐릭터의 점프 거리를 재서 발판 사이 규칙을 정하고, 무작위 함수로 실행할 때마다 모양이 달라지는 층을 만듭니다. ServerOnly 를 빼 보면서 무작위처럼 결과가 달라지는 일을 왜 서버 한 곳에서 정해야 하는지도 확인합니다.5화층 끝에서 위층으로한 층짜리 맵을 세 층짜리 탑으로 키웁니다. 층을 만드는 코드를 함수로 묶어 세 번 부르고, 메이플의 포탈을 우리만의 출구로 고친 뒤, 출구에 닿으면 서버가 플레이어를 위층으로 옮기게 합니다.6화서버와 클라이언트플레이어가 지금 몇 층에 있는지 기억하게 만듭니다. DefaultPlayer 에 층 번호를 담는 컴포넌트를 붙이고, 위층으로 옮기는 일을 플레이어에게 맡긴 뒤, 서버에서 바뀐 값이 내 화면(클라이언트)까지 어떻게 오는지 Sync 로 확인합니다.7화게임오버발을 헛디뎌 떨어지면 탑 1층부터 다시 시작하게 만듭니다. 층 바닥 아래에 보이지 않는 선을 두고 서버의 OnUpdate 에서 매번 확인하며, 순간이동한 위치가 서버에 늦게 도착할 때 생기는 문제까지 미리 막습니다.8화화면에 층 표시지금 몇 층인지 화면 위쪽 가운데에 글자로 보여 줍니다. UI 편집기에서 글자를 올려 앵커와 PosY 로 자리를 잡고, 화면에 하나뿐인 글자는 Logic 으로 맡기며, UI 가 클라이언트에만 있으니 OnUpdate 를 ClientOnly 로 바꿔 내 플레이어의 층을 읽어 옵니다.9화게임오버 알림떨어졌을 때 몇 층까지 올랐는지, 떨어진 그 사람의 화면에만 알려 줍니다. UI 편집기에서 바탕 판과 글자 두 줄로 알림을 만들고, Enable 과 SetTimerOnce 로 띄웠다가 감추며, 실행 공간 Client 와 UserId 로 서버가 그 사람의 클라이언트에서만 알림을 띄우게 합니다.10화최고 기록 저장내가 오른 가장 높은 층을 최고 기록으로 남기고, 게임을 껐다 켜도 그대로 남게 만듭니다. 기록만 맡는 TowerRecord 를 만들어 화면에 최고 몇 층인지 띄우고, 데이터 스토리지에 SetAsync 로 저장한 뒤 들어올 때 GetAndWait 로 불러옵니다. 처음 들어온 사람은 오류 없이 빈 값이 온다는 함정도 직접 틀려 보고 고칩니다.11화난이도탑을 오를수록 어려워지게 만듭니다. 층마다 어려움을 0 에서 1 사이의 숫자 하나로 계산하고, 그 숫자로 짧은 발판이 나올 확률과 틈의 너비를 정합니다. 길이가 다른 발판 사이의 거리를 다시 계산하고, 틈의 한계는 그대로 둔 채 가장 좁은 틈을 올립니다. 마지막으로 숫자들을 Property 로 꺼내 Maker 에서 바로 난이도를 바꿔 봅니다.12화무한세 층뿐이던 탑을 몇 층이든 오를 수 있게 만듭니다. 쓰지 않는 발판을 종류별 창고에 모아 두고, 층을 만들 때 꺼내 쓰고 치울 때 돌려놓습니다. 사람마다 그 사람의 층과 바로 위층만 남기고 아무도 없는 층은 치우며, 위층으로 오를 때와 떨어질 때마다 층을 다시 정리합니다. 발판 마흔두 개로 끝없는 탑이 됩니다.13화움직이는 발판좌우로 오가는 판자 발판을 만듭니다. 서버가 판자의 위치를 매 프레임 조금씩 바꾸고, 사인 값에 움직이는 폭을 곱해 가운데를 기준으로 부드럽게 오가게 합니다. 판자를 창고에 넣어 3층부터 층마다 하나씩 섞어서 깔고, 움직이는 폭만큼 더 띄워 놓아서 기다렸다 뛰면 언제나 건널 수 있게 만듭니다.14화함정 가시첫 번째 함정인 가시를 만듭니다. 캐릭터 몸을 감싼 트리거 상자로 판정하면 작은 가시도 뛰어넘기 어려워서, 발끝 한 점이 가시 영역 안에 들어오는지를 서버가 매 프레임 확인합니다. 가시도 창고에 넣어 4층부터 긴 발판 위에 하나씩 깔고, 층을 치울 때는 다른 조각과 함께 창고로 돌아가게 합니다.15화함정 불꽃켜졌다 꺼졌다 하는 두 번째 함정, 불꽃을 만듭니다. 가시에 쓴 Trap 스크립트를 그대로 붙이고, TrapBlinker 로 1.5초마다 색의 또렷함을 바꿔 깜빡이게 합니다. 시간은 서버가 재고 서버가 바꾼 색이 모든 화면에 전해지며, 켜져 있을 때만 게임오버가 됩니다. 불꽃도 창고에 넣어 5층부터 짧은 발판 위에 하나씩 깔고, 겹친 그림의 앞뒤를 정하는 OrderInLayer 도 다룹니다.