코드카타 (Template 수정, 문제 4개), C 언어 (조건문 & 반복문) 개인공부 C언어 (함수, 1차원 배열, 포인터), Unreal Blueprint 라이브 세션 (적 AI 구현 & 체력 시스템), How to TIL | 캠프 4일 차 | 2026/04/23 (Thur) | TIL 8th

2026. 4. 24. 01:21·TIL/Boot Camp

Agenda: 코드카타 (Template 수정, 문제 4개), C 언어 (조건문 & 반복문) 개인공부 C언어 (함수, 1차원 배열, 포인터), Unreal Blueprint 라이브 세션 (적 AI 구현 & 체력 시스템), How to TIL


코드카타 - Template 수정, 문제 4개

  • 002.두 수의 차 구하기 | Solved Date: 2026-04-22-Wed | Problem Link
  • 003.몫 구하기 | Solved Date: 2026-04-23-Thur | Problem Link
  • 004.나이 출력 | Solved Date: 2026-04-23-Thur | Problem Link
  • 005.숫자 비교하기 | Solved Date: 2026-04-23-Thur | Problem Link

C 언어 - 조건문 & 반복문

if, if else, else if (if - else if - else), 중첩 if

switch case

  • Intentional-Fallthrough: 고의적으로 case 내부에 break 구문을 적지 않은 경우

! 만약 VS Studio에서 경고문으로 ”애플리케이션 제어 정책에서 이 파일을 차단했습니다” 뜨면

  • 스마트 앱 컨트롤 가서 끄자

While

새로배운거

  • INT_MAX
  • INT_MIN

개인공부 C언어 (함수, 1차원 배열, 포인터)

“윤성우의 열혈 C 프로그래밍” 책

  • ch9 ~ 12

함수

C언어는 절차지향 언어다.

  • 실행 순서가 아주 중요한 언어
  • C# 이랑 다르게, C에서는 사용하려는 함수는 다 main 함수 위에 있어야 한다.
  • 함수의 정의와 그에 따른 원형의 선언
    • main 위에 함수 선언 해두고 아래에 정의하면 괜찮다.
  • 지역변수 (Local Variable)
    • 자동변수 (Automatic Variable): 지역번수를 가리켜 ‘자동변수’라고도 한다. 선언된 영역을 벗어나면서 자동으로 소멸되기 때문에 붙여진 이름이다.
  • 전역변수 (Global Variable)
    • 프로그램이 처음부터 종료될 때까지 메모리 공간에 남아있는 변수.
    • 전역변수는 기본 0으로 초기화
    • !!! 전역변수랑 지역변수 같은 이름 안 쓰도록 주의해야 한다 (컴파일에서 안 잡아줌)
      • 만약 전역변수랑 지역변수랑 같은 이름으로 선언되면 해당 지역 내에서는 전역변수가 가리어지고, 지역변수로의 접근이 이루어짐.
    • 전역변수 선언은 가급적 제한 왜냐 구조를 복잡하게 만듦.
  • 지역변수의 static 선언
    • 딱 1회 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다.
    • (원래는 함수 내에 선언된 지역변수는 해당 함수가 반환하면 소멸됨)
    • 전역변수와 동일한 시기에 할당되고 소멸된다.
    • 그렇기 때문에 프로그램이 실행되는 동안에 계속해서 유지해야 할 변수가 있다면 static 지역변수로 선언하자.
  • 레지스터 변수 (register)
    • 접근이 가장 빠른 레지스터에 저장 (성능향상에 도움)
    • 레지스터는 CPU 내에 존재하는 매우 작은 메모리.
    • !!! 내가 선언해도 최종결정은 컴파일러가 내린다.
      • 반대로 아무런 선언을 하지 않아도 컴파일러가 판단해서 할당할 수도 있음
    • 전역변수는 register 안됨
  • 재귀함수 (Recursive Function)
    • 꼭 탈출 조건 넣자.

1차원 배열

배열 (Array)

  • 배열의 이름을 대상으로 하는 sizeof 연산의 결과로는 ‘바이트 단위의 배열 크기’가 반환된다 sizeof(array)
    • 배열의 길이를 계산하고 싶으면 array 랑 들어있는 자료형 나누면 됨 ex: sizeof(array) / sizeof(int or double or float 등등)
  • char 배열의 경우 마지막에 null 들어가서 보이는 길이보다 1 더 길다.
  • 문자열을 입력받는 배열의 이름 앞에는 & 연산자를 붙이면 안 된다.
  • &를 붙이고 떼는 기준
    • “sacnf 함수 호출문 구성 시, 데이터를 저장할 변수의 이름 앞에는 & 연산자를 붙여줘야 한다. 그러나 문자열을 입력받는 배열의 이름 앞에는 & 연산자를 붙이지 않는다”
  • scanf 함수호출을 통해서 입력받은 문자열의 끝에는 널 문자가 삽입
  • C언어에서 표현하는 모든 문자열의 끝에는 널 문자가 자동으로 삽입된다.

