minecraft-guide

왜 폴리아를 쓰지 않는가 by Irochi

시작하기 전에. 폴리아가 뭔가요?

Folia, 즉 폴리아는 우리가 흔히 아는 Paper 버킷을 만든 곳에서 새로 개발 중인 완전히 별개의 버킷입니다.
지금까지는 불가능하다고 여겨졌던 “멀티스레딩”을 마인크래프트 자바 서버에 도입한다고 알려지면서, 서버계의 미래로 각광받고 있는 프로젝트이죠.

멀티스레딩이 되는 거면 무조건 좋은 거 아닌가요?

안타깝게도 폴리아가 말하는 멀티스레딩은 여러분이 생각하는 그런 만능의 물건이 아닙니다.
폴리아는 마인크래프트가 가진 싱글스레딩의 근본적인 문제를 전혀 해결하지 못했습니다.
이건 서버 버킷을 만드는 쪽에서 해결할 수 있는 문제가 아니라, 마인크래프트를 개발한 모장(Mojang)마이크로소프트(Microsoft)가 근본적으로 해결해야 할 문제입니다.

그럼 폴리아가 말하는 멀티스레딩은 뭔가요?

폴리아는 여기에 “구역화 멀티스레딩”이라는 이름을 붙였습니다.

마인크래프트 월드에 플레이어가 등장하면, 그때부터 월드가 “움직이기” 시작합니다.
주변의 동물들이 반응하고, 몬스터가 스폰되며, 레드스톤 기계가 작동하죠.
하지만 이 모든 일은 플레이어 주변에서만 일어납니다.

마인크래프트 월드는 매우 넓고, 이 전체를 동시에 돌아가게 만드는 것은 웬만한 슈퍼컴퓨터로도 불가능할 겁니다.
그래서 마인크래프트는 플레이어가 볼 수 있는 거리, 즉 “시야 범위” 안에서만 월드가 움직이고, 그 바깥은 멈춰 있는 식으로 돌아가는 것이죠.

폴리아의 “구역화” 개념은 여기에서 출발합니다.
서로 멀리 떨어져 있어서 시야가 겹치지 않는 두 플레이어가 있을 경우, 기존처럼 메인 스레드 하나에서 처리하는 대신 각 플레이어의 구역을 각각의 스레드에서 처리하는 방식입니다.
즉, 서로 간섭이 없으니 분리해서 계산할 수 있는 거죠.
쉽게 말하면 “한 서버 안에 작은 서버 여러 개가 있는 느낌”입니다. 서로 보거나 상호작용은 할 수 없지만, 여전히 같은 서버에 속해 있는 셈이죠.

하지만 두 플레이어가 점점 가까워져 시야 범위가 겹치기 시작하면, 그 구역은 다시 하나의 스레드로 합쳐집니다.
결국 마인크래프트의 싱글스레드 한계는 그대로여서, 겹치는 영역은 따로 계산할 수 없기 때문입니다.

그럼 폴리아는 플레이어가 멀리 떨어져 있을 때만 효과가 있는 건가요?

맞습니다.
폴리아는 플레이어 간의 상호작용이 거의 없는 상황에서 가장 효과가 좋습니다.
그래서 폴리아의 공식 소개에서도 가장 좋은 예시로 스카이블럭(Skyblock) 서버를 들고 있습니다.
스카이블럭은 각자의 섬에서 혼자 혹은 소수의 친구와만 플레이하고, 다른 섬과의 상호작용이 거의 없기 때문이죠.

폴리아의 구역화 멀티스레딩은 분명 매우 혁신적인 개념입니다.
일반적인 서버라도, “시야가 겹치는 플레이어가 수백 명씩 몰리는 경우”만 아니라면 어느 정도의 이점을 얻을 수 있습니다.
다만, 이점에 비해 현재 폴리아가 감수하고 있는 문제들—예를 들어 플러그인 호환성의 부재, 스코어보드 같은 바닐라 기능 미지원—이 훨씬 크다는 건 부정하기 어렵습니다.

그럼… 전 폴리아를 써야 하는 걸까요, 아니면 쓰면 안 되는 걸까요?

제 개인적인 의견으로는 쓰지 않는 걸 추천드립니다. 어떤 경우에도요.
폴리아는 아직 정식으로 출시된 버킷이 아닙니다.
플러그인 호환성도 거의 파멸적인 수준이고, 기본적인 바닐라 기능조차 부족한 부분이 많습니다.
무엇보다 안정성이 극도로 낮기 때문에, 일반적인 서버에서 “좋다니까 한번 써보자” 하는 식으로 쓰기엔 난이도가 있는 버킷입니다.

폴리아는 포기했어요. 그럼 무슨 버킷을 써야 하나요?

그냥 무조건 Paper 아니면 Purpur 까지가 마지노선입니다.
제발, 다른 건 쓰지 마세요.
멀티스레딩이니 AI 최적화니 하는 걸 주장하는 버킷의 99.9%는 개소리니까요.

Shout out to PaperMC Team!

❤️ We always love your work!