KO Troubleshooting - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

๋ฌธ์ œ ํ•ด๊ฒฐ

ํƒ์ƒ‰:

Age of Power:

API Manual์ด ๋น„์–ด ์žˆ์Œ

  1. client-without-yoko๊ฐ€ ์•„๋‹ˆ๋ผ ์ „์ฒด client๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ClassicUO.exe๋งŒ ๋‹ค๋ฅธ ํด๋”๋กœ ๋ณต์‚ฌํ•ด ์‹คํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  3. Basic IDE/API payload๊ฐ€ ์ „์ฒด ํด๋ผ์ด์–ธํŠธ์˜ ๋‹ค๋ฅธ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์„ธํŠธ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. IDE์™€ ClassicUO๋ฅผ ๋‹ซ๊ณ  ์ „์ฒด ํด๋ผ์ด์–ธํŠธ ํด๋”์—์„œ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ด์ „ ์•„์นด์ด๋ธŒ์˜ IDE, extension ๋˜๋Š” Runtime ํŒŒ์ผ์„ ํ˜„์žฌ ํด๋”์— ๋ฎ์–ด์“ฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  6. Output/Logs์—์„œ Runtime metadata ๋˜๋Š” local Theia host ๋กœ๋“œ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ™”๋ฉด ํ‹€์€ ์—ด๋ฆฌ์ง€๋งŒ API navigation์ด ์™„์ „ํžˆ ๋น„์–ด ์žˆ์œผ๋ฉด frontend๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ Runtime catalog๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

Run์ด launch.json์„ ์—ถ

Basic extension์˜ Run Current Script, Start Script (SUB Main) / Run Without Debugging ๋˜๋Š” Start Debugging์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ฐ˜ Theia/VS Code ๋ช…๋ น์€ ์ผ์น˜ํ•˜๋Š” debug configuration์ด ์—†์œผ๋ฉด launch.json์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Already running: Main

Runtime์ด ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ์˜ Main ์ธ์Šคํ„ด์Šค๋ฅผ active๋กœ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Explorer์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  Stop์„ ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค. UI ์ƒํƒœ๊ฐ€ ์˜ค๋ž˜๋˜์—ˆ๋‹ค๋ฉด IDE๋ฅผ ๋‹ซ์•˜๋‹ค ๋‹ค์‹œ ์—ด์–ด ์‹คํ–‰ ์ค‘์ธ ClassicUO Runtime์—์„œ ์ƒํƒœ๋ฅผ ๋‹ค์‹œ ์ฝ์œผ์‹ญ์‹œ์˜ค. ์ค‘์ง€ํ•˜๊ธฐ ์ „์— ๊ฐ™์€ entry point๋ฅผ ์ค‘๋ณต ์‹คํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

F10/F11์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

step command๋Š” debugger๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฌธ์žฅ์—์„œ ๋ฉˆ์ถ˜ ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

  1. Start Debugging ์‹คํ–‰;
  2. F9๋กœ breakpoint๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ฒซ ์ค‘์ง€๊นŒ์ง€ ๋Œ€๊ธฐ;
  3. F10, F11 ๋˜๋Š” Shift+F11 ์‚ฌ์šฉ.

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์™„์ „ํžˆ stopped ์ƒํƒœ๋ผ๋ฉด selected script is not running์€ ์ •์ƒ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

๋๊นŒ์ง€ ์Šคํฌ๋กคํ•ด์•ผ ์‹คํ–‰๋จ

์ด ํ˜„์ƒ์€ ์ด์ „ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฌธ์„œ๋Š” ์—ด๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ์ „์ฒด๊ฐ€ ์ธ๋ฑ์‹ฑ๋ฉ๋‹ˆ๋‹ค. IDE, language extension ๋ฐ Runtime์ด ๊ฐ™์€ ์ „์ฒด ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜จ ํŒŒ์ผ์ธ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋…น์ƒ‰ ๋˜๋Š” ๋…ธ๋ž€์ƒ‰ ์ƒํƒœ ์ ์ด ์—†์Œ

  • Explorer์—์„œ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ ์„ ํƒ;
  • Output์—์„œ ์‹คํ–‰ ์„ฑ๊ณต ํ™•์ธ;
  • ์ƒํƒœ Reload/Refresh ์ˆ˜ํ–‰;
  • IDE๊ฐ€ ๊ฐ™์€ ClassicUO ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ;
  • ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ IDE payload๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๋„๋ก ํ•จ.

๋…น์ƒ‰์€ running, ๋…ธ๋ž€์ƒ‰์€ paused, ๊ฒ€์ •/์ผ๋ฐ˜ ํ…Œ๋งˆ ์ƒ‰์ƒ์€ ์„ ํƒ๋˜์—ˆ๊ณ  stopped ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

Basic ๋ช…๋ น ์‹คํ–‰ ์‹œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž ์‹œ ๋ฉˆ์ถค

  • ๊ธด ๋ฐ˜๋ณต๋ฌธ์— UO.Wait(...) ์ถ”๊ฐ€;
  • ๋Œ€๊ธฐ ์—†๋Š” active infinite loop ์ œ๊ฑฐ;
  • ๋งค iteration๋งˆ๋‹ค ํฐ ๋™๊ธฐ ๊ฒ€์ƒ‰์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ;
  • ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ yielding ๊ฐ€๋Šฅํ•œ ์ž‘์€ ๋‹จ๊ณ„๋กœ ๋ถ„ํ• ;
  • Macro, Runtime ๋ฐ IDE ํŒŒ์ผ์ด ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ์„ธํŠธ์ธ์ง€ ํ™•์ธ.

