09.15 - TIL

김혁·2025년 9월 15일

TIL

목록 보기
18/84

오늘의 코드카타

공 이동 시뮬레이션

  • 범위 기반 시뮬레이션
  • LV3 - 22% (복습 필요)
    -> 문제 풀이

오늘의 공부

팀 프로젝트 진행 내용

1. AI가 공격받았을 때, 화남 상태 전환이 안 됨

  • AI가 공격받는 상태가 되면 Angry State로 변환이 되고, 해당 ability를 우선적으로 실행시키기를 원함
  • 하지만 Angry State로 변환은 되나, Behavior Tree에서 이미 다른 노드를 실행하고 있기 때문에 Angry State에서 ability 실행이 무시가 되고 없던 일이 되어버림
  • Decorator : Blackboard에서 별도로 설정이 필요함 + Behavior Tree의 우선순위를 가장 최상위에 둬야 함
  • Notify Observer
    • 언제 해당 Decorator를 재평가할지 여부를 정하는 설정
    • On Value Change : Blackboard Key가 변할 때 노드를 재평가
    • On Result Change(Default) : 가져온 컨디션의 결과가 변할 때만 노드를 재평가(nullptr이 되면 재평가)
      -> 중간에 Blackboard Key가 Angry가 되면 중간에 끊고 들어가야 되기 때문에 On Value Changed로 설정
  • Observer Aborts
    • 관찰자 중단으로 다른 브랜치 실행을 끊고, 새 브랜치로 넘어가게 하는 설정
    • None : 아무것도 안 함
    • Self : 이 Decorator가 붙은 자신의 브랜치만 끊음
    • Lower Priority : 자기보다 우선순위 낮은 브랜치들을 끊음
    • Both : Self + Lower Priority 둘 다 끊음
      -> 다른 노드랑 공격을 다시 받았을 시에도 화를 다시 내게 하기 위해서 Both로 설정

2. 아이템 구조 설계

  • AI 개발이 의도한만큼 완료되었기 때문에 아이템 개발을 맡기로 했다.
  • 개발해야 하는 아이템
    • 일시적으로 스태미나 무제한 (버프형)
    • 다른 플레이어 점프
    • 다른 플레이어 위치 보기
    • 다른 플레이어 알 위치 보기
  • 추가적으로 랜덤 아이템 스포너 개발 필요

아이템 아키텍처

  1. 아이템 인터페이스
    • OnPickUp() 함수를 통해 플레이어가 오버랩 시 호출
  2. 아이템 베이스 클래스
    • 콜리전 컴포넌트로 오버랩 감지
    • 오버랩 이벤트 발생 시, 인터페이스의 OnPickUp() 실행
  3. GAS 연동
    - GameplayEffect를 통해 스태미나 무제한 버프 구현

오늘의 CS

프로세스와 스레드의 차이점

  • 프로세스
    • 컴퓨터에서 실행 중인 하나의 프로그램을 뜻함
    • 프로그램은 특정 작업을 수행하기 위한 명령어의 집합
    • 실행할 때 운영체제가 독립적인 메모리 공간과 자원을 할당해주고, 각각의 프로세스는 서로의 메모리에 직접 접근 불가
  • 스레드
    • 프로세스 내부에서 실행되는 작업 흐름 단위
    • 스레드는 프로세스의 메모리 공간을 이용하고, 지역 변수를 저장하는 스택 영역을 할당받음
    • 코드, 데이터, 힙 영역은 스레드끼리 공유함
    • 스택은 스레드 간 공유가 불가능함

스택 오버플로우

  • 정의
    • 스택에 할당된 공간을 초과하여 데이터를 저장하려 할 때 발생하는 오류
  • 원인
    1. 무한 재귀 호출 : 함수가 자기 자신을 끝없이 호출하는 무한 재귀에 빠질 때 발생
    2. 지나치게 큰 지역 변수 : 함수 내에서 매우 큰 배열 같은 지역 변수를 선언하면, 스택 공간을 너무 많이 차지하여 오버플로우 발생 가능
  • 해결법
    1. 함수 종료 조건을 명확하게 함
    2. 재귀 대신 반복문을 사용
    3. 과도한 스택 사이즈보다는 동적 메모리 할당을 사용
    4. 컴파일러 옵션을 통한 스택 사이즈 조절

시간복잡도

  • 정의
    • 알고리즘이 실행되는 데 걸리는 시간(연산 횟수)을 입력 크기 n의 함수로 나타낸 것
    • 하드웨어와 무관하게 알고리즘의 효율성을 비교하기 위해 사용
  • 표기 방법
    • O (빅오 표기법) : 최악의 경우 시간 복잡도
    • Ω (빅오메가 표기법): 최선의 경우 시간 복잡도
    • Θ (세타 표기법): 평균/정확한 차수
profile
게임 개발자를 향해..

0개의 댓글