개인 자료란 (JE)

  서버 커뮤니티

Profile DDang_ 대표칭호 없음

DDang_ 0b63184742cd4e33977ad64856fb0d70

Profile

커뮤니티 소통 잡담하기

시그니션의 실전 마인크래프트 서버 운영 가이드

2020.02.13 조회 수 584 추천 수 1


- 이 글에 적힌 모든 것은 마인크래프트의 저작권자인 Mojang 과 관련이 없으며 적힌 모든 내용은 제 주관적인 생각입니다. 

- 이 글은 고료를 받고 작성하지 않았으며 특정 서버 또는 내용을 홍보하고자 하는 의도가 없습니다. 또한 이 글은 어떠한 상업적 목적으로도 쓰이지 않았으며 쓰이는 것을 금지합니다. 



오탈자가 있다면 댓글로 해당 부분 수정을 요청해 주십시오. 

특정 내용이 틀렸다고 생각하거나 해당 내용에 대해 의견이 다르다면 댓글을 달아 주시면 필요가 있다고 생각될시 댓글로 달아 주십시오. 하지만 다른 의견을 가지고 있다고 이 글을 무조건 수정한다는 보장은 없습니다. 



PART 1 ( 1월 초반 작성예정 )


링크: http://cafe.naver.com/goldbigdragon/74784


I. 서론 및 누구를 위한 글인가

    : 이 글의 글쓴이에 대한 설명과 누가 읽어야 하는가에 대한 설명입니다. 

II. 마인크래프트의 전반적인 설명 및 한국 마인크래프트의 현주소 

    : 현재 한국 마인크래프트 커뮤니티 상황과 마인크래프트 서버에 대한 간략한 설명을 합니다.


PART 2 ( 1월 후반 작성예정 )


링크:


III. 마인크래프트 서버의 종류와 컨텐츠

    : 잘 알려진 서버 컨텐츠 종류와 컨텐츠에는 무엇이 있는지 설명합니다.

IV. 서버 호스팅 또는 컴퓨터 선택과 서버 유지비와 후원 / EULA 

    : 서버 컴퓨터를 구입하려면 무엇이 필요한지(하드웨어), 호스팅은 무엇을 보고 구입해야 하는지, EULA 에 대한 정확한 지식과 안정적인 수입의 중요성 및 후원은 어떻게 무엇을 받아야 하는지에 대한 조언과 정보를 전달합니다. 


PART 3 ( 2월 중반 작성예정 ) 


링크:


V. 서버 열기 / 기본적인 관리 방법과 설명

    : 리눅스를 통한 서버 여는 방법과 간단한 조작 커맨드, 그리고 어떻게 정보를 찾아야 하는지에 대한 방향을 제시합니다. 

VI. 유용한 플러그인 리스트 - 기본

    : 다방면의, 다양한 종류의 서버에서 사용할 수 있는 플러그인 리스트와 기능들을 간단하게 설명합니다. 

VII. 플러그인 config 수정, localization(한글화) 

    : 플러그인의 한글화와 config 수정은 어떻게 봐야 빠르고 효율적으로 할 수 있는지에 대한 간단한 설명을 합니다. 


PART 4 ( 3월 초반 작성예정 )


링크:


VIII. 지속 가능한 서버 ( troubleshooting & how to resolve problems ) 

    : 여러가지 발생할 수 있는 문제들과 그 해결방법, 또 문제 발생시 어떤식으로 대처해야 하는지에 대해 설명하고 timings 와 console output 에 대해 분석할 수 있는 방법을 소개합니다. 

IX. 지속 가능한 서버 ( Skript & license / decompile & api ) 

    : Skript 또는 스크립팅 플러그인(commandhelper 등) 의 소개와 프로그램의 라이선스에 대한 설명 및 플러그인 decompile 및 API 사용법에 대한 팁을 전달합니다. ( 기본 JAVA 지식 필요 ) 


PART 5 ( 3월 중반 작성예정 )


링크:


X. 실전 네트워크와 디도스 

    : 네트워크에 대한 간단한 소개와 마인크래프트에서 알아야 할 정보를 소개하며 디도스에 대한 설명과 방어법 ,그리고 한계점에 대해 소개합니다. 



