본 캠프 TIL

26.06.09 TIL / AI 튜터 리뷰 노트, 기초반 1강 강의 정리

jh009 2026. 6. 9. 20:41

오늘

AI 튜터 리뷰 노트

  • Blueprint 학습주차 전체 문제 복습
  • C++ 문법 학습주차 ~클래스와 객체의 이해까지 문제 복습


1강 기초반 OT & 프로젝트 세팅 강의 정리

 

https://jh009.tistory.com/58

 

1강 기초반 OT & 프로젝트 세팅

표기법 3가지 규칙 설명 예시 파스칼 케이스 (pascal case)모든 단어의 첫 글자를 대문자로 표기BeginPlay()카멜 케이스 (camel case)첫 단어는 소문자로, 이후 단어의 첫 글자만 대문자로 표기beginPlay()스

jh009.tistory.com


키워드 정리 (컴파일, 게임 프로그래밍)

1. 컴파일

C++ 프로그램이 작성되어 실행 파일로 변환되기까지의 과정은 일반적으로 4단계로 이루어짐

 

전처리(Preprocessing) → 컴파일(Compilation) → 어셈블리(Assembly) → 링크(Linking)


1) 전처리 (Preprocessing)

작성된 소스 코드를 컴파일러가 읽기 위한 형태로 다듬는 준비 단계

 

주요 역할 

  • # 으로 시작하는 전처리 지시자 (Preprocessor Directives) 처리 

주요 작업 

  • 헤더 파일 확장: #include 지시자를 만나면 해당 헤더 파일의 내용을 소스 코드에 복붙
  • 매크로 치환: #define 으로 정의된 매크로를 지정된 값, 코드로 바꿈
  • 조건부 컴파일: #if , #ifdef 등을 통해 상황에 맞게 코드를 포함, 제외시킴 

결과물

  • 변경된 C++ 소스 코드 (확장자 숨김 또는 .i 파일 형태)

2) 컴파일 (Compilation)

전처리된 소스 코드를 컴퓨터가 이해할 수 있는 어셈블리어(Assembly Code)로 번역하는 단계

 

주요 역할

  • C++ 문법이 올바르게 작성되었는지 검사(구문 분석, 의미 분석)하고 중간 코드를 거쳐 어셈블리어로 변환

결과물

  • 어셈블리어로 이루어진 파일 (.s 파일 형태)

3) 어셈블 (Assembly)

어셈블리어로 작성된 파일을 기계어인 오브젝트 코드(Object Code/Binary Code)로 변환하는 단계

 

주요 역할

  • 컴퓨터의 CPU가 직접 읽고 실행할 수 있는 0과 1의 이진수 형태(기계어)로 번역

결과물

  • 오브젝트 파일 (.obj 또는 .o 파일 형태)

4) 링크 (Linking)

오브젝트 파일 및 프로그램이 필요로 하는 라이브러리들을 하나로 묶어 최종 실행 파일을 만드는 단계

주요역할
  • 소스 파일이 여러 개일 때, 각각 컴파일된 오브젝트 파일들을 연결
  • 내가 작성하지 않은 표준 라이브러리의 실제 구현 코드를 찾아서 연결 (예시: std::cout )
  • 외부 함수나 변수를 호출할 때, 그 위치를 정확히 가리키도록 메모리 주소를 할당

결과물

  • 최종 실행 파일 (.exe 또는 Linux의 경우 확장자 없는 실행 파일)

2. 게임 프로그래밍

C++의 사용 이유

  • 하드웨어 제어: CPU와 메모리에 직접적인 명령이 가능 → 하드웨어 성능을 더 끌어낼 수 있음
  • 메모리 관리: 프로그래머가직접 메모리의 할당과 해제를 제어 가능 → 불필요한 낭비를 줄이고 최적화
  • 호환성: 게임 엔진의 표준인 언리얼 엔진이 C++로 구축되어 있음 → 엔진 자체를 커스텀, 최적화하는 데 필수적 

컴파일러 / 인터프리터 차이점

구분 컴파일러 (Compiler) 인터프리터 (Interpreter)
번역 방식 전체 코드를 한꺼번에 번역 코드를 한 줄씩 순차적으로 번역
실행 파일 생성됨 (.exe 등) 생성되지 않음
실행 속도 빠름 (번역된 코드 실행) 느림 (실행 시마다 번역 병행)
개발 주기 빌드 시간 필요 즉시 결과 확인 가능
장점 높은 최적화 및 빠른 런타임 성능 편리한 디버깅 및 즉각적인 피드백 

 

번역의 시점과 번역의 단위 차이가 가장 큼


C++ /  C#  차이점

구분 C++ C#
메모리 관리 프로그래머가 직접 관리 (수동) 가비지 컬렉터(GC)**가 자동 관리
실행 방식 네이티브 코드 (기계어) 중간 언어(IL)로 변환 후 JIT 컴파일
생산성 낮음 (복잡도 높음) 높음 (자동화 기능 많음)
주 사용처 언리얼 엔진, 고성능 엔진 개발 유니티 엔진, 응용 프로그램

 

C#의 가비지 컬렉터(GC) → 편리함

but, 개발자가 의도하지 않은 시점에 메모리를 정리하려 할 때 게임 프레임이 일시적으로 끊기는 현상이 발생할 수 있음

고사양 게임일수록 더 정밀한 제어가 가능한 C++을 선호


회고

AI 튜터를 활용하여 풀었던 문제와 취약했던 부분을 보완하며, 다시 문제를 푸는 시간을 가졌다.

복습을 하니 한결 마음이 편안하다.

그리고 기초반 1강 수업을 들었는데, 전에 했던 내용이라 복습한다는 느낌으로 들었고 예전에는 저것도 어렵다고 느꼈는데 이제는 손 쉽게 할 수 있었다.

그래도 방심하지 않고 꾸준히 복습해야된다.

또한 오늘 박문수 튜터님께서 키워드 정리하면 좋다고 말씀해주셔서 컴파일과 게임 프로그래밍에 대해 찾는 시간을 가졌다.

키워드 정리는 아직 더 해야봐야겠다. 좀 더 깔끔하게 찾고 정리하는 감을 잡아야 할 듯싶다.