TIL

25.11.13 일자 - TIL

csh8696nb 2025. 11. 13. 17:35

코딩 테스트 3-4

시뮬레이션
개념을 명확히 이해하고 2차원 배열 형태의 행렬 구조와 특정 위치를 나타내는 좌표 정보를 활용하여 발생하는 다양한 시뮬레이션 문제들을 효과적으로 해결하는 방법을 익힐 수 있다.

좌표 연산 - 2차원 평면을 다루는 문제가 자주 출제된다.
dy, dx 배열로 현재 좌표에서 이동하기
 현재 좌표에서 주변 좌표로 이동해야 하는 경우가 있다.(Ex 미로찾기)
 오프셋 좌표를 활용하면 좋다

좌우 대칭 (X축을 기준으로 대칭일 때 Y축의 값은 바뀌지 않는다.)
(Y, X)  -> (Y, (N-1) - X )
 N 은 배열의 크기
 N-1 -> 좌표 값은 0부터 시작하기 때문에 1을 빼줘야 함.

상하 대칭 (Y축을 기준으로 하므로 X값이 바뀌지 않는다.)
(Y, X) -> ((N-1) - Y, X)
위 와 대칭 구조를 이룬다.

90도 회전
(Y, X) -> ((N-1) - X, Y)

*180은 두 번 270은 세 번 하면 된다.

대각선 행렬
정방향
(Y, X) -> (Y+1, X+1)
(A, B) 가 (Y, X)와 같은 대각선 상에 있으려면 Y-A와 X-B가 동일한지 비교하면 된다.
-Y의 증가량과 X의 증가량이 같으면 같은 선상이다.

역방향
(Y, X) -> (Y+1, X-1)
(A, B) 가 (Y, X)와 같은 대각선 상에 있으려면 Y-A와 B-X가 동일한지 비교하면 된다.
-Y의 증가량과 X의 감소량이 같으면 같은 선상이다.

행렬 연산
덧셈
각 행렬에서 같은 위치에 있는 값끼리 더하거나 빼는 연산. 두 행렬의 크기가 같아야 시행할 수 있다.

곱셈
A항렬의 X행과 B항렬의 Y열의 원소를 각 곱한 후 더해서 C[x, y]로 완성하는 연산이다. A의 행(x)과 B의 열(y)의 개수가 같아야 한다는 특징이 있다.

달팽이 연산(문제)

vector<vector<int>> solution(int n) {

}
#include <vector>

using namespace std;

vector<vector<int>> solution(int n) {

  // N*N 2차원 벡터를 선언하고 초깃값을 0으로 함
  vector<vector<int>> snail_array(n, vector<int>(n, 0));
  int num = 1;
  // 행과 열의 시작과 끝 인덱스를 설정
  int start_row = 0, end_row = n - 1;
  int start_col = 0, end_col = n - 1;

  // 제일 외각부터 달팽이 수열 규칙대로 채움
  while (start_row <= end_row && start_col <= end_col) {
    // 가장 왼쪽 윗부분 에서 가장 아래 바로 직전 까지  채우기
    for (int i = start_col; i <= end_col; ++i) {
      snail_array[start_row][i] = num++;
    }
    ++start_row;

    // 가장 왼쪽  아래부분 에서 가장 오른쪽 바로 직전 까지 채우기
    for (int i = start_row; i <= end_row; ++i) {
      snail_array[i][end_col] = num++;
    }
    --end_col;

    // 가장 오른쪽 아래부분 에서 가장 위 바로 직전 까지 채우기
    if (start_row <= end_row) {
      for (int i = end_col; i >= start_col; --i) {
        snail_array[end_row][i] = num++;
      }
      --end_row;
    }

    // 가장 윗부분 에서 가장 왼쪽 바로 직전 까지 채우기
    if (start_col <= end_col) {
      for (int i = end_row; i >= start_row; --i) {
        snail_array[i][start_col] = num++;
      }
      ++start_col;
    }
  }

  return snail_array;
}

이진 변환
bit단위(0과1로 구성된 과제)일때 bitset 을 사용하는 것이 좋다.
bitset<x> A;  A는 x크기인 비트셋이다 라는 선언.
비트는 역순으로 수가 오른다. [N, N-1, N-2, N-3, , , ,1, 0]
A.set(x) = x번째 값을 1로 바꿔라 - A.set() = 모든 값을 1로 바꿔라
A.reset(x) = x번째 값을 0으로 바꿔라 - A.reset() = 모든 값을 0으로 바꿔라