포인터의 이해

포인터 (Pointer): 포인터 변수란 메모리의 주소 값을 저장하기 위한 변수

  • ‘포인터’는 ‘변수 형태의 포인터’와 ‘상수 형태의 포인터’를 어우르는 표현이다.
    • 대부분은 ‘포인터 변수’를 연상하면 됨.
  • C언어에서는 시작번지만을 가지고 위치를 표현한다 (변수의 자료형을 알면 끝이 어디인지는 쉽게 계산이 가능하기 때문에)
  • & 연산자는 ‘오른쪽에 등장하는 피연산자의 주소 값을 반환하는 연산자’이다
int num = 7;
int* pnum; // 포인터변수 선언
pnum = # // num 주소 값을 포인터 변수에 저장
  • 포인터 변수의 크기는 시스템에 따라 다르다
    • 시스템이 32 비트면 4바이트
    • 시스템이 64 비트면 8바이트

C# 에는 없는 처음 보는 변수 이름: register

스스로 질문

??? 지역변수의 static 은 전역변수와 동일한 시기에 할당되고 소멸된다.라고 하는데 그러면 어떻게 직접 메모리에서 날리나? (전역변수도 같은 궁금증)


Unreal Blueprint 라이브 세션 (적 AI 구현 & 체력 시스템)

  • 어제 찾은 버그(총알이 물체에 안 맞으면 줄어드는) 내 생각이 맞았음. 하지만 내가 생각한 방법의 해결보다 더 심플하게, 아예 앞쪽으로 노드를 옮겨서, 그냥 발사되면 바로 줄어들게 수정함

적 AI 구현 & 체력 시스템

개미 bp

Collision

  • Sphere → 우클릭 → Add Event → Add OnComponentBeginOverlap 선택
  • 이 이벤트는 이 Sphere안에 누군가 들어오면 실행되는 이벤트입니다.
  • Collision Sphere 만들어서 적용
  • 중요! 개미 캡슐> Collision에서
  • Collision Preset → Custom으로 변경
  • Visibility → Block으로 변경합니다.
  • 우리가 linetrace에서 Visibility Channel을 사용해서 캡슐의 Visibility 설정을 Block으로 해야 함
  • ? 그중 sphere란 이름의 컴포넌트 만들어서 그건 이름 수정 안 하는데 왜 그런 거지?

AI Move

  • On Component Begin Overlap > Cast To BP_FPSCharacter> AI MoveTo

