์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.



1. ๊ฐœ์š”2. ์ง€์› ๊ธฐ๊ธฐ3. ์žฅ์ 
3.1. ๊ฐ„ํŽธํ•œ ์„ค์น˜3.2. ๊ธฐ๋Šฅ ํ™•์žฅ(ํ”Œ๋Ÿฌ๊ทธ์ธ)3.3. ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ณผ ์žฅ๊ธฐ๊ฐ„ ๊ฐ€๋™์ด ์‰ฌ์›€
4. ๋ฌธ์ œ์ 
4.1. PHP ์–ธ์–ด ์ฑ„ํƒ
4.1.1. ์„ฑ๋Šฅ์˜ ํ•œ๊ณ„4.1.2. PHP ์ž์ฒด์˜ ๊ธฐ๋Šฅ ๋ถ€์‹ค
5. ์ด์•ผ๊นƒ๊ฑฐ๋ฆฌ6. ๊ทธ์™ธ ๋‹ค๋ฅธ ์„œ๋ฒ„ ๊ตฌ๋™๊ธฐ

1. ๊ฐœ์š”[ํŽธ์ง‘]

๊ตฌ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€
์˜๋ฌธ
Put no limits to your imagination.
Control all aspects of gameplay.
Play on multiple worlds, for free.
ํ•œ๊ตญ์–ด[3]
์ƒ์ƒ๋ ฅ์— ํ•œ๊ณ„๋ฅผ ๋‘์ง€ ๋งˆ์„ธ์š”.
๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด์˜ ๋ชจ๋“  ์ธก๋ฉด์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„ธ๊ณ„์—์„œ ๋ฌด๋ฃŒ๋กœ ํ”Œ๋ ˆ์ดํ•˜์„ธ์š”.
๊ณต์‹ ํ™ˆํŽ˜์ด์ง€
Limitless customization, full gameplay control. 100% open source and free.
๋ฒˆ์—ญํ•˜๋ฉด
ํ•œ๊ณ„ ์—†๋Š” ์‚ฌ์šฉ์ž ์ •์˜, ์ „์ฒด ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ์ œ์–ด. 100% ์˜คํ”ˆ ์†Œ์Šค์ด๊ณ  ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค.
PocketMine-MP๋Š” ์†Œํžˆ ์„ธ๋ฅด๋ฐ˜ํ…Œ์Šค(Shoghi Cervantes)[4][์ด๋ฆ„]๋ฅผ ํ•„๋‘๋กœ ํ•œ, PHP๋กœ ์ œ์ž‘๋œ ๋น„๊ณต์‹ ์˜คํ”ˆ ์†Œ์Šค[6][7] ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ: ๋ฒ ๋“œ๋ฝ ์—๋””์…˜ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ, ํ™•์žฅ์„ฑ ๋†’์€ ํ”Œ๋Ÿฌ๊ทธ์ธ API๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ํŠน์ง•์ด๋‹ค. ์ฃผ๋กœ PMMP๋ผ๊ณ  ์ค„์—ฌ ๋ถ€๋ฅธ๋‹ค.

๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ์ž๋ฐ” ์—๋””์…˜ ๋ฒ„์ „์„ ์ข€ ํ•ด ๋ณธ ์‚ฌ๋žŒ๋“ค์€ BEํŒ Bukkit์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.[8][9]

2. ์ง€์› ๊ธฐ๊ธฐ[ํŽธ์ง‘]

3. ์žฅ์ [ํŽธ์ง‘]

3.1. ๊ฐ„ํŽธํ•œ ์„ค์น˜[ํŽธ์ง‘]

