{"id":1707,"date":"2026-06-08T11:53:19","date_gmt":"2026-06-08T11:53:19","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1707"},"modified":"2026-08-31T07:32:47","modified_gmt":"2026-08-31T07:32:47","slug":"lua-%ec%96%b8%ec%96%b4-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1707","title":{"rendered":"Lua \uc5b8\uc5b4 \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Lua\ub294 \uc791\uace0 \ube60\ub978 \uc2a4\ud06c\ub9bd\ud2b8 \uc5b8\uc5b4\ub2e4. \ube0c\ub77c\uc9c8\uc758 PUC-Rio\uc5d0\uc11c \uac1c\ubc1c\ub418\uc5c8\uc73c\uba70, \ucc98\uc74c\ubd80\ud130 \ub3c5\ub9bd\uc801\uc778 \ub300\uaddc\ubaa8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \uac83\ubcf4\ub2e4 <strong>\ub2e4\ub978 \ud504\ub85c\uadf8\ub7a8\uc5d0 \uc0bd\uc785\ub418\uc5b4 \uae30\ub2a5\uc744 \ud655\uc7a5\ud558\ub294 \uc784\ubca0\ub514\ub4dc \uc2a4\ud06c\ub9bd\ud305 \uc5b8\uc5b4<\/strong>\ub97c \uc911\uc694\ud55c \ubaa9\ud45c\ub85c \ub450\uace0 \uc124\uacc4\ub418\uc5c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c Lua\ub294 Python\uc774\ub098 JavaScript\ucc98\ub7fc \uac70\ub300\ud55c \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc81c\uacf5\ud558\ub294 \ubc29\ud5a5\ubcf4\ub2e4\ub294 \uc5b8\uc5b4 \uc790\uccb4\ub97c \uc791\uac8c \uc720\uc9c0\ud558\uace0, C\/C++ \uac19\uc740 \ud638\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uacfc \uacb0\ud569\ud558\uae30 \uc27d\uac8c \ub9cc\ub4dc\ub294 \ub370 \uc9d1\uc911\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uac1c\ubc1c\uc5d0\uc11c\ub3c4 Lua\uac00 \ub9ce\uc774 \uc0ac\uc6a9\ub41c\ub2e4. \uac8c\uc784 \uc5d4\uc9c4\uc774\ub098 \uc11c\ubc84 \ud504\ub85c\uadf8\ub7a8\uc744 C\/C++\ub85c \uc791\uc131\ud558\uace0, \uac8c\uc784 \uaddc\uce59\uc774\ub098 \ud018\uc2a4\ud2b8, UI \ub3d9\uc791\ucc98\ub7fc \uc790\uc8fc \ubcc0\uacbd\ub418\ub294 \ubd80\ubd84\uc744 Lua \uc2a4\ud06c\ub9bd\ud2b8\ub85c \ubd84\ub9ac\ud558\ub294 \ubc29\uc2dd\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \uc804\uccb4\uc801\uc778 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Host Program -&gt; Lua Runtime -&gt; Lua Script -&gt; \uac8c\uc784 \ub85c\uc9c1 \/ \uc124\uc815 \/ \uc774\ubca4\ud2b8\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\ub97c \uc774\ud574\ud558\uba74 Lua\uc758 \ubb38\ubc95\ub3c4 \uc790\uc5f0\uc2a4\ub7fd\uac8c \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lua\uc758 \uae30\ubcf8 \ud2b9\uc9d5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub294 \ub3d9\uc801 \ud0c0\uc785 \uc5b8\uc5b4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local value = 10\n\nvalue = \"Hello\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcc0\uc218 \uc790\uccb4\uc5d0 \ud0c0\uc785\uc744 \uace0\uc815\ud558\uc9c0 \uc54a\uace0 \ub7f0\ud0c0\uc784\uc5d0 \uac12\uc758 \ud0c0\uc785\uc774 \uacb0\uc815\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud568\uc218\ub3c4 \uac12\uc73c\ub85c \ucde8\uae09\ud560 \uc218 \uc788\uace0, \ud14c\uc774\ube14\uc744 \uc774\uc6a9\ud574 \ubc30\uc5f4\uacfc \uac1d\uccb4\uc5d0 \uac00\uae4c\uc6b4 \uad6c\uc870\ub97c \ubaa8\ub450 \ud45c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \uc8fc\uc694 \ud0c0\uc785\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>number \/ string \/ boolean \/ nil \/ function \/ table \/ userdata \/ thread \/ light userdata\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc911 \uc2e4\uc9c8\uc801\uc778 Lua \ucf54\ub4dc\uc5d0\uc11c \uac00\uc7a5 \ub9ce\uc774 \uc0ac\uc6a9\ud558\uac8c \ub418\ub294 \uac83\uc740 <code>table<\/code>\uacfc <code>function<\/code>\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ubcc0\uc218<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c \uc9c0\uc5ed \ubcc0\uc218\ub294 <code>local<\/code>\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uae30\ubcf8\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local name = \"Player\"\nlocal health = 100\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>local<\/code> \uc5c6\uc774 \uc120\uc5b8\ud558\uba74 \uc804\uc5ed \ubcc0\uc218\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name = \"Player\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uc5ed \ubcc0\uc218\ub294 \uc5b4\ub514\uc11c\ub4e0 \uc811\uadfc\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uaddc\ubaa8\uac00 \ucee4\uc9c8\uc218\ub85d \uad00\ub9ac\uac00 \uc5b4\ub824\uc6cc\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc77c\ubc18\uc801\uc778 Lua \ucf54\ub4dc\uc5d0\uc11c\ub294 \ud2b9\ubcc4\ud55c \uc774\uc720\uac00 \uc5c6\ub2e4\uba74 <code>local<\/code>\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = {}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc2b5\uad00 \ud558\ub098\ub9cc\uc73c\ub85c\ub3c4 \uc804\uc5ed \uc0c1\ud0dc\uac00 \ubd88\ud544\uc694\ud558\uac8c \ud37c\uc9c0\ub294 \uac83\uc744 \uc0c1\ub2f9\ud788 \uc904\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud0c0\uc785<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub294 \ub3d9\uc801 \ud0c0\uc785 \uc5b8\uc5b4\uc774\uae30 \ub54c\ubb38\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc\uac00 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local value = 10\n\nvalue = \"Hello\"\n\nvalue = true\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud0c0\uc785\uc740 \uac12\uc5d0 \ubd99\uc5b4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>value -&gt; 10 -&gt; number\nvalue -&gt; \"Hello\" -&gt; string\nvalue -&gt; true -&gt; boolean\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac \uac12\uc758 \ud0c0\uc785\uc744 \ud655\uc778\ud558\ub824\uba74 <code>type()<\/code>\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(type(10))\nprint(type(\"Hello\"))\nprint(type(true))\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc\ub294 \uac01\uac01 <code>number<\/code>, <code>string<\/code>, <code>boolean<\/code>\uc73c\ub85c \ub098\uc628\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">nil<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c <code>nil<\/code>\uc740 \uac12\uc774 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc74c\uc744 \ub098\ud0c0\ub0b4\ub294 \ud2b9\ubcc4\ud55c \uac12\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = nil\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc774\ube14\uc758 \uac12\uc744 \uc0ad\uc81c\ud560 \ub54c\ub3c4 <code>nil<\/code>\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>player.name = nil\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc Lua\uc758 <code>nil<\/code>\uc740 \ub2e4\ub978 \uc5b8\uc5b4\uc758 <code>null<\/code>\uacfc \uc644\uc804\ud788 \uac19\uc740 \uac1c\ub150\uc73c\ub85c \uc0dd\uac01\ud558\uba74 \uc548 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \ud14c\uc774\ube14\uc5d0\uc11c\ub294 <code>nil<\/code>\uc774 \uc911\uc694\ud55c \uc758\ubbf8\ub97c \uac00\uc9c4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = {\n    name = \"Knight\",\n    health = 100\n}\n\nplayer.health = nil\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uacbd\uc6b0 <code>health<\/code> \ud544\ub4dc\uac00 \uc81c\uac70\ub41c \uac83\uacfc \uac19\uc740 \uc0c1\ud0dc\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Boolean<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 Boolean\uc740 <code>true<\/code>\uc640 <code>false<\/code>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc870\uac74\ubb38\uc744 \uc791\uc131\ud560 \ub54c \ub2e4\ub978 \uc5b8\uc5b4\uc640 \ucc28\uc774\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c\ub294 <strong><code>false<\/code>\uc640 <code>nil<\/code>\ub9cc \uac70\uc9d3\uc73c\ub85c \ucde8\uae09\ud55c\ub2e4.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if value then\n    print(\"true\")\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \uac12\ub4e4\uc740 \uc870\uac74\ubb38\uc5d0\uc11c \ucc38\uc73c\ub85c \ucde8\uae09\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>true \/ 0 \/ \"\" \/ {}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 <code>0<\/code>\uacfc \ube48 \ubb38\uc790\uc5f4\uc774 \ucc38\uc774\ub77c\ub294 \uc810\uc740 C\/C++\uc774\ub098 JavaScript\uc5d0 \uc775\uc219\ud558\ub2e4\uba74 \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc870\uac74\ubb38<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 \uc870\uac74\ubb38\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if health &gt; 0 then\n    print(\"Alive\")\nelseif health == 0 then\n    print(\"Dead\")\nelse\n    print(\"Invalid\")\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c\ub294 \uc870\uac74\ubb38\uc758 \ub05d\uc744 <code>end<\/code>\ub85c \ub2eb\ub294\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if -&gt; elseif -&gt; else -&gt; end\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc911\uad04\ud638\ub97c \uc0ac\uc6a9\ud558\ub294 C \uacc4\uc5f4 \uc5b8\uc5b4\uc640 \ubb38\ubc95 \uad6c\uc870\uac00 \ub2e4\ub974\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ubc18\ubcf5\ubb38<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\ub294 <code>while<\/code>, <code>repeat<\/code>, <code>for<\/code>\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">while<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>local count = 0\n\nwhile count &lt; 10 do\n    count = count + 1\nend\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">repeat<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>local count = 0\n\nrepeat\n    count = count + 1\nuntil count &gt;= 10\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>repeat<\/code>\uc740 \uc870\uac74\uc744 \ub9c8\uc9c0\ub9c9\uc5d0 \uac80\uc0ac\ud558\uae30 \ub54c\ubb38\uc5d0 \ucd5c\uc18c \ud55c \ubc88\uc740 \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Numeric For<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc22b\uc790 \ubc94\uc704\ub97c \ubc18\ubcf5\ud560 \ub54c <code>for<\/code>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i = 1, 10 do\n    print(i)\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc99d\uac00\ub7c9\ub3c4 \uc9c0\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i = 10, 1, -1 do\n    print(i)\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \uc22b\uc790 <code>for<\/code>\ub294 \ubc18\ubcf5 \ud69f\uc218\uac00 \uba85\ud655\ud55c \uacbd\uc6b0 \uac04\ub2e8\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Generic For<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc774\ube14\uc774\ub098 Iterator\ub97c \uc21c\ud68c\ud560 \ub54c\ub294 Generic For\uac00 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local players = {\n    \"A\",\n    \"B\",\n    \"C\"\n}\n\nfor index, player in ipairs(players) do\n    print(index, player)\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud0a4\uc640 \uac12\uc744 \uac00\uc9c4 \ud14c\uc774\ube14\uc774\ub77c\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local stats = {\n    health = 100,\n    mana = 50\n}\n\nfor key, value in pairs(stats) do\n    print(key, value)\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ipairs<\/code>\uc640 <code>pairs<\/code>\ub294 Lua \ucf54\ub4dc\ub97c \uc77d\uc744 \ub54c \uc790\uc8fc \ubcf4\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Table<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c \uc790\ub8cc\uad6c\uc870\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = {\n    name = \"Knight\",\n    health = 100,\n    level = 10\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac12\uc744 \uac00\uc838\uc628\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(player.name)\nprint(player.health)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\uad04\ud638\ub97c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(player&#91;\"name\"])\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \ub450 \ud45c\ud604\uc740 \uac19\uc740 \uc758\ubbf8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>player.name &lt;-&gt; player&#91;\"name\"]\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Table\uc740 \ubc30\uc5f4 \uc5ed\ud560\ub3c4 \ud55c\ub2e4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c\ub294 \ubcc4\ub3c4\uc758 \ubc30\uc5f4 \ud0c0\uc785\uc774 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc774\ube14\uc744 \ubc30\uc5f4\ucc98\ub7fc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local items = {\n    \"Sword\",\n    \"Shield\",\n    \"Potion\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\ub371\uc2a4\ub294 <strong>1\ubd80\ud130 \uc2dc\uc791\ud55c\ub2e4.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(items&#91;1])\nprint(items&#91;2])\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">C\/C++\uc774\ub098 JavaScript\uc5d0 \uc775\uc219\ud558\ub2e4\uba74 \uc774 \ubd80\ubd84\uc740 \ucc98\uc74c\uc5d0 \ud5f7\uac08\ub9b4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Lua -&gt; 1, 2, 3, 4 ...\nC \/ C++ -&gt; 0, 1, 2, 3 ...\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Table\uc758 \ubcf8\uc9c8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c \ud14c\uc774\ube14\uc740 \ub2e8\uc21c\ud55c \ubc30\uc5f4\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\ub098\uc758 \uc790\ub8cc\uad6c\uc870\ub85c \ub2e4\uc74c\uacfc \uac19\uc740 \ud615\ud0dc\ub97c \ubaa8\ub450 \ud45c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Table -&gt; \ubc30\uc5f4 \/ Dictionary \/ Map \/ Object \/ Struct \ube44\uc2b7\ud55c \uad6c\uc870 \/ Namespace\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = {\n    name = \"Knight\",\n    level = 10,\n    inventory = {\n        \"Sword\",\n        \"Potion\"\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\ub098\uc758 \ud14c\uc774\ube14 \uc548\uc5d0 \ub2e4\ub978 \ud14c\uc774\ube14\uc744 \ub123\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ub54c\ubb38\uc5d0 Lua \ucf54\ub4dc\uc5d0\uc11c \ud14c\uc774\ube14\uc744 \uc911\uc2ec\uc73c\ub85c \ud504\ub85c\uadf8\ub7a8 \uad6c\uc870\uac00 \ub9cc\ub4e4\uc5b4\uc9c0\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Function<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \ud568\uc218\ub294 \uac12\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local function add(a, b)\n    return a + b\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud568\uc218\ub97c \ubcc0\uc218\uc5d0 \uc800\uc7a5\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local operation = add\n\nprint(operation(10, 20))\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc775\uba85 \ud568\uc218\ub3c4 \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local operation = function(a, b)\n    return a + b\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud568\uc218\ub97c \ub2e4\ub978 \ud568\uc218\uc5d0 \uc804\ub2ec\ud558\ub294 \uac83\ub3c4 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud2b9\uc131 \ub54c\ubb38\uc5d0 Lua\uc5d0\uc11c Callback\uc774\ub098 \uc774\ubca4\ud2b8 \uc2dc\uc2a4\ud15c\uc744 \ub9cc\ub4e4\uae30 \ud3b8\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Multiple Return<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua \ud568\uc218\ub294 \uc5ec\ub7ec \uac1c\uc758 \uac12\uc744 \ubc18\ud658\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local function getPlayer()\n    return \"Knight\", 100\nend\n\nlocal name, health = getPlayer()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>name<\/code>\uc5d0\ub294 <code>\"Knight\"<\/code>, <code>health<\/code>\uc5d0\ub294 <code>100<\/code>\uc774 \ub4e4\uc5b4\uac04\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C++\uc774\ub098 Java \uac19\uc740 \uc5b8\uc5b4\uc5d0\uc11c\ub294 \uad6c\uc870\uccb4\ub098 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5b4 \uc5ec\ub7ec \uac12\uc744 \ubb36\ub294 \uacbd\uc6b0\uac00 \ub9ce\uc9c0\ub9cc Lua\uc5d0\uc11c\ub294 \uc5ec\ub7ec \ubc18\ud658\uac12\uc744 \uc9c1\uc811 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Closure<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \ud568\uc218\ub294 \uc790\uc2e0\uc774 \ub9cc\ub4e4\uc5b4\uc9c4 \ud658\uacbd\uc744 \uae30\uc5b5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local function createCounter()\n    local count = 0\n\n    return function()\n        count = count + 1\n        return count\n    end\nend\n\nlocal counter = createCounter()\n\nprint(counter())\nprint(counter())\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>createCounter() -&gt; count \uc0dd\uc131 -&gt; \ub0b4\ubd80 \ud568\uc218 \ubc18\ud658 -&gt; counter \uc720\uc9c0 -&gt; counter() -&gt; count \uc99d\uac00 -&gt; 1 -&gt; counter() -&gt; count \uc99d\uac00 -&gt; 2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>createCounter()<\/code>\uac00 \uc885\ub8cc\ub41c \uc774\ud6c4\uc5d0\ub3c4 \ub0b4\ubd80\uc758 <code>count<\/code>\uac00 \uc720\uc9c0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uad6c\uc870\ub97c Closure\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Callback, \uc0c1\ud0dc \ucea1\uc290\ud654, \uac04\ub2e8\ud55c Factory \ub4f1\uc744 \uad6c\ud604\ud560 \ub54c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Metatable<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c \uac1d\uccb4\uc9c0\ud5a5\uc801\uc778 \uad6c\uc870\ub97c \uad6c\ud604\ud560 \ub54c \uc911\uc694\ud55c \uac1c\ub150\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc774\ube14\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \uc77c\ubc18\uc801\uc778 \uac1d\uccb4\ucc98\ub7fc \ub3d9\uc791\ud558\uc9c0\ub9cc, <code>metatable<\/code>\uc744 \uc5f0\uacb0\ud558\uba74 \ud2b9\uc815 \uc5f0\uc0b0\uc774\ub098 \uc811\uadfc \ubc29\uc2dd\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = {}\n\nlocal meta = {\n    __index = function(table, key)\n        return \"Unknown\"\n    end\n}\n\nsetmetatable(player, meta)\n\nprint(player.name)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \ud544\ub4dc\uc5d0 \uc811\uadfc\ud558\uba74 <code>__index<\/code>\uac00 \ub3d9\uc791\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 Metamethod\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__index \/ __newindex \/ __add \/ __sub \/ __mul \/ __div \/ __eq \/ __lt \/ __le \/ __call\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c \uc774\uc6a9\ud558\uba74 \uc5f0\uc0b0\uc790 \ub3d9\uc791\uc774\ub098 \uac1d\uccb4 \uc811\uadfc \ubc29\uc2dd\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uac1d\uccb4\uc9c0\ud5a5 \ud504\ub85c\uadf8\ub798\ubc0d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\ub294 Java\ub098 C++\ucc98\ub7fc \uc804\ud1b5\uc801\uc778 <code>class<\/code> \ud0a4\uc6cc\ub4dc\uac00 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\uc2e0 Table\uacfc Metatable\uc744 \uc774\uc6a9\ud574 \uac1d\uccb4\uc9c0\ud5a5 \uad6c\uc870\ub97c \uad6c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local Player = {}\nPlayer.__index = Player\n\nfunction Player.new(name, health)\n    local self = setmetatable({}, Player)\n\n    self.name = name\n    self.health = health\n\n    return self\nend\n\nfunction Player:attack()\n    print(self.name .. \" Attack\")\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = Player.new(\"Knight\", 100)\n\nplayer:attack()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function Player:attack()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc758 <code>:<\/code>\ub294 \uba54\uc11c\ub4dc \ud638\ucd9c\uc744 \uc704\ud55c \ubb38\ubc95\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c\ub85c\ub294 <code>self<\/code>\uac00 \uc790\ub3d9\uc73c\ub85c \uc804\ub2ec\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>player:attack() -&gt; player.attack(player)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc640 \uac19\uc740 \ud615\ud0dc\ub85c \uc774\ud574\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Module<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c\ub294 \ud30c\uc77c \ub2e8\uc704\ub85c \ucf54\ub4dc\ub97c \ubaa8\ub4c8\ud654\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- player.lua\n\nlocal Player = {}\n\nfunction Player.create(name)\n    return {\n        name = name\n    }\nend\n\nreturn Player\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub978 \ud30c\uc77c\uc5d0\uc11c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local Player = require(\"player\")\n\nlocal player = Player.create(\"Knight\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>require()<\/code>\ub97c \uc774\uc6a9\ud574 \ubaa8\ub4c8\uc744 \uac00\uc838\uc628\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c\ub294 \uc774\ub7f0 \uc2dd\uc73c\ub85c \uae30\ub2a5\uc744 \ud30c\uc77c \ub2e8\uc704\ub85c \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">require<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>require()<\/code>\ub294 Lua\uc758 \ubaa8\ub4c8 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc911\uc694\ud55c \ud568\uc218\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local Math = require(\"math_utils\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4c8\uc744 \ub85c\ub4dc\ud558\uace0 \ubc18\ud658\ub41c \uac12\uc744 \uac00\uc838\uc628\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf4\ud1b5 \ubaa8\ub4c8 \ud30c\uc77c\uc5d0\uc11c \ud14c\uc774\ube14\uc744 \ub9cc\ub4e4\uc5b4 \ubc18\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local M = {}\n\nfunction M.add(a, b)\n    return a + b\nend\n\nreturn M\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uad6c\uc870\uac00 Lua\uc5d0\uc11c \ud754\ud55c Module \ud328\ud134\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Error Handling<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c\ub294 <code>error()<\/code>\ub97c \uc774\uc6a9\ud574 \uc624\ub958\ub97c \ubc1c\uc0dd\uc2dc\ud0ac \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>error(\"Invalid player\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\uc678\ub97c \uc548\uc804\ud558\uac8c \ucc98\ub9ac\ud574\uc57c \ud55c\ub2e4\uba74 <code>pcall()<\/code>\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local success, result = pcall(function()\n    error(\"Something went wrong\")\nend)\n\nprint(success)\nprint(result)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>success<\/code>\uac00 <code>false<\/code>\uac00 \ub418\uace0 \uc624\ub958 \uc815\ubcf4\uac00 <code>result<\/code>\uc5d0 \ub4e4\uc5b4\uac04\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf5\uc7a1\ud55c \uc608\uc678 \uc2dc\uc2a4\ud15c\uc744 \uc0ac\uc6a9\ud558\ub294 \uc5b8\uc5b4\uc640 \ube44\uad50\ud558\uba74 \uc0c1\ub2f9\ud788 \ub2e8\uc21c\ud55c \uad6c\uc870\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Coroutine<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \ud2b9\uc9d5\uc801\uc778 \uae30\ub2a5 \uc911 \ud558\ub098\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Coroutine\uc740 \uc2e4\ud589\uc744 \uc911\uac04\uc5d0 \uba48\ucdc4\ub2e4\uac00 \ub2e4\uc2dc \uc774\uc5b4\uac08 \uc218 \uc788\ub294 \ud611\ub825\uc801 \uc2e4\ud589 \uad6c\uc870\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local co = coroutine.create(function()\n    print(\"Start\")\n\n    coroutine.yield()\n\n    print(\"Resume\")\nend)\n\ncoroutine.resume(co)\ncoroutine.resume(co)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>resume -&gt; Start -&gt; yield -&gt; \uc911\ub2e8 -&gt; resume -&gt; Resume\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 Thread\uc640\ub294 \ub2e4\ub978 \uac1c\ub150\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc5d0\uc11c\ub294 Coroutine\uc744 \uc774\uc6a9\ud574 \uc0c1\ud0dc \uba38\uc2e0\uc774\ub098 \ube44\ub3d9\uae30 \ucc98\ub9ac, \uc2a4\ud06c\ub9bd\ud2b8 \uae30\ubc18 \uc5f0\ucd9c \ub4f1\uc744 \uad6c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lua\uc640 C\/C++<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \uac15\uc810\uc740 <strong>\ud638\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uacfc \uacb0\ud569\ud558\uae30 \uc27d\ub2e4\ub294 \uac83<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 C++ \uac8c\uc784 \uc11c\ubc84\ub098 \uac8c\uc784 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc788\ub2e4\uace0 \ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uad6c\uc870\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C++ Engine Core \/ Rendering \/ Network \/ Physics \/ Memory -&gt; Lua Runtime -&gt; Quest \/ NPC Logic \/ Event \/ Dialogue \/ Game Rules\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb34\uac70\uc6b4 \uc2dc\uc2a4\ud15c\uc740 C++\uc5d0\uc11c \ucc98\ub9ac\ud558\uace0 \ubcc0\uacbd\uc774 \uc7a6\uc740 \uac8c\uc784 \ub85c\uc9c1\uc740 Lua\uc5d0\uc11c \ucc98\ub9ac\ud558\ub294 \uad6c\uc870\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C++ \ucf54\ub4dc\uc5d0\uc11c Lua VM\uc744 \uc2e4\ud589\ud558\uace0 Lua \ud568\uc218\ub098 Lua \ub370\uc774\ud130\ub97c \ud638\ucd9c\ud558\ub294 \uc2dd\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\uc758 \uc7a5\uc810\uc740 \uac8c\uc784\uc744 \ub2e4\uc2dc \ube4c\ub4dc\ud558\uc9c0 \uc54a\uace0 \uc2a4\ud06c\ub9bd\ud2b8\ub9cc \ubcc0\uacbd\ud574\uc11c \uac8c\uc784 \ub85c\uc9c1\uc744 \uc218\uc815\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uac8c\uc784 \uac1c\ubc1c\uc5d0\uc11c Lua\ub97c \uc0ac\uc6a9\ud558\ub294 \uc774\uc720<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784\uc5d0\uc11c Lua\uac00 \uc0ac\uc6a9\ub418\ub294 \uc774\uc720\ub294 \uc5b8\uc5b4 \uc790\uccb4\uac00 \ud2b9\ubcc4\ud788 \uac8c\uc784 \uc804\uc6a9\uc774\uc5b4\uc11c\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud575\uc2ec\uc740 <strong>\ud638\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uacfc \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ubd84\ub9ac\ud560 \uc218 \uc788\ub2e4\ub294 \uac83<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function onPlayerEnter(player)\n    if player.level &gt;= 10 then\n        giveQuest(player, 1001)\n    end\nend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc5d4\uc9c4\uc758 \ud575\uc2ec \uc2dc\uc2a4\ud15c\uc740 C++\uc5d0 \uc788\uace0 Lua\uc5d0\uc11c\ub294 \uac8c\uc784 \uaddc\uce59\uc744 \uc791\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C++ -&gt; Engine \/ Runtime \/ System\nLua -&gt; Game Logic \/ Script \/ Event\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \uc5ed\ud560\uc744 \ub098\ub204\uba74 \uae30\ud68d \ubcc0\uacbd\uc774 \uc7a6\uc740 \ubd80\ubd84\uc744 \uc2a4\ud06c\ub9bd\ud2b8\ub85c \uad00\ub9ac\ud558\uae30 \uc26c\uc6cc\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 NPC AI, \ud018\uc2a4\ud2b8, \ub300\ud654, \uc774\ubca4\ud2b8, \uc2a4\ud0ac \ub85c\uc9c1, \ub9f5 \uc774\ubca4\ud2b8 \uac19\uc740 \uc601\uc5ed\uc5d0\uc11c \ud65c\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lua\uc758 \uc7a5\uc810<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub294 \uc5b8\uc5b4 \uc790\uccb4\uac00 \uc791\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb38\ubc95\uc774 \ubcf5\uc7a1\ud558\uc9c0 \uc54a\uace0 \ub7f0\ud0c0\uc784\ub3c4 \ube44\uad50\uc801 \uac00\ubccd\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 C API\ub97c \ud1b5\ud574 C\/C++ \ud504\ub85c\uadf8\ub7a8\uc5d0 \uc784\ubca0\ub4dc\ud558\uae30 \uc27d\ub2e4\ub294 \uc810\uc774 \ud070 \uc7a5\uc810\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Lua -&gt; \uc791\uc740 Runtime -&gt; Host Application\uc5d0 \uc0bd\uc785\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870 \ub54c\ubb38\uc5d0 \uac8c\uc784 \uc5d4\uc9c4, \uc784\ubca0\ub514\ub4dc \uc2dc\uc2a4\ud15c, \ud655\uc7a5 \uc2a4\ud06c\ub9bd\ud2b8 \ub4f1\uc5d0\uc11c \uc0ac\uc6a9\ud558\uae30 \uc88b\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \ub3d9\uc801 \ud0c0\uc785\uacfc First-Class Function, Closure, Coroutine, Metatable \uac19\uc740 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uae30 \ub54c\ubb38\uc5d0 \uc791\uc740 \uc5b8\uc5b4\uc784\uc5d0\ub3c4 \uc0c1\ub2f9\ud788 \uc720\uc5f0\ud55c \ud504\ub85c\uadf8\ub7a8\uc744 \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lua\uc758 \ud55c\uacc4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \ub300\uaddc\ubaa8 \ud504\ub85c\uadf8\ub7a8\uc744 Lua\ub9cc\uc73c\ub85c \uad6c\uc131\ud558\uba74 \ud0c0\uc785 \uc548\uc815\uc131\uacfc \ucf54\ub4dc \uad6c\uc870 \uad00\ub9ac\uac00 \ubb38\uc81c\uac00 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local player = {\n    name = \"Knight\"\n}\n\nprint(player.health)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>health<\/code>\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc544\ub3c4 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub294 \ub2e8\uacc4\uc5d0\uc11c\ub294 \ud0c0\uc785 \uc2dc\uc2a4\ud15c\uc774 \uc7a1\uc544\uc8fc\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud504\ub85c\uc81d\ud2b8\uac00 \ucee4\uc9c0\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ubb38\uc81c\uac00 \uc0dd\uae38 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dynamic Typing -&gt; \ub7f0\ud0c0\uc784 \uc624\ub958 \uac00\ub2a5\uc131 \uc99d\uac00\n\uc804\uc5ed \uc0c1\ud0dc -&gt; \uc758\uc874\uc131 \ucd94\uc801 \uc5b4\ub824\uc6c0\nTable \uc911\uc2ec \uad6c\uc870 -&gt; \ub370\uc774\ud130 \uad6c\uc870 \uba85\ud655\uc131 \uc800\ud558\n\uc2a4\ud06c\ub9bd\ud2b8 \uc99d\uac00 -&gt; \ucf54\ub4dc \uad00\ub9ac \ubcf5\uc7a1\ub3c4 \uc99d\uac00\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc2e4\uc81c \uc5d4\uc9c4\uc5d0\uc11c\ub294 Lua\ub97c \ubaa8\ub4e0 \uac83\uc744 \uad6c\ud604\ud558\ub294 \uc5b8\uc5b4\ub85c \uc0ac\uc6a9\ud558\uae30\ubcf4\ub2e4 <strong>C\/C++ \uac19\uc740 \ud638\uc2a4\ud2b8 \uc5b8\uc5b4\uc640 \uc5ed\ud560\uc744 \ub098\ub204\ub294 \ubc29\uc2dd<\/strong>\uc774 \uc798 \ub9de\ub294\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lua\uc758 \uc2e4\ud589 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub97c \ud558\ub098\uc758 \uad6c\uc870\ub85c \uc815\ub9ac\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Host Application -&gt; Lua Runtime -&gt; Lua Script -&gt; Function \/ Table \/ Coroutine -&gt; Game Logic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc5d4\uc9c4\uc774\ub77c\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C++ Engine \/ Rendering \/ Physics \/ Network \/ Memory -&gt; Lua Runtime -&gt; Quest \/ NPC \/ Event \/ Skill \/ Dialogue\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub294 \uc774 \uad6c\uc870\uc5d0\uc11c \uc5d4\uc9c4 \uc790\uccb4\ub97c \ub300\uccb4\ud558\uae30\ubcf4\ub2e4 <strong>\uc5d4\uc9c4 \uc704\uc5d0\uc11c \ub3d9\uc791\ud558\ub294 \uc2a4\ud06c\ub9bd\ud2b8 \uacc4\uce35<\/strong>\uc73c\ub85c \ub4e4\uc5b4\uac00\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lua\uc5d0\uc11c \uae30\uc5b5\ud560 \uac83<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub97c \uacf5\ubd80\ud558\uba74\uc11c \uc6b0\uc120\uc801\uc73c\ub85c \uc7a1\uc544\uc57c \ud560 \uac1c\ub150\uc740 \ub9ce\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>local -&gt; \uc9c0\uc5ed \ubcc0\uc218\nTable -&gt; \ubc30\uc5f4 \/ Map \/ Object\nFunction -&gt; First-Class Value\nClosure -&gt; \ud568\uc218\uac00 \uc678\ubd80 \uc0c1\ud0dc\ub97c \uc720\uc9c0\nMetatable -&gt; Table\uc758 \ub3d9\uc791 \ud655\uc7a5\nrequire -&gt; Module\nCoroutine -&gt; \uc911\ub2e8 \/ \uc7ac\uac1c \uac00\ub2a5\ud55c \uc2e4\ud589\nC API -&gt; Host Program\uacfc \uc5f0\ub3d9\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 Lua\ub97c \uac8c\uc784 \uac1c\ubc1c \uad00\uc810\uc5d0\uc11c \ubcf8\ub2e4\uba74 <code>Table<\/code>, <code>Function<\/code>, <code>Metatable<\/code>, <code>Coroutine<\/code>, \uadf8\ub9ac\uace0 C\/C++\uacfc\uc758 \uc5f0\ub3d9 \uad6c\uc870\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub294 \ubb38\ubc95\uc774 \uc791\uc740 \uc2a4\ud06c\ub9bd\ud2b8 \uc5b8\uc5b4\uc9c0\ub9cc, \ub0b4\ubd80 \uad6c\uc870\ub294 \uc0dd\uac01\ubcf4\ub2e4 \uc720\uc5f0\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Lua -&gt; Dynamic Typing -&gt; Table -&gt; Function -&gt; Closure -&gt; Metatable -&gt; Coroutine -&gt; Module -&gt; Host Application Integration\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\uc758 \ud575\uc2ec\uc744 \ud558\ub098\ub9cc \uaf3d\uc73c\uba74 <strong>\ub2e4\ub978 \ud504\ub85c\uadf8\ub7a8\uc5d0 \uc0bd\uc785\ud574\uc11c \ub3d9\uc791\uc2dc\ud0a4\uae30 \uc88b\uc740 \uc5b8\uc5b4\ub77c\ub294 \uc810<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C++\ub85c \uc5d4\uc9c4\uc744 \ub9cc\ub4e4\uace0 Lua\ub85c \uac8c\uc784 \ub85c\uc9c1\uc744 \uc791\uc131\ud558\ub294 \uad6c\uc870\ub97c \uc0dd\uac01\ud558\uba74 Lua\uac00 \uc65c \uc774\ub7f0 \ubb38\ubc95\uacfc \uae30\ub2a5\uc744 \uac00\uc9c0\uace0 \uc788\ub294\uc9c0 \uc774\ud574\ud558\uae30 \uc27d\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C++ -&gt; \ube60\ub978 \uc2e4\ud589\uc774 \ud544\uc694\ud55c \uc2dc\uc2a4\ud15c \/ \uc5d4\uc9c4 \/ \uba54\ubaa8\ub9ac \/ \ub80c\ub354\ub9c1 \/ \ub124\ud2b8\uc6cc\ud06c\nLua -&gt; \uc790\uc8fc \ubcc0\uacbd\ub418\ub294 \ub85c\uc9c1 \/ \ud018\uc2a4\ud2b8 \/ \uc774\ubca4\ud2b8 \/ NPC \/ \ub300\ud654 \/ \uac8c\uc784 \uaddc\uce59\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lua\ub294 C++ \uac19\uc740 \uc2dc\uc2a4\ud15c \uc5b8\uc5b4\ub97c \ub300\uccb4\ud558\ub824\uace0 \ub9cc\ub4e4\uc5b4\uc9c4 \uc5b8\uc5b4\uac00 \uc544\ub2c8\ub2e4. <strong>\ud638\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uc5d0 \uc2a4\ud06c\ub9bd\ud305 \ub2a5\ub825\uc744 \ucd94\uac00\ud558\uace0, \uc2e4\ud589 \uc911\uc778 \uc2dc\uc2a4\ud15c\uc758 \uc77c\ubd80 \ub85c\uc9c1\uc744 \uc720\uc5f0\ud558\uac8c \uad50\uccb4\ud558\uac70\ub098 \ud655\uc7a5\ud558\uae30 \uc704\ud55c \uc5b8\uc5b4<\/strong>\uc5d0 \uac00\uae5d\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c Lua\ub97c \uc81c\ub300\ub85c \uc774\ud574\ud558\ub824\uba74 \ubb38\ubc95\ub9cc \uc678\uc6b0\ub294 \uac83\ubcf4\ub2e4 <code>Table<\/code>\uacfc <code>Function<\/code>\uc744 \uc911\uc2ec\uc73c\ub85c \uc5b8\uc5b4\uc758 \uac1d\uccb4 \ubaa8\ub378\uc744 \uc774\ud574\ud558\uace0, <code>Metatable<\/code>\uacfc <code>Coroutine<\/code>, \uadf8\ub9ac\uace0 C\/C++\uacfc Lua Runtime\uc774 \uc5b4\ub5bb\uac8c \uc5f0\uacb0\ub418\ub294\uc9c0\ub97c \ubcf4\ub294 \uac83\uc774 \ud6e8\uc52c \uc911\uc694\ud558\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lua\ub294 \uc791\uace0 \ube60\ub978 \uc2a4\ud06c\ub9bd\ud2b8 \uc5b8\uc5b4\ub2e4. \ube0c\ub77c\uc9c8\uc758 PUC-Rio\uc5d0\uc11c \uac1c\ubc1c\ub418\uc5c8\uc73c\uba70, \ucc98\uc74c\ubd80\ud130 \ub3c5\ub9bd\uc801\uc778 \ub300\uaddc\ubaa8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \uac83\ubcf4\ub2e4 \ub2e4\ub978 \ud504\ub85c\uadf8\ub7a8\uc5d0 \uc0bd\uc785\ub418\uc5b4 \uae30\ub2a5\uc744 \ud655\uc7a5\ud558\ub294 \uc784\ubca0\ub514\ub4dc \uc2a4\ud06c\ub9bd\ud305 \uc5b8\uc5b4\ub97c \uc911\uc694\ud55c \ubaa9\ud45c\ub85c \ub450\uace0 \uc124\uacc4\ub418\uc5c8\ub2e4. \uadf8\ub798\uc11c Lua\ub294 Python\uc774\ub098 JavaScript\ucc98\ub7fc \uac70\ub300\ud55c \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc81c\uacf5\ud558\ub294 \ubc29\ud5a5\ubcf4\ub2e4\ub294 \uc5b8\uc5b4 \uc790\uccb4\ub97c \uc791\uac8c \uc720\uc9c0\ud558\uace0, C\/C++ \uac19\uc740 \ud638\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uacfc \uacb0\ud569\ud558\uae30 \uc27d\uac8c \ub9cc\ub4dc\ub294 \ub370 \uc9d1\uc911\ud55c\ub2e4. \uac8c\uc784 \uac1c\ubc1c\uc5d0\uc11c\ub3c4 Lua\uac00 \ub9ce\uc774 \uc0ac\uc6a9\ub41c\ub2e4. \uac8c\uc784 \uc5d4\uc9c4\uc774\ub098 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50],"tags":[],"class_list":["post-1707","post","type-post","status-publish","format-standard","hentry","category-language"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1707"}],"version-history":[{"count":2,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1707\/revisions"}],"predecessor-version":[{"id":1988,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1707\/revisions\/1988"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}