2026/03 19

C++) TRPG#04 : 패치 및 수정

오랫동안 골칫거리였던 랜덤으로 생성되어야 할 맵이 고정되는 문제, 밸런스 문제, 도망가기를 선택해도 지속적으로 전투가 이어지는 버그 등 게임 완성 직전 여러 버그들이 발생해 오늘은 버그와 패치를 주로 했다.위 버그들은 기존 여러 팀원들과 내가 테스트 용으로 작성한 임시 코드들이 계속해서 있고 동적으로 구현할 것은 하드 코딩으로 둔 것이 문제가 됐고 이를 수정하는 작업을 수행했다. 또한 우리 게임이 게임 화면 같지 않고 난잡하다는 평이 있어 다른 팀원들이 UI 수정 작업을 진행했다. 전체적 수정과 패치 작업을 거쳤고 발표 준비 또한 진행했다.던전 입장시 던전 명이 안 나오는 상황발표 준비를 위해 클래스 다이어그램을 visual studio로 만들었다.

언리얼 2026.03.30

C++) TRPG #03: 무기 및 스킬 클래스 생성

오늘은 추가적으로 게임에 컨셉에 맞게 weapon 클래스 와 skill 클래스 을 추가적으로 구현했다.아이디어를 계속 교환 하던 중에 스킬이 있으면 좋을 것 같다고 해서 총 세가지 스킬을 구상했다.데미지 세배 공격(TrippleDamage)cc기인 속박 스킬(BindSkill)적의 공격을 카운터 치는 스킬(counterstrike)2번 스킬은 적의 속도를 50% 낮추며 선제 공격을 할 수 있게 해주는 디버프 스킬이며3번 카운터 스킬은 적보다 speed가 높을 시에 적의 공격력 + 나의 공격력을 적에게 받아치는 스킬이다. 하지만, 적 보다 속도가 낮을 시에는 체력이 깎인다. 따라서, pressure 압력이 100이 됐을 때 속도가 낮아지는 데 이때는 이 스킬이 무용지물이다.이런 기획을 가지고 코드를 작성하..

언리얼 2026.03.27

C++) TRPG #02 : 플레이어 클래스 생성

오늘은 본격적으로 기본 틀이 되는 코드를 작성하기 시작했다. 나는 캐릭터 생성을 맡아 player.h 와 player.cpp 파일의 작성을 했다.심해 탐사라는 컨셉으로 기본 레벨, 체력, 공격력을 제외하고 산소, 압력, 배터리 등의 요소들을 player 클래스에 추가했다.#pragma once#include #include class Player{private: std::string name; int level; int hp; int maxHp; int attack; int tempAttack; int speed; int baseSpeed; int exp; int maxExp; int gold; int oxygen; int pressure; int battery; int artifactCount;publ..

언리얼 2026.03.26

C++) TRPG #01 : 기획

원래는 연습을 위해 text-rpg를 혼자서 만들어 보려 했으나, 오늘 팀 프로젝트가 Text-RPG라고 나와서 미루게 되며 팀 회의를 진행했다.먼저 기본적으로 Text-RPG의 틀은 두고 여러 가지 우리 팀만의 색깔을 넣으려고 했고 많은 아이디어들이 나왔다.포켓몬아포칼립스: 좀비심해 탐사게임 시스템중독, 감염 현상 추가속성 간 상성 전투 시스템토큰 (스킬)최종적으로는 심해 탐사로 결정됐고 아이디어 공유 시간에 나온 여러 게임 시스템은 모두 심해 탐사 게임에 적용하기로 했다. 중독, 감염은 산소 부족 과 압력으로, 속성 간 상성 전투 시스템은 무기와 심해어의 상성으로, 토큰은 배터리로 만들었다. 게임 개요: 안식 없는 바다(Restless Ocean)1. 대홍수와 인공 구조물1,000년 전, 거대한 바다..

언리얼 2026.03.25

TRPG C++

C++ Text RPG (0) 설계1. 파일 구조 (File Structure)헤더와 소스 파일을 아래와 같이 분리Character.h /. cpp: 모든 생명체의 기본 (HP, MP, 공격력 등)Player.h /. cpp: 플레이어 전직 및 레벨업 로직Monster.h /. cpp: 몬스터 종류별 스탯 설정GameManager.h /. cpp : 게임 엔진main.cpp: 게임 실행부2. 던전 및 전투 시스템 (GameManager)던전은 총 10개이며, 각 몬스터 종족별로 일반/보스 스테이지를 구성 스테이지몬스터종족 유형클리어 조건1-2고블린 (Goblin)일반 / 보스10마리 처치 / 보스 처치3-4스켈레톤 (Skeleton)일반 / 보스10마리 처치 / 보스 처치5-6오크 (Oak)일반 /..

언리얼 2026.03.23

C++ 알고리즘) 그리디 알고리즘