Microsoft Windows์˜ ๊ฒฝ์šฐ Microsoft Visual C++ 2010 Redistributable Package[11]๋ฅผ ์„ค์น˜ํ•œ ํ›„์— PocketMine-MP ์‹คํ–‰๊ธฐ ZIP ํŒŒ์ผ์„ ์••์ถ•๋งŒ ํ’€์–ด์„œ ์‹คํ–‰ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ์ž์„ธํ•œ ์„ค์น˜๋ฒ•์€ ์ด ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.
Linux, macOS์˜ ๊ฒฝ์šฐ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜[12] ํ›„ PocketMine-MP ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์„ค์น˜๋œ๋‹ค. ์„ค์น˜ ํ›„์—” ๋ฐ”๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ•œ๋•Œ๋Š” iOS๋ž‘ Android๋„ ์ง€์›ํ–ˆ์œผ๋‚˜ ์ง€๊ธˆ์€ ํ•˜์ง€์•Š๋Š”๋‹ค. ์• ์ดˆ์— Android๋“  iOS๋“  ๊ฐ„์— ํœด๋Œ€์ „ํ™”์—์„œ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋Š” ์ƒ๊ฐ ์ž์ฒด๊ฐ€ ๋ฏธ์นœ ์ง“์ด๋‹ค.

3.2. ๊ธฐ๋Šฅ ํ™•์žฅ(ํ”Œ๋Ÿฌ๊ทธ์ธ)[ํŽธ์ง‘]

์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด API๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด ์ด๋ฅผ ํ†ตํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „์„ธ๊ณ„์ ์œผ๋กœ ์“ฐ์ด๋Š” ๊ตฌ๋™๊ธฐ์ด๋‹ค๋ณด๋‹ˆ ์˜ˆ์‹œ๋กœ ๋ณผ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์ƒ๋‹นํ•˜๋‹ค. ๊ฒฝ์ œ, ๋ฏธ๋‹ˆ๊ฒŒ์ž„ ๋“ฑ๋“ฑ์€ ๋Œ€๋ถ€๋ถ„ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด์„œ ๊ตฌํ˜„๋œ ๊ฒƒ์ด๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  PocketMine-MP๋“ค์€ ์ด๋ฏธ ์ตœ์†Œํ•œ์ด๋ผ๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์ด ๋„ฃ์œผ๋ฉด ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๊ฒŒ์ž„์ด ๋ผ๋ฒ„๋ฆฐ๋‹ค. ์ด์ฏค ๋˜๋ฉด ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๋Š” ๋‹จ์ˆœํ•œ GUI ์ œ๊ณต์ž

3.3. ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ณผ ์žฅ๊ธฐ๊ฐ„ ๊ฐ€๋™์ด ์‰ฌ์›€[ํŽธ์ง‘]

MCBE๋ฅผ ํ†ตํ•ด์„œ ์—ฌ๋Š” ์„œ๋ฒ„๋Š” ์ƒ๋Œ€๋ฐฉ์ด ํ•  ๋•Œ ์„œ๋ฒ„๋ฅผ ์—ฐ ์‚ฌ๋žŒ๋„ ๋™์‹œ์— ํ”Œ๋ ˆ์ดํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 24์‹œ๊ฐ„ ์„œ๋ฒ„๋ฅผ ๊ณ„์† ๋Œ๋ฆฌ๊ธฐ๋„ ์–ด๋ ค์› ์„๋ฟ๋”๋Ÿฌ, ๋ Œ๋”๋ง ๊ฐ™์€ ์„ฑ๋Šฅ์„ ๋งŽ์ด ์žก์•„๋จน๋Š” ๊ธฐ๋Šฅ๋“ค๋„ ํ•จ๊ป˜ ๋Œ์•„๊ฐ€๊ณ  ์žˆ์—ˆ์œผ๋ฉฐ, ๋ชจ๋ฐ”์ผ์€ ์ƒ๋Œ€์ ์œผ๋กœ PC๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ˆ˜์šฉํ•˜๊ธฐ ํž˜๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, PocketMine-MP์˜ ๋“ฑ์žฅ์œผ๋กœ PC์—์„œ๋„ ์„œ๋ฒ„๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ๋“ค์ด ํ•ด๊ฒฐ๋๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„๋ฅผ ๊ณ„์† ์ผœ๋‘๋ฉด ๊ณผ๋ถ€ํ•˜๊ฐ€ ์žˆ๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ์„œ๋ฒ„ ์žฌ๋ถ€ํŒ…์„ ์ˆ˜์‹œ๋กœ ํ•ด์ฃผ์ž. ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„์—์„œ ๋Œ๋ฆฌ๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ./start.sh -l ๋กœ ์ž๋™ ์žฌ๋ถ€ํŒ… ๊ธฐ๋Šฅ๋„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

