2026-04-24 TIL (44일차)
객체 지향 설계피해야 할 구조 코드를 짤 때 “돌아가기만 하면 된다”는 마인드는 프로젝트가 커질수록 유지보수를 지옥으로 만듭니다. 피해야 할 3가지 대표적인 안티 패턴입니다. 1) 뒤엉킨 변경 정의: 하나의 클래스가 여러 가지 이유로 계속 수정되어야 하는 상태입니다. (단일 책임 원칙 위배) 해결: 데이터 관리 로직과 게임플레이 로직을 각...
객체 지향 설계피해야 할 구조 코드를 짤 때 “돌아가기만 하면 된다”는 마인드는 프로젝트가 커질수록 유지보수를 지옥으로 만듭니다. 피해야 할 3가지 대표적인 안티 패턴입니다. 1) 뒤엉킨 변경 정의: 하나의 클래스가 여러 가지 이유로 계속 수정되어야 하는 상태입니다. (단일 책임 원칙 위배) 해결: 데이터 관리 로직과 게임플레이 로직을 각...
언리얼 코어 아키텍처 1. 블루프린트(BP)와 C++ 클래스의 관계 블루프린트는 C++ 클래스의 확장 버전입니다. * 프로그래머가 C++로 게임의 뼈대와 복잡한 로직을 클래스(Class)로 만들어두면, 아티스트나 기획자가 이를 상속받아 블루프린트(BP)로 확장합니다. 기획자는 코드를 몰라도 블루프린트 에디터에서 수치를 조정하고 에셋을 교체하...
Unreal 게임 플로우 설계와 데이터 관리 아키텍처 게임 플로우(Game Flow)란 플레이어가 게임을 시작하고, 진행하며, 클리어(또는 게임 오버)하기까지의 모든 규칙과 흐름을 의미합니다. 언리얼 엔진에서는 이 흐름을 어디에 구현하느냐가 프로젝트의 안정성과 직결됩니다. 1. 게임 흐름을 어디에 구현할까? (아키텍처 설계) 작성하신 대로 G...
Unreal 아이템 시스템 구현 설계: 상속과 인터페이스의 활용 • 상속 vs 인터페이스 상속 “부모의 유산을 물려받는 것” 부모 클래스(Base Class)가 가진 속성(변수)과 기능(함수)을 자식 클래스가 그대로 물려받아 사용하는 개념입니다. (예: AActor를 상속받으면 트랜스폼, 충돌, 렌더링 기능을 물려받음)...
알고리즘 참고 강의: 알고리즘 강의 정렬 알고리즘 정렬이란 데이터를 특정한 기준에 따라 순서대로 나열하는 것을 말합니다. 일반적인 문제 상황에 따라서 적절한 정렬 알고리즘이 공식처럼 사용됩니다. • 선택 정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복합니다. 시간 복잡도 ...
프로시듀얼 셰이더 응용 과제 프로시듀얼 셰이더(Procedural Shader) 개념을 응용하여 나만의 패턴 직접 구현하기 이번 과제에서는 외부 이미지 텍스처를 사용하지 않고, 오직 수학적 계산만으로 무늬를 만들어내는 프로시듀얼 셰이더를 활용해 볼 예정입니다. 특히 스타크래프트 2의 핵 미사일 이펙트나 FPS 게임의 조준선, 바닥 장판 공격 또는...
CS 참고 강의: [취업을 위한 CS 지식] 3강 컴퓨터가 이해하는 정보 명령어는 수행할 동작(명령어)과 수행할 대상(데이터)으로 구성됩니다. (예: “더하라. 1과 2를”, “출력해라. ‘Hello World’를” 등) • 데이터 숫자, 문자, 이미지, 동영상과 같은 정적인 정보 컴퓨터와 주고받는 정보나 컴퓨터에 저...
게임 수학 • 벡터(Vector)의 이해 PDF가 확대해도 깨지지 않는 이유를 통해 벡터를 통해 설명하겠습니다. 비트맵(jpg)과의 차이: 일반 이미지는 픽셀을 강제로 늘리기 때문에 해상도가 깨지지만, 벡터 이미지는 점들의 ‘위치’와 ‘방향’을 수학적 벡터로 해석합니다. 실수배(스칼라 곱): 이미지를 확대한다는 것은 이미지를 잡아 늘...
코딩 테스트 참고 강의 (이코테 2021 강의 몰아보기) 2. 그리디 & 구현 1.그리디 알고리즘 “현재 상황에서 지금 당장 좋은 것만 고르는 방법” 핵심 요구 역량: 특정 알고리즘을 달달 외우고 있는지보다, 문제를 풀기 위한 최소한의 창의적인 아이디어를 떠올릴 수 있는지를 평가합니다. 정당성 분석 필수: 단순...
코딩테스트 강의 코딩 테스트 강의 • 알고리즘 성능평가 시간제한이 1초인 문제를 만났을 때, 데이터의 개수(N)에 따른 일반적인 기준은 다음과 같습니다. 이 기준을 바탕으로 어떤 알고리즘을 설계해야 할지 미리 유추할 수 있습니다. N의 범위가 500인 경우: 시간 복잡도가 $O(N^3)$인 알고리즘을 설계하면 문제를 풀 수 있습니...