테트리스 게임 만들기 - 개념 설명서
📖 이 문서는?
이 문서는 기초 개념 학습을 위한 목차입니다.
단계별 실습에서 복기한 뒤, 아래 표에서 항목을 클릭하면 해당 개념 문서로 이동하며, 점진적으로 확장된 실습으로 이어집니다.
초등학생도 쉽게 따라할 수 있도록 쉬운 예시와 수행 과정(실습)을 포함했습니다.
🔤 영어 표기 읽기가 어렵다면 → 영어 용어 발음·표기 (한글 발음 + 발음기호) 참고.
🛠️ Unity에서 개념 실습하기
개념 실습을 테트리스 게임과 분리된 씬에서 단계적으로 하려면, 먼저 개념 실습 테스트 환경 가이드를 읽고 전용 씬을 만들어 두세요. 프로젝트와 상관없이 씬에서만 테스트할 수 있습니다.
🎮 게임 개발 기본 개념
| 개념 | 설명 | 실습 |
|---|---|---|
| 게임 루프 (Game Loop) | 게임이 반복하는 기본 흐름, Update() | Update() 호출 확인 |
💻 C# 프로그래밍 개념
| 개념 | 설명 | 실습 |
|---|---|---|
| 변수 (Variable) | 데이터를 저장하는 상자 | 변수에 값 저장·출력 |
| 함수/메서드 (Function) | 특정 작업을 수행하는 코드 묶음 | 함수 정의·호출 |
| 조건문 (If-Else) | “만약 ~라면” 분기 | 점수에 따라 메시지 출력 |
| 반복문 (Loop) | 같은 작업을 여러 번 반복 | for, foreach 사용 |
| 배열 (Array) | 같은 타입 데이터를 순서대로 저장 | 1차원·2차원 배열 |
| 리스트 (List) | 크기가 변하는 배열 | Add, Count, foreach |
| 딕셔너리 (Dictionary) | 키-값 쌍으로 저장 | 이름으로 점수 조회 |
| 멤버와 메소드 | 왜 클래스에 넣나요? 저장소와 그걸 다루는 함수 | AddScore로 저장소 다루기 |
| 멤버 변수와 로컬 변수 | 클래스 안 vs 메소드 안 변수, 이름·위치 컨벤션 | 멤버 vs 로컬 실습 |
| 클래스 (Class) | 변수(멤버)와 함수(메소드)를 묶은 설계도 | Player 클래스 만들기 |
| 객체 지향 (OOP) | 클래스·객체로 세상을 표현 | 보드·블록 협력 구조 |
🎯 Unity 개념
| 개념 | 설명 | 실습 |
|---|---|---|
| GameObject | 게임 세계의 모든 오브젝트 | 생성·이름 변경 |
| Component | GameObject에 붙는 기능 | 컴포넌트 추가·제거 |
| MonoBehaviour | Start(), Update() 등 Unity 라이프사이클 | 별도 문서 참고 |
| Transform | 위치, 회전, 크기 (스케일·로테이션·local 확장) | position, scale 변경 |
| 단계별 확장 실습 (목차) | 1~8단계에 걸쳐 분산된 확장 실습 (이전 단계 몰라도 진행 가능) | 1단계 Start·변수 ~ 8단계 Instantiate·Random |
| Vector2, Vector3 | 위치·방향 표현 | Vector2Int, Vector3 사용 |
| Instantiate / Destroy | 오브젝트 생성·삭제 | 프리팹 복제, 3초 후 삭제 |
| Time.deltaTime | 프레임 간 경과 시간 | 1초마다 실행 |
| 코루틴 (Coroutine) | 시간을 두고 순서대로 실행 (IEnumerator, yield, WaitForSeconds) | 3·2·1·Go 카운트다운, 줄 사라짐 이펙트 |
| FindObjectOfType | 씬에서 컴포넌트 찾기 | TargetObject 찾기 |
🎲 게임 로직 개념
| 개념 | 설명 | 실습 |
|---|---|---|
| 충돌 감지 | 이동 가능 여부 확인 | CanMoveTo() 구현 |
| 상태 관리 | score, level 등 현재 상황 추적 | 점수·레벨 변수 |
| 이벤트 | 특정 상황에서 반응 | 100점 달성 시 메시지 |
🔢 수학 개념
| 개념 | 설명 | 실습 |
|---|---|---|
| 좌표계 | X, Y, Z 축과 방향 | Cube 위치로 좌표 이해 |
| 회전 수학 | 90도 시계 방향 회전 공식 | (x,y) → (-y,x) 적용 |
📚 용어 사전
| 용어 | 한글 발음(읽는 법) | 설명 |
|---|---|---|
| 변수 | (Variable: 베리어블) | 데이터를 저장하는 상자 |
| 함수 | (Function: 펑션) | 특정 작업을 수행하는 코드 묶음 |
| 클래스 | (Class: 클래스) | 관련된 변수와 함수를 묶은 설계도 |
| 객체 | (Object: 오브젝트) | 클래스로부터 만들어진 실제 데이터 |
| 배열 | (Array: 어레이) | 같은 타입의 데이터를 순서대로 저장 |
| 리스트 | (List: 리스트) | 크기가 변할 수 있는 배열 |
| GameObject | 게임 오브젝트 | Unity 게임 세계의 모든 오브젝트 |
| Component | 컴포넌트 | GameObject에 추가되는 기능 |
| Transform | 트랜스폼 | 위치, 회전, 크기 정보 |
| Vector | 벡터 | 위치나 방향을 나타내는 수학적 개념 |
| 충돌 감지 | — | 오브젝트가 겹치는지 확인 |
| 게임 루프 | (Game Loop) | 게임이 반복하는 기본 흐름 |
→ 더 많은 영어 용어 발음은 영어 용어 발음·표기 참고.
💡 학습 팁
- 하나씩 이해하기: 모든 개념을 한 번에 이해하려 하지 말고, 하나씩 차근차근 배우세요.
- 실습 먼저 하기: 각 개념 문서의 🛠️ 실습을 따라 해보면 이해가 빠릅니다.
- 오류는 친구: 오류가 나면 왜 났는지 생각해 보세요.
- 주석 활용: 코드에 주석을 달아 두면 나중에 다시 볼 때 쉽습니다.
- 작은 것부터: 큰 기능을 한 번에 만들지 말고, 작은 기능부터 하나씩 완성하세요.
각 개념 문서에는 간단한 실습(수행 과정)이 포함되어 있습니다. 직접 따라 해 보세요! 🎓