1. 개요
엔트리 게임이란 네이버 커넥트재단에서 운영하는 교육용 소프트웨어 플랫폼 '엔트리(Entry)'의 블록 코딩 환경을 이용하여 제작된 모든 형태의 인터랙티브 게임 콘텐츠를 의미한다. 텍스트 기반의 복잡한 문법 대신 드래그 앤 드롭 방식의 블록을 조립하여 로직을 구현하므로, 전문적인 프로그래밍 지식이 없는 입문자나 학생들도 논리적 사고를 통해 게임을 설계하고 실행할 수 있다는 특징이 있다. 상용 게임이 수익 창출과 고성능 그래픽을 지향하는 것과 달리, 엔트리 게임은 학습, 공유, 그리고 창의적 구현에 주된 목적을 둔다.
2. 제작 원리 및 특징
본 문서는 최신 버전의 엔트리(웹 기반 환경)를 기준으로 작성되었다. 엔트리는 웹 브라우저에서 구동되므로 Chrome, Edge 등 최신 웹 표준을 지원하는 브라우저 사용을 권장한다.
엔트리 게임은 '이벤트 기반 프로그래밍' 원리를 따른다. 특정 조건(예: 클릭했을 때, 키를 눌렀을 때)이 충족되면 연결된 블록 뭉치가 순차적으로 실행되는 구조이다.
2.1 핵심 기능의 활용
- 신호(Signal): 오브젝트 간의 통신 수단이다. 예를 들어 '플레이어'가 '몬스터'에 닿았을 때 '게임 오버'라는 신호를 보내면, 배경 오브젝트가 이를 수신하여 결과 화면으로 전환하는 식의 상호작용을 구현한다.
- 변수(Variable): 점수, 체력, 시간 등 계속해서 변하는 데이터를 저장하는 공간이다.
- 리스트(List): 여러 개의 데이터를 순서대로 저장하는 배열 형태의 저장소로, 인벤토리 시스템이나 랭킹 시스템 구현에 필수적이다.
- 복제본(Clone): 동일한 모양과 기능을 가진 오브젝트를 실시간으로 생성하는 기능이다. 떨어지는 장애물이나 다수의 적 캐릭터를 효율적으로 생성할 때 사용한다.
2.2 코딩 방식 비교
| 구분 |
일반 텍스트 코딩 (C#, Python 등) |
엔트리 블록 코딩 |
| 입력 방식 |
키보드 타이핑 (Syntax 입력) |
마우스 드래그 앤 드롭 (Block 조립) |
| 문법 오류 |
오타 하나로 실행 불가 (Syntax Error) |
블록 결합 구조상 문법 오류 발생 불가 |
| 학습 곡선 |
높음 (언어 문법 습득 필요) |
낮음 (직관적인 시각적 구조) |
| 실행 속도 |
매우 빠름 (컴파일/최적화 가능) |
상대적으로 느림 (인터프리터 방식) |
| 자유도 |
매우 높음 (시스템 제어 가능) |
플랫폼 제공 기능 내에서 제한적 |
3. 주요 게임 장르 및 구현 방식
엔트리에서는 플랫폼의 특성에 맞는 다양한 장르의 게임이 제작된다.
3.1 장르별 메커니즘 및 대표 사례
- 클리커(Clicker): 특정 오브젝트를 클릭하여 재화를 모으고 업그레이드하는 장르. 변수 증가 로직이 핵심이다. (예: 쿠키 클릭커 모작)
- 플랫폼 게임(Platformer): 발판을 딛고 점프하며 목적지까지 이동하는 장르. 중력 가속도 구현과 충돌 감지가 핵심이다. (예: 마리오 스타일 런게임)
- RPG(Role Playing Game): 캐릭터를 성장시키고 스토리를 진행하는 장르. 리스트를 활용한 인벤토리와 신호를 이용한 맵 전환이 핵심이다. (예: 엔트리 판타지 모험)
- 퀴즈/시뮬레이션: 정답 여부를 판별하거나 특정 상황을 재현하는 장르. 조건문(만약 ~라면)의 정교한 설계가 핵심이다. (예: 상식 퀴즈)
3.2 기본 로직 예시 (캐릭터 이동 및 충돌)
캐릭터가 방향키로 이동하고 벽에 닿았을 때 멈추는 기본 로직의 예시다. 단순히 반대 방향으로 이동시키면 벽과 캐릭터 사이에서 좌표가 계속 충돌하여 캐릭터가 떨리는 '지터링(Jittering)' 현상이 발생할 수 있으므로, 정확한 좌표 보정 처리가 필요하다.
[시작하기 버튼을 클릭했을 때]
[무한 반복하기]
<만약 [오른쪽 화살표] 키가 눌렸는가?> 라면
[x 좌표를 5만큼 바꾸기]
<만약 [벽]에 닿았는가?> 라면
[x 좌표를 -5만큼 바꾸기] (이전 좌표로 되돌려 벽 통과 및 떨림 방지)
<만약 [왼쪽 화살표] 키가 눌렸는가?> 라면
[x 좌표를 -5만큼 바꾸기]
<만약 [벽]에 닿았는가?> 라면
[x 좌표를 5만큼 바꾸기] (이전 좌표로 되돌려 벽 통과 및 떨림 방지)
4. 게임 제작 프로세스
엔트리 게임 제작은 일반적으로 다음과 같은 5단계 파이프라인을 거친다.
- 기획: 게임의 장르, 목표, 핵심 규칙(Rule)을 설정하고 간단한 스토리보드를 작성한다.
- 오브젝트 디자인: 엔트리 기본 라이브러리에서 이미지를 선택하거나, 직접 그림판 기능을 사용하여 캐릭터, 배경, UI 요소를 제작한다.
- 코딩(로직 구현): 기획한 규칙에 따라 블록을 조립한다. 이동 $\rightarrow$ 상호작용 $\rightarrow$ 시스템(점수/생명) 순으로 구현하는 것이 효율적이다.
- 테스트 및 디버깅: 게임을 실행하며 의도치 않은 동작(버그)을 찾아 수정한다. 특히 충돌 판정의 정밀도를 조정하는 단계가 중요하다.
- 공유하기: 작품을 저장하고 '작품 공유하기' 설정을 통해 다른 사용자가 플레이할 수 있도록 공개한다.
5. 배포 및 커뮤니티 생태계
엔트리는 단순한 툴을 넘어 하나의 거대한 게임 커뮤니티 역할을 수행한다.
- 작품 공유 및 피드백: 제작자는 자신의 작품을 공유 갤러리에 올릴 수 있으며, 사용자는 댓글과 '좋아요'를 통해 피드백을 남긴다. 이는 제작자에게 동기부여가 되며 게임의 완성도를 높이는 계기가 된다.
- 리믹스(Remix): 타인이 공개한 작품의 코드를 그대로 가져와 수정하여 새로운 작품을 만드는 기능이다. 이는 오픈 소스 소프트웨어의 발전 방식과 유사하며, 초보자가 숙련자의 코드를 분석하며 학습하는 가장 강력한 도구가 된다.
6. 한계점 및 발전 방향
6.1 성능 제한과 최적화 가이드
엔트리는 웹 브라우저 기반의 인터프리터 방식이므로, 오브젝트 수가 많아지거나 복잡한 반복문이 겹치면 실행 지연(프레임 드랍, 렉)이 발생한다. 이를 극복하기 위한 최적화 가이드는 다음과 같다.
- 복제본 관리: 생성된 복제본을 적절한 시점에
이 복제본 삭제하기 블록으로 제거하여 메모리 낭비를 방지해야 한다. 특히 화면 밖으로 나간 오브젝트는 즉시 삭제하는 것이 좋다.
- 무한 루프 최적화: 모든 오브젝트에
무한 반복하기를 넣기보다, 메인 컨트롤러 오브젝트 하나가 신호를 보내어 필요한 시점에만 코드가 실행되도록 설계하여 CPU 부하를 줄인다.
- 판정 간소화: 매 프레임마다 모든 오브젝트 간의 거리를 계산하기보다, 특정 거리 이상 떨어져 있을 때는 계산을 생략하거나 판정 주기를 조절하는 방식을 도입한다.
- 오브젝트 통합: 비슷한 기능을 하는 여러 개의 오브젝트를 하나로 합치고, '모양 바꾸기' 기능을 활용하여 개수를 최소화한다.
6.2 확장 가능성
최근 엔트리는 외부 API 연동 기능을 통해 날씨, 뉴스, 번역 등 실시간 데이터를 게임 내에 가져올 수 있게 되었다. 이를 통해 단순한 오락용 게임을 넘어 실생활 데이터를 활용한 교육용 시뮬레이션 게임으로 확장되고 있다.
7. 초보자를 위한 외부 에셋 활용법
엔트리 기본 라이브러리 외에 더 높은 퀄리티의 게임을 만들기 위해 외부 에셋을 활용할 수 있다.
- 이미지 에셋: 저작권 무료 사이트(Pixabay, Flaticon 등)에서 PNG 파일을 다운로드하여 '파일 업로드' 기능을 통해 추가할 수 있다. 배경이 투명한 PNG 파일을 사용하는 것이 자연스럽다.
- 사운드 에셋: 무료 효과음 사이트(Bfxr, Freesound 등)에서 WAV 또는 MP3 파일을 가져와 사용할 수 있다.
- 주의사항: 외부 에셋 사용 시 반드시 저작권 라이선스(CC0, CC-BY 등)를 확인해야 하며, 작품 설명란에 출처를 명시하는 것이 권장된다.
[부록] 입문자를 위한 추천 튜토리얼
엔트리 게임 제작에 처음 입문하는 사용자는 다음 순서로 학습하는 것을 권장한다.
- 엔트리 공식 학습하기: 플랫폼 내 제공되는 단계별 튜토리얼을 통해 블록의 기본 사용법을 익힌다.
- 단순 클리커 제작: 변수 개념을 익히기 위해 '클릭 시 점수 증가' 게임을 만들어 본다.
- 리믹스 분석: 자신이 만들고 싶은 장르의 인기 작품을 찾아 '코드 보기'를 통해 로직을 분석하고 수치를 변경해 본다.
- 소규모 프로젝트 완성: 기획부터 배포까지 전 과정을 스스로 경험하며 작은 규모의 게임을 완성해 본다.
# 엔트리 게임
## 1. 개요
**엔트리 게임**이란 네이버 커넥트재단에서 운영하는 교육용 소프트웨어 플랫폼 '엔트리(Entry)'의 블록 코딩 환경을 이용하여 제작된 모든 형태의 인터랙티브 게임 콘텐츠를 의미한다. 텍스트 기반의 복잡한 문법 대신 드래그 앤 드롭 방식의 블록을 조립하여 로직을 구현하므로, 전문적인 프로그래밍 지식이 없는 입문자나 학생들도 논리적 사고를 통해 게임을 설계하고 실행할 수 있다는 특징이 있다. 상용 게임이 수익 창출과 고성능 그래픽을 지향하는 것과 달리, 엔트리 게임은 학습, 공유, 그리고 창의적 구현에 주된 목적을 둔다.
## 2. 제작 원리 및 특징
본 문서는 최신 버전의 엔트리(웹 기반 환경)를 기준으로 작성되었다. 엔트리는 웹 브라우저에서 구동되므로 Chrome, Edge 등 최신 웹 표준을 지원하는 브라우저 사용을 권장한다.
엔트리 게임은 '이벤트 기반 프로그래밍' 원리를 따른다. 특정 조건(예: 클릭했을 때, 키를 눌렀을 때)이 충족되면 연결된 블록 뭉치가 순차적으로 실행되는 구조이다.
### 2.1 핵심 기능의 활용
* **신호(Signal):** 오브젝트 간의 통신 수단이다. 예를 들어 '플레이어'가 '몬스터'에 닿았을 때 '게임 오버'라는 신호를 보내면, 배경 오브젝트가 이를 수신하여 결과 화면으로 전환하는 식의 상호작용을 구현한다.
* **변수(Variable):** 점수, 체력, 시간 등 계속해서 변하는 데이터를 저장하는 공간이다.
* **리스트(List):** 여러 개의 데이터를 순서대로 저장하는 배열 형태의 저장소로, 인벤토리 시스템이나 랭킹 시스템 구현에 필수적이다.
* **복제본(Clone):** 동일한 모양과 기능을 가진 오브젝트를 실시간으로 생성하는 기능이다. 떨어지는 장애물이나 다수의 적 캐릭터를 효율적으로 생성할 때 사용한다.
### 2.2 코딩 방식 비교
| 구분 | 일반 텍스트 코딩 (C#, Python 등) | 엔트리 블록 코딩 |
| :--- | :--- | :--- |
| **입력 방식** | 키보드 타이핑 (Syntax 입력) | 마우스 드래그 앤 드롭 (Block 조립) |
| **문법 오류** | 오타 하나로 실행 불가 (Syntax Error) | 블록 결합 구조상 문법 오류 발생 불가 |
| **학습 곡선** | 높음 (언어 문법 습득 필요) | 낮음 (직관적인 시각적 구조) |
| **실행 속도** | 매우 빠름 (컴파일/최적화 가능) | 상대적으로 느림 (인터프리터 방식) |
| **자유도** | 매우 높음 (시스템 제어 가능) | 플랫폼 제공 기능 내에서 제한적 |
## 3. 주요 게임 장르 및 구현 방식
엔트리에서는 플랫폼의 특성에 맞는 다양한 장르의 게임이 제작된다.
### 3.1 장르별 메커니즘 및 대표 사례
* **클리커(Clicker):** 특정 오브젝트를 클릭하여 재화를 모으고 업그레이드하는 장르. 변수 증가 로직이 핵심이다. (예: [쿠키 클릭커 모작](https://playentry.org/project/))
* **플랫폼 게임(Platformer):** 발판을 딛고 점프하며 목적지까지 이동하는 장르. 중력 가속도 구현과 충돌 감지가 핵심이다. (예: [마리오 스타일 런게임](https://playentry.org/project/))
* **RPG(Role Playing Game):** 캐릭터를 성장시키고 스토리를 진행하는 장르. 리스트를 활용한 인벤토리와 신호를 이용한 맵 전환이 핵심이다. (예: [엔트리 판타지 모험](https://playentry.org/project/))
* **퀴즈/시뮬레이션:** 정답 여부를 판별하거나 특정 상황을 재현하는 장르. 조건문(만약 ~라면)의 정교한 설계가 핵심이다. (예: [상식 퀴즈](https://playentry.org/project/))
### 3.2 기본 로직 예시 (캐릭터 이동 및 충돌)
캐릭터가 방향키로 이동하고 벽에 닿았을 때 멈추는 기본 로직의 예시다. 단순히 반대 방향으로 이동시키면 벽과 캐릭터 사이에서 좌표가 계속 충돌하여 캐릭터가 떨리는 '지터링(Jittering)' 현상이 발생할 수 있으므로, 정확한 **좌표 보정** 처리가 필요하다.
```text
[시작하기 버튼을 클릭했을 때]
[무한 반복하기]
<만약 [오른쪽 화살표] 키가 눌렸는가?> 라면
[x 좌표를 5만큼 바꾸기]
<만약 [벽]에 닿았는가?> 라면
[x 좌표를 -5만큼 바꾸기] (이전 좌표로 되돌려 벽 통과 및 떨림 방지)
<만약 [왼쪽 화살표] 키가 눌렸는가?> 라면
[x 좌표를 -5만큼 바꾸기]
<만약 [벽]에 닿았는가?> 라면
[x 좌표를 5만큼 바꾸기] (이전 좌표로 되돌려 벽 통과 및 떨림 방지)
```
## 4. 게임 제작 프로세스
엔트리 게임 제작은 일반적으로 다음과 같은 5단계 파이프라인을 거친다.
1. **기획:** 게임의 장르, 목표, 핵심 규칙(Rule)을 설정하고 간단한 스토리보드를 작성한다.
2. **오브젝트 디자인:** 엔트리 기본 라이브러리에서 이미지를 선택하거나, 직접 그림판 기능을 사용하여 캐릭터, 배경, UI 요소를 제작한다.
3. **코딩(로직 구현):** 기획한 규칙에 따라 블록을 조립한다. 이동 $\rightarrow$ 상호작용 $\rightarrow$ 시스템(점수/생명) 순으로 구현하는 것이 효율적이다.
4. **테스트 및 디버깅:** 게임을 실행하며 의도치 않은 동작(버그)을 찾아 수정한다. 특히 충돌 판정의 정밀도를 조정하는 단계가 중요하다.
5. **공유하기:** 작품을 저장하고 '작품 공유하기' 설정을 통해 다른 사용자가 플레이할 수 있도록 공개한다.
## 5. 배포 및 커뮤니티 생태계
엔트리는 단순한 툴을 넘어 하나의 거대한 게임 커뮤니티 역할을 수행한다.
* **작품 공유 및 피드백:** 제작자는 자신의 작품을 공유 갤러리에 올릴 수 있으며, 사용자는 댓글과 '좋아요'를 통해 피드백을 남긴다. 이는 제작자에게 동기부여가 되며 게임의 완성도를 높이는 계기가 된다.
* **리믹스(Remix):** 타인이 공개한 작품의 코드를 그대로 가져와 수정하여 새로운 작품을 만드는 기능이다. 이는 오픈 소스 소프트웨어의 발전 방식과 유사하며, 초보자가 숙련자의 코드를 분석하며 학습하는 가장 강력한 도구가 된다.
## 6. 한계점 및 발전 방향
### 6.1 성능 제한과 최적화 가이드
엔트리는 웹 브라우저 기반의 인터프리터 방식이므로, 오브젝트 수가 많아지거나 복잡한 반복문이 겹치면 **실행 지연(프레임 드랍, 렉)**이 발생한다. 이를 극복하기 위한 최적화 가이드는 다음과 같다.
* **복제본 관리:** 생성된 복제본을 적절한 시점에 `이 복제본 삭제하기` 블록으로 제거하여 메모리 낭비를 방지해야 한다. 특히 화면 밖으로 나간 오브젝트는 즉시 삭제하는 것이 좋다.
* **무한 루프 최적화:** 모든 오브젝트에 `무한 반복하기`를 넣기보다, 메인 컨트롤러 오브젝트 하나가 `신호`를 보내어 필요한 시점에만 코드가 실행되도록 설계하여 CPU 부하를 줄인다.
* **판정 간소화:** 매 프레임마다 모든 오브젝트 간의 거리를 계산하기보다, 특정 거리 이상 떨어져 있을 때는 계산을 생략하거나 판정 주기를 조절하는 방식을 도입한다.
* **오브젝트 통합:** 비슷한 기능을 하는 여러 개의 오브젝트를 하나로 합치고, '모양 바꾸기' 기능을 활용하여 개수를 최소화한다.
### 6.2 확장 가능성
최근 엔트리는 **외부 API 연동** 기능을 통해 날씨, 뉴스, 번역 등 실시간 데이터를 게임 내에 가져올 수 있게 되었다. 이를 통해 단순한 오락용 게임을 넘어 실생활 데이터를 활용한 교육용 시뮬레이션 게임으로 확장되고 있다.
## 7. 초보자를 위한 외부 에셋 활용법
엔트리 기본 라이브러리 외에 더 높은 퀄리티의 게임을 만들기 위해 외부 에셋을 활용할 수 있다.
* **이미지 에셋:** 저작권 무료 사이트(Pixabay, Flaticon 등)에서 PNG 파일을 다운로드하여 '파일 업로드' 기능을 통해 추가할 수 있다. 배경이 투명한 PNG 파일을 사용하는 것이 자연스럽다.
* **사운드 에셋:** 무료 효과음 사이트(Bfxr, Freesound 등)에서 WAV 또는 MP3 파일을 가져와 사용할 수 있다.
* **주의사항:** 외부 에셋 사용 시 반드시 저작권 라이선스(CC0, CC-BY 등)를 확인해야 하며, 작품 설명란에 출처를 명시하는 것이 권장된다.
## [부록] 입문자를 위한 추천 튜토리얼
엔트리 게임 제작에 처음 입문하는 사용자는 다음 순서로 학습하는 것을 권장한다.
1. **[엔트리 공식 학습하기](https://playentry.org/learn):** 플랫폼 내 제공되는 단계별 튜토리얼을 통해 블록의 기본 사용법을 익힌다.
2. **단순 클리커 제작:** 변수 개념을 익히기 위해 '클릭 시 점수 증가' 게임을 만들어 본다.
3. **리믹스 분석:** 자신이 만들고 싶은 장르의 인기 작품을 찾아 '코드 보기'를 통해 로직을 분석하고 수치를 변경해 본다.
4. **소규모 프로젝트 완성:** 기획부터 배포까지 전 과정을 스스로 경험하며 작은 규모의 게임을 완성해 본다.