4. ๋ฌธ์ œ์ [ํŽธ์ง‘]

4.1. PHP ์–ธ์–ด ์ฑ„ํƒ[ํŽธ์ง‘]

PHP๋Š” ํƒœ์ƒ์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์—, ์„ฑ๋Šฅ ํ•œ๊ณ„๊ฐ€ ์—„์—ฐํžˆ ์กด์žฌํ•œ๋‹ค. ์œ„์— ์„œ์ˆ ํ•˜์˜€๋“ฏ, PocketMine-MP 1.3.12๊นŒ์ง€๋Š” ์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ํ•œ๊ณ„๊ฐ€ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์•˜์ง€๋งŒ 1.4๋ถ€ํ„ฐ ์ƒ๋‹นํžˆ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ[13] ์ ์  ๋ฌด๊ฑฐ์›Œ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ตœ๊ทผ์— PHP 7์ด ๋‚˜์˜ค๋ฉด์„œ ์–ด๋А ์ •๋„ ๋‚˜์•„์ง€๊ธฐ๋Š” ํ–ˆ๋‹ค.

4.1.1. ์„ฑ๋Šฅ์˜ ํ•œ๊ณ„[ํŽธ์ง‘]

์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ํ•˜๋ฝ์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ฝ”๋“œ๋ฅผ ๊ฒฝ๋Ÿ‰ํ™”ํ•˜๊ฑฐ๋‚˜ ๋Ÿฐํƒ€์ž„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•ด์•ผ ํ•œ๋‹ค. ์ „์ž์˜ ๊ฒฝ์šฐ์—๋Š” PocketMine-Soft๊ฐ€ ์‹œ๋„ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ด์ชฝ์€ ๊ธฐ์กด PocketMine-MP ์†Œ์Šค๋ฅผ ํŒจ์น˜ํ•˜๋Š” ํ˜•ํƒœ๋ผ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํฌ๊ฒŒ ๋ณ€ํ•˜๋Š” ํ˜„์žฌ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ํž˜๋“ค๊ณ , ๊ทธ๋งˆ์ €๋„ ์ฒญํฌ ๋กœ๋“œ์™€ ๊ฐ™์€ ์„ค์ • ๋ณ€๊ฒฝ ์ •๋„์ด๊ธฐ ๋•Œ๋ฌธ์— ํฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ์€ ๊ธฐ๋Œ€ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ๋ฌธ์ œ๋Š” ์ด์ชฝ๋„ 5์›” 31์ผ ์ดํ›„๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฉˆ์ท„๋‹ค(...).
ํ›„์ž์˜ ๊ฒฝ์šฐ, JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํƒ‘์žฌํ•œ PHP 7์ด 1.5์— ์ ์šฉ๋˜๋ฉฐ ๊ฐœํŽธ๋˜์—ˆ๋‹ค. 2015๋…„ 9์›” ํ˜„์žฌ ์ตœ์‹  ๋ฒ„์ „์ธ RC3์˜ ๊ฒฝ์šฐ ์•ˆ์ •์„ฑ์€ ๊ฐœํŒ์ด์ง€๋งŒ๋–จ์–ด์ง€์ง€๋งŒ 50% ์ด์ƒ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ํ™•์—ฐํžˆ ์กด์žฌํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๋“ค์˜ ํฌ๋ง์„ ์‚ฌ๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ, PHP 7์—์„œ๋Š” ?? ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์€ ์ฝ”๋“œ ๊ฐ„๊ฒฐํ™”๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด๋‚˜, ๋ฐ˜ํ™˜๊ฐ’ ํƒ€์ž… ๋ช…์‹œ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ๊ฐœ๋ฐœ์ž๋“ค๋„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ๋‹ค. ๋ฌผ๋ก  ๋ฐ”๊ฟ” ๋งํ•˜๋ฉด ๊ทธ๋™์•ˆ ์ž‘์—…ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋œฏ์–ด๊ณ ์ณ์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์†Œ๋ฆฌ ์ง€๊ธˆ์€ PHP 8์ด ๋‚˜์˜ค๋ฉฐ ๊ทธ์— ๋Œ€ํ•œ ์ ์šฉ์ด ์˜ˆ์ •๋˜์–ด ์žˆ๋‹ค.