PART 1 ~ 5 모음: ( PART 5 까지 모두 작성 후 모아서 하나의 글로 올림 ) : 



시그니션의 실전 마인크래프트 서버 운영 가이드 PART 1


작성자: 시그니션

마지막 수정 날짜: 2018년 1월 7일



I. 서론 및 누구를 위한 글인가


Introduction


    안녕하세요. 저는 2014년 3월부터 2018년 1월까지 시그서버 라는 한국 서버를 운영하였던 시그니션입니다. 시그서버는 3번 서버를 종료하였다가 다시 시작하게 된 서버이지만 이번에는 스스로 정한 목표를 달성하였고, 더 이상 미련도 바라는 것도 ,얻을 것도 없기 때문에 마인크래프트를 확실하게 떠나려고 합니다. 제가 2016년 9월에 다시 시그서버를 운영한 이유는 2016년 5월에 "디도스" 공격에 의해 서버가 망했다는 오명을 씻고자 하는 것과 함께 "1년도 서버를 유지하지 못함" 의 두 가지를 스스로 자존심이 용납하지 못하여 다시 시작하게 되었습니다. 그 이후 약 1년 5개월간 서버를 유지했으며 외부에서의 문제때문에 서버를 닫은 것이 아니고 자의로 닫았고, 추가 목표였던 신버전 평균 접속자 150명 이상, 이 세개를 모두 달성한 후 시그서버를 운영하며 새로이 생긴 목표는 한국의 마인크래프트 시장을 4년간 지배하고 있는 1.5.2 복돌 RPG+마인팜 서버가 판치는 것이 아니라, 그냥 다른 나라의 서버처럼 정상적인 1.8+ 의 주류로 돌려놓자. 였지만 이는 제 서버 하나의 힘으로는 할 수 없는 일이라는 것을 운영하면서 알게 되었습니다. 제가 서버를 운영하며 바랬던 것이 이 가이드를 통해 다양한 서버의 합작으로 이루어지기를 바랍니다. 이 가이드가 완성된 후 ( 파트 5까지 ) 여러 곳으로 배포하는 것은 매우 환영합니다. 출처를 밝히지 않고 공유하셔도 상관없으며, 무단 2차 수정/배포를 모두 허용하며, 이유를 막론하고 원할시 작성자도 지우고 스스로 작성한 척 올리셔도 됩니다. 저는 이 글에서 개인적으로 얻고자 하는 것이 아무것도 없으며 시간이 있을 때,글을 완성하여 이 가이드가 마인크래프트 서버의 전반적인 수준 향상에 도움을 줄 수 있기를 바랄 뿐입니다.


To whom


이 글의 타겟은 아무것도 읽기 싫고 그냥 블로그에서 "마인크래프트 자작 버킷" 을 다운받아 "오피 주세요" 놀이를 하고 싶어하는 초등학생과 대학교에서 컴퓨터 공학을 전공하고 가상화폐의 발전과 클라우드 컴퓨팅의 상관관계에 대한 경제학적 접근에 대한 논문을 쓰고 있는 박사 사이에 있는 사람 - 고등학교 또는 대학을 다니고 있거나, 수능을 치고 심심해서 마인크래프트 서버를 열어보고 싶고, 한국말은 읽을 줄 아는데 프로그래밍은 하나도 안 만져 봤거나 어깨너머로 C++ 를 가지고 별 피라미드정도 쌓아본 실력을 가진 평범하기 그지없지만 나도 재밌는 마인크래프트 서버를 만들어 보고 싶다는 열정이 활활 타오르는 사람을 위한 글입니다. 


서버를 운영할 때 가장 중요한 것은 해커톤에서 죄다 찐한 초록색 마크를 받으면서 1등으로 제출하고 나온 경험이 있는 천재적인 프로그래밍 실력도 아니고 대기업 게임회사 기획자에게 인정받은 기획실력도 아니며 시간당 4만원을 받으며 마인크래프트 서버 건축을 할 수 있는 실력도 아니고 실력이 뛰어나 외주가 밀려있는 디자인 실력도 아닙니다. 


