[코드카타] 음양 합산
문제 링크
문제 요약
- 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다
- 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
내가 제출한 코드
int solution(vector<int> absolutes, vector<bool> signs) {
int answer = 0;
for(int i = 0;i<absolutes.size();i++)
{
if(signs[i]) answer+=absolutes[i];
else answer -=absolutes[i];
}
return answer;
}
피드백
vector.size() 는 size_t 자료형이라는 것에 유의. 일반적으론 int로 캐스팅 잘 되지만...
그런데 유저가 느끼는 재미는 후자보다 전자에 더 가깝지 않나요? "탐험-전투-보상-성장 루프를 가진 지형 너머에 무언가를 숨겨 놓은 탐험 동기를 가지고 원소 반응 시스템을 가진 게임" 을 만든다고 재미가 보장되지 않는 거 같아요.
게임기획 라이브 세션
재미란 무엇인가 에 대해서 알고 싶어하는
- 재미라는 "느낌" 뒤에 있는 구조를 읽고 설명해야 하는 게 기획자의 역할.
- 기획자의 세 가지 질문
- 무엇을 반복하는가? - Core Loop
- 왜 계속하는가? Feedback Loog + Progression
- 어떤 감정을 느끼는가? MDA
- 기획자는 어떤 '경험' 을 주는 지에 주목. 프로그래머는 소프트웨어 작동과 사양 반영을 중요시함.
코어 루프
- 플레이어가 게임 안에서 반복적으로 수행하는 핵심 행동 사이클
- 임의적인 단위다 -> 마리오가 오른쪽으로 움직이며 움직임을 방해하는 것들을 해결하는 것도 코어 루프. 깃발 도달해서 레벨 클리어도 코어 루프.
- 코어 루프 안에 코어 루프가 반복되어 설계되어 있는 "프랙탈 구조" 가 중요
코어 루프의 구조
| 단계 | 내용 | 핵심 질문 |
|---|
| 행동 (Action) | 플레이어가 게임 안에서 무언가를 한다 | 무엇을 하는가? |
| 결과 (Outcome) | 행동의 결과가 발생한다 | 어떤 변화가 생기는가? |
| 보상 (Reward) | 결과에 따라 보상이 주어진다 | 무엇을 얻는가? |
| 동기 (Motivation) | 보상이 다음 행동의 동기를 만든다 | 왜 다시 하는가? |
- 좋은 코어 루프의 조건: 각 단계가 다음 단계의 동기를 명확하게 만든다
- 루프 하나 완료했을 때 성취감이 있다
- 루프가 반복될수록 깊이가 생긴다(숙련될수록 새로운 전략이 보인다)
- 루프 1사이클의 길이가 타겟 유저의 플레이 패턴에 맞다
루프 계층 구조(Hierarchy)
- 마이크로 루프(수 초~분)
- 메조 루프(10분~1시간)
- 매크로 루프(수 일 ~ 수 주)
피드백 루프
- 플레이어의 행동에 게임이 반응하는 방식. 그 반응이 다음 행동에 영향을 주는 구조
- 양의 피드백 루프 -> 보상 구조. Snowball Effect. 파워 판타지. 인플레이션
- 음의 피드백 루프 -> 따라잡기 메커니즘? 긴장감 유지. 잘했는데 페널티. 실력보다 보정이 크게 느껴질 우려
프로그레션
3층위
| 층위 | 설명 | 시간 범위 | 예시 |
|---|
| 단기 프로그레션 | 한 세션 안에서 느끼는 성장 | 수 분 ~ 1시간 | 레벨업, 스킬 해제, 전투 중 버프 |
| 중기 프로그레션 | 여러 세션에 걸친 성장 | 수 일 ~ 수 주 | 캐릭터 육성, 장비 강화, 스킬 트리 |
| 장기 프로그레션 | 게임 전체에 걸친 목표 | 수 주 ~ 수 개월 | 최고 랭크 달성, 전체 수집 완성 |
좋은 프로그레션의 조건
- 가시성: 성장이 눈에 보여야 한다(경험치 바, 레벨 숫자, 아이템 등급)
- 연속성: 매 세션마다 조금씩 성장한 느낌
- 의미: 성장이 게임플레이에 실질적 영향을 미쳐야 한다
- 선택: 어떻게 성장할지 플레이어가 결정
- 성장의 딜레마: 너무 빠르면 목표가 사라지고, 너무 느리면 지루하고 보상이 적게 느껴짐.
MDA 프레임워크
- Robin Hunicke, Marc Leblanc, Robert Zubek. 2004
프레임워크 구조
| 층위 | 정의 | 배틀그라운드 예시 | 다크소울 예시 |
|---|
| Mechanics | 게임의 규칙, 수치, 알고리즘 | 총기 반동 수치, 데미지 공식, 안전구역 수축 속도 | 스태미나 소모량, 패링 타이밍 판정, 소울 드롭 규칙 |
| Dynamics | 규칙이 실제 플레이에서 만들어내는 행동 패턴 | 막판 안전구역 눈치싸움, 차량 이동 전략, 건물 뒤 숨기 | 회피 타이밍 연습, 소울 회수를 위한 재도전, 보스 패턴 암기 |
| Aesthetics | 플레이어가 느끼는 감정적 경험 | 긴장감, 생존의 쾌감, 아드레날린 | 극복의 성취감, 위험 속의 긴장, 탐험의 경이로움 |
- 개발자는 Mechanics -> Dynamics -> Aesthetics로 설계
- 플레이어는 Aesthetics>Dynamics>Mechanics 로 경험 정도가 달라짐
- 기획자는 Mechanics를 설계하지만, Dynamics와 Aesthetics를 항상 감안하고 설계해야 한다.
Aesthetics의 8가지 유형
| 유형 | 설명 | 대표 게임 | 설계 방향 |
|---|
| Sensation | 감각적 쾌감 | 비트세이버, 리듬 게임 | 타격감, 사운드 피드백 강화 |
| Fantasy | 다른 존재가 되는 경험 | RPG, 어쌔신 크리드 | 세계관 몰입, 캐릭터 개성 |
| Narrative | 이야기 몰입 | 더 라스트 오브 어스 | 스토리 밀도, 캐릭터 감정 |
| Challenge | 극복의 성취감 | 다크소울, 셀레스트 | 적절한 난이도 곡선, 공정한 실패 |
| Fellowship | 사회적 유대감 | 월드 오브 워크래프트 | 협동 콘텐츠, 길드 시스템 |
| Discovery | 새로운 것 발견 | 마인크래프트, 원신 | 탐험 보상, 숨겨진 콘텐츠 |
| Expression | 자기표현 | 동물의 숲, 심즈 | 커스터마이징, 창작 도구 |
| Submission | 현실 도피, 이완 | 모바일 퍼즐 게임 | 낮은 진입장벽, 패널티 없는 반복 |
외부 데이터 활용
메타크리틱 분석법
- Metascore: 전문가 리뷰. 게임의 객관적 완성도
- User Score: 기획 의도와 유저 기대의 일치 여부 파악
- Meta만 높다: 완성도 높으나 팬층/기대값 배신
- User만 높다: 매니아층이 있을 가능성
스팀 리뷰 분석법
| 필터 | 분석 목적 | 발견할 수 있는 것 |
|---|
| 0~2시간 부정 리뷰 | 진입장벽, 튜토리얼 문제 | 첫인상 이탈 원인 |
| 2~10시간 부정 리뷰 | 초반 콘텐츠 구조 문제 | 코어 루프의 흥미 지속성 |
| 20시간+ 부정 리뷰 | 중반 이후 콘텐츠 문제 | 반복 플레이의 피로도 |
| 100시간+ 긍정 리뷰 | 장기 리텐션 성공 요인 | 엔드게임 설계의 핵심 |
| 대형 업데이트 직후 | 업데이트 방향에 대한 반응 | 기존 유저의 기대와 변화의 충돌 |
커뮤니티 데이터 분석
| 플랫폼 | 활용 방법 | 주의사항 |
|---|
| Reddit | 메커니즘 분석, 빌드 공유, 시스템 버그 토론 | 영어권 유저 편향 |
| 인벤/디시 | 패치 직후 감정 반응, 밸런스 논쟁, 한국 유저 트렌드 | 강한 의견이 과대 대표될 수 있음 |
| 공식 Discord | 개발사 공식 입장, 커뮤니티 분위기 | 개발사가 관리하는 공간 |
| 유튜브 공략 채널 | 기획 의도 vs 실제 플레이 전략 차이 분석 | 최적 전략이 기획 의도를 벗어날 수 있음 |
- 루도-내러티브 디소넌스/ 시스템 균형 문제를 발견할 수 있음. 사실상 거대한 QA
역기획서
- 시스템적 관점에서, 이 시스템이 왜 이렇게 설계되었는가를 추론하는 문서
- 타 게임의 설게 원칙을 자신의 설계에 활용 가능
- 기획서 작성 훈련
- 포트폴리오로 활용 가능
- 정의. 구성. 상세까지.