4.1.2. PHP ์ž์ฒด์˜ ๊ธฐ๋Šฅ ๋ถ€์‹ค[ํŽธ์ง‘]

๊ทธ๋Ÿฌ๋‚˜, ์•„๋ฌด๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ฒฝ๋Ÿ‰ํ™”ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์„ ๊ต์ฒดํ•œ๋‹ค ํ•ด๋„ PHP ๊ณ ์œ ์˜ ํ•œ๊ณ„๊ฐ€ ๋ถ„๋ช…ํžˆ ์กด์žฌํ•œ๋‹ค. PHP๋Š” ์• ์ดˆ์— ์ฝ”๋”ฉ์— ๋ฏธ์ˆ™ํ•œ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๋‹จ์ˆœํ•œ ์›น ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜€์œผ๋ฉฐ, ํ•จ์ˆ˜ ์ด๋ฆ„์˜ ๋น„์ผ๊ด€์„ฑ, ๋ณด์•ˆ ๋ฌธ์ œ ๋“ฑ์€ ์ƒ๋‹นํžˆ ๋งŽ์€ ๋น„ํŒ์„ ๋ฐ›์•„์™”๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ณด๋‹ค PocketMine-MP์— ๊ฐ€์žฅ ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๋Š”, ๋™์‹œ์„ฑ ์ง€์›์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ PHP๋Š” ๊ณต์‹์ ์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์ค‘ ์„ธ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์›น ์„œ๋ฒ„๋“ค์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ PHP-FPM์„ ์‚ฌ์šฉํ•˜๊ณ , PocketMine-MP๋Š” krakjoe์˜ pthreads ํ™•์žฅ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” Java์˜ Thread ๊ฐ์ฒด๋‚˜, Python์˜ multiprocessing ๋ชจ๋“ˆ๋ณด๋‹ค ๋–จ์–ด์ง€๋ฉฐ[14], Go์˜ ๊ณ ๋ฃจํ‹ด๋ณด๋‹ค๋Š” ํ•œ์ฐธ ๋จผ ๊ธฐ๋Šฅ์ด๋‹ค.[15] ์• ์ดˆ์— ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ๊ฒƒ์„ ํ™•์žฅ ๋ชจ๋“ˆ๋กœ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์€ ๊ฐ์‚ฌํ•ด์•ผ ํ•  ์ผ์ด์ง€๋งŒ, ํ˜„์žฌ PocketMine์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์†Œ์ผ“์ด๋‚˜ ๋งต ์ƒ์„ฑ๊ธฐ์™€ ๊ฐ™์€ ๋ถ€๋ถ„๋งŒ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ์•„์ดํ…œ ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ Tick์„ ์ด์šฉํ•œ ๋ฃจํ”„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์‹œ๋ถ„ํ• ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ž˜์„œ๋Š” ์•„๋ฌด๋ฆฌ CPU ์ฝ”์–ด๊ฐ€ ๋งŽ์•„๋„ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ฐจ๋ผ๋ฆฌ 1์ฝ”์–ด๋‹น ์„ฑ๋Šฅ์ด๋‚˜ ํด๋Ÿญ ์ˆ˜๋ฅผ ๋†’์—ฌ์•ผ ํ•œ๋‹ค. [16]
์‚ฌ์‹ค, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์ดˆ๊ธฐ ๊ฐœ๋ฐœ์ž์ธ Shoghi Cervantes๋‚˜ pthreads ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์ž์ธ krakjoe๋ฅผ ๋น„๋‚œํ•  ์ˆ˜๋Š” ์—†๋‹ค. ์• ์ดˆ์— PocketMine-MP๋Š” ์„œ๋ฒ„์šฉ์œผ๋กœ ์ œ์ž‘๋œ ๋ฌผ๊ฑด์ด ์•„๋‹ˆ'์—ˆ'๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์›๋ž˜ PocketMine-MP๋Š” ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์„ ๋ฆฌ๋ฒ„์‹ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๋“ค์ด ์‹ค์ œ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์ž ๊ทธ๋•Œ์•ผ ์„œ๋ฒ„๋กœ ์ „ํ–ฅํ•˜์—ฌ ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

