Project Structure (Legacy, Korean) - refracta/NetHack-Webtiles GitHub Wiki

NetHack Webtiles

๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์ด์ƒ์  ๋ชฉํ‘œ๋Š” "DCSS Webtiles๋ณด๋‹ค ๋” ๋‚˜์€ NetHack Webtiles๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ"์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ๋ชฉํ‘œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํšŒ์› ๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ๊ตฌํ˜„
  • ๊ธฐ์ดˆ์ ์ธ ์ˆ˜์ค€์˜ ์›น ํ”Œ๋ ˆ์ด ๊ตฌํ˜„
  • ๊ด€์ „ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๊ฒŒ์ž„๋ณ„ ์ฑ„ํŒ… / ๊ณต์šฉ ์ฑ„ํŒ… ๊ตฌํ˜„
  • ๊ฐœ์ธ RC ํŒŒ์ผ ์ˆ˜์ • ๊ตฌํ˜„
  • ttyrec / dumplog / rcfiles ์›น ๋‹ค์šด๋กœ๋“œ ์ง€์›
  • ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์›น์—์„œ ์ง€์›
  • ์ธํ„ฐํŽ˜์ด์Šค ์™„์„ฑ๋„ ํ–ฅ์ƒ
  • ๋ชจ๋ฐ”์ผ ํ”Œ๋ ˆ์ด ์™„๋ฒฝ ์ง€์›
  • ๋ฉ”์ผ ๋ฐ๋ชฌ ์ง€์›
  • dgamelaunch๋ฅผ ํ†ตํ•œ SSH/TELNET ํ”Œ๋ ˆ์ด ์ง€์›
  • ์Šฌ๋ž˜์‹œ์—  / ์–ธ๋„ทํ•ต ์ง€์›
  • NAO ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ํ†ตํ•ฉ (๋žญํ‚น, ํ†ต๊ณ„)

ํ”„๋กœ์ ํŠธ ์ „์ฒด ๊ตฌ์กฐ (์•ŒํŒŒ ๋ฒ„์ „ ๊ธฐ์ค€)

NWT

Web Structure (Korean)

WEB

๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์›น์€ ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ ๋ทฐ ์—ญํ™œ์„ ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ, WebSocket ํ†ต์‹ ์„ ํ†ตํ•ด Webtiles Server์—์„œ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ(์บ๋ฆญํ„ฐ ์Šคํ…Ÿ, ํƒ€์ผ ์ •๋ณด, ๊ธฐํƒ€ ์ธ๊ฒŒ์ž„ ์ •๋ณด)๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์€ Webtiles Server ์ „์†กํ•˜์—ฌ Remote NetHack Play๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

SiteUI, GameUI๋ฅผ ํ•ธ๋“ค๋ง ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋‚˜๋‰˜์–ด์ ธ ์žˆ์œผ๋ฉฐ HTML5 Canvas & WebGL Framework์ธ Phaser๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ผ ๋ถ€๋ถ„์„ ๋ Œ๋”๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Webtiles Port Structure (Korean)

NWP

๋„ทํ•ต์€ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์˜ ํฌํŒ…์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋„ทํ•ต ๊ฒŒ์ž„์˜ ๊ณตํ†ต๋œ ๋ถ€๋ถ„(๋„ทํ•ต ์ฝ”์–ด) ๋ถ€๋ถ„๊ณผ ํฌํŒ…์šฉ ์ฝ”๋“œ ๋ถ€๋ถ„์ด ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๋…นํ™”๋ฅผ ์œ„ํ•ด ttyrec๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  dgamelaunch๋ฅผ ํ†ตํ•œ ์›๊ฒฉ ์‰˜ ํ”Œ๋ ˆ์ด ์ง€์›์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด NetHack์˜ tty ํฌํŒ… ์ฝ”๋“œ์— ์›น ํ”Œ๋ ˆ์ด์šฉ ํ™•์žฅ ์ฝ”๋“œ(Unix Domain Socket์„ ์ด์šฉํ•œ Webtiles Server์™€์˜ ํ†ต์‹ , ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์ „์†ก, ํ‚ค ์ž…๋ ฅ ํ•ธ๋“ค๋ง)์„ ์‚ฝ์ž…ํ•˜์—ฌ ๋„ทํ•ต ์ฝ”์–ด์˜ ์ˆ˜์ • ์—†์ด win/webtiles ์— ํ•ด๋‹น๋˜๋Š” ์›น ํƒ€์ผ์šฉ ๋„ทํ•ต ํฌํŒ…์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

NetHack Webtiles Port๋Š” JSON ํฌ๋งท์œผ๋กœ(json-c ์‚ฌ์šฉ) Webtiles Server์™€ UDP UDS(Unix Domain Socket)์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†กํ•˜๊ณ (Webtiles Port โ†’ Webtiles Server โ†’ User) ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ‚ค ์ž…๋ ฅ์€ ๊ฒŒ์ž„์— ์ ์šฉํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Webtiles Server Structure (Korean)

NWS

Webtiles Server๋Š” ์ผ์ข…์˜ ์ค‘๊ณ„ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๋ฉด ๋„ทํ•ต์„ ์‹คํ–‰ํ•˜๊ณ  ์‹คํ–‰๋œ ๋„ทํ•ต ์ธ์Šคํ„ด์Šค์™€ UDS ํ†ต์‹ ์„ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค. UDS ํ†ต์‹ ์—์„œ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋Š” ์ตœ์ข…์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ WebSocket์œผ๋กœ ์ „๋‹ฌ๋˜๊ฒŒ ๋˜๊ณ , WebSocket์œผ๋กœ ๋ฐ›์€ ์‚ฌ์šฉ์ž์˜ ํ‚ค ์ž…๋ ฅ ์š”์ฒญ์€ ๋‹ค์‹œ UDS ํ†ต์‹ ์„ ํ†ตํ•ด ๋„ทํ•ต ์ธ์Šคํ„ด์Šค์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Node.js ๊ธฐ๋ฐ˜์œผ๋กœ HTTP, UDS, WebSocket ์„ธ ์„œ๋ฒ„์˜ ๊ฒฐํ•ฉ์ฒด์ž…๋‹ˆ๋‹ค.

DCSS Webtiles์˜ Tornado ์›น ์„œ๋ฒ„ ๋ถ€๋ถ„๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค

Project Folder Structure (Korean)

. - ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ํด๋”, Webtiles Server ์†Œ์Šค, ํ”„๋กœ์ ํŠธ ํด๋” ํฌํ•จ

archive - dumplogs, ttyrec, rcfiles๊ฐ€ ์ €์žฅ๋˜๋Š” ํด๋”, nginx ๋””๋ ‰ํ† ๋ฆฌ ๋ฆฌ์ŠคํŒ…์œผ๋กœ ์ œ๊ณต๋จ

dev - ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋ฐ ์œ ํ‹ธ ์‰˜ ์Šคํฌ๋ฆฝํŠธ

games - ๊ฒŒ์ž„์„ ์ปดํŒŒ์ผํ•œ ๋นŒ๋“œ ํŒŒ์ผ๊ณผ ์„ธ์ด๋ธŒ๊ฐ€ ์ €์žฅ๋˜๋Š” ํด๋”

sources - NetHack์ด clone๋˜๋Š” ํด๋”

web - ์›น ๊ด€๋ จ

webtiles - sources์— clone๋œ NetHack์— ๋ฎ์–ด์”Œ์šธ Webtiles Port ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ํด๋”