ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 포트폴리오 예상질문
    @ 16. 1 ~ 17. 1/면접관련 2016. 12. 16. 20:54


    스타2

    * 전체적인 UI를 구현할떄 직교투영 행렬을 활용


    이유

    배운점


    1. 왜 버튼과 상태창을 구분하였죠?

    이유

      - 상태창과 버튼이 역활이 틀리고, 버튼이나 상태창은 점점 복잡해지고 커진다. 그래서 구분을 하였다. 자료구조 map을 이용해서 각각 하였고 키값은 wstring사용하였다.

    배운점

      - 키값을 wstring으로 이용하는 과정에서 오타 때문에 고생한적이 있어서 키값은 enum 등으로 변경해야할 필요성 느낌

      - 구조를 설계전 충분히 검토를 하고 진행을 했음에도 불구하고 중간에 리펙토링을 해야할 필요성을 느꼈고 필요성을 느꼈을때 했던 결과가 나중에 중복코드를 줄이는 결과를 낫게함.


    2. 왜 테크트리 정보를 벡터를 이용했습니까?

    이유

      - 버튼의 정보는 버튼과 인덱스를 공유하기 때문에 인덱스 접근이 가장 빠른 자료구조인 벡터를 선택하였다.


    3. HP는 어떻게 표현?

    이유

      - 상태창의 리소스의 텍스쳐 자체가 회색계열이였기 때문에 현재 HP의 맞게 계산한 컬러를 넘겨서 처리를 해야했고

    상태바의 UV좌표도 계산해서 처리하여습니다.

    배운점

      - 


    4. 미니맵은 어떻게 구현했나요?

    이유

      - 미니맵의 좌표는 우선 실제 화면좌표와 미니맵의 좌표, 미니맵 좌표를 UV좌표로 비례식으로 변환해서 구했습니다. 1920 : 1 = x : 000 

      - 이 좌표변환은 우선 표시와 미니맵에서 우측클릭시 유닛이동이나, 좌측 클릭시 화면이동, 그리고 스캔기능에 사용이 되었습니다.

      - 알림은 현재 아군 유닛중에서 피해를 입게 되면 아군의 좌표를 확인하고 현재 보이는 절두체 밖이라면 알림이 되도록 구현

      - 표시되어야할 각 데이터는 vector STL에 저장되어 업데이트 되었습니다.


    배운점

      - 모든 유닛, 리소스 등을 UV픽셀로 그리는것이 매우 비효율적이였습니다. 차라리 텍스쳐로 하는편이 낫지 않았나 싶습니다.

      - 그리고 유닛들의 총 수가 어떻게 증가 할지모르는데 초기화에서 vector의 크기를 최대치를 잡아놓지 못하??


    5. 다수, 단일 유닛 선택은 어떻게 표현한건가요?

    이유

      - 먼저 선택된 유닛이 2개이상일 경우에는 다수 상태창으로 변경이 되고 변경이 된 상태창에서는 유닛의 총 갯수를 가져와서 24개씩 구분해서

    3개의 벡터 그룹에 넣게 됩니다. 그 이후 출력은 그룹단위로 출력이 되고 각 유닛들의 인덱스에 접근해서 선택되었을땐 다시 상태창이 단일 상태창으로 변경이 됩니다.


    6. 생산관련 어떻게 구현했습니까?

    이유

      - 생산은 자체는 덱의 자료구조를 활용해서 구현했구요. 양끝에서의 삽입 삭제가 가능함. 해당 유닛별로 생산시간이 있고 생산시간이 되면 pop이되는 구조입니다. 

      - 이에 따라 생산은 각 유닛별 빌드타임에 의해서 진행이 되고 진행되는 것을 0 ~ 100의 수치로 변환해서 UI에서는 진행바의 UV를 변경하여 상태로 표시를 했고, 덱에 들어간 대기열에 따라 해당 유닛도 이 출력되게 하였습니다. 


    7. 유닛 탑승은 어떻게 구현했습니까?

    이유

      - 탑승도 생산과 비슷한 방식인데 이건 유닛들의 사이즈가 정해져있습니다. 그래서 push하기전에 사이즈에 따른 현재 덱상태의 공간과 비교하고

    만약에 공간이 허락하면 push를 하게 됩니다. 그리고 크기가 큰 사이즈부터 앞에 정렬되기 때문에 push때마다 재정렬을 하였습니다.

      - 물론 UI에서도 사이즈에 따른 인덱스를 이용해서 충돌박스와 텍스쳐를 조정하면서 출력하고 있습니다.


    8. 왜 linear depth를 사용했나요?

    일반 투영상태좌표에서 / w를 나눈 z값은 선형적이지 않고 대부분이 0.9부분에 몰려있다는 자료를 봤습니다. 실제로 출력해보니 단색으로만 나왔구요.

    그래서 0 ~ 1사이에 고르게 분포하기 위한 방법으로 linear depth라는 것이 있다는걸 알게되었고 적용하게 되었습니다.


    9. 깊이버퍼 그림자를 어떻게 구현했나요?

    먼저 그림자 맵을 만들어야 합니다. 그림자 맵은 카메라의 뷰와 브로젝션 행렬을 곱하듯 특정 빛의 라이트뷰와 라이브 프로젝션을 이용해서

    모든 물체의 깊이가 저장된 텍스쳐를 만듭니다. 그 이후에 빛 연산을 하는 과정에서 미리 만들어둔 그림자 맵의 깊이와 현재 카메라가 바라보는 픽셀들의 현재빛에서부터의 깊이를 비교해서 현재 깊이가 그림자맵의 깊이보다 크면 그림자를 씌웁니다.


    10. 스크린스페이스 데칼은 어떻게 구현했나요?

    참고자료를 통해서 구현을 했고 먼저 장면의 깊이를 가져와서 그 깊이값을 오브젝의 공간으로 돌리고 오브젝트의 공간안에 들어오면 테칼을 그리는것으로 구현했습니다. 이때 건물과 유닛, 자원들은 마스크를 이용해서 합성시에 적용되지 않도록 하였습니다.


    11. 왜곡 효과는 어떻게 구현했나요?

    왜곡 해야하는 부분에만 적용되도록 마스크맵을 그리고 적용은 단순히 UV의 변형을 준것입니다.


    개인3d마영전

    1. 네비매쉬는 어떻게 구현했나요?

    먼저 라인클래스를 만들었습니다. 여기에는 시작위치, 종료위치, 노멀데이터가 들어갑니다.

    그리고 이 라인클래스를 삼각형의 라인만큼 가지는 cell클래스를 만들고 

    여기에는 3방향으로 이웃된 삼각형을 가지는 포인터와 각 꼭지점의 데이터가 들어갑니다.

    이 삼각형의 데이터들을 토대로 플레이어와 몬스터가 갈 수 있는 지형과 못가는 지형을 구분하게 됩니다. 못가는 지형일때는

    슬라이딩 벡터를 이용해서 해당 입사면을 따라 움직이게 구현했습니다.


    2. 이벤트 및 다이나믹 카메라 구현은 어떻게 했나요?

    이벤트 경우에는 이벤트가 필요한 대상인 플레이어에게 컴퍼넌트를 추가하고

    트리거 매니저에서는 해당 플레이가 특정 트리거 지점으로 진입했을때 이벤트 씬이 나오게 구현했습니다.

    트리거 발동 조건은 단순 플레이어와 트리거 지점의 거리차이로 판단했습니다.

    다이나믹 카메라의 경우 지속시간, 떨림, 위치, 이동방향의 데이터로 구성되어 이벤트 씬에 포함되어있습니다.


    2-2. 구 및 obb 충돌에 대해서 간략하게 설명해보세요

    구 충돌은 원충돌과 같은 원리로 두 구의 반지름을 더한 값이 두 구의 중심점 간의 거리보다 크거나 같으면 충돌이 되는 것이다.

    obb충돌은 분리축 이론을 기본으로 합니다. 각 분리축은 총 15개가 되는데 이 분리축들 각각에 두 직육면체를 투영시켜서 그 투영범위가 겹치는가를 조사해서 충돌여부를 판단합니다.


    3. 컴퍼넌트 구조는 어떻게 만드셨나요?

    4. 스페이트 패턴의 구조는 어떻게 만드셨나요?


    5. 트레일 매쉬를 이용한 검기 설명해보세요.


    6. 빌보드에 간략하게 설명해주세요.

    어느 방향에서 보든지 정면이 보이는 것을 이야기합니다. 주로 나무 연기 폭발 먼지 하늘 등에서 사용이 됩니다.

    Y축 빌보드와 전체 빌보드가 있는데 큰 차이점은 없습니다. 카메라의 회전행렬의 성분을 가져와서 역행렬을 구하고 이를 이용하면 됩니다.


    7. 림라이트에 대해서 설명해주세요

    피사체 뒤에서 강한 조명을 주는것입니다. 일반 빛연산인 조명벡터와 노말벡터의 내적연산을

    카메라(시선) 벡터와 노말벡터의 내적연산값을 0로 반



    테일즈 위버

    1. 에이스타에 알고리즘에 대해서 설명해보세요.


    2. 길찾기에서 최적화는 무엇을 했나요?


    3. 브릿지 패턴


    '@ 16. 1 ~ 17. 1 > 면접관련' 카테고리의 다른 글

    C++ 정리(게임개발자를 위한 C++ 참고)  (0) 2016.12.28
    3D 좌표, 투영관련  (0) 2016.12.21
    디자인패턴 정리  (0) 2016.12.16
    객체지향? 절차지향? 정리 끝판  (0) 2016.12.16
    예상 질문 모음  (0) 2016.12.16
Designed by Tistory.