Nav Mesh

  • Nav Mesh BoundVolume > 레벨에 배치 후 brush setting에서 크기 설정 해줘야 함 (p 누르면 초록색으로 디버깅화면 볼 수 있음

nav mesh의 자세함 (누락되는 부분) 수정. (숫자가 적을수록 자세해져서 부하가 많이 걸림)

  • Detail에서 Nav Mesh Resolution Params 안에 Default를 봅니다
  • Cell size는 19.0 → 네비 영역의 크기를 얼마나 디테일하게 할지 정합니다.
  • Cell Height 15.0 → 네비 영역 높이입니다. 계단 끊어진 것도 이 값으로 수정 가능합니다.
  • Agent Max Step Height는 35.0으로 설정 → AI들이 얼마나 높은 곳을 올라갈 수 있는지 정합니다.

Explotion (give damage to Player)

  • +Add 눌러서 컴포넌트 추가 ExplosionSphere
  • ExplosionSphere → 우클릭 → Add Event → Add OnComponentBeginOverlap을 선택
  • VFX, Sound 추가
  • Explosion_Cue 파일을 찾아서 열어줍니다.
  • 사운드 큐 타입의 특징은 이렇게 사운드를 편집할 수 있다는 겁니다.
    • Sound Cue는 여러 사운드를 노드 그래프로 조합·편집해서 하나의 재생 단위로 만드는 에셋입니다. Blueprint처럼 시각적으로 오디오 로직을 짜는 거라고 생각하면 됩니다!
  • 아래에 보면 사운드 실행하면 랜덤 하게 사운드가 들린다는 걸 알 수 있습니다.
  • 그리고 Attenuation(감쇠)라는 효과가 있는데 플레이어가 소리의 근원과 멀어지면 소리가 작게 들리는 효과입니다!
    • Inner Radius 400: 이 거리 안에서는 최대 볼륨
    • Falloff Distance 1800: 이 거리 밖에서는 안 들림
  • Explosion Overlap 이벤트 쪽에서 캐릭터로 캐스트 후 성공하면 Apply Damage를 호출해서 캐릭터에게 대미지 25를 주겠습니다.
  • AnyDamage이벤트에서는 아래와 같이 현재 체력에서 들어온 대미지를 빼고 최대 체력이랑 나눠서 ProgressBar에 퍼센트를 설정합니다.
  • BeginPlay → Move Random 연결해서 개미가 만들어지면 랜덤 하게 움직이도록 만듭니다.
  • AI Move To 노드를 사용해서 개미가 자신의 위치에서 1000cm(10m) 안에서 랜덤 한 위치를 선택하고 이동하게 만들어 줍니다. 이동 후 0~3초 랜덤 하게 기다리고 다시 이동합니다.
  • 이제 Random 이동도 있고 추격(Chase)도 있는데 둘 다 AI Move To 함수를 사용하다 보니 실행이 꼬일 수 있습니다.
  • 이것을 해결하기 위해 IsChasing이라는 변수를 만들고 추격하지 않을 때만 랜덤 이동하도록 만들겠습니다!

BP: 함수 vs 이벤트

  • 함수 = 값을 돌려받을 수 있고 즉시 실행됨 (Delay ❌)
  • 이벤트 = 반환값없고 Delay 쓸 수 있음

Animation Blueprint

  • Axis Settings → Horizontal Axis → Name을 Speed로 작성
  • 아래 Snap to Grid 선택합니다. 블렌드 스페이스 그래프에 애니메이션 지정할 때 snap이 걸려서 조금 더 편하게 할 수 있습니다.
  • 이제 BP_Ant로 가서 Mesh → Detail → Animation Mode가 Blueprint로 되어 있는지 체크
  • Anim Class가 ABP_Ant_C 우리가 만든 클래스 선택합니다.
    • _C는 블루프린트 클래스라는 뜻입니다.
  • CustomEvent → Detail → Inputs → + 버튼 클릭
  • 변수 만듭니다. Target이고 Type은 Actor(Object Reference)입니다.

픽업 아이템(힐 포션)

Actor 아이템 만들기

  • StaticMesh 컴포넌트, Sphere Collision 추
  • 스태틱 메시 아래 있으니 Root Component로 변경하겠습니다.
    • 충돌체(Collision)를 루트로 설정하는 이유는 액터의 물리적인 ‘중심점’과 ‘기준’을 일치시켜 예기치 못한 물리 오류를 방지하기 위해서입니다.
  • Sphere → 드래그 앤 드롭 → DefaultSceneRoot → Make New Root 선택
  • Shere 선택 후 Detail → Collision 검색
  • Collision Presets에 Custom 선택 후
    • Collision Presets은 충돌체(Collision)가 다른 물체와 만났을 때, 통과시킬지 아니면 부딪힐지를 미리 정해둔 반응 규칙 세트입니다.
  • Visibility를 Block으로 선택합니다.

레벨 배치

오늘의 핵심 정리

Sphere Collision 보이지 않는 구체 범위.
플레이어 탐지나 폭발 범위로 사용.  
Hidden in Game 끄면 게임 중에도 보임  
OnComponentBeginOverlap 컴포넌트 안에 뭔가 들어오면 실행되는 이벤트.
Other Actor로 누가 들어왔는지 확인  
Cast To 들어온 Actor가 원하는 타입(BP_FPSCharacter)인지 확인.
실패하면 Cast Failed로 빠짐  
AI Move To + NavMesh AI를 목표 위치로 이동.
NavMesh BoundVolume은 AI가 다닐 수 있는 영역 (P키로 확인)  
Apply Damage / Event AnyDamage 가해자는 Apply Damage로 데미지를 주고
피해자는 Event AnyDamage로 받아서 체력 감소 처리  
함수 vs 이벤트 함수 = 반환값 ⭕ / Delay ❌
이벤트 = 반환값 ❌ / Delay ⭕  
Custom Event 내가 직접 만드는 이벤트.
Input으로 값 받기 가능 (예: StartChase의 Target)  
Blend Space Speed 값에 따라 Idle ↔ Walk ↔ Run을 자연스럽게 섞음
ProgressBar 업데이트 **(현재체력 / 최대체력)**으로 Set Percent → 체력바 자동 갱신

개념 배운 것


Node 알아두기

  • On Component Begin Overlap
  • Cast To ~~~~ (”내가 네이밍 한 BP)
  • AI MoveTo
  • Apply Damage
  • AnyDamage
  • CustomEvent
  • MIN
  • MAX

Nav Mesh BoundVolume

다시 알아보기

  • Sphere 충돌 Debbuging 시 → Sphere 선택 → Hidden in Game 선택해제(false)
  • ??? Collision Presets에 Custom에서 특정 오브젝트 (player 만) 따로 설정하는 법은
  • ??? 특정 지역 안에서만 랜점하게 AI 들 이동 시키는법 (Nav Mesh를 여러개? 아니면 Sphere 로 추가하나? 그것도 아니면 박스?) : AI Move To 노드를 사용해서 개미가 자신의 위치에서 1000cm(10m) 안에서 랜덤 한 위치를 선택하고 이동하게 만들어 줍니다. 이동 후 0~3초 랜덤 하게 기다리고 다시 이동합니다.로 되어있음

NavMesh

  • 현재 나만 동적으로 Navmesh 적용시켰는데, 그 이유는 그래야 static mesh 있는 오브젝트 destory 했을 때 nav mesh가 새로 적용되기 때문에

참고 웹사이트

  • https://velog.io/@singery00/UE5-NavMesh-Rebuild-Runtime

ps. 나도 추후 동여상 추구해서 설명해 두자


How to TIL

  • 1 시간 정도 짧게 처음 보는 매니저 분이 강의해주셨는데, 이미 제공받은 TIL 관련 notion doc에 다 나와있던 말이었다.
  • 정리: 매일 꾸준히, 너무 시간은 많이 쓰지 말되 내가 나중에 다시 와서 읽어보고 이해할 수는 있게끔 쓰자.

Tags:

  • TIL, DevLog, 내일배움캠프, Boot Camp, C, Programming, Game Dev, 게임개발, Unreal Engine, UE5, Blueprint
저작자표시 비영리 변경금지 (새창열림)
'TIL/Boot Camp' 카테고리의 다른 글
  • 코드카타 (배열의 평균값) | 주말일정들로 다른 건 못함 | 2026/04/24 (Sat) | TIL 10th
  • 코드카타 (두 수의 나눗셈, 각도기, 짝수의 합); C언어 (For, Do While, 배열 (Array), 2차원 배열 (Two-dimensional array)); Unreal Blueprint 라이브 세션 (아이템, 게임 모드, HUD, 완성) | 캠프 5일 차 | 2026/04/24 (Fri) | TIL 9th
  • Start 코드카타, C언어 세션-가벼운 리뷰 & 혼자 공부, Unreal Blueprint 라이브 세션 - Line Trace, Spawn System, Effect, Sound, UI | Camp Day n or캠프 n일 차 | 2026/04/22 Tue) | TIL 7th
  • 제목 : 코드카타, C언어 세션, Unreal Blueprint 라이브 세션 | 캠프 2일 차 | 2026/04/21 (Tue) | TIL 6th
