HTML5 - kuimoani/defold GitHub Wiki

HTML5 ๊ฒŒ์ž„ ๊ฐœ๋ฐœํ•˜๊ธฐ

์ด ๋งค๋‰ด์–ผ์€ HTML5 ์บ”๋ฒ„์Šค ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์•Œ๋ ค์ง„ ์ด์Šˆ๋“ค๊ณผ ๋ช‡ ๊ฐ€์ง€ ์ œ์•ฝ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Project configuration

"game.project" ํŒŒ์ผ์—๋Š” HTML5 ์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ํŠน์ • ์„ค์ •๊ฐ’์ด ์žˆ์œผ๋ฉฐ html5 ์„น์…˜์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Project settings

Customizing heap size

Defold๋Š” Emscripten(http://en.wikipedia.org/wiki/Emscripten ์ฐธ๊ณ ) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML5 ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘์ด ํž™(heap) ์•ˆ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์—”์ง„์€ ๋งŽ์€ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ(256MB)๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฒŒ์ž„์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด์„œ ๋” ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผํ•ด ๋ณด์„ธ์š”.

  1. custom_heap_size ๋ฅผ ์›ํ•˜๋Š” ๋ฐ”์ดํŠธ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. set_custom_heap_size๋ฅผ ์ฒดํฌํ•ด์„œ ํ™œ์„ฑํ™” ํ•ฉ๋‹ˆ๋‹ค.
  3. HTML5 ๋ฒˆ๋“ค์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (์•„๋ž˜ ์ฐธ๊ณ )

Monitoring memory usage

๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ์—๋Š” ํŠน์ˆ˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”์ ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํฌํ•จ๋œ ๋ฒˆ๋“ค์„ ์ƒ์„ฑํ•ด์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ include_dev_tool๋ฅผ ์ฒดํฌํ•ด์„œ ํ™œ์„ฑํ™” ๋˜๋ฉฐ ์•„๋ž˜์—์„œ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Application cache

๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ด๊ณ  ๋กœ๋”ฉ ์‹œ๊ฐ„์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด, HTML5 ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์บ์‰ฌ(https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache ์ฐธ๊ณ ) ๋‚ด์— ์–ดํ”Œ๋ ˆ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๊ธฐ๋Šฅ์€ ๊ฐœ๋ฐœ ์ค‘์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์ปจํ…์ธ ๋ณด๋‹ค๋Š” ์บ์‰ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์šฐ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธ ์ค‘์— ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋นŒ๋“œํ•  ์ƒˆ ๋ฒˆ๋“ค์€ ์บ์‰ฌ ๋ฉ”๋‹ˆํŽ˜์ŠคํŠธ(cache manifest)๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๋Š” ์บ์‰ฌ๋ฅผ ์‚ญ์ œ(clear)ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Creating HTML5 content

Defold์—์„œ HTML5 ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ๋“ค ์ฒ˜๋Ÿผ ๋™์ผํ•œ ํŒจํ„ด์œผ๋กœ ๋”ฐ๋ผํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”๋‰ด์—์„œ Project > Bundle > HTML5 Applicationโ€ฆโ€‹ ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

Build HTML5

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๊ธฐ์œ„ํ•œ ํด๋”๋ฅผ ์„ ํƒํ•˜๋ผ๋Š” ์ฐฝ์ด ๋œน๋‹ˆ๋‹ค. ์ต์ŠคํฌํŠธ ๊ณผ์ •์ด ์™„๋ฃŒ๋˜๋ฉด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Application files

Testing HTML5 Content

์ด์ œ ์ด ์ปจํ…์ธ ๋ฅผ ์›น์„œ๋ฒ„๊ฐ€ ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด ํ™˜๊ฒฝ์—์„œ๋Š” ๊ทธ๋ƒฅ .html ํŽ˜์ด์ง€๋ฅผ ์—ด๊ธฐ๋งŒ ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

Application

๋˜ํ•œ ์—๋””ํ„ฐ์—์„œ HTML ์ปจํ…์ธ ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•ด์„œ ๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒŒ์ž„์˜ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ์›น ์„œ๋ฒ„์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

Known issues and limitations

Live update

Defold ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์—๋””ํ„ฐ์—์„œ ๋ผ์ด๋ธŒ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์ž์ฒด์ ์ธ ์†Œํ˜• ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰ ํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ์ˆœ์ˆ˜ ๋ธŒ๋ผ์šฐ์ € ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

CORS

Cross-origin resource sharing (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing ์ฐธ๊ณ )๋Š” QAํ™˜๊ฒฝ์—์„œ๋Š” ํ™œ์„ฑํ™” ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น API์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Chrome์„ ์‚ฌ์šฉํ•  ๋•Œ, '--disable-web-security' ํ”Œ๋ž˜๊ทธ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Safari (IndexedDB)

์˜๊ตฌ์ ์ธ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ(Persistent user data)๋Š” IndexedDB API (https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API ์ฐธ๊ณ )๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋กœ์ปฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด HTML5์˜ ๊ธฐ๋Šฅ์€ ํ˜„์žฌ Safari ๋ฒ„์ „์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—” ์„ธ์…˜(sessions) ๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋‹ค์Œ ์—…๋ฐ์ดํŠธ์— ํฌํ•จ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Internet Explorer 11 (audio)

Defold๋Š” HTML5 WebAudio (http://www.w3.org/TR/webaudio ์ฐธ๊ณ )๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋””์˜ค ์žฌ์ƒ์„ ๋‹ค๋ฃจ๋ฉฐ Internet Explorer 11 ์—์„œ๋Š” ์ด ๊ธฐ๋Šฅ์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Internet Explorer 11 (WebGL)

Microsoft๋Š” WebGL API (https://www.khronos.org/registry/webgl/specs/latest/ ์ฐธ๊ณ ) ๊ตฌํ˜„์„ ์™„๋ฃŒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋“ค ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Internet Explorer 11 (Full screen)

ํ’€ ์Šคํฌ๋ฆฐ ๋ชจ๋“œ๋Š” ์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Customizing HTML5 applications

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ HTML5 ๋ฒ„์ „์„ ์ƒ์„ฑํ•  ๋•Œ, Defold๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์œ„์น˜ํ•  ๊ธฐ๋ณธ ์›น ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ• ์ง€ ๋„์™€์ฃผ๋Š” style(css)๊ณผ script ๋ฆฌ์†Œ์Šค๋“ค์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ด์œ ๋กœ, Defold HTML5 ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฉ”์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ๋ณด์—ฌ์ฃผ๋Š” ์Šคํ”Œ๋ž˜์‰ฌ ์Šคํฌ๋ฆฐ(splash screen) ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์žฌ์ •์˜ ํ•˜์ง€ ์•Š๋Š” ํ•œ, Defold๋Š” ์•„๋ž˜ ์ฒ˜๋Ÿผ ๊ตฌ์„ฑ๋œ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

+ HTML5 ์บ”๋ฒ„์Šค + ํ’€์Šคํฌ๋ฆฐ ๋ชจ๋“œ ๋ฒ„ํŠผ + ์Šคํ”Œ๋ž˜์‰ฌ ์Šคํฌ๋ฆฐ ๋ฐ ๋กœ์ง + ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฐœ๋ฐœ ๋„๊ตฌ๋“ค

์ด ์ปจํ…์ธ ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ต์ŠคํฌํŠธ ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด ์š”์†Œ๋“ค์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Defold ์—๋””ํ„ฐ์˜ game.project ๋ฅผ ์—ด์–ด์„œ html5 ์„น์…˜์„ ์ฐพ์•„ ๋ณด์„ธ์š”.

HTML5 settings

์ด ์„ค์ •์€ ์ปค์Šคํ…€ HTML ํŒŒ์ผ, ์Šคํƒ€์ผ์‹œํŠธ(css), ์Šคํ”Œ๋ž˜์‹œ ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ํ•œ ๋ฒˆ ์ต์ŠคํฌํŠธ ํ•œ ํ›„ ์ต์ŠคํฌํŠธ๋œ HTML๊ณผ CSS ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ๋กœ ์˜ฎ๊ฒจ์„œ ์œ„์˜ ์„ค๋ช…๋Œ€๋กœ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ด ํŒŒ์ผ๋“ค์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ์ปจํ…์ธ ๋Š” ์–ธ์ œ๋“  ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์ œ์•ฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

+ ์บ”๋ฒ„์Šค๋Š” ๋‹ค๋ฅธ ์Šคํƒ€์ผ๋กœ border ๋‚˜ padding ์„ ์ง€์ •ํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งˆ์šฐ์Šค ์ž…๋ ฅ ์ขŒํ‘œ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + ํŽ˜์ด์Šค๋ถ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—” Javscript SDK๋ฅผ ๋กœ๋“œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋ฉ”์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํฌ๋ฆฝํŠธ ์•ž์— ๋‚˜ํƒ€๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Splash screens

์Šคํ”Œ๋ž˜์‹œ ์Šคํฌ๋ฆฐ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์Šคํ”Œ๋ž˜์‰ฌ ์Šคํฌ๋ฆฐ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜๋ ค๋ฉด ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

+ HTML ๋งˆํฌ์—… + CSS ์Šคํƒ€์ผ + Javascript ๋กœ์ง

Javascript๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์„ ํƒ์‚ฌํ•ญ์ด์ง€๋งŒ, ๋งŒ์•ฝ ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” "SplashControl" ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด Defold ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋Œ๋ ค๋ณด๋‚ด ์ค๋‹ˆ๋‹ค.

onSetMessage(text)

์ด ์ฝœ๋ฐฑ(callback)์€ ์œ ์ €์—๊ฒŒ ํ‘œ์‹œํ•˜๋ ค๋Š” ํ…์ŠคํŠธ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

####onSetProgress(current, max) ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋กœ๋“œ๋  ๋•Œ, ์ด ์ฝœ๋ฐฑ์€ ํ˜„์žฌ ์ง„ํ–‰๋ฅ (current progress)์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. "current"๋Š” ๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  "max"๋Š” ๋กœ๋“œ ํ•  ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

onDismissSplash()

์ด ์ฝœ๋ฐฑ์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋กœ๋“œ ๋˜์–ด ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๊ณ  ์บ”๋ฒ„์Šค๋ฅผ ๋ Œ๋”๋ง(์Šคํ”Œ๋ž˜์‹œ ์Šคํฌ๋ฆฐ์ด ๋‹ซํž ๋•Œ) ํ•˜๋ ค ํ•  ๋•Œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธฐ๋ณธ ๊ตฌํ˜„์—๋Š” ์œˆ๋„์šฐ ๋ฆฌ์‚ฌ์ด์ง• ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋กœ์ง๋„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌํ˜„์€ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๊ต์ฒดํ•˜๋ ค๋ฉด, ๋ฉ”์ธ ๋ชจ๋“ˆ์ด ์ œ๊ณตํ•˜๋Š” ์•„๋ž˜ ๋‘๊ฐ€์ง€ ํ—ฌํผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Module.matchToCanvas(id)

DOM ์š”์†Œ์˜ id๋ฅผ ๋ฐ›์•„์„œ ์บ”๋ฒ„์Šค์˜ ๋น„์œจ์— ๋งž๊ฒŒ "width"์™€ "height" ์†์„ฑ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. "marginTop" ์†์„ฑ์€ ๋ธŒ๋ผ์šฐ์ € ์œˆ๋„์šฐ์˜ ์บ”๋ฒ„์Šค๋ฅผ ์„ธ๋กœ ์ •๋ ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Module.setMarginTop(id, sourcePixels)

"id" ์š”์†Œ์˜ "marginTop" ์†์„ฑ์„ ํ”„๋กœ์ ํŠธ ์„ค์ •์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋†’์ด์™€ ๊ด€๋ จ๋œ ์Šค์ผ€์ผ๊ฐ’์œผ๋กœ ํ‘œ์‹œ๋œ "sourcePixels" ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ "sourcePixels"๋Š” top margin์— ํ• ๋‹น๋˜๊ธฐ ์ „์— ์Šค์ผ€์ผ ๊ฐ’์— ๊ณฑํ•ด์ง‘๋‹ˆ๋‹ค. ์ด ์Šค์ผ€์ผ ๊ฐ’์€ ์‹ค์ œ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ํ”ฝ์…€ ๋†’์ด์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”ฝ์…€ ๋†’์ด๋ฅผ ํ”„๋กœ์ ํŠธ ์…‹ํŒ…์— ์ง€์ •ํ•œ ๋Œ€๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

์ด ๋ฉ”์†Œ๋“œ๋“ค์€ ๋ชจ๋“ˆ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹ค ๋กœ๋“œ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์˜ˆ์ œ๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋œ HTML ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์Šคํ”Œ๋ž˜์‹œ ์Šคํฌ๋ฆฐ ๊ฐœ๋ฐœ์— ์ค‘์ ์„ ๋‘˜ ๊ฒฝ์šฐ, ๋กœ๋”ฉ๊ณผ ์‹คํ–‰์— ๊ด€๋ จ๋œ ์ฝ”๋“œ๋“ค์„ ์ฃผ์„์ฒ˜๋ฆฌ ํ•ด์„œ ํ”„๋กœ์„ธ์Šค ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tokens

HTML5 ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ๋•Œ, HTML๊ณผ CSS ํŒŒ์ผ๋“ค์€ ํŠน์ • ํ† ํฐ์„ ํ”„๋กœ์ ํŠธ ์„ค์ •์— ์˜์กดํ•˜๋Š” ๊ฐ’์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ํ† ํฐ์€ ๋ฌธ์ž ์‹œํ€€์Šค๋ฅผ ์ด์Šค์ผ€์ดํ”„ ํ•ด์•ผํ•˜๋Š”์ง€ ๋ง์•„์•ผ ํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ํ•ญ์ƒ ์ด์ค‘ ํ˜น์€ ์‚ผ์ค‘ ์ค‘๊ด„ํ˜ธ(โ€˜{ }โ€˜)๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ์ž์ฃผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฉ”ํ„ฐ๋ฆฌ์–ผ์„ ์žฌ์‚ฌ์šฉ ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

HTML์ด๋‚˜ CSS ์ปจํ…์ธ ์— ๋”ฐ๋ผ, ์•„๋ž˜ ํ† ํฐ๋“ค์ด ๋ชจ๋‘ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

DEFOLD_DISPLAY_WIDTH

(HTML ๋˜๋Š” CSS) ํ”„๋กœ์ ํŠธ ์„ค์ •์— ์ง€์ •๋œ ๊ฐ’์„ display width์— ์”๋‹ˆ๋‹ค.

function doSomething() {
	var x = {{DEFOLD_DISPLAY_WIDTH}};
	// ...
}

DEFOLD_DISPLAY_HEIGHT

(HTML ๋˜๋Š” CSS) ํ”„๋กœ์ ํŠธ ์„ค์ •์— ์ง€์ •๋œ ๊ฐ’์„ display height์— ์”๋‹ˆ๋‹ค.

function doSomething() {
	var y = {{DEFOLD_DISPLAY_HEIGHT}};
}

DEFOLD_SPLASH_IMAGE

(HTML ๋˜๋Š” CSS) ์Šคํ”Œ๋ž˜์‹œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์˜ ํŒŒ์ผ๋ช…์„ ์”๋‹ˆ๋‹ค.

<image class="splashImage" src="{{DEFOLD_SPLASH_IMAGE}}"></image>

์•„๋ž˜ ํ† ํฐ๋“ค์€ HTML ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ์—๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

DEFOLD_APP_TITLE

(HTML) ํ”„๋กœ์ ํŠธ์˜ ํƒ€์ดํ‹€์— ๊ธฐ๋ฐ˜ํ•œ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

<head>
<title>{{DEFOLD_APP_TITLE}}</title>
</head>

DEFOLD_JS

(HTML) ๋ฉ”์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ์ผ์น˜๋ฉ๋‹ˆ๋‹ค.

DEFOLD_MODULE_JS

(HTML) ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ์ผ์น˜๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—์…‹์„ ๋กœ๋“œํ•˜๊ณ  ์Šคํ”Œ๋ž˜์‹œ ์ด๋ฏธ์ง€์˜ ํ™œ๋™์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

<script type='text/javascript' src="{{DEFOLD_MODULE_JS}}"></script>;

DEFOLD_CSS

(HTML) ํ”„๋กœ์ ํŠธ ์„ค์ •์— ์ง€์ •๋œ ๊ธฐ๋ณธ ๋˜๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ต์ŠคํฌํŠธํ•˜๋Š” ๋™์•ˆ ์ถœ๋ ฅ๋˜๋Š” CSS ํŒŒ์ผ์˜ ํŒŒ์ผ๋ช…์ž…๋‹ˆ๋‹ค.

<head>
<link rel="stylesheet" type="text/css" href="{{DEFOLD_CSS}}"></style>
</head>

DEFOLD_DEV_HEAD

(HTML) ํ”„๋กœ์ ํŠธ ์„ค์ •์— ๋”ฐ๋ผ HTML ๋ฌธ์„œ์˜

์„น์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปค์Šคํ…€ HTML ์กฐ๊ฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ž ์‹œํ€€์Šค๋ฅผ ์ด์Šค์ผ€์ดํ”„ ํ•˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— 3์ค‘ ์ค‘๊ด„ํ˜ธ(triple braces)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
<head>
{{{DEFOLD_DEV_HEAD}}}
</head>

DEFOLD_DEV_INLINE

(HTML) ํ”„๋กœ์ ํŠธ ์„ค์ •์— ๋”ฐ๋ผ HTML ๋ฌธ์„œ์˜

์„น์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปค์Šคํ…€ HTML ์กฐ๊ฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
{{{DEFOLD_DEV_INLINE}}}
<script type="text/javascript" src="//connect.facebook.net/en_US/sdk.js"></script>
<!-- etc. -->

์ด ์ธ๋ผ์ธ ๋ธ”๋ก(inline block)์€ ๋ฉ”์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HTML ํƒœ๊ทธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋งคํฌ๋กœ๋Š” ๋ฌธ์ž ์‹œํ€€์Šค๊ฐ€ ์ด์Šค์ผ€์ดํ”„ ๋˜์ง€ ์•Š๋„๋ก 3์ค‘ ์ค‘๊ด„ํ˜ธ๋ฅผ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

DEFOLD_JS_INIT

(HTML) ์ด ํƒœ๊ทธ๋Š” ์ผ๋‹จ ์ฒ˜๋ฆฌ๋˜๋ฉด Defold ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„  development options์„ ํ™œ์„ฑํ™” ํ•ด์•ผ ํ•˜๋ฉฐ, ๊ด€๊ณ„๋œ ๋ชจ๋“ˆ๋“ค์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{{{DEFOLD_DEV_INLINE}}}
<script type="text/javascript" src="//connect.facebook.net/en_US/sdk.js"></script>
{{{DEFOLD_JS_INIT}}}

๋งŒ์•ฝ Facebook SDK ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ•œ๋‹ค๋ฉด ์ด ํƒœ๊ทธ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด "DEFOLD_JS_INIT" ํƒœ๊ทธ ์•ž์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ๋งคํฌ๋กœ๋Š” HTML ํƒœ๊ทธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด์Šค์ผ€์ดํ”„ ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด 3์ค‘ ์ค‘๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ ์‹ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HTML5 Memory Tracker

๊ฐœ๋ฐœ ์ค‘์—๋Š” ๊ฐ„๋‹จํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ถ”์  ๋„๊ตฌ๋ฅผ ํฌํ•จํ•˜๋Š” HTML5 ๋ฒˆ๋“ค์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด ๋„๊ตฌ๋ฅผ ํฌํ•จ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  "game.project" ํŒŒ์ผ์„ ์—ด์–ด html5 ์„น์…˜์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Include devtool

include_dev_tool ์˜ต์…˜์„ ์ฒดํฌํ•˜๋ฉด ๋ฒˆ๋“ค ์ž‘์—…์ด ์ˆ˜ํ–‰๋  ๋•Œ ์ด ๋„๊ตฌ๋ฅผ ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™” ํ•˜๊ณ  ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์—๋Š” ์ด ์˜ต์…˜์„ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Tool features

๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ด ๋„๊ตฌ๊ฐ€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Devtool example

ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌํฌํŒ… ์„น์…˜์„ ํ™œ์„ฑํ™” ํ•˜๊ณ  ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜๋“ค์€ ์•„๋ž˜์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Heap

ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ „์ฒด ์‚ฌ์ด์ฆˆ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ custom heap size ์„ค์ •์— ์˜ํ•ด ๊ตฌ์„ฑ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ํŠœ๋‹ํ•˜๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ์ตœ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์„ ๋งŒ๋“ค ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Dynamic

๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ์ตœ๋Œ€์น˜์™€ ํ˜„์žฌ ์ˆ˜์น˜ ๋ฐ ์ „์ฒด ํ• ๋‹น ํšŸ์ˆ˜์™€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ•ด ์ˆ˜ํ–‰๋œ ์ž‘์—…์˜ ์ˆ˜๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

Static

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ง์ ‘ ๋นŒ๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.

Stack

์Šคํƒ ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ฝ”๋“œ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์ดํ•ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋œ ๊ฐ’์ด 0์œผ๋กœ ๋ณด๊ณ ๋˜๋ฉด ์ •์ƒ ์ž‘๋™ ์ค‘์ด๋ฉฐ, ๋‹ค๋ฅธ ๊ฐ’์ด๋ฉด ์—”์ง„์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ฒ˜์Œ ๋‘ ์„น์…˜์€ ๊ฐœ๋ฐœ ๊ณผ์ •์ค‘์— ํฐ ๊ด€๋ จ์ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ํŠนํžˆ, ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์ž์ฃผ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Known limitations

์ด ๋ฉ”๋ชจ๋ฆฌ ์ถ”์  ๋„๊ตฌ๋Š” malloc() ์™€ free() ํ•จ์ˆ˜๋ฅผ ํŒจ์น˜ํ•ด์„œ ์ž‘๋™ํ•˜๋ฉฐ ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจ์น˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์ „์—ญ ์ƒ์„ฑ์ž๋กœ ์„ ์–ธ๋˜๊ธฐ ์ด์ „์— ์ˆ˜ํ–‰๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ์ผ์–ด๋‚œ ๋™์  ํ• ๋‹น์€ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๋Ÿ‰(usage)๊ณผ ํ”ผํฌ(peak)๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ์œ„์น˜์— ๊ด€๋ จ๋œ ๊ฐ’์€ ์ •ํ™•ํ•˜๊ฒŒ ์ถ”์  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