전체 글 101

[내일배움캠프 - 언리얼] DAY 31 - Actor와 Component

Actor 클래스 코드 구조#pragma once동일 헤더가 프로젝트 곳곳에서 여러 번 포함되더라도 컴파일러가 한 번만 처리하도록 한다.#include "CoreMinimal.h"엔진 전역 타입, 매크로, 함수 등을 가져온다.#include "GameFramework/Actor.h"AActor 클래스 선언을 사용 가능하게 한다.#include "Item.generated.h"언리얼 헤더툴이 자동 생성하는 코드를 포함하는 것으로, 항상 헤더의 마지막 줄에 위치해야한다.UCLASS()이 클래스를 리플렉션 시스템에 등록하는 매크로언리얼 에디터에서 이 클래스를 블루프린트로 확장할 수 있게 하고, 에디터의 여러 기능과 연동하도록 한다. 언리얼 엔진 C++에서는 클래스 이름에 접두사를 붙이는 접두사 규칙이 있다.A..

[내일배움캠프 - 언리얼] DAY 29 - 언리얼 엔진 C++ 빌드 프로세스 이해하기

솔루션 / 프로젝트 구조Solution Explorer는 실제 폴더와 다른 가상 구조를 보여준다.Games 폴더가 우리가 작성하는 게임 코드의 핵심 위치다.Engine / Programs / Rules 폴더는 초급 단계에서 거의 건드리지 않는다.프로젝트 루트에는 Config / Source / .uproject가 있다.Source 폴더에 모든 C++ 게임 로직이 들어간다. 빌드 설정 핵심C++ 코드는 빌드되어 DLL 형태로 에디터에 로드된다.가장 자주 사용하는 빌드 모드는 Development Editor다.*.Build.cs는 모듈 의존성과 라이브러리 설정을 담당한다.빌드 방식 차이전체 솔루션 빌드는 엔진 포함 → 느리다.프로젝트 부분 빌드는 게임 코드만 → 빠르다.일반적인 코드 수정 시에는 프로젝트 ..

[내일배움캠프 - 언리얼] DAY 28 - 텍스트 콘솔 RPG - 6

https://github.com/limyt0/TextConsoleRPGKPT 회고록Keep - 임영택: git에서 충돌을 최소화하기 위해 class 기능별로 파일을 나누고 역할분배를 하여 진행하였다. - 정야후: 지금처럼 팀 프로젝트를 열심히 하는 것 - 이병헌: 진행하다 막힌 부분은 다같이 고민하면서 해결하려는 모습이 좋았다. - 강민승: 원활한 소통을 통해 서로의 의견을 잘 조율하였음 - 이현진: 팀원들과 적극적으로 소통하며, 아이디어나 의견 적극적으로 공유하기Problem - 임영택: 시작할 때 제대로 설계하지 않고 프로젝트를 진행한 것 같다. - 정야후: 내실력이 가장큰 문제였던거같다.. - 이병헌: 프로젝트 진행 전에 계획을 확실히 세우지 않고 들어간 부분이 아쉬웠다 - 강민승: 직접 코드를 ..

[내일배움캠프 - 언리얼] DAY 25 - 텍스트 콘솔 RPG - 3

동일한 주소를 가르키고있는 아이템문제: 상점에서 동일한 아이템을 여러 개 구매하고나서 해당 아이템을 사용하거나 판매시 오류 발생원인: 아이템을 구매할 때 새로 아이템을 생성하여 주는 것이 아니라 상점에 있는 아이템의 포인터를 전달해주는 방식이었다.해결 방안: clone 패턴으로 같은 아이템을 새로 만들어서 내보내는 방식으로 해결하였다.Item* clone() const override{ return new HealthPotion(*this);}Item* item = sellList[itemindex]->clone(); 반복하여 사용되는 부분 함수로 변환몬스터 배틀과 보스 배틀에서 반복되어 사용되는 구문을 함수로 만들었다. 랜덤으로 아이템을 사용하는 함수void GameManager::useRandomIt..

[내일배움캠프 - 언리얼] DAY 23 - 텍스트 콘솔 RPG - 1

C++에서 랜덤 숫자 생성#include #include int main() { std::random_device rd; // 난수 시드 std::mt19937 gen(rd()); // Mersenne Twister 엔진 std::uniform_int_distribution dis(1, 4); // 1~4 균등 분포 int randomNumber = dis(gen); // 분포에서 숫자 선택 std::cout 포인터로 만든 클래스 재할당MyClass* p = new MyClass();delete p; // ✔ 메모리 해제 + 소멸자 호출p = nullptr; // ✔ 안전하게 초기화p = new MyClass()..

[내일배움캠프 - 언리얼] DAY 22 - 5번 과제 리뷰

FMath::RandRange(1, 100);랜덤 범위를 설정했을 때 1, 100이면 1부터 99까지라 50%를 설정하는데 오류가 있었다.RandRange(1,101) 로 설정해야 제대로 된 범위이다. SetActorLocation(FVector(0, 50, 0));필수 기능에 처음 시작시 위치 설정하는 기능을 설정하지 않고 월드에만 설정을 해놓았다.BeginPlay() 에 반복함수 시작전에 작성하여 초기화 설정을 했어야 했다.