5. ์ด์•ผ๊นƒ๊ฑฐ๋ฆฌ[ํŽธ์ง‘]

ํ•œ๋•Œ ๋ฉ”์ธ ๊ฐœ๋ฐœ์ž์ธ Shoghi Cervantes๊ฐ€ ๋„‰ ๋‹ฌ ๊ฐ€๊นŒ์ด(!) ์ž‘์—…์„ ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋”๋‹ˆ PocketMine-MP๋ฅผ ๋– ๋‚˜๋ฒ„๋ ธ๋‹ค. ์‹ฌ์ง€์–ด ๊ฐœ๋ฐœ์— ๋งŽ์€ ๋„์›€์„ ์ฃผ๋˜ PEMapModder๋งˆ์ € PocketMine-MP ํฌ๋Ÿผ ์ž์ฒด๋ฅผ ํƒˆํ‡ดํ–ˆ๋‹ค.
๊ทธ ๋’ค PocketMine-MP๋Š” ๊ฒฐ๊ตญ GitHub ์ €์žฅ์†Œ๋ฅผ ์˜ฎ๊ฒจ์„œ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ๋‹ค.# ํ˜„์žฌ ๋ฉ”์ธ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฃผ๋„ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” dktapps[17]์ด๊ณ  ์ด ์‚ฌ๋žŒ๊ณผ ํ•จ๊ป˜ ๋ช‡๋ช‡ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ™์ด ์ œ์ž‘ ์ค‘์ด๋‹ค.
PocketMine-MP์˜ 1๋Œ€ ๋ฉ”์ธ ๊ฐœ๋ฐœ์ž์ธ Shoghi Cervantes๋Š” ์ƒ๋‹นํžˆ ๊ธฐ์ดํ•œ ํ–‰๋ณด๋ฅผ ๋ณด์ด๊ณ  ์žˆ๋Š”๋ฐ, PocketMine-MP ๊ฐœ๋ฐœ์„ ๋– ๋‚  ๋•Œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ๋ง๋„ ํ•˜์ง€ ์•Š๊ณ  ๋– ๋‚ฌ์œผ๋ฉฐ, Twitter ๋“ฑ์œผ๋กœ PocketMine-MP์— ๋Œ€ํ•ด ํ•˜๋Š” ์งˆ๋ฌธ์€ ๋‹ค ๋ฌด์‹œํ•˜๊ณ  ์žˆ๋‹ค.
2017๋…„ 10์›” ๋ฌด๋ ต๋ถ€ํ„ฐ๋Š” 2๋Œ€ ๋ฉ”์ธ ๊ฐœ๋ฐœ์ž์ธ dktapps์˜ PocketMine-MP ๊ด€๋ จ ํŠธ์œ—๊ณผ ๊ธฐํƒ€ ์ผ๋ถ€ ํŠธ์œ—์— ๋ฐ˜์‘์„ ๋ณด์˜€๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋งˆ์นจ๋‚ด, 2017๋…„ 11์›” 18์ผ์— Twitter์— PocketMine-MP์™€ ๊ด€๋ จ๋œ ํŠธ์œ—์„ ์ง์ ‘ ์˜ฌ๋ ธ์œผ๋ฉฐ, ์‚ฌ๋žŒ๋“ค๊ณผ ์ด์— ๋Œ€ํ•ด ๋Œ€ํ™”๋ฅผ ํ–ˆ๋‹ค. ๋งํฌ
Shoghi Cervantes์˜ ๋ณ„๋ช…์œผ๋กœ Blame Shoghi(#BlameShoghi)๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Š” ํ•ด์„ํ•˜๋ฉด Shoghi๋ฅผ ๋น„๋‚œํ•ด๋ผ๋ผ๋Š” ๋œป์ด๋‹ค. ์ด ๋ณ„๋ช…์€ 2015๋…„ ๋ฌด๋ ต(์ถ”์ •)์— Lifeboat ์›น์‚ฌ์ดํŠธ์— Shoghi Cervantes๋ฅผ ๋น„๋‚œํ•˜๋Š”(?) ํŽ˜์ด์ง€๊ฐ€ ์ƒ๊ธด ๊ฒƒ์—์„œ ์œ ๋ž˜๋˜์—ˆ์œผ๋ฉฐ[18], ํ˜„์žฌ๊นŒ์ง€๋„ ๊ณ„์† ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์‹ฌ์ง€์–ด๋Š” ๋ฒ ๋“œ๋ฝ ์—๋””์…˜์˜ ์‹œ์ž‘ ๋ฉ”์‹œ์ง€์—๋„ Blame shogchips!๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๊ณ , Mojang ๋‚ด ์ง์›๋„ Twitter์— ์ด ํ•ด์‹œ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ธ€์„ ์˜ฌ๋ฆฐ๋‹ค. ๋ญ๋“ ์ง€ Blame Shoghi

6. ๊ทธ์™ธ ๋‹ค๋ฅธ ์„œ๋ฒ„ ๊ตฌ๋™๊ธฐ[ํŽธ์ง‘]

[1] ์•„๋ž˜์˜ ๊ตฌ ๊ณต์‹ ํ”„๋กœ์ ํŠธ์™€ ๊ฐ™์€ ํŽ˜์ด์ง€๋‹ค.
[2] ์œ„์˜ ๊ณต์‹ ํ”„๋กœ์ ํŠธ์™€ ๊ฐ™์€ ํŽ˜์ด์ง€๋‹ค. ๋‹ค๋งŒ ํ•œ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฒƒ์€ ์ด์ชฝ์€ ๊ตฌ ๋„๋ฉ”์ธ์ด๋ผ๋Š” ๊ฒƒ.
[3] ์•„๋ž˜์˜ ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ์€ PocketMine-MP ๊ตฌ ์›น์‚ฌ์ดํŠธ์—์„œ ํ˜„์žฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฒˆ์—ญ์ด ์•„๋‹ˆ๋ผ PocketMine-MP Crowdin์—์„œ ์Šน์ธ๋œ ๋ฒˆ์—ญ์ด๋‹ค. ๊ตฌ ์›น์‚ฌ์ดํŠธ๋Š” ํ›„์ˆ ํ•  ๋‚ด์šฉ์œผ๋กœ ์ธํ•ด ๋‚˜์ค‘์—๋„ ๊ฑฐ์˜ ๊ฐฑ์‹ ์ด ์—†์„ ๊ฒƒ์ด๋‹ค.
[4] ํ›„์— MCBE ๊ฐœ๋ฐœ์ž๋กœ ์Šค์นด์›ƒ๋˜์—ˆ๋‹ค.
[์ด๋ฆ„] ๋ณธ ๊ฐœ๋ฐœ์ž๋Š” ์ŠคํŽ˜์ธ์ธ์ด๋‹ค. ์ŠคํŽ˜์ธ์–ด์—์„œ H๋Š” ๋ฌต์Œ์ด ๋˜๊ณ  G๋Š” ๋‹จ์–ด์˜ ๋์— ์žˆ๊ฑฐ๋‚˜ E๋‚˜ I ์•ž์— ์žˆ์œผ๋ฉด ๋“๋Š” ์†Œ๋ฆฌ(/x/)๊ฐ€ ๋œ๋‹ค. C๋„ E๋‚˜ I ์•ž์— ์žˆ์œผ๋ฉด ์˜์–ด์˜ TH(์˜ˆ:throw) ๊ฐ™์€ ๋ฐœ์Œ์ด ๋‚˜๋‚˜ ํ•œ๊ธ€์—์„œ๋Š” ใ……์œผ๋กœ ํ‘œ๊ธฐ๋œ๋‹ค. ์˜์–ด์—์„œ๋Š” ์‡ผ๊ธฐ ์„œ๋ฐดํ‹ฐ์ฆˆ์ด๋‹ค. (๋„ค์ด๋ฒ„ ์–ดํ•™์‚ฌ์ „)
[7] ์ฃผ์˜ํ•  ์ ์€ PocketMine-MP ํ•˜์œ„ submodule์ธ RakLib์€ GPL์ด๋‹ค. ์˜ˆ์™ธ์ ์œผ๋กœ, PocketMine-MP ๋ฐ ๊ด€๋ จ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๊ฐ„์ ‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์—๋Š” GPL์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
[8] ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ Bukkit์„ ๊ฑฐ์˜ ๊ทธ๋Œ€๋กœ ๋ฒ ๊ผˆ๋‹ค(!)
[9] 1.4๋•Œ ์ฝ”๋“œ๋ฅผ ๊ฐˆ์•„์—Ž์œผ๋ฉด์„œ API ๊ตฌ์กฐ๋ฅผ Bukkit๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋””์ž์ธํ–ˆ๋‹ค.
[10] Ubuntu, CentOS ๊ฐ™์€ ์šด์˜์ฒด์ œ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.
[12] Perl, gcc, make ๋“ฑ
[13] ํ™”์‚ด, ๋ˆˆ๋ฉ์ด ํˆฌ์ฒ™, Anvil ์„ธ๊ณ„ ํ˜•์‹ ์ง€์› ๋“ฑ. Anvil์€ ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ์ž๋ฐ” ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ธ๋ฐ, ์„ฑ๋Šฅ์— ํŽ˜๋„ํ‹ฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด PMAnvil์ด๋ผ๋Š” Anvil ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ์ž‘๋œ PocketMine-MP ์ „์šฉ ํ˜•์‹์ด๋‚˜ ChunkUtils ๊ฐ™์€ ํ™•์žฅ์ด ์ œ์ž‘๋˜์—ˆ๋‹ค. ์ฐธ๊ณ ๋กœ 4.0.0๋ถ€ํ„ฐ๋Š” LevelDB(MCBE๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ๋ฒจ ํ˜•์‹) ์ด์™ธ์˜ ํ˜•์‹์€ ๋ฒ„๋ฆฌ๊ณ  LevelDB๋งŒ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. LevelDB ์ด์™ธ์˜ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์„ธ๊ณ„๋Š” ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ LevelDB ํ˜•์‹์œผ๋กœ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. LevelDB๋งŒ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š” 256 ์ด์ƒ์˜ ๋ธ”๋ก ID ๋“ฑ์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.
[14] ์‹ฌ์ง€์–ด ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ ์ž๋ฃŒ ๊ณต์œ ๋„ Threaded ๊ฐ์ฒด๋ฅผ ํ†ตํ•œ ๋ฐฐ์—ด๋ฐ–์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค! Thread๋กœ ์งœ๋ณธ ์‚ฌ๋žŒ๋“ค์€ ์•Œ๊ฒ ์ง€๋งŒ ์ด๊ฒŒ ์ƒ๋‹นํžˆ ์•” ๊ฑธ๋ฆฐ๋‹ค
[15] ๋น„๋™๊ธฐ ์Šค๋ ˆ๋“œ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜ ๋‚˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ๊ฐ€ ๋‹ต์ด ์—†๋‹ค.
[16] ๋ฌผ๋ก  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ์—ฌ๋Š” ๊ณณ์€ ๋ฉ€ํ‹ฐ์ฝ”์–ด๋ฅผ ํ†ตํ•ด์„œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ฒ ์ง€๋งŒ, ๊ทธ๋Ÿฐ ์„œ๋ฒ„๊ฐ€ ๊ทธ๋ฆฌ ํ”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
[17] ์›๋ž˜ iTXTech์˜ Genisys๋ฅผ ๊ฐœ๋ฐœํ•˜๋˜ ์‚ฌ๋žŒ์ด๋‹ค.
[18] ํ˜„์žฌ๋Š” ํŽ˜์ด์ง€๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๋‹ค.