중요한 것은 "3년째 개발중" 하지 않으면서 적절한 퀄리티를 유지할 수 있는 기획력, 무엇을 언제 어떻게 얼마나 써야 할지 판단할 수 있는 판단, 서버에서 함께할 인원들을 친절하지만 과하지 않게 이끌어 줄 수 있는 리더쉽, 그리고 유저들과의 소통이 필요합니다. 그리고 이 모든 것은 마인크래프트 서버를 개발하고 운영하겠다는 열정이 없으면 이룰 수 없습니다. 저는 이 모든 것들을 가지고 있어서 이 말을 할 수 있는 것이 아니며 이것이 필요하다는 것을 알려줄 뿐입니다. 모든 사람은 완벽하지 않고 누구나 장점과 약점이 있습니다. 장점들을 살리고 단점을 서로 보완해 줄 수 있는 것이 좋은 팀이 되는 것입니다. 


II. 마인크래프트의 전반적인 설명 및 한국 마인크래프트의 현주소


마인크래프트 서버를 열려면 일단 마인크래프트가 어떤 게임인지에 대해 알아야겠습니다. 이것은 표지판 조합법이 무엇인지, 겉날개를 어떻게 활용하면 더 멀리 날아가는지, 어떤식으로 PVP 를 해야 유리한지에 대한 것이 아닙니다. ( 물론 이런 유저 입장에서의 경험은 더 좋은 서버를 만드는데 도움을 줄 수 있습니다) 어드민이 마인크래프트에 대해 알아야 할 지식들은 이런 것들보다는 청크 로딩이란 무엇인가, 청크가 얼마나 로딩되면 서버 자원을 얼마나 잡아먹고 인원에 따라 어느정도로 조절해야 할것인가, 엔티티란 무엇이고 빛은 어떻게 작동하는가? 더 나아가면 마인크래프트라는 게임 자체는 어떤식으로 작동되는가, 쓰레드는 뭐고 그것이 하드웨어와 무슨 관계가 있는 것인가? 자바를 돌리기에는 윈도우가 적합한가 또는 리눅스가 적합한가, 가비지 컬렉션이란 무엇이고 램은 얼마나 넣는 것이 적합하며 서버 리붓 주기는 어떻게 해야하는가? 와 같은 것들에 대해 궁금점을 가질 필요가 있습니다. 


물론 시작하는 단계에서 이 모든 것들을 다 알고 시작할 필요도 없으며 그럴 수도 없습니다. 하면서 의문점이 나올 때마다 찾아보며 배워나가는 것이 필요합니다. 또한 이 가이드는 이 모든 질문들을 포함한, 알아야 하는 더 많은 질문들에 대한 답을 모두 적을 수도 없고 적지도 않을 것입니다. 이 가이드의 목적은 밥을 떠먹여 주는 것이 아니라 밥을 먹는 방법을 제시해 주는 것이 목적입니다. 


서버를 열기 위해서는 어떤 서버를 열 것인가를 정하고 기획하는 것도 중요합니다. 그걸 하기 전에 먼저 한국 마인크래프트의 현 상황 ( 2018년 1월 기준 ) 을 간단하게 짚고 넘어가는 것으로 시작해 보도록 하겠습니다.


한국 마인크래프트 서버의 절대 다수는 1.5.2 버전이며 이는 한국만이 가지고 있는 굉장히 특이한 현상입니다. 이 현상이 일어나게 된 이유는 유저측 상황과 서버측 상황이 있습니다.


유저측 상황


2012~2013년 마인크래프트가 인기몰이를 하던 시절 다수의 플레이어들이 유입되었고 많은 서버들이 생겨나게 되었습니다. 그리고 대부분의 플레이어들은 정품 구입이 아닌 마인크래프트 크랙런처(복돌)을 사용하였고 이때 가장 많이 퍼진 런처는 팀 익스트림 런처입니다. 요즘 버전을 정품 런처처럼 자동으로 업데이트 해주는 크랙런처와 달리 팀 익스트림 런처는 자동으로 버전을 업데이트 해주지 않았으며 2014년 이후 인기가 확 꺾여버린 마인크래프트 커뮤니티에서 새로운 크랙런처가 배포되지 않으며 네이버에서의 복돌런처 배포가 여러모로 제한되고 기존 팀 익스트림 런처를 가지고 있던 플레이어들은 그냥 하던 서버 하는 것 빼고는 관심이 없기 때문에 1.5.2 고착이 여기서부터 시작되게 되었습니다. 이후 점점 흘러 2012~2013년부터 게임을 시작하던 일명 "고인물" 플레이어들이 남고 뉴비유입이 거의 사라지게 되었습니다.