Basic Auto Load์— procedure๊ฐ€ ์—†์Œ

  • Options โ†’ Basic IDE์—์„œ ์˜ฌ๋ฐ”๋ฅธ AutoLoad๋ฅผ ์„ ํƒํ•˜๊ณ  Apply;
  • ํŒŒ์ผ์ด Autoload ์ตœ์ƒ์œ„์— ์žˆ๋Š”์ง€ ํ™•์ธ;
  • ํ™•์žฅ์ž๊ฐ€ .sc, .inj, .bas, .txt์ธ์ง€ ํ™•์ธ;
  • procedure ๋ฌธ๋ฒ•์ด ์™„์ „ํ•œ์ง€ ํ™•์ธ;
  • Macros ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์—ด์–ด ๋ชฉ๋ก ์ƒˆ๋กœ ๊ณ ์นจ.

๊ธ€๊ผด์ด ๊ฒ€๊ฒŒ ํ‘œ์‹œ๋จ

Use original game/source color๋ฅผ ์ผœ๊ณ  Apply๋ฅผ ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค. ์ด ์˜ต์…˜์€ ์‚ฌ์šฉ์ž ๊ธ€๊ผด์—์„œ๋„ ์›๋ž˜ ๋™์  UO hue๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์† ๊ฒ€๋‹ค๋ฉด ์ด์ „ font renderer ๋˜๋Š” ์„ค์ • ํŒŒ์ผ์ด ์„ž์˜€๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

NPC/๋ชฌ์Šคํ„ฐ ์‹œ์ „ ํ‘œ์‹œ๊ธฐ๊ฐ€ ์—†์Œ

NPC/Monster ๋…๋ฆฝ ์˜ต์…˜์ด ์ผœ์ ธ ์žˆ๊ณ  ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉฐ ์œ„์น˜์™€ ์ƒ‰์ƒ์ด ๋ณด์ด๊ณ  ๋Œ€์ƒ์ด ์‹œ์•ผ ์•ˆ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ speech, action code ๋˜๋Š” animation์„ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์›๊ฑฐ๋ฆฌ ์‹œ์ „์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‹œ์ „ ์ด๋ฆ„์ด ํ‘œ์‹œ๊ธฐ์—์„œ ๋–จ์–ด์ ธ ์žˆ์Œ

self/Other Player/NPC/Monster ์ค‘ ๊ฐ™์€ ๊ทธ๋ฃน์˜ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€, ์ด์ „ UI ํŒŒ์ผ์ด ์„ž์ด์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋Š” ์‹ค์ œ glyph ๋„ˆ๋น„๋กœ ๋‹ค์‹œ ์ธก์ •๋˜์–ด ํ‘œ์‹œ๊ธฐ ์˜†์— ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Texture not found for sprite

ํ˜„์žฌ Ultima Online ๋ฐ์ดํ„ฐ์— ํ•ด๋‹น sprite๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์‹คํŒจ ๊ฒฐ๊ณผ๋ฅผ cacheํ•˜๊ณ  fallback์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฐ์ฒด๋ผ๋ฉด ๋กœ์ปฌ client data์™€ ์„œ๋ฒ„์˜ ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

FPS๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋Œ์•„๊ฐ

Apply๋ฅผ ๋ˆŒ๋ €๋Š”์ง€, ํด๋ผ์ด์–ธํŠธ ํด๋”์— ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€, ๋‹ค๋ฅธ ํด๋”์˜ ์„ค์ •์„ ์„ž์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. FPS๋Š” ์„ค์น˜ ์ „์ฒด ์„ค์ •์ด๋ฉฐ ์บ๋ฆญํ„ฐ๋ฅผ ๋ฐ”๊ฟ”๋„ ๋‹ฌ๋ผ์ง€์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Auto Open Doors๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์˜ต์…˜์ด ์ ์šฉ๋˜์—ˆ๊ณ  ๋ฌธ์ด ๋™์ž‘ ๊ฑฐ๋ฆฌ ์•ˆ์— ์žˆ์œผ๋ฉฐ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋™ ์ „์— ๊ตฌ์ฒด์ ์ธ door serial์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ™์€ ๋ฌธ์— ๋Œ€ํ•œ ์งง์€ ์‹œ๊ฐ„ ๋‚ด ๋ฐ˜๋ณต ๋™์ž‘์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

์ง€์› ์š”์ฒญ์— ํฌํ•จํ•  ์ •๋ณด

  • client ๋˜๋Š” client-without-yoko ์ค‘ ๋ฌด์—‡์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€;
  • ์ •ํ™•ํ•œ ์žฌํ˜„ ๋‹จ๊ณ„;
  • Output/Logs์˜ ๊ด€๋ จ ์˜ค๋ฅ˜ ๋ถ€๋ถ„;
  • ๊ณ„์ •, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ ๋น„๊ณต๊ฐœ ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•œ ์ตœ์†Œ ์Šคํฌ๋ฆฝํŠธ;
  • ํ•ญ์ƒ ๋ฐœ์ƒํ•˜๋Š”์ง€, ํŠน์ • shard/๋ฐ์ดํ„ฐ์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋Š”์ง€.

ํƒ์ƒ‰:

Age of Power: