경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220924 개인 공부 2022/04/04~2022/12/14

Jinho Lee·2022년 9월 24일
0

2022.09.24 개인 학습 - 특강

  • 남궁영빈 선배

Error Handling

assert

  • C++ : assert(조건, “문장”);
    → 조건이 충족되지 않으면 크러시가 일어나고 문장을 에러 로그로 출력

  • 유니티 : Debug.LogError();

  • 사용 이유 : 강제로 크러시를 일으켜 디버깅이 편하도록 한다.

개발자 모드

  • _DEV_MODE_

    • 전처리기 활용

    • 코드 형식

      #define _DEV_MODE_
      
      #ifdef _DEV_MODE_ // <- 개발자 모드가 정의되어 있다면 실행
      	/*프로토타입 코드*/
      #endif
    • 사용 이유 : 일단 프로토타입을 눈으로 볼 수 있도록 (개발 진행 상황 확인 및 디버깅) 설정

    • 주의 : 배포할 때는 개발자 모드를 껐는지 반드시 확인

요점

  1. 무조건 null 체크가 좋은 것은 아니다.

    • 에러로 크러시를 내는 것이 디버깅으로서는 더 좋다.
  2. 개발자 모드를 만들고 잘 활용하자.

    • 배포할 때는 꺼져 있는지 꼭 체크하자.
  3. 새로운 언어를 배울 때 이런 기능이 있는지 체크해보는 것도 좋다.

Sprite Mask

  • 이미지 (스프라이트)의 일정 범위만 보이도록 하는 기능

  • Hide&Seek 프로젝트 때 미니맵의 구현에 도움이 되었으리라 생각된다. 아쉬운 부분

길 찾기 알고리즘 - JPS 알고리즘

CSV Parser

  • 예시 코드
const char* str = "오늘,스터디,늦은사람\n대가리를,다,부숴버릴거야"

int startIndex = 0; // 0
int curIndex = 0; // 2

while(true)
{
    if(str[curIndex] == ','  str[curIndex] == '\0'  str[curIndex] == '\n')
    {
        int size = curIndex - startIndex; // 2
        char* data = (char)malloc(sizeof(char) (size + 1));
        data[size] = '\0';
        for(int i = 0; i < size; ++i)
        {
            data[i] = str[startIndex + i];
        }

        // 입맛에 맞는 수정 알잘딱 하셈

        startIndex = curIndex + 1;
    }

    ++curIndex;
}

상태 처리 - 유한 상태 머신 FSM

  • switch문으로 상태를 처리

    • 플레이어가 복잡한 상태를 가지고 있을 때

      • 예외 처리가 늘어난다.

      • 코드가 길어지고 처리 곤란

    • ⇒ 디자인 패턴 등장 : 유한 상태 머신 (Finite State Machine; FSM)

유한 상태 머신 (FSM)

  • 상태객체화시켜 관리하는 것

    • 객체 : 속성 (멤버 변수)과 기능 (멤버 메소드)를 갖는 가장 작은 단위

    • 객체마다 시작 / 업데이트 / 종료의 기능을 갖추고 각 상태마다 그 객체를 갖도록 구현

  • 예시 코드

    2022. 09. 24 switch문과 FSM 상태 관리 비교

    • 코드 설명

      • class FSM

        • 상태를 관리하는 매니저 역할

        • AddState() : State를 추가할 때, FSM을 가져야 한다.

        • abstract void OnEnter() : 상태로 진입했을 때 호출할 함수

        • abstract void OnUpdate() : 상태가 업데이트될 때 호출할 함수

        • abstract void OnExit() : 상태에서 나갈 때 호출할 함수

  • FSM의 장단점

    • 장점 : 그 전의 상태를 검사하지 않아도 된다.

      • 상태에 연관된 모든 코드를 변경할 필요 없이, 상태의 객체만 관리하는 것으로 처리 가능하다.
    • 단점 : 상태가 많아지면 그 연결을 파악하기 힘들어 도식화해야 한다.

      • 도식화 툴 - PlantUML

        • 시퀀스 다이어그램

          • 관계를 도식화 가능
        • 클래스 다이어 그램

참고 자료

  • 게임 프로그래밍 패턴

    • 디자인 패턴 공부 추천
  • GoF의 디자인 패턴

    • 디자인 패턴 전체의 공부 가능

프리팹

  • 게임 오브젝트에 대한 정보를 별개 정보(파일)로 갖고 있는 것

    • 클래스와 같은 틀

0개의 댓글