사전캠프 3일차

Kyu_·2025년 11월 5일

Unreal 사전캠프

목록 보기
3/17
post-thumbnail

게임 분석 템플릿

  1. 선택한 게임의 이름은 무엇인가요?

    • 포켓몬스터 금/은
  2. 선택한 게임의 장르는 무엇인가요?

    • RPG
  3. 선택한 게임의 어떤 시스템에 집중하셨나요?

    시간 시스템

    • 게임 내 시간을 통해 낮/밤이 변하는 시스템이 추가되었습니다. 이는 포켓몬 시리즈 최초로 실시간 시계를 도입해 세계를 동적으로 만드는 핵심 매커니즘으로 플레이어로 하여금 몰입감을 주는 역할을 합니다.
    • 요일과 시간, 낮과 밤, 요일에 따라 만날 수 있는 NPC나 이벤트가 나뉩니다.
      • 예) 경비원 NPC는 낮에는 이벤트가 없지만 밤에는 트레이너로 변하여 배틀을 할 수 있습니다.
    • 같은 지역임에도 시간에 따라 다른 포켓몬이 나오는 이벤트가 있습니다.
      • 예) 모다피의 탑은 낮에는 꼬렛이 나오고 밤에는 고오스가 출현

    추가 지역

    • 배경인 성도지방을 클리어 하게되면 엔딩크레딧과 함께 주인공 집으로 워프하게 되는데 '파도타기' 기술로 1세대의 지방으로 넘어가서 추가 스토리가 있습니다.
    • 게임이 끝났다고 생각했을때 추가적인 요소들이 나온다는 반전이 있었고, 그 배경이 1세대라는 점에서 플레이 하면서 설레임을 느꼈습니다.
    • 1세대의 지방으로 넘어가게 되면 완벽하지는 않지만 다양한 추억요소들이 있습니다.
    • 본 스토리에서 막혀있던 은빛산 구역으로 가서 마지막 보스를 맞이 했을때의 반전과 충격적인 요소도 매력적
  4. 해당 시스템이 동작하는 구조의 시작부터 과정을 자세하게 분석, 나열해봅시다.

    시간 시스템

    • 게임 실행 시에 플레이어가 현재 시간을 입력하면 내부 시간이 그에 맞게 시작되고, 낮/밤이 설정됩니다.
    • 지정한 시간은 현실 시간과 연동되고, 비례하여 동작합니다.
    • 플레이어가 풀숲에 진입 혹은 NPC와 상호작용할때, 시간대에 따라 다른 이벤트가 발생합니다.
    • 배틀을 진행할때는 시간이 멈추며, 게임을 종료하였을때 마지막 시간이 저장되고 재접속했을때 동기화됩니다.

    추가 지역

    • 메인 스토리 클리어 후 엔딩 크레딧이 나오며 게임 종료 분위기를 조성
    • 실제로는 1세대 관동 지역으로의 연결 준비
      * 이는 용량 제한(게임보이 8MB)속에서 두 지역을 숨겨 구현한 개발적 트릭
      • 플레이어에게 게임을 끝냈다는 감정을 준 후 반전을 통해 설렘 유발
    • 1세대의 요소들을 등장시키며 전작과의 연결고리로 세계관이 확장되는 경험제공
    • 게임 내 갈수없던 지역인 은빛산에 갈 수 있게되고 마지막 보스로 전작 주인공인 레드를 맞이했을때의 충격 + 게임의 완벽한 마무리
  5. 직접 분석해본 내용 중 가장 핵심이 되는 구성 요소는 무엇이라 생각하나요?

  • 시간 시스템

    • 실시간으로 시간 연동을 통해 유저로 하여금 몰입감을 제공함
    • 시간에 따른 다양한 이벤트를 통해 유저들이 탐험을 '전략화' 하게 됨
    • 시간 시스템의 첫 도입이기 때문에 시간이 변경 불가하는 등 다양한 문제점이 있었지만, 이는 후속작에서 개선을 위한 포석이 됨
  • 추가 지역

    • '기대 반전'을 설계한 개발적 트릭

    • 당시 흔치않던 전작의 세계관을 가져오는 선택을 통해 전작팬들에게 감동을 줌

      • 게임 볼륨에 대한 놀라움

        	#### 핵심 요소
      • 후속작들에게 영향을 끼칠만한 다양한 시도

        • 시계 시스템의 첫 도입

        • 전작 지역의 등장

        • 이는 후속작들에서 제작 시 다양한 시도들을 돕는 기반이 됨

          		  * 유저의 몰입감을 높여주는 역할
        • 실시간 시간 연동을 통해 마치 세계관이 살아움직이는 듯한 몰입감을 줌

        • 게임이 끝났다고 생각했을때 추가지역이 등장하여 '기대 반전' 효과를 줌으로써 유저들은 더 몰입 할 수 있음

        • 전작 지역의 등장으로 전작 팬들에게 몰입감을 줌

    C++

  • 스칼라

    하나의 데이터를 저장하는 타입

    int, float, double, bool, char가 있다.

  • 여러 메소드 활용

string input = "2025_KIM";

string year = input.substr(0, 4);
string name = input.substr(5);

cout << "년도 : " << year << endl;
cout << "이름 : " << name << endl;
cout << "원본 : " << input << endl;

input.replace(0, 4, "2026_");

cout << "변경 후 : " << input << endl;


size_t find_underbar = input.find("_");
size_t find_underbar2 = input.find("_", find_underbar + 1);

size_t find_2025 = input.find("2025");

cout << "첫번째 언더바 위치 : " << find_underbar << endl;
cout << "두번째 언더바 위치 : " << find_underbar2 << endl;

if (find_2025 == string::npos) {
	cout << "2025는 변경되었다." << endl;
}
  • 참조자
for(const string& c: comp){};
for(const string c : comp){};

둘의 차이는 string&는 참조자로 받음
마치 comp 벡터의 각원소에 대한 별명 지정한것과 같음
원본 string객체 자체를 가리키고, 새로운 문자열 객체를 생성하지는 않음
const로 인해 실제 수정은 불가

string c는 값으로 받음
벡터의 각원소에 대한 복사본을 받음, 반복문을 돌때마다 벡터의 각 요소가 string c라는 변수로 복사되어서 비효율적

0개의 댓글