본문 바로가기

게임만들기

Nooblox? 노박이가 운영하는 블로그입니다. 이것 저것 게임을 만들어 봅니다. 그러다 게임을 만들고 싶어하는 사람들이 많은거 같아서, 그때 그때 알게 된 것을 공유합니다. https://www.youtube.com/channel/UCoboBETL6WoOBcME_-cnwOw 동영상 댓글이나 블로그 질문/답변 게시판에 궁금한거나 요청 올려주면 하나씩 찾아보기도 합니다. 부지런하지 않습니다. 몇 달동안 아무 것도 안할 때도 있고 어쩌다 한 주에 이것 저것 막 할 때도 있습니다. 조금은 더 부지런해 지려고 노력하지만 쉽진 않습니다. 오늘은 '부지런해지려는 기분의 날' 입니다. 최근엔 주로 Roblox를 하지만 Minecraft 서버로 게임 만드는 것도 관심이 많아요. 방문해 주셔서 언제나 감사합니다. 출처: https://.. 더보기
Lua#10 Module 이미 Roblox에서도 ModuleScript라는 것이 있어서 이런 module이 익숙할 수 있을거 같아요. module은 어떤 함수들을 미리 만들어 놓고, 불러서 사용할 수 있어요. 즉, module_name.lua 라는 파일에 table을 하나 만들어 return 합니다. 사용하는 쪽에서는 require 라는 명령어를 이용해서 불러서 사용합니다. mymath.lua 파일 local mymath = {} function mymath.add(a,b) print(a+b) end function mymath.sub(a,b) print(a-b) end function mymath.mul(a,b) print(a*b) end function mymath.div(a,b) print(a/b) end return my.. 더보기
Lua#9 Table과 iterator Table Lua에서 유연하게 지원되어 잘 사용되는 형태가 Table이 아닐까 합니다. Table은 여러 다른 데이터들의 그룹입니다. 그 안에는 숫자, 문자, 함수, 다른 테이블 모두 포함할 수 있습니다. 이전에 Array 배열도 단순한 하나의 Table 이라고 할 수 있어요. Array는 인덱스가 1부터 시작했지만 Table은 꼭 숫자 인덱스가 아니라 string 형태의 key 도 사용이 가능합니다. 아래 예제는 테이블을 선언하고 초기화 하는 다양한 방법이에요 t = { "aaa", 1, 2, name= 'nobakee', age= 12, school= 'Roblox School', 999 } 위 예제에서 key 가 없는 값은 순서대로 array 처럼 1,2,3 index를 갖게 됩니다. 즉, t[1].. 더보기
Lua#8 : Array 여러개의 일련의 데이터를 다뤄야 할 때는 Array 라는 것을 사용합니다. 하나의 변수인데, 복수의 데이터를 포함하고, 인덱스 [1] 로 접근이 가능해요. 선언할 때는 { } 형태로 정의합니다. 다른 언어들과 좀 다른건 많은 언어들이 첫번째 값을 0으로 하는데, Lua 에서는 첫 번째가 1부터 시작합니다. 예를들어 1번부터 5번에 가방을 저장하면 bags = {"총", "칼", "돼지고기", "물약","방패"} bags[3] 더보기
Lua#7 : String 생각보다 많은 부분에서 문자를 다뤄야 할 때가 있습니다. 모든 글씨를 대문자로 나타내거나 : string.upper() 날짜를 자리수에 맞춰 표시 하거나 : string.format() 변수에 저장된 이름으로 대화를 만들거나 : "Hi! "..playername 가끔은 반복되는 문장을 함수로 표시하거나 : string.rep("WHAT! ", 100) 이런 유용한 string을 다루는 방법을 알아두시면 여러가지로 도움이 됩니다. 아래 예제만 보시면 바로 알 수 있을 거에요. myname = "nobakee" print(string.upper(myname)) date = 3; month = 5; year = 2020 print(string.format("Date %02d/%02d/%03d", date, m.. 더보기
Lua#6 : 함수 어떤 명령어들을 묶어서 불러 사용하도록 하는 것을 '함수'라고 합니다. 함수를 호출 하려면 미리 함수가 정의되어 있어야 하지요 함수를 정의하려면 아래처럼 정의할 수 있어요. local function hihi (a,b) print("hihihi") return 123 end hihi() print(type(hihi)) print(hihi) print(hihi()) 함수의 이름만 쓰면 '해당 함수의 위치주소'를 나타낼 뿐입니다. 함수를 동작시키려면 꼭 () 를 같이 불러줘야 합니다. 위 프로그램의 실행 결과는 hihihi function function: 0x558ea54200b0 hihihi 123 입니다. 함수 사용의 TIP 1. 함수를 선언하기 전에 함수를 실행하면 에러가 나요. Lua는 위에서부터 .. 더보기
Lua#5 : 조건 게임을 만들다 보면 (꼭 게임이 아니더라도) 가장 빈번하게 조건을 가지고 처리하게 됩니다. Lua 에서 제공하는 조건문은 1. if (조건) then __A__ else ___B___end 조건이 참이면 A를 실행하고 거짓이면 B를 실행합니다. else ___ B ___ 부분은 없어도 상관없습니다. 즉, 조건이 참이면 A만 실행 아니면 그냥 바로 밖의 다음 줄로 진행이 됩니다. local a = false local b = true if (a and b) then print ("A and B is true") else print (" A or B is false") end 당연히 if 문 안쪽에 또 다른 if 가 들어갈 수도 있지요. if false then print (1) else if true th.. 더보기
Lua#4 : 반복 프로그램의 주요 로직을 잘게 쪼개면 어떤 로직을 반복을 하거나, 어떤 조건에 맞으면 해당 로직을 실행하는 조건문 / 반복문들이 엄청 모여서 만들어 집니다. (이를 위한 데이터들이 정의되고, 함수들이 정의 되고) Lua에서 제공하는 반복(Loop) 기능은 while for repeat until 입니다. 추가로 훨씬 많이 사용되는 ipairs, pairs 같은 테이블을 대상으로한 반복도 있는데 이건 다음에 더 자세히 살펴보겠습니다. 이번엔 아주 기본적인 반복하는 방법입니다. 1. while (조건) do ____ end a = 10 while( a < 20 ) do print("value of a:", a) a = a+1 end while 다음에 오는 조건이 참이 될 때까지 do ~ end 사이를 계속 실.. 더보기