DevCol
DevCol
DevCol (Development Collaboration). 함께 개발 & 공부 & IT 정보 나눔장소
  • DevCol
    DevCol (Development Collaboration)
    DevCol
  • 블로그 메뉴

    • Unreal Engine
    • TIL
    • 게임국가기술자격검정 게임프로그래밍전문가 [한국콘텐츠진흥원]
    • 분류 전체보기 (73) N
      • Unreal Engine (31) N
        • Project (2) N
        • Dev Log (0)
        • Debugging (2) N
        • Blueprint (1)
        • UE 기초 (25) N
        • UE 심화 (0)
        • TA (1) N
      • Programming Language (0)
        • C++ (0)
        • C# (0)
      • Unity Engine (0)
      • 자격증 (3)
        • 게임국가기술자격검정 [한국콘텐츠진흥원] (3)
      • Coding Test | 코딩테스트 (0)
        • 프로그래머스 기초 (0)
        • 프로그래머스 입문 (0)
      • TIL (38) N
        • Boot Camp (32) N
      • Git & Github (1)
  • 링크

    • Youtube
    • GitHub
    • itch.io
    • Blog (En)
  • 공지사항

  • 인기 글

  • 태그

    코드카타
    Programming
    Code Kata
    코드 카타
    게임개발
    Devlog
    언리얼 엔진
    기초
    Game Dev
    Unreal engine
    til
    cpp
    UE
    C++
    Boot Camp
    게임 개발
    프로그래밍
    내일배움캠프
    c
    UE5
  • 최근 글

  • GitHub Youtube itch
  • hELLO · Designed By 정상우.v4.10.6
  • DevCol
    코드카타 (Template 수정, 문제 4개), C 언어 (조건문 & 반복문) 개인공부 C언어 (함수, 1차원 배열, 포인터), Unreal Blueprint 라이브 세션 (적 AI 구현 & 체력 시스템), How to TIL | 캠프 4일 차 | 2026/04/23 (Thur) | TIL 8th
    상단으로

    티스토리툴바