서버측 상황( 제 다른 글에서 발췌 + 수정, 출처:  http://cafe.naver.com/minecraftgame/1582010 )


결론부터 말하면 정보의 부재 때문입니다. 정보의 부재란 정보가 없다라는 뜻입니다. 저는 부족하다는 뜻으로 사용하고 싶습니다. 이 정보의 부재가 생긴 주요한 이유는 1. 언어 장벽  2. 중심 포럼의 부재  입니다. 


언어 장벽 ,영어를 읽지 못하는 것은 2017년 가장 빠르게 많은 정보를 찾을 수 있는 구글링을 할 수 없게 만듭니다. 이는 대부분의 마인크래프트 서버들이 등록을 한 마인크래프트 서버 리스트에 노출될 기회를 잃어버리고 한국어로 서비스하는 서버 리스트와 포럼에 의존하게 됩니다. 많은 어린 서버 어드민들은 대부분의 공개 자료가 있는 마인크래프트 포럼, 버킷, 스피갓, 스폰지 등을 이용하지 않고 네이버 블로그 또는 네이버 카페에 있는 서버팩과 플러그인들을 사용하게 됩니다. 문제는 네이버 블로그는 그 플러그인이 업데이트 되더라도 그것을 정리하여 버전을 따로 보여주지 않고 단순히 파일을 전달하고 명령어를 가르쳐 주는 기초적인 정보 전달로 인해 플러그인이 어떻게 업데이트 되었는지, 상위 버전 서버는 어떻게 구동하는지에 대한 지식을 알지 못하고 단순하게 "블로그에서 하라는대로" 만 따라하게 됩니다. 이것이 어드민이 겪는 정보의 부재입니다. 


다음과 같은 이유로 생기는 결과가 이것입니다. 어드민들은 여전히 블로그와 카페에서 옛날 자료만 받아 쓰고 있으며 대부분의 서버들은 1.5.2에 머물게 됩니다. 가장 심각한 결과는 신규 유저들이 접근하기가 더더욱 어려워지며 계속 4년전부터 그 서버 하던 그 유저들만 남게 된 것입니다. 


한국에는 물론 1.5.2 가 아닌 서버들이 있습니다. 하지만 대부분의 서버들은 규모가 작으며 동시접속자가 50명이라도 넘는 서버는 매우 소수에 불과합니다. 그 이유는 일반 야생과 별반 다를 것이 없기 때문입니다. 그냥 야생에 타우니 넣고 보스샾으로 상점 대충 만들고 친목하며 마을 만들고 노는 서버를 여는 서버로는 상위버전의 메리트를 잘 살릴 수 없습니다. 물론 서버를 키워보겠다는 생각이 아닌 그냥 몇명과 즐겁게 놀아보겠다 하는 취지면 그것은 분명하게 존중할 만하며 절대 잘못된 것이 아닙니다. 하지만 그정도 수준의 서버에서 왜 서버 인원이 안나오지, 홍보가 부족한가. 왜 다들 1.5.2에 머물러 있는거지 상위버전이 훨씬 좋은데 와 같은 헛소리를 하고 있다면 뭔가 좀 더 깨닫을 필요가 있습니다.


본론으로 돌아와 한국의 현재 다수의 플레이어들은 1.5.2에 있습니다. 제 개인적인 견해로는 현재 시점의 75% 정도가 1.5.2에 머물러 있다고 생각합니다. 이 유저들은 대부분 2012~2013년에 시작하여 지금까지 마인크래프트를 하는 고인물 플레이어들입니다. 이 플레이어들의 절대다수는 1.8+ 서버에 올라올 가능성이 없습니다. 마인크래프트를 접으면 접었지 1.8+ 서버를 하게 되지는 않을겁니다. 


나머지 25%의 플레이어 중 대부분의 플레이어들은 외국 초대규모 서버 ( 일반적으로 하이픽셀 ) 를 즐기며 한국 서버만 찾아다니는 플레이어는 매우 극소수에 불과합니다. 차라리 외국 서버만 다니는 유저층이 훨씬 두껍습니다. 주관적인 수치를 원한다면 전체 한국 마인크래프트 유저의 15% 정도가 1.8+ 인 내 (한국)서버에 한번이라도 접속을 할 가능성이 있는 유저. 라고 보시면 될 것 같습니다. 


그렇다면 서버를 1.8+ 이 아닌 유저층 75% 가 모여있는 1.5.2 로 여는 것이 더 합리적인 방안이 아닌가? 하고 질문하신다면 네 당연히 그렇습니다. 그것이 합리적입니다. 그리고 매우 비정상적인 트랜드입니다. 그것을 깨고자 하는 것이 이 가이드의 목적입니다. 이 가이드의 정보 부분은 모두 최신버전으로 운영한 제 서버에서의 경험과 다른 글로벌 최신버전 서버들을 참조하여 쓰여졌기 때문에 1.5.2 서버를 운영할 계획이시라면 이 가이드보다는 숱한 네이버 블로그를 보시는 것이 더 이롭습니다. 


그럼에도 불구하고 비합리적인 1.8+ 서버 운영을 택하신다면 환영합니다. 지금부터 진짜 마인크래프트 가이드를 시작해 보도록 하겠습니다.


마인크래프트의 종류


마인크래프트는 PC / PE & Window 10 버전이 있습니다. PC 버전은 최근 Java edition 으로 명명되었으며 이름이 시사하듯 JAVA 로 만들어졌습니다. PE 와 Window 10 은 C++ 로 만들어졌습니다. 이 가이드는 PC 버전을 다룹니다. 


PC 마인크래프트는 플러그인만을 사용하느냐 아니면 모드를 사용하느냐에 따라 성격이 달라집니다. 모드를 사용하게 되면 가장 크게 느끼는 것은 유저또한 서버에서 사용하는 모드를 자신의 컴퓨터에 설치해야만 서버에 접속 할 수 있다는 것입니다. 그래서 접근성을 높이기 위해서는 플러그인만을 사용하는 서버가 훨씬 유리합니다. 그래서 이 가이드에서는 모드에 관한 설명을 최소화하고 플러그인에 대해서만 다루도록 하겠습니다. 


플러그인은 마인크래프트 서버 구동기에서 제공하는 API 를 사용하여 제작한 에드온입니다. 에드온이란 정식 프로그램에 다양한 기능을 추가하는 것을 의미합니다. 많은 플러그인은 현재 Spigot API 를 사용하여 제작되었고 모드버킷용으로는 Sponge API 가 떠오르는 주축입니다. 플러그인의 종류와 이에 대한 정보는 파트3에서 더 자세하게 다루도록 하겠습니다.


게임의 구성


마인크래프트는 (또는 거의 모든 시스템은) 프로토콜파일로 구성되어 있습니다. 프로토콜은 통신 입니다. 서버와 플레이어 사이에 다양한 정보를 주고받는 것을 의미합니다. 이 정보에는 플레이어의 로그인 상태, 위치, 메세지, 청크 레벨,서버 버전 등이 있습니다. 프로토콜은 패킷이라는 형태로 플레이어와 서버 사이에서 왔다갔다 정보를 전달합니다. 프로토콜에 정확히 무엇이 있고 어떻게 작동하는지는 알 필요가 없습니다. 이는 매우 프로그래밍과 관련이 있는 부분이며 초반 서버 운영과는 관계가 없습니다. 이런 것이 있다는 것만 알면 됩니다.


파일은 여러가지 다양한 데이터가 담긴 곳입니다. 저장되어야 하는 모든 것들은 파일 상태로 저장되며 이것을 I/O (Input/Output) 이라고도 합니다. I/O 는 컴퓨터에게 비교적 무거운 작업입니다. 무거운 작업이란 시간이 오래 걸리고 많은 일을 필요로 한다는 뜻입니다. 파일이 사용되는 방법은 일반적으로 파일 자체에서 정보를 읽지는 않습니다. (만약 그렇다면 나쁜 방식입니다) 가장 합리적인 방식은 파일에 있는 데이터를 램(RAM) 에 옮겨 램에서 파일을 꺼내쓰는 것입니다. 쉽게 시각화하자면 책이 수십만권 있는 도서관에서 책 2000권정도를 계속 사용해야 하는데 이걸 바로 뽑아 쓰고 넣기보단 거대한 수레를 끌고 다니면서 책을 뽑은 후 수레에 담아놓고 그 수레에서 꺼내쓴 후 필요가 없게 되면 수레에서 버린다고 생각하시면 되겠습니다. 마인크래프트에서 일반적으로 가장 활발하게 I/O 가 일어나는 공간은 청크입니다. 청크가 새로 생성되거나, 플레이어가 장소를 옮기면서 청크를 수레에 담고 수레에서 버리는 과정을 반복합니다. 


이것에 대해 알아야 하는 이유는 최소한 어드민이라면 어떤 데이터가 어디에 담기는지 정도는 인지하고 있어야 하기 때문입니다. 플레이어의 매우 기본적인 데이터는 메인 월드의 playerdata 라는 곳에 담겨 있습니다. 메인 월드는 bukkit.yml 에 level = 뒤에 붙은 월드 이름입니다. 이 파일은 가급적 건들지 않는 편이 좋습니다. 대부분의 플러그인은 plugins 내에 폴더를 생성하고 일반적으로 플러그인의 이름과 같은 폴더를 생성합니다. 플러그인은 많은 경우 config.yml 이라는 것을 생성하는데 config 란 configuration 의 준말로써 그 플러그인의 여러 부분을 조정할 수 있게 만든 옵션입니다. 만약 config 에 조정하고자 하는 것이 없다면 그 플러그인 개발자가 그것을 조정할 수 있도록 만들지 않은 것입니다. 


그리고 이런 일들은 자바에서 thread 라는 형식으로 process 로써 실행됩니다. 이에 대한 내용은 파트 2에서 다루도록 하겠습니다.


마인크래프트의 구성 - 월드

* 현재 제공하는 매우 짧은 정보 ( 거의 정의 수준 ) 은 PART4 에서 필요하게 됩니다. 


마인크래프트의 게임 자체를 좀 더 본다면 마인크래프트에는 블럭과 엔티티가 있습니다. 블럭은 게임 내에서 명백하게 볼 수 있는 네모난 덩어리입니다. 블럭의 정보는 서버측 청크에 저장되며 블럭의 업데이트는 클라이언트 또는 서버에서 블럭 수정이 이루어진후 ( 블럭을 놓거나 캐거나 ) , 다른 쪽에 프로토콜을 통해 정보를 전달하며 이루어집니다. 블럭은 정적(static)이며 일반적으로 많은 문제를 일으키지 않습니다. 


엔티티는 블럭이 아닌 모든 것들을 의미합니다. 이에는 동물/몬스터, 플레이어 , 화살/화염구와 같은 던지는 것(projectile), 그리고 기능을 수행하는 타일 엔티티 , 갑옷거치대/화로/레드스톤 등이 있습니다. 


마인크래프트 서버가 돌아가는 법 : http://cafe.naver.com/minecraftgame/1519668 를 참조하십시오 ( 제가 예전에 쓴 글 ) 


... PART1 끝


PART 2 에서는 서버 종류와 컨텐츠, 그리고 EULA 와 후원에 관해 이야기하도록 하겠습니다. PART 1 & 2 는 구체적인 지식전달 보다는 전반적인 서버에 대한 배경지식을 전달해 주는 것이 목적입니다. 




4개의 댓글

빠돌이
2020.02.14

꽤 기네요

DDang_
2020.02.15
@빠돌이

그만큼 가치 있는 글이죠

테크미
2020.02.16

잘 봤서오

DDang_
2020.02.22
@테크미

앞으로 좋은 운영바라오

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 1

KHC

2024-10-25

0

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3