KO Build and Testing - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

์†Œ์Šค ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ

Home ยท BASIC ยท UO API ยท Aโ€“Z ยท Examples ยท Languages

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Windows x64 ๋ฐ 64-bit PowerShell;
  • global.json์ด ์ง€์ •ํ•œ .NET SDK ๋˜๋Š” ๊ฐ™์€ feature band์˜ ํ˜ธํ™˜ patch;
  • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ NuGet cache ๋˜๋Š” restore์šฉ ๋„คํŠธ์›Œํฌ;
  • external\YokoTheia๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ Node.js ๋ฐ npm;
  • ์ „์ฒด ์—๋””์…˜, without-Basic ์—๋””์…˜ ๋ฐ NativeAOT ์ถœ๋ ฅ์„ ๊ฐ๊ฐ ๋งŒ๋“ค ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„.

SDK feature band, Theia package versions ๋˜๋Š” lockfile์„ ๋ฐ”๊พผ ๊ฒฝ์šฐ IDE๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.NET restore ๋ฐ ํ…Œ์ŠคํŠธ

project ๋ฃจํŠธ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

dotnet --version
dotnet restore .\ClassicUO.sln -p:NuGetAudit=false
dotnet test .\tests\ClassicUO.UnitTests\ClassicUO.UnitTests.csproj -c Release
dotnet test .\external\InjectionScript\src\InjectionScript.Tests\InjectionScript.Tests.csproj -c Release
dotnet test .\external\InjectionScript\src\InjectionScript.Lsp.Tests\InjectionScript.Lsp.Tests.csproj -c Release

์ „์ฒด ์—๋””์…˜๊ณผ project-without-yoko๋ฅผ ๊ฐ๊ฐ restore, build, testํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ํ•ด์„œ without-Basic ์—๋””์…˜์—์„œ Basic UI, payload ๋ฐ ์˜์กด์„ฑ์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Eclipse Theia

IDE frontend, Basic language extension ๋˜๋Š” ๊ด€๋ จ ์˜์กด์„ฑ์„ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

cd .\external\YokoTheia
npm install
npm run build

๋นŒ๋“œ ํ›„์—๋Š” Run ๋ฉ”๋‰ด, ๋ชจ๋“  ๋‹จ์ถ•ํ‚ค, Explorer์˜ ๋‹ค์ค‘ ์Šคํฌ๋ฆฝํŠธ ์„ ํƒ, ์ƒํƒœ ์ƒ‰์ƒ, Outline, Problems, Output, API Inspector, Manual, Variables, Watch, Call Stack, panel resize/detach ๋ฐ IDE๋ฅผ ๋‹ค์‹œ ์—ด์—ˆ์„ ๋•Œ Runtime ์ƒํƒœ ๋™๊ธฐํ™”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

NativeAOT ๋ฐ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ

์ตœ์ข… Windows ํด๋ผ์ด์–ธํŠธ๋Š” NativeAOT x64๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ˜ธ๋˜๋Š” Ultima Online ๋ฐ์ดํ„ฐ๋ฅผ repository์— ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. graphical smoke test๋Š” ๋กœ์ปฌ์—์„œ ํ•ฉ๋ฒ•์ ์œผ๋กœ ๋ณด์œ ํ•œ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋กœ ๋”ฐ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ๊ฒ€์ฆ ๋งคํŠธ๋ฆญ์Šค

๋Œ€์ƒ ์˜ˆ์ƒ ๊ฒฐ๊ณผ
ClassicUO Full ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
ClassicUO without Basic ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
InjectionScript Runtime ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
LSP / IDE ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
Full NativeAOT build errors 0
without-Basic build build errors 0
Runtime/API Manual parity ๋ชจ๋“  ์ฐจ์ด๊ฐ€ 0
Native payload probes ๋‘ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘ passed
์••์ถ• ํ•ด์ œํ•œ ZIP ๊ฒ€์ฆ passed

๊ธฐ๋Šฅ ํšŒ๊ท€ ๊ฒ€์‚ฌ

  • AutoLoad ์„ ํƒ์ด ์บ๋ฆญํ„ฐ๋ณ„๋กœ ์ €์žฅ๋˜๊ณ  ์‹œ์ž‘ ์‹œ ์˜ฌ๋ฐ”๋ฅธ ํŒŒ์ผ์„ ์ฝ์Œ;
  • Basic Auto Load๊ฐ€ ์„ ํƒ procedures๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์‹คํ–‰;
  • Basic Example์ด ์ผ๋ฐ˜ ๋งคํฌ๋กœ์— ์ €์žฅ๋˜๊ณ  ์‹คํ–‰;
  • IDE ์ƒˆ ํŒŒ์ผ๊ณผ ๊ธฐ์กด ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์ €์žฅ;
  • ์Šคํฌ๋กค ์—†์ด ์ „์ฒด ๋ฌธ์„œ ์ดˆ๊ธฐํ™”;
  • Run, Debug, Pause, Continue, Step, Stop ๋ฐ all-script commands;
  • ์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ์„ ํƒ๊ณผ ๋…น์ƒ‰/๋…ธ๋ž€์ƒ‰/๊ฒ€์ • ์ƒํƒœ;
  • API Manual์ด Runtime registration๋งŒ ์‚ฌ์šฉ;
  • ๋ชจ๋“  Basic examples๊ฐ€ ๊ฒ€์ฆ ๊ฐ€๋Šฅ;
  • ์ง€์› ์–ธ์–ด์—์„œ ๊ธฐ์ˆ  ๊ตฌ๋ฌธ์ด ๋ฒˆ์—ญ๋˜์ง€ ์•Š์Œ;
  • without-Basic ์—๋””์…˜์— Basic UI ๋ฐ ์‹คํ–‰ ์˜์กด์„ฑ์ด ์—†์Œ.

๋ฐฐํฌ ์•„์นด์ด๋ธŒ ๊ฒ€์‚ฌ

ZIP์„ ๋งŒ๋“  ๋’ค ์ƒˆ ์ž„์‹œ ํด๋”์— ํ’€๊ณ  staging tree์™€ ๊ฐ ํŒŒ์ผ์˜ SHA-256์„ ๋น„๊ตํ•œ ๋‹ค์Œ ๋‘ ์‹คํ–‰ payload์— native probes๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ZIP ์ž์ฒด์˜ SHA-256์€ ์ธ์ ‘ํ•œ .sha256.txt์— ๊ธฐ๋กํ•˜์ง€๋งŒ Wiki์—๋Š” ํŠน์ • ๋ฐฐํฌ ํŒŒ์ผ์˜ ๊ฐ’์„ ๊ณ ์ •ํ•ด ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž๋™ ํ…Œ์ŠคํŠธ๋Š” ์‹ค์ œ ์„œ๋ฒ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ€์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. server gump, shard๋ณ„ packet extension, ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ ํ˜ธํ™˜์„ฑ, ๊ธ€๊ผด, hover, Info Bar, ์‹œ์ „ ํ‘œ์‹œ๊ธฐ ๋ฐ ์ด๋™์„ ์ง์ ‘ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.