TIL

·TIL
이번 주에는 언리얼 기반 게임 프로젝트에서 캐릭터 관련 로직을 컴포넌트 단위로 구조화하고 리팩토링 하는 작업을 진행했다.주요 목표는 다음과 같다:목표캐릭터 로직의 복잡도 해소전투 / 아이템 로직의 기능 분리 및 확장성 확보파티 애니멀즈 스타일의 무기 획득 & 교체 시스템 구현시스템 분리 구조1. CombatComponent - 전투 관련 처리 전담공격 실행, 애니몽타주 재생데미지 계산, 넉백 처리GameplayEffect 적용GAS 태그 기반 공격 불가 상태 State.Stunned 대응AnimNotify에서 호출되는 HandleAttackNotify 처리2. ItemComponent - 아이템 처리 전담월드에서 아이템 획득 & 장착장착 중인 아이템은 무기 소켓에 부착새 무기 획득 시 기존 무기는..
·TIL
인프런 C++ 코딩테스트2 - A - https://sonsazang.tistory.com/1252 - B - https://sonsazang.tistory.com/1262 - C - https://sonsazang.tistory.com/127이득우의 언리얼 프로그래밍 Part 111강 언리얼 컨테이너 라이브러리 2 - 구조체와 Map12강 언리얼 엔진의 메모리 관리이득우 선생님 강의는 맘먹고 메모를 하면서 학습을 해야 할 것 같은데 생각보다 집중이 잘 안돼서 우선 끝까지 들어보자 라는 마음으로 진행하고 있습니다. [Silver I] 안전 영역 - 2468[Silver I] 안전 영역 - 2468https://www.acmicpc.net/problem/2468DFS를 이용해서 풀게 된 문제입니다.가중치가..
·TIL
DFS와 BFS 비교시간복잡도 차이는 없다. → 어떤 식으로 구현됐는지에 따라서 차이점만 존재DFS → 메모리를 덜 씀. 절단점 등 구할 수 있다. 코드가 좀 더 짧으며 완전탐색의 경우에 많이 사용한다.BFS → 메모리를 더 쓴다Queue. 가중치가 같은 그래프 내에서 최단거리를 구할 수 있음. 코드가 더 길다.코딩테스트 문제에서 ‘퍼져나간다’, ‘탐색한다’ 이 2글자가 있으면 반드시 DFS, BFS가 생각나야 한다.dfsinthere { if visited[here] return; visited[here] = 1; for intthere:adj[here] { dfsthere; }}bfsinthere{ queue q; visited[here] = 1; q.push(her..
·TIL
방문한 정점 → 다시 방문하지 않는다. ⇒ Visited연결된 컴포넌트ConnectedComponent연결된 하위그래프를 말하며 연결된 하나의 덩어리를 생각하자.이 덩어리는 연결된 컴포넌트에 속한 “모든 정점을 연결하는 경로가 있다.”라는 특징이 있다.깊이 우선 탐색DFS,DepthFirstSearchDFS는 그래프를 탐색할 때 쓰는 알고리즘이며 어떤 노드부터 시작해 인접한 노드들을 재귀적으로 방문하며 방문한 정점은 다시 방문하지 않으며 각 분기마다 가능한 가장 멀리 있는 노드까지 탐색하는 알고리즘.#include using namespace std;int dy[4] = {-1, 0, 1, 0};int dx[4] = {0, 1, 0, -1};int m, n, k, y, x, ret,..
·TIL
지난주는 진행하던 프로젝트가 종료되면서, 이를 정리하는 시간을 가졌습니다.현재 저는 유니티 클라이언트 개발자에서 언리얼 클라이언트 개발자로 전향하는 과정에 있으며, 이번 프로젝트는 비교적 짧은 기간 동안 게임을 제작하는 경험이었습니다.처음 게임 개발을 공부할 때는 단순히 "재미있는 게임을 만들고, 그 재미를 다른 사람에게 전달하는 것"이 가장 큰 목표였습니다.하지만 이번 프로젝트를 진행하면서는 전혀 다른 고민들이 머릿속을 채웠습니다. "이 기능을 어떻게 구현해야 성능적으로 더 나을까?""오큘루전 컬링이나 프리스트럼 컬링을 적용해서 이 큰 레벨을 어떻게 최적화할 수 있을까?" 이처럼 게임을 ‘잘 만들기’보다는 ‘잘 동작하게 만들기’에 집중한 한 주였습니다.이번 프로젝트에서 제가 담당한 기능은 다음과 같습니..
·TIL
OPERATION - LYCAN프로젝트 기간: 2025.02.17 ~ 2025.03.05진행 인원: 손은수, 지승현, 김세원, 신설빈담당 역할손은수 전체 프로젝트 리딩 및 담당자 작업 할당인터랙션 시스템 구현인벤토리 시스템 및 아이템 시스템 개발언리얼 레벨 스트리밍 시스템 적용게임 시작 및 환경 설정 기능 구현미션 시스템 & 챕터 시스템 개발지승현- 캐릭터 리타겟팅- 캐릭터 애니메이션, 구현- 캐릭터 UI 구현- 사망 시스템, 구현- 총기 발사 시스템 구현- 총기 작동 시스템,,, 구현- 동적 크로스헤어 구현김세원- 좀비 몬스터 및 AI 구현- 관절별 피격 시스템 개발- 몬스터 스폰 시스템 구현신설빈- 보스 몬스터 AI 구현 (Beh..
·TIL
이번 프로젝트를 진행하면서 맵의 규모가 많이 커지다 보니 최적화가 필요하다고 생각하게 되어서 레벨 스트리밍 시스템을 적용하기로 했습니다.레벨 구성Persistent Level 기본 환경 : 전체 프로젝트의 월드 설정과 베이스 환경 담당라이팅 : Sky Light, Directional Light, Sky Atmosphere, ExponetialHeightFog월드 지오메트리 : VolumetircCloud, PlaneEnvironment Levels 각 챕터별 환경과 오브젝트를 담당하는 레벨.01_Intro_Level : 인트로 씬에서 필요한 지형, 플레이어 모델링, 인트로 씨네 카메라02_Tutorial_Level : 튜토리얼과 관련된 오브젝트 및 트리거 등03_First_Ch..
·TIL
코딩테스트[level 2] N개의 최소공배수 - 12953해당 문제를 풀기 위해 이번엔 최대공약수와 최소공배수를 구하는 로직을 찾아보았습니다.유클리드 호제법이라는 방법을 알게 되었습니다.1071과 1029의 최대공약수를 유클리드 호제법을 통해 구해보자.1071을 1029로 나눈 나머지 → 421029를 42로 나눈 나머지 → 2142를 21로 나눈 나머지 → 01071,1029 = 21,0 = 21따라서 최대공약수는 21최소공배수는두 수를 곱하고 최대공약수로 나누면 된다! [level 2] N개의 최소공배수 - 12953 풀이코드더보기#include using namespace std;// 유클리드 호제법을 사용한 최대공약수 구하기int gcdinta,intb{ if (b == ..