여정
Lua 배우기
무료로 즐기는 인터랙티브 온라인 Lua 강의예요. 매 레슨마다 직접 Lua 코드를 작성하면서 문법, 테이블, 함수, 메타테이블, 그리고 Roblox 스크립팅과 게임 엔진 작업에 필요한 기초를 다집니다 — nil이 튀어나올 때 도와주는 AI 힌트, 그리고 완주하면 받는 무료 수료증까지.
52,312+ 명의 codders가 등록함
- 초보자 환영
AI 코딩 도우미
실습 중심의 대화형 강의
모든 레슨에 음성 나레이션 제공
지식을 확인하는 퀴즈
무료 수료증
커리큘럼
섹션 1
Fundamentals
섹션 시작하기시작펼치기접기The first section in Lua for absolute beginners.소개
3 개 강의216- 01언어 소개챌린지
- 02Hello World!챌린지퀴즈오디오
- 03주석퀴즈오디오
변수와 데이터 타입
8 개 강의754- 01변수란 무엇인가요?챌린지퀴즈오디오
- 02숫자챌린지퀴즈오디오
- 03문자열챌린지퀴즈오디오
- 04불리언챌린지퀴즈오디오
- 05'nil' 값챌린지퀴즈오디오
- 06type() 함수챌린지퀴즈오디오
- 07명명 규칙퀴즈오디오
- 08요약 - 캐릭터 프로필챌린지
연산자 1 산술 및 결합
6 개 강의636- 01산술 연산자챌린지퀴즈오디오
- 02나머지 연산자챌린지퀴즈오디오
- 03거듭제곱 연산자챌린지퀴즈오디오
- 04문자열 결합챌린지퀴즈오디오
- 05연산자 우선순위챌린지퀴즈오디오
- 06요약 - 간단한 계산챌린지
연산자 2 관계 및 논리
8 개 강의651- 01동등 연산자챌린지퀴즈오디오
- 02관계 연산자챌린지퀴즈오디오
- 03'and' 연산자챌린지퀴즈오디오
- 04'or' 연산자챌린지퀴즈오디오
- 05'not' 연산자챌린지퀴즈오디오
- 06단락 평가퀴즈오디오
- 07Truthy와 Falsy 값퀴즈오디오
- 08요약 - 간단한 논리챌린지
기본 출력
9 개 강의954- 01리터럴 출력하기챌린지퀴즈오디오
- 02변수 출력하기챌린지퀴즈오디오
- 03여러 값 출력하기챌린지퀴즈오디오
- 04문자열과 변수 결합하기챌린지퀴즈오디오
- 05tostring() 함수챌린지퀴즈오디오
- 06입력챌린지퀴즈오디오
- 07형변환챌린지퀴즈오디오
- 08요약 - 상태 보고챌린지
- 09요약 - 120까지챌린지
프로젝트: 캐릭터 스탯 표시
프로젝트5 개 강의1- 01환영 메시지챌린지
- 02캐릭터 스탯 선언하기프로젝트
- 03기본 스탯 표시하기프로젝트
- 04Boolean 플래그 추가하기프로젝트
- 05최종 요약프로젝트
기본 조건문 논리
4 개 강의423- 01if-then 문챌린지퀴즈오디오
- 02if-then-else 문챌린지퀴즈오디오
- 03elseif 문챌린지퀴즈오디오
- 04요약 - 보물 상자챌린지
문자열 조작 기초
6 개 강의638- 01string.len()챌린지퀴즈오디오
- 02string.upper와 string.lower챌린지퀴즈오디오
- 03string.sub()챌린지퀴즈오디오
- 04string.rep()챌린지퀴즈오디오
- 05string.find()챌린지퀴즈오디오
- 06복습 - 사용자 이름 형식 지정챌린지
함수 기초
6 개 강의636- 01함수 선언하기챌린지퀴즈오디오
- 02함수 호출하기챌린지퀴즈오디오
- 03매개변수가 있는 함수챌린지퀴즈오디오
- 04여러 개의 매개변수가 있는 함수챌린지퀴즈오디오
- 05'return' 문챌린지퀴즈오디오
- 06요약 - 넓이 계산기챌린지
테이블 파트 1: 리스트 스타일
8 개 강의752- 01테이블이란 무엇인가요?퀴즈오디오
- 02테이블 생성하기챌린지퀴즈오디오
- 03인덱스로 요소에 접근하기챌린지퀴즈오디오
- 04인덱스로 요소 수정하기챌린지퀴즈오디오
- 05길이 연산자 '#'챌린지퀴즈오디오
- 06table.insert()챌린지퀴즈오디오
- 07table.remove()챌린지퀴즈오디오
- 08요약 - 파티원 관리하기챌린지
테이블 2: 딕셔너리 스타일
7 개 강의648- 01키-값 쌍퀴즈오디오
- 02딕셔너리 스타일 테이블 생성하기챌린지퀴즈오디오
- 03액세스 - 대괄호 표기법챌린지퀴즈오디오
- 04점 표기법으로 액세스하기챌린지퀴즈오디오
- 05쌍 추가 및 수정하기챌린지퀴즈오디오
- 06nil로 쌍 제거하기챌린지퀴즈오디오
- 07요약 - 아이템 속성챌린지
반복문의 기초
6 개 강의636- 01while 반복문챌린지퀴즈오디오
- 02repeat-until 반복문챌린지퀴즈오디오
- 03숫자형 for 반복문챌린지퀴즈오디오
- 04증감값이 있는 for 반복문챌린지퀴즈오디오
- 05'break' 문챌린지퀴즈오디오
- 06요약 - 카운트다운챌린지
프로젝트: 간단한 포션 상점
프로젝트6 개 강의1- 01프로젝트 설정챌린지
- 02포션 추가하기프로젝트
- 03인벤토리 표시하기프로젝트
- 04전체 재고 가치 계산하기프로젝트
- 05특정 포션 찾기프로젝트
- 06포션 판매하기프로젝트
변수 범위 (Scope)
5 개 강의330- 01전역 변수퀴즈오디오
- 02지역 변수챌린지퀴즈오디오
- 03지역 변수를 사용하는 이유는?퀴즈오디오
- 04범위와 블록챌린지퀴즈오디오
- 05요약 - 스코프 퍼즐챌린지
최종 챌린지
3 개 강의3- 01복습 - 플레이어 차례챌린지
- 02복습 - 간단한 데이터베이스챌린지
- 03복습 - 짝수의 합챌린지
섹션 2
Logic & Flow
섹션 시작하기시작펼치기접기Develop problem-solving skills and create dynamic, interactive programs고급 테이블 순회
4 개 강의423- 01pairs()를 사용한 순회챌린지퀴즈
- 02ipairs()를 사용한 순회챌린지퀴즈
- 03pairs() vs. ipairs()챌린지퀴즈
- 04요약 - 캐릭터 시트챌린지
추가 Table 라이브러리 함수
5 개 강의430- 01table.concat()챌린지퀴즈
- 02Table 생성 및 unpack()챌린지퀴즈
- 03table.sort()챌린지퀴즈
- 04함수를 이용한 사용자 정의 정렬퀴즈
- 05요약 - 하이스코어 보드챌린지
고급 함수 개념
6 개 강의539- 01다중 값 반환퀴즈
- 02가변 인자 함수 (...)챌린지퀴즈
- 03일급 값으로서의 함수챌린지퀴즈
- 04익명 함수챌린지퀴즈
- 05클로저(Closure)란 무엇인가요?챌린지퀴즈
- 06요약 - 간단한 이벤트 핸들러챌린지
메타테이블 소개
8 개 강의757- 01메타테이블이란 무엇인가요?퀴즈
- 02setmetatable & getmetatable챌린지퀴즈
- 03__index 메타메소드챌린지퀴즈
- 04__newindex 메타메소드챌린지퀴즈
- 05__tostring 메타메소드챌린지퀴즈
- 06산술 메타메소드 파트 1챌린지퀴즈
- 07산술 메타메소드 파트 2챌린지퀴즈
- 08복습 - 읽기 전용 테이블챌린지
프로젝트: 텍스트 어드벤처 엔진
프로젝트8 개 강의1- 01프로젝트 설정: 방챌린지
- 02방 연결하기프로젝트
- 03플레이어 상태프로젝트
- 04게임 루프프로젝트
- 05사용자 입력 처리하기프로젝트
- 06플레이어 이동시키기프로젝트
- 07잘못된 이동 처리하기프로젝트
- 08출구 표시하기프로젝트
에러 처리
3 개 강의216- 01error() 함수퀴즈
- 02pcall()을 사용한 보호된 호출챌린지퀴즈
- 03요약 - 안전한 나눗셈챌린지
고급 문자열 조작
6 개 강의641- 01치환을 위한 string.gsub()챌린지퀴즈
- 02문자열 패턴 입문챌린지퀴즈
- 03string.find()챌린지퀴즈
- 04string.match()챌린지퀴즈
- 05string.gmatch()를 이용한 반복 처리챌린지퀴즈
- 06복습 - 로그 파일 파서챌린지
프로젝트: 연락처 목록
프로젝트7 개 강의1- 01프로젝트 설정챌린지
- 02메인 루프프로젝트
- 03연락처 추가하기프로젝트
- 04전체 연락처 목록 보기프로젝트
- 05연락처 검색하기프로젝트
- 06연락처 삭제하기프로젝트
- 07잘못된 입력 처리하기프로젝트
입문자를 위한 코루틴
7 개 강의638- 01코루틴이란 무엇인가요?퀴즈
- 02coroutine create와 resume챌린지퀴즈
- 03coroutine.yield()로 일시 중단하기챌린지퀴즈
- 04resume과 yield챌린지퀴즈
- 05코루틴 상태 확인하기챌린지퀴즈
- 06요약 - 숫자 생성기챌린지
- 07요약 - 벡터 수학챌린지
섹션 3
Object Oriented Programming
섹션 시작하기시작펼치기접기Discover how to organize code with classes, objects, and reusable structures'Self' 개념
5 개 강의532- 01함수를 포함한 테이블챌린지퀴즈
- 02명시적 'self'챌린지퀴즈
- 03콜론 구문챌린지퀴즈
- 04점(.) vs 콜론(:)챌린지퀴즈
- 05요약 - 점 이동하기챌린지
클래스 프로토타입 패턴
6 개 강의641- 01프로토타입 개념챌린지퀴즈
- 02__index를 이용한 연결챌린지퀴즈
- 03:new() 생성자챌린지퀴즈
- 04속성 초기화챌린지퀴즈
- 05독립적인 인스턴스챌린지퀴즈
- 06요약 - 자동차 공장챌린지
객체의 상태와 행동
7 개 강의748- 01인스턴스 변수챌린지퀴즈
- 02Getter 메서드챌린지퀴즈
- 03Setter 메서드챌린지퀴즈
- 04계산된 속성챌린지퀴즈
- 05문자열 포매팅챌린지퀴즈
- 06동등성 확인챌린지퀴즈
- 07요약 - 학생 성적챌린지
프로젝트: 디지털 뱅크
프로젝트7 개 강의1- 01프로젝트 설정챌린지
- 02입금 메서드프로젝트
- 03출금 메서드프로젝트
- 04잔액 조회프로젝트
- 05계좌 정보프로젝트
- 06송금 기능프로젝트
- 07최종 뱅크 테스트프로젝트
OOP에서의 연산자 오버로딩
5 개 강의531- 01객체 더하기챌린지퀴즈
- 02객체 빼기챌린지퀴즈
- 03객체 연결하기챌린지퀴즈
- 04객체 비교하기 (<, >)챌린지퀴즈
- 05요약 - 지갑 산술 연산챌린지
상속 기초
6 개 강의643- 01상속 설정챌린지퀴즈
- 02메서드 상속하기챌린지퀴즈
- 03생성자 확장하기챌린지퀴즈
- 04자식 메서드 추가하기챌린지퀴즈
- 05공통 요소와 고유 요소챌린지퀴즈
- 06요약 - 도형 계층 구조챌린지
다형성과 오버라이딩
6 개 강의640- 01메서드 오버라이딩챌린지퀴즈
- 02부모 메서드 호출하기챌린지퀴즈
- 03덕 타이핑챌린지퀴즈
- 04공통 인터페이스챌린지퀴즈
- 05타입 확인하기챌린지퀴즈
- 06요약 - 직원 역할챌린지
캡슐화
6 개 강의644- 01명명 규칙챌린지퀴즈
- 02프라이버시를 위한 클로저챌린지퀴즈
- 03클로저를 통한 접근챌린지퀴즈
- 04읽기 전용 테이블챌린지퀴즈
- 05검증 로직챌린지퀴즈
- 06요약 - 보안 금고챌린지
컴포지션과 믹스인
6 개 강의642- 01Has-A 관계챌린지퀴즈
- 02위임챌린지퀴즈
- 03단순한 믹스인챌린지퀴즈
- 04여러 믹스인 적용하기챌린지퀴즈
- 05믹스인 vs 상속챌린지퀴즈
- 06요약 - 로봇 조립챌린지
프로젝트: 도형 관리자
프로젝트7 개 강의1- 01프로젝트 설정챌린지
- 02Rectangle 클래스프로젝트
- 03Circle 클래스프로젝트
- 04둘레 메서드프로젝트
- 05도형 컬렉션프로젝트
- 06전체 넓이프로젝트
- 07도형 필터링프로젝트
디자인 패턴 (Lite)
5 개 강의532- 01팩토리 함수챌린지퀴즈
- 02싱글톤 테이블챌린지퀴즈
- 03이터레이터 패턴챌린지퀴즈
- 04옵저버 (리스너)챌린지퀴즈
- 05요약 - 로거 팩토리챌린지
최종 도전
4 개 강의4- 01요약 - 인벤토리 시스템챌린지
- 02요약 - 사용자 관리자챌린지
- 03요약 - 점수 추적기챌린지
- 04최종 OOP 점검챌린지
Coddy에서 Lua을 배우는 이유
- 브라우저에서 진짜 Lua 코드를 실행하세요. 설치할 Lua 인터프리터도, 툴체인 설정도 필요 없습니다. 각 레슨은 Lua 스크립트를 서버에서 실행해 결과를 바로 보여줍니다.
- 실제로 쓰이는 방식대로 배우는 Lua: 변수, 제어 흐름, 함수, 테이블(Lua의 유일한 핵심 자료구조), 문자열 처리, metatables와 OOP 패턴, 에러 처리. Roblox, Love2D, 또는 임베디드 스크립팅에 필요한 Lua 기초를 다집니다.
- AI 힌트는 정답을 그대로 알려주지 않으면서 Lua 스크립트 디버깅과 에러 메시지 읽는 법을 도와줘서, nil indexing이나 1부터 시작하는 배열 같은 흔한 실수가 오히려 배움의 순간이 됩니다.
- 과정을 마치면 무료 Lua 수료증을 드립니다. 그동안 만든 Roblox 게임, 모드, 임베디드 스크립팅 프로젝트와 함께 내세울 수 있는 확실한 증거가 됩니다.
Lua 학습에 대한 자주 묻는 질문
Lua는 어디에 쓰이나요?
Lua는 주로 더 큰 애플리케이션, 특히 게임 엔진 안에서 임베디드 스크립팅 언어로 쓰입니다. Roblox 스크립팅(Luau는 Roblox 전용 Lua 방언입니다), Love2D, World of Warcraft 애드온, Defold, Garry's Mod 모두 Lua를 사용합니다. 게임 외에도 Lua는 설정, 자동화, 임베디드 시스템에서도 활용됩니다.
Lua는 배우기 쉬운가요?
Lua는 가장 작고 단순한 프로그래밍 언어 중 하나입니다 — 레퍼런스 매뉴얼 전체가 짧은 PDF 한 권에 다 들어가고, 주요 자료구조도 사실상 하나(테이블)뿐입니다. 대부분의 입문자는 첫 한 시간 안에 동작하는 Lua 프로그램을 만들어냅니다. 까다로운 부분(metatables, 클로저, 코루틴)은 나중에 단계적으로 다룹니다.
Roblox를 위해 Lua를 배워야 할까요?
네. Lua(정확히는 Roblox가 쓰는 Luau 방언)는 Roblox 게임에서 사용할 수 있는 유일한 스크립팅 언어입니다. 본 Lua 코스는 Luau의 기반이 되는 핵심 언어(변수, 테이블, 함수, metatables, OOP 패턴)를 그대로 다루기 때문에, 코스를 마치면 Roblox 스크립팅에서 확실히 앞서갈 수 있습니다.
Lua를 배우는 데 얼마나 걸리나요?
Lua 기초 — 변수, 조건문, 반복문, 함수, 테이블 — 은 매일 연습하면 1~2주면 익힐 수 있습니다. metatable, 클로저, Lua의 OOP 패턴에 익숙해지려면 보통 2~4주가 더 걸립니다. 그 다음에 Roblox나 다른 게임 엔진 안에서 Lua를 활용하는 건 언어 자체와는 별개로 또 다른 학습 곡선이 있습니다.
Lua를 온라인에서 무료로 배울 수 있나요?
네. 인터랙티브 Lua 코스는 무료입니다 — 레슨, 코딩 연습, 퀴즈, 그리고 수료증까지. Lua는 서버에서 실행되므로 코드를 작성하기 위해 로컬에 Lua나 게임 엔진을 따로 설치할 필요가 없습니다.
Lua 강좌를 마치면 수료증을 받을 수 있나요?
네. Lua 코스를 완료하면 무료 수료증을 받을 수 있어요. 이력서에 추가하거나, 직접 만든 Roblox 게임·모드·스크립팅 프로젝트와 함께 LinkedIn에 공유할 수 있습니다.