그리디 알고리즘 (Greedy Algorithm)매 순간 최적이라고 생각되는 결정을 내려서 최종적인 해답에 도달하는 그리디(탐욕) 알고리즘의 설계 원리와 한계, 그리고 이를 활용한 대표적인 그래프 및 배낭 문제들을 학습한다.2. 그리디 알고리즘의 개념그리디 알고리즘은 '현재 상황에서 당장 좋은 것만 고르는 방법'을 의미한다. 나중에 미칠 영향은 고려하지 않고, 지금 이 순간의 최적해를 구하는 방식이다.3. 그리디 알고리즘이 최적해를 보장하는 조건그리디 알고리즘으로 구한 해가 전체 문제의 최적해가 되기 위해서는 다음 두 가지 조건을 만족해야 한다.최적 부분 구조 (Optimal Substructure): 부분 문제의 최적해를 모아서 전체 문제의 최적해를 만들 수 있는 구조여야 한다.그리디 선택 속성 (Gr..

언리얼 2026.03.20

C++ 알고리즘) 동적 계획법

동적 계획법 (Dynamic Programming)1. 동적 계획법(DP) 개념동적 계획법은 복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법이다. 핵심은 한 번 계산한 문제는 다시 계산하지 않도록 저장해 두는 것이다. 이를 통해 중복 계산을 막고 실행 시간을 획기적으로 줄일 수 있다. 2. 동적 계획법의 성립 조건모든 문제에 DP를 적용할 수 있는 것은 아니며, 다음 두 가지 조건을 만족해야 한다.최적 부분 구조 (Optimal Substructure): 큰 문제의 최적해를 작은 문제의 최적해로부터 구할 수 있는 구조다.중복 부분 문제 (Overlapping Subproblem): 동일한 작은 문제들이 반복적으로 나타나는 구조다.3. 동적 계획법을 풀기 위한 점화식 수립 DP의 핵..

언리얼 2026.03.19

C++ 알고리즘) 해시 테이블

해시(Hash) 및 해시 테이블(Hash Table)1. 기본 개념해시(Hash): 임의의 길이를 가진 데이터를 고정된 길이의 고유한 값(해시 값)으로 변환하는 과정이다.해시 테이블(Hash Table): 키(Key)와 값(Value)을 연결하여 데이터를 저장하는 자료구조다. 해시 함수를 이용해 키를 인덱스로 변환하므로, 평균 O(1)의 매우 빠른 탐색 속도를 보장한다.2. 해시 함수 (Hash Function)정의: 키를 입력받아 배열의 인덱스(해시 주소)를 출력하는 함수다.특징:같은 입력에 대해 항상 같은 출력을 내야 한다.입력값이 조금만 달라져도 출력값이 크게 변하는 것이 좋다(눈사태 효과).해시 충돌을 최소화할 수 있도록 인덱스를 고르게 분산시켜야 한다.종류:1. 나눗셈법 (Division Met..

언리얼 2026.03.18

언리얼) 과제5 엑터 움직이기

1. 과제 개요언리얼 엔진 5 환경에서 C++ 클래스를 생성하고, 3차원 공간 내에서 액터(Actor)의 위치와 회전을 제어하는 기초 로직을 설계하는 과제였다. 단순히 수치를 바꾸는 것에 그치지 않고, 랜덤 라이브러리와 수학 함수를 활용해 매 스텝 변화하는 위치 정보를 실시간 로그로 출력하는 것이 핵심이다.2. 프로젝트 구성 및 주요 기능과 과정프로젝트 구조부모 클래스: AActor주요 데이터: FVector를 활용한 현재 좌표 저장, 누적 이동 거리(float), 이벤트 발생 횟수(int32) 관리구현 로직초기화: 생성자에서 시작 위치를 (0, 50, 0)으로 설정하고, 게임 시작 시(BeginPlay) 로직이 실행되도록 구성했다.랜덤 이동 (Move): FMath::RandRange를 사용하여 X, ..

언리얼 2026.03.17

C++ 알고리즘) 최단 경로 알고리즘(다익스트라, 벨만-포드)

최단 경로 알고리즘최단 경로 알고리즘은 그래프 내의 두 노드 사이를 이동할 때, 간선들의 가중치 총합이 최소가 되도록 하는 알고리즘이다.다익스트라 알고리즘다익스트라는 현재 확정된 최단 거리 노드를 기준으로 주변 노드를 탐색하는 방식이다. 마치 물이 펴져 나가듯 가장 가까운 곳부터 채워나가는 느낌이다. (그리디 속성)개념 및 작동 원리출발 노드를 설정하고 거리를 0으로 초기화한다.방문하지 않은 노드 중 최단 거리가 가장 짧은 노드를 선택한다.해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최간 거리 테이블을 갱신한다.위 과정을 반복한다.알고리즘 성능그래프의 표현인접 행렬로 표현하면 O(v^2)인접 리스트로 표현하면 O(v+e)알고리즘 동작우선순위 큐(이진 힙)의 경우 O((v+e)log v)우선순위 큐..

언리얼 2026.03.16