transforms++; = 변환 횟수
find를 사용해서 앞에 오는 0을 무시하는 결과를 반환할 수 있다.


캐릭터의 좌표
(X, Y) 를 이동시키는 문제.
&&
=================================================
언리얼 2-4
랜드스케이프, 폴리지
배경과 환경을 조성하는데 사용되는 툴.

랜드 스케이프 모드
지형 조각, 텍스쳐 페인팅, 대규모 환경 구성(지형 조각과 유사)

전체(컨텐츠 브라우저) - 검색 skeletal mash = 사람 크기를 비교하는데 사용할 수 있음.
단일 채우기를 통해 큰 건물을 배치할 수 있고 배치 - 노멀에 정렬을 해제하는 것으로 평평하게 배치를 할 수 있다.
컨텐츠 브라우저의 팹 탭을 통해 컨텐츠를 엔진에서 바로 저장할 수 있다!

==================================================
미니 팀 프로젝트
선배 기수 Unreal 엔진 게임 분석


게임 이름

Abyss Diver : Underworld


게임의 장르
  잠수, 생존, 탐험 게임

어떤 시스템에 집중하였나?
  몬스터

인상 깊거나 불편했던 상호작용       - 

상어 형태의 몬스터는 인식 범위가 제대로 설정이 되어있지 않았는지 정면으로 이동해도 공격하지 않았다.

 

갈고리 모습의 몬스터는 인식하는 범위는 넓으나 공격판정의 범위가 좁아 접근해도 반응만 하고 공격받지 않는 영역이 꽤 넓었다.

 

 

원거리 공격을 하는 것으로 추정되는 몬스터, 공격의 가시성이 부족했고 인식범위가 꽤나 긴 것으로 보인다. 공격과 관련된 장비를 구할 수 있는 방법이 없어 플레이어의 공격과 관련된 상호작용은 확인할 수 없었다.


상호작용 분석

상호작용 사례 시스템 반응 의도/효과 분석 개선 포인트
레이더 상호작용 키(Q)를 통해 화면에 표시 주변의 몬스터 상황을 플레이어가 인지 할 수 있는 정보 제공 미니맵과 유사하게 작은 별도의 레이더가 제공되는 것이 좋아 보임

소리 발생
몬스터의 상황에 따라 몬스터의 위치에서 소리 생성 보이지 않더라도 몬스터가 존재함을 플레이어에게 인지시켜주거나 공격해 오고 있다는 것을 알림 추가적인 개선이 필요해 보이는 부분은 없었다.
인식 몬스터의 인지 범위 내에 플레이어가 진입 시 공격 몬스터가 공격하는 당위성을 제공 상어와 갈고리형 몬스터의 인식범위 조정 필요
추적 및 공격 플레이어를 인식한 몬스터가 추적과 공격을 한다 몬스터가 플레이어를 인식함을 체험적으로 할 수 있고 이것이 플레이에 해를 준다는 것을 알 수있다 갈고리형 몬스터의 공격범위와 원거리 몬스터의 공격이 가시적이어야 함

 

게임의 핵심 시스템이 동작하는 구조의 시작부터 과정을 최대한 자세하게 분석, 나열해주세요!
 1 형태에 맞게 자리를 지키거나 주변을 무작위적으로 배회한다.
 2 플레이어를 인식할 수 있는 영역에 플레이어가 진입하면 플레이어의 방향으로 이동하고(추적, 이동이 불가능한 경우는 제외) 공격 범위에 도달하면 공격을 시도한다.
 3 플레이어가 인식범위를 벗어나는 경우 1번의 행동으로 돌아간다.

 

직접 분석해본 내용 중 가장 핵심이 되는 구성 요소는 무엇이라 생각하나요?

 핵심은 자연스러운 배회, 합리적인 인식과 공격 범위가 필요하다고 생각한다.

 

개인 플레이 및 분석
게임 이름
Dunstaurant

게임의 장르
로그라이크, 타이쿤
어떤 시스템에 집중하였나?

인상 깊거나 불편했던 상호작용

상호작용 분석

핵심 시스템이 동작하는 구조의 시작부터 과정을 분석,나열

분석 내용 중 가장 핵심이 되는 구성 요소

'TIL' 카테고리의 다른 글

25.11.17일자 - TIL  (0) 2025.11.17
25.11.14일자 - TIL  (0) 2025.11.14
25.11.12일자 - TIL  (0) 2025.11.12
25.11.11일자 - TIL  (0) 2025.11.11
25.11.10일자 - TIL  (0) 2025.11.10