1. 젤다의 전설: 브레스 오브 더 와일드 (The Legend of Zelda: Breath of the Wild)
선택한 게임의 이름은 무엇인가요?
젤다의 전설: 브레스 오브 더 와일드 (The Legend of Zelda: Breath of the Wild)
선택한 게임의 장르는 무엇인가요?
오픈 월드 액션 어드벤처 (넓고 자유로운 세상에서 싸우고 모험할 수 있는 게임)
선택한 게임의 어떤 시스템에 집중하셨나요?
요리 시스템: 게임 세계에서 얻은 재료들을 솥에 넣어 음식을 만드는 기능
해당 시스템이 동작하는 구조의 시작부터 과정을 자세하게 분석, 나열해봅시다.
1단계: 재료 모으기 (데이터 준비)
게임 세상을 돌아다니며 사과, 버섯 같은 식물을 채집하고, 멧돼지를 사냥하고, 물고기를 낚시하며, 몬스터를 잡아 부속물을 얻어 '요리 재료' 아이템을 수집합니다.
(개발자 시점: 각 재료는 '아이템'이라는 데이터 덩어리로, '이름', '종류'(과일, 고기 등), '숨겨진 효과'(추위 저항, 스태미나 회복 등)와 같은 정보를 포함하며, 플레이어의 '가방(인벤토리)'에 저장됩니다.)
2단계: 요리 장소 찾기 (기능 실행 조건)
맵 곳곳에 있는 '모닥불 옆 솥단지' 같은 특정 오브젝트에 접근합니다.
(개발자 시점: 플레이어가 '솥단지' 오브젝트 근처에서 상호작용 키를 누르면 요리 기능을 실행할 준비를 하고, 요리 UI를 띄웁니다.)
3단계: 재료 고르기 (사용자 입력)
가방을 열어 요리에 사용할 재료를 최대 5개까지 선택합니다.
(개발자 시점: UI 화면에서 플레이어는 가방 속 아이템 목록에서 재료를 선택하며, 선택된 재료는 '요리할 재료 목록'에 임시 저장됩니다.)
4단계: 요리 시작! (기능 실행 및 애니메이션)
선택한 재료들을 솥단지에 넣으면 신나는 음악과 함께 재료들이 솥 안에서 춤추는 애니메이션이 재생됩니다.
(개발자 시점: '요리하기' 버튼을 누르면 '요리할 재료 목록'의 재료 정보를 바탕으로 요리 함수가 호출되고, 미리 설정된 애니메이션이 실행됩니다.)
5단계: 결과 계산하기 (핵심 로직)
넣은 재료의 조합을 분석하여 게임 규칙(레시피)에 따라 '음식'이나 '물약'을 결정합니다.
예를 들어, '따끈따끈초 열매'는 추위 저항 효과를, '활력버섯'은 스태미나 회복 효과를 제공하며, 회복량과 효과의 세기도 계산됩니다.
(개발자 시점: 재료 목록을 if문, switch문, 또는 미리 만들어둔 '레시피 데이터베이스'를 참조하여 결과물을 결정합니다.)
6단계: 완성품 받기 (결과 반영)
계산된 결과의 음식이나 물약 아이템이 생성되어 플레이어의 가방에 추가됩니다. 이 아이템을 사용하면 체력(HP)이 회복되거나 특별한 능력(버프)을 얻을 수 있습니다.
(개발자 시점: 계산 결과에 따라 새로운 '음식 아이템' 데이터를 생성하고 플레이어의 가방에 추가하며, 사용 시 효과를 미리 설정해 둡니다.)
7단계: 뒷정리 (상태 업데이트)
요리에 사용된 재료들은 가방에서 제거되며, 잘못된 조합의 경우 '괴상한 요리'라는 실패 결과물이 만들어집니다.
(개발자 시점: '요리할 재료 목록'의 아이템들을 플레이어의 가방에서 삭제하고, 레시피 계산 결과가 실패하면 '괴상한 요리' 아이템을 생성합니다.)
직접 분석해본 내용 중 가장 핵심이 되는 구성 요소는 무엇이라 생각하나요?
입력된 재료에 기반하여 어떤 음식이나 효과가 산출될지 결정하는 메커니즘
{개발자 관점: 마치 프로그래밍의 함수와 유사하네요! 특정 재료(매개변수)를 투입하면, 정해진 알고리즘(함수 내부 로직)을 통과하여 최종 결과물(반환값)이 달라지는 방식입니다. 이 '레시피 계산 로직'이 요리 시스템의 매력과 깊이를 만들어내는 핵심 요소예요. 플레이어들은 이러한 규칙을 탐험하면서 독창적인 조합을 발견하는 즐거움을 경험하게 됩니다.}
2. 발더스 게이트 3 (Baldur's Gate III)
선택한 게임의 이름은 무엇인가요?
발더스 게이트 3 (Baldur's Gate III)
선택한 게임의 장르는 무엇인가요?
턴제 RPG (순차적으로 행동하는 역할 수행 게임)
선택한 게임의 어떤 시스템에 집중하셨나요?
턴제 전투 시스템: 캐릭터와 적들이 번갈아가며 공격, 마법 등을 사용하는 전투 방식. 특히 행동의 성공 여부를 '주사위 굴림(확률)'으로 결정하는 메커니즘.
1단계: 전투 시작 및 순서 정하기 (초기 설정)
적과 조우하면 전투가 시작됩니다. 이때 각 캐릭터(플레이어, 아군, 적)의 '민첩성' 능력치와 주사위 굴림(1~20 랜덤 숫자)을 합산해 '행동 순서(이니셔티브)'를 결정합니다. 수치가 높을수록 먼저 행동할 수 있습니다.
(개발자 관점: 전투 참여 캐릭터(오브젝트) 목록을 생성하고, 각 캐릭터의 '민첩성 보너스'에 랜덤 숫자(Random.Range(1, 21))를 더해 '이니셔티브 값'을 계산합니다. 이 값으로 목록을 정렬하면 턴 순서가 확정됩니다.)
2단계: 내 턴 진행 (행동 선택 및 실행)
정해진 순서에 따라 자신의 차례(턴)가 되면, 가능한 행동(이동, 공격, 마법 사용, 아이템 사용 등) 중 하나를 선택해 실행합니다. 일반적으로 한 턴에 '주요 행동' 1회, '보너스 행동' 1회, 그리고 제한된 거리만큼 이동할 수 있습니다.
(개발자 관점: 정렬된 캐릭터 목록을 순차적으로 진행하며, 현재 턴인 캐릭터(CurrentTurnCharacter)에게 행동 기회를 부여합니다. 플레이어 캐릭터의 경우 UI를 통해 입력을 받고, AI 캐릭터는 사전 설정된 로직에 따라 행동을 결정합니다. 각 행동에는 '주요 행동', '보너스 행동' 등의 태그(타입)가 있어 턴당 사용 횟수를 제한합니다.)
3단계: 주사위 판정! (성공/실패 결정 - 확률 계산)
행동, 특히 공격이나 특정 마법의 성공 여부는 '주사위' 굴림으로 결정됩니다.
공격: 20면체 주사위(1~20 랜덤 숫자)를 굴려 나온 값에 '명중 보너스'(능력치, 기술 숙련도 등에 따라 결정)를 더합니다. 합계가 적의 '방어도(AC)'보다 높거나 같으면 공격이 명중합니다!
마법/특수 능력: 일부 기술은 시전자가 아닌 대상이 '내성 굴림'을 통해 효과를 막거나 피해를 줄입니다. 예를 들어, 파이어볼 마법에 맞은 적은 '민첩 내성 굴림'에 성공하면 피해를 절반만 받게 됩니다.
(개발자 관점: Random.Range(1, 21)로 주사위 값을 생성하고, if ((주사위값 + 명중보너스) >= 적의_방어도) 같은 조건문으로 명중 여부를 판단합니다. 내성 굴림도 유사한 방식으로 if ((상대_주사위값 + 상대_보너스) >= 기술_난이도) 형태로 효과 적용 여부나 정도를 결정합니다.)
4단계: 피해량 계산 및 적용 (결과 반영)
공격이 명중하거나 마법 효과가 적용되면 '피해량'을 계산합니다. 이 과정 역시 주사위 굴림을 통해 이루어집니다. 예를 들어, '롱소드'는 8면체 주사위(1~8 랜덤 숫자)를 굴리고, 여기에 '힘 보너스'를 더한 만큼 피해를 줍니다. 계산된 피해량만큼 대상의 '체력(HP)'을 감소시키고, 독, 화상 등의 '상태 이상' 효과도 함께 적용됩니다.
(개발자 관점: 피해량은 Damage = Random.Range(1, 9) + 힘_보너스 등의 방식으로 계산하며, 상대방.HP -= Damage; 코드로 체력을 감소시킵니다. 상태 이상은 상대방.AddStatusEffect("Poison") 같은 함수 호출로 적용할 수 있습니다.)
직접 분석해본 내용 중 가장 핵심이 되는 구성 요소는 무엇이라 생각하나요?
정해진 순서(턴)와 주사위 굴림(확률)을 통해 결정되는 행동의 성공/실패와 결과
(개발자 시점: 컴퓨터 게임이지만, 마치 전통적인 보드게임처럼 '주사위'라는 무작위 요소를 활용해 결과를 예측하기 어렵게 만드는 것이 핵심입니다. Random.Range() 같은 함수로 확률을 구현하고, 이 확률이 캐릭터의 능력치, 스킬, 장비 등 다양한 요소와 융합되어 매 순간 색다른 전투 경험을 만들어냅니다. 이러한 '불확실성'이 게임에 긴장감과 재미를 불어넣죠!)
'팀스파르타 내일배움캠프' 카테고리의 다른 글
| [사전캠프 12일차] 유니티 빗물받는 르탄이 어플 만들어보기!! (1) | 2025.04.01 |
|---|---|
| [사전캠프 11일차] C# 걷기반 재재재복습 (0) | 2025.03.31 |
| [사전캠프 10일차] Unity활용 대망의 마지막! (1) | 2025.03.28 |
| [사전캠프 9일차] Unity활용 마저 해보기! (0) | 2025.03.27 |
| [사전캠프 8일차] Unity 활용 연습! (0) | 2025.03.26 |