You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
8.1 KiB
164 lines
8.1 KiB
# 샘플 게임 만들기
|
|
|
|
## 과제 개요
|
|
|
|
이제 우주 게임에서 게임 종료 조건과 재시작 기능을 마스터했으니, 이 개념들을 완전히 새로운 게임 경험에 적용할 차례입니다. 다양한 종료 조건 패턴과 재시작 메커니즘을 보여주는 자신만의 게임을 설계하고 구축하세요.
|
|
|
|
이 과제는 게임 디자인에 대해 창의적으로 사고하는 동시에 배운 기술적 역량을 연습하도록 도전합니다. 다양한 승리 및 패배 시나리오를 탐구하고, 플레이어 진행을 구현하며, 흥미로운 재시작 경험을 만듭니다.
|
|
|
|
## 프로젝트 요구사항
|
|
|
|
### 핵심 게임 기능
|
|
|
|
게임에는 다음과 같은 필수 요소가 포함되어야 합니다:
|
|
|
|
**종료 조건 다양성**: 게임이 끝나는 최소 두 가지 방식을 구현하세요:
|
|
- **점수 기반 승리**: 플레이어가 목표 점수에 도달하거나 특정 아이템을 수집
|
|
- **목숨 기반 패배**: 플레이어가 모든 목숨 또는 체력을 잃음
|
|
- **목표 달성**: 모든 적 처치, 특정 아이템 수집 또는 목표 달성
|
|
- **시간 기반**: 설정된 시간 또는 카운트다운이 0이 되면 종료
|
|
|
|
**재시작 기능**:
|
|
- **게임 상태 초기화**: 이전 게임 객체 모두 제거 및 변수 초기화
|
|
- **시스템 재설정**: 새로운 플레이어 상태, 적, 목표와 함께 새로 시작
|
|
- **사용자 친화적 조작법**: 게임 재시작을 위한 명확한 안내 제공
|
|
|
|
**플레이어 피드백**:
|
|
- **승리 메시지**: 플레이어 성취를 축하하는 긍정적인 피드백
|
|
- **패배 메시지**: 재도전을 독려하는 용기 부여 메시지 제공
|
|
- **진행 표시기**: 현재 점수, 목숨, 목표 상태 표시
|
|
|
|
### 게임 아이디어 및 영감
|
|
|
|
아래 게임 컨셉 중 하나를 선택하거나 자신만의 게임을 만드세요:
|
|
|
|
#### 1. 콘솔 어드벤처 게임
|
|
전투 메커니즘이 포함된 텍스트 기반 모험 게임 만들기:
|
|
|
|
```
|
|
Hero> Strikes with broadsword - orc takes 3p damage
|
|
Orc> Hits with club - hero takes 2p damage
|
|
Hero> Kicks - orc takes 1p damage
|
|
Game> Orc is defeated - Hero collects 2 coins
|
|
Game> ****No more monsters, you have conquered the evil fortress****
|
|
```
|
|
|
|
**구현할 핵심 기능:**
|
|
- 다양한 공격 옵션이 있는 **턴제 전투**
|
|
- 플레이어와 적 모두의 **체력**
|
|
- 동전이나 아이템을 수집하는 **인벤토리 시스템**
|
|
- 난이도가 다른 **여러 유형의 적**
|
|
- 모든 적 처치 시 **승리 조건**
|
|
|
|
#### 2. 수집 게임
|
|
- **목표**: 장애물을 피하면서 특정 아이템 수집
|
|
- **종료 조건**: 목표 수집 횟수 달성하거나 목숨 모두 소진
|
|
- **진행**: 게임이 진행될수록 아이템 접근 난이도 증가
|
|
|
|
#### 3. 퍼즐 게임
|
|
- **목표**: 점차 어려워지는 퍼즐 해결
|
|
- **종료 조건**: 모든 레벨 완료 또는 이동/시간 소진
|
|
- **재시작**: 진행 상황 초기화 후 첫 레벨로 초기화
|
|
|
|
#### 4. 디펜스 게임
|
|
- **목표**: 적의 웨이브로부터 기지 보호
|
|
- **종료 조건**: 모든 웨이브 생존(승리) 또는 기지 파괴(패배)
|
|
- **진행**: 적 웨이브 난이도 및 수 증가
|
|
|
|
## 구현 지침
|
|
|
|
### 시작하기
|
|
|
|
1. **게임 디자인 계획**:
|
|
- 기본 게임 플레이 루프 스케치
|
|
- 종료 조건 명확히 정의
|
|
- 재시작 시 리셋할 데이터 식별
|
|
|
|
2. **프로젝트 구조 설정**:
|
|
```
|
|
my-game/
|
|
├── index.html
|
|
├── style.css
|
|
├── game.js
|
|
└── README.md
|
|
```
|
|
|
|
3. **핵심 게임 루프 작성**:
|
|
- 게임 상태 초기화
|
|
- 사용자 입력 처리
|
|
- 게임 로직 업데이트
|
|
- 종료 조건 확인
|
|
- 현재 상태 렌더링
|
|
|
|
### 기술적 요구사항
|
|
|
|
**최신 자바스크립트 사용**:
|
|
- 변수 선언에 `const`와 `let` 사용
|
|
- 적절한 곳에 화살표 함수 활용
|
|
- 템플릿 리터럴, 구조 분해 할당 등 ES6+ 기능 적용
|
|
|
|
**이벤트 기반 아키텍처**:
|
|
- 사용자 상호작용에 대한 이벤트 핸들러 생성
|
|
- 이벤트를 통한 게임 상태 변경 구현
|
|
- 재시작 기능에 이벤트 리스너 활용
|
|
|
|
**깔끔한 코드 관행**:
|
|
- 단일 책임 함수 작성
|
|
- 설명적인 변수 및 함수 이름 사용
|
|
- 게임 로직과 규칙에 대한 주석 추가
|
|
- 논리적 구역으로 코드 구성
|
|
|
|
## 제출 요구사항
|
|
|
|
### 제출물
|
|
|
|
1. **완성된 게임 파일**: 게임 실행에 필요한 모든 HTML, CSS, JavaScript 파일
|
|
2. **README.md**: 다음 내용이 포함된 문서
|
|
- 게임 플레이 방법
|
|
- 구현된 종료 조건
|
|
- 재시작 방법
|
|
- 특별 기능 또는 메커니즘
|
|
3. **코드 주석**: 게임 로직과 알고리즘에 대한 명확한 설명
|
|
|
|
### 테스트 체크리스트
|
|
|
|
제출 전, 아래 항목을 확인하세요:
|
|
|
|
- [ ] **브라우저 콘솔에서 오류 없이 실행됨**
|
|
- [ ] **명시된 여러 종료 조건 구현됨**
|
|
- [ ] **게임 상태가 깔끔히 초기화되며 정상 재시작됨**
|
|
- [ ] **플레이어에게 명확한 게임 상태 피드백 제공**
|
|
- [ ] **최신 자바스크립트 문법과 베스트 프랙티스 사용**
|
|
- [ ] **README.md에 종합적인 문서 포함**
|
|
|
|
## 평가 기준표
|
|
|
|
| 평가 항목 | 우수 (4) | 능숙 (3) | 발전 중 (2) | 초급 (1) |
|
|
|----------|---------------|----------------|----------------|--------------|
|
|
| **게임 기능** | 다중 종료 조건, 원활한 재시작, 완성도 높은 게임 플레이 | 기본 종료 조건과 기능적 재시작 포함한 완전한 게임 | 일부 종료 조건 구현, 재시작에 약간 문제 있음 | 기능 제한 및 심각한 버그가 있는 불완전한 게임 |
|
|
| **코드 품질** | 최신 자바스크립트와 깔끔한 구조, 풍부한 주석, 체계적 코드 | 최신 문법과 적절한 주석, 명확한 구조 | 일부 최신 문법과 최소한의 주석 포함 | 구식 문법, 주석 부족, 엉성한 코드 구조 |
|
|
| **사용자 경험** | 직관적이고 명확한 안내, 우수한 피드백, 몰입도 높은 종료 및 재시작 | 충분한 안내와 피드백, 기능적인 종료 및 재시작 | 기본적 안내, 제한된 게임 상태 피드백 | 혼란스러운 안내와 열악한 사용자 피드백 |
|
|
| **기술 구현** | 게임 개발 개념, 이벤트 처리, 상태 관리를 능숙하게 구현 | 게임 개념을 잘 이해하고 양호한 구현 | 기본 이해와 괜찮은 구현 | 이해 부족과 열악한 구현 |
|
|
| **문서화** | 명확한 안내가 있는 포괄적 README, 잘 문서화된 코드, 철저한 테스트 증거 | 명확한 안내와 적절한 주석의 우수 문서 | 최소 안내의 기본 문서화 | 불충분하거나 부재한 문서화 |
|
|
|
|
### 점수 기준
|
|
- **우수 (16-20점)**: 창의적 기능과 완성도 높은 구현으로 기대 수준 초과
|
|
- **능숙 (12-15점)**: 모든 요구사항 충족, 탄탄한 실행
|
|
- **발전 중 (8-11점)**: 대부분 요구사항 충족, 일부 사소한 문제 존재
|
|
- **초급 (4-7점)**: 일부 요구사항 충족, 크게 개선 필요
|
|
|
|
## 추가 학습 자료
|
|
|
|
- [MDN 게임 개발 가이드](https://developer.mozilla.org/en-US/docs/Games)
|
|
- [자바스크립트 게임 개발 튜토리얼](https://developer.mozilla.org/en-US/docs/Games/Tutorials)
|
|
- [Canvas API 문서](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API)
|
|
- [게임 디자인 원칙](https://www.gamasutra.com/blogs/)
|
|
|
|
> 💡 **프로 팁**: 간단한 것부터 시작해 기능을 점진적으로 추가하세요. 잘 다듬어진 간단한 게임이 버그 많은 복잡한 게임보다 훨씬 낫습니다!
|
|
|
|
---
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
**면책 조항**:
|
|
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원문은 해당 언어의 원본 문서가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문 인간 번역을 권장합니다. 본 번역 사용으로 인한 오해나 오역에 대해 당사는 책임을 지지 않습니다.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |