전체 글 37

내일배움캠프] C++와 Unreal Engine으로 3D 게임 개발 1주차 #4 정리

트랜스폼 액터클래스가 오브젝트 클래스와 다른 점 - 월드에 배치될 수 있다월드에 배치될 수 있다는 것은 트랜스폼을 가질 수 있다는 것액터는 C++로 구현했었는데 root 컴포넌트가 없기 때문에 트랜스폼이 구현이 안된다. Root 컴포넌트가 있어야 트랜스폼을 가질 수 있으나 C++클래스에서 내부적으로 임시 트랜스폼을 가지기 때문에 배치하고 크기를 조절할 수 있다. 하지만 엄밀히 말하면 루트 컴포넌트를 무조건 구현해야 한다. 트랜스폼은 Location(이동 좌표), Rotation(회전), Scale (크기) 값을 가진다. 그 값들은 각각 X,Y,Z 축을 가짐.X축 Rotation - RollY축 Rotation - PitchZ축 Rotation - yaw Transform - 월드 상에서의 트랜스폼View..

카테고리 없음 2025.07.23

내일배움캠프] C++와 Unreal Engine으로 3D 게임 개발 1주차 #3 정리

액터의 라이프 사이클 액터라는게 생성되고 활성화되고 파괴되는 라이프사이클 과정을 이해해야 한다. 로그는 디버깅의 기본창-출력로그 에서 로그를 확인 할 수 있다. BeginPlay - 액터가 생성된 시점에 바로 호출에 되는 함수UE_LOG 를 통해서 로그를 찍을 수 있다. UE_LOG(LogTemp, Warning, TEXT("My LOG"));LogTemp - 로그 카테고리. 임시 카테고리. 언리얼 엔진에서 미리 만들어놓은 카테고리. 로그 필터가 가능하기 때문에 카테고리를 나눠놓는 것. (한번이라도 출력이 된 카테고리에 대해서 필터링이 가능한 것)Warning - 경고 메시지 . 노란색으로 뜨게 됨. (하얀색으로 나타내려면 Display. Error 빨간색)TEXT - 메시지가 나타나게 됨. 입력하고 싶..

카테고리 없음 2025.07.15

[내일배움캠프] C++와 Unreal Engine으로 3D 게임 개발 1주차 #2 정리

Header 파일 먼저 살펴보자#pragma once : 여러 군데에서 헤더 파일을 인클루드 시킬 수 있으니 한번만 컴파일 할 수 있도록 보장해주는 키워드. 헤더파일 중복 컴파일을 막아주는 키워드 이다. #include "CoreMinimal.h": 언리얼 엔진 기본 함수 포함 #inlcude “GameFramework/Actor.h”: Actor 클래스에 대한 정보를 담은 클래스 #include “Item.generated.h”: 블루프린트에서 코드를 볼 수 있는 리플렉션 시스템을 보기 위해 포함되어있는 코드 UCLASS() : 리플랙션 시스템과 관련이 되어있는 클래스GENERATED_BODY() : 리플랙션 시스템과 관련이 되어있는 클래스 class MYPROJECT_A_API AItem : publ..

카테고리 없음 2025.07.15

챌린지반 #1강 - 악취가 나는 그 코드 (2/2)

13. 반복문루프 안에 비즈니스 로직을 다 넣지 말자. 반복문은 성능 저하의 원인. 중첩 반복문은 웬만해서 피해야한다. 14. 성의 없는 요소하는 일 없이 존재만 하는 메서드나 클래스는 오히려 혼동을 주니 코드 흐름상 실제로 필요없는 구조는 과감히 삭제가 필요하다. 15. 추측성 일반화현재 필요한 기능에 집중해 불필요한 추상화를 걷어내자. 미래 대비보다 현재 문제 해결이 우선이다. 나중에 필요할 수도 있어 라는 생각으로 만든 코드는 대부분 짐이 된다. 16. 임시 필드목적이 분명치 않은 필드는 코드 복잡도를 높이는 원인이다. 특정 상황에서만 쓰이는 필드는 다른 상황에선 쓸데없는 혼란을 부를 뿐, 사용되지 않는 시점이 더 많다면 다른 구조로 옮기거나 클래스로 분리하자.// "컴포넌트"로 분리class UR..

카테고리 없음 2025.07.11

챌린지반 #1강 - 악취가 나는 그 코드 (1/2)

챌린지반 #1클린 코드 : 읽기 쉽고 정리가 잘 되어 있는 코드. 버그 발생 확률을 줄여준다. 기이한 이름코드를 명료하게 표현하는데 가장 크게 기여하는 것은 이름. 함수, 변수, 클래스, 모듈 이름만 보고도 무슨 일을 하는지 알아야 한다.중복 코드복사-붙여넣기 개발은 결국 더 많은 시간을 소비하게 만들 뿐. 중복된 코드는 하나만 수정해도 되도록 모아놓아야 한다.긴 함수짧은 함수와 좋은 이름의 조합이 최고다. 짧은 함수는 '무엇을 하는지'를 명확히 보여 주어 코드를 쉽게 파악하게 해준다. 함수를 짧게 만들어야 공유도 편하다.void AMyCharacter::Tick(float DeltaTime){ Super::Tick(DeltaTime); HandleMovement(DeltaTime); ..

카테고리 없음 2025.07.09

[내일배움캠프] C++와 Unreal Engine으로 3D 게임 개발 1주차 #1 정리

폴더Source - C++ 소스 코드들이 전부 들어있음Content - 언리얼 Content 브라우저, 게임 에셋, 블루 프린터 등Binaries - 실행파일들이 담겨있다.Config - 여러가지 설정파일이 담겨 있다. 게임의 설정, 게임의 인풋, 엔진의 설정 값DerivedDataCache / Intermediate - 빌드 임시 파일이 저장되는 폴더 . 캐시 저장 폴더 / 임시 빌드 저장 폴더Saved - 에디터가 갑자기 비정상적으로 종료 되었을때 로그가 저장된다. 빌드 프로세서C 파일 수정 - 빌드 (컴파일+ 링크) - DLL 파일 생성됨 - DLL 파일에 빌드한 파일이 생성이 되고 언리얼 에디터에 해당 파일을 가져와 구동해야 한다. 그래야 반영이 된다. 빌드할 때는 언리얼을 종료를 하고 빌드를 한..

카테고리 없음 2025.07.08

[스파르타코딩클럽] C++ 문법주차 KPT 4조 회고록

KEEP : 잘하고 있는 점 / 계속 했으면 좋겠다 싶은 점Problem : 뭔가 문제가 있다 싶은점. 변화가 필요한 점Try : 잘하고 있는 것을 더 잘하기 위해서 시도해 볼 것들[ 김연지 ]K : 아직 C++ 초보지만 무엇이라도 한 스푼 첨가했다는 점에서 팀원들에게 도움이 되었을까 하는 생각을 가지고 프로젝트에 임했던 것 같다. 내가 아직 잘은 못하지만 이거라도! 하는 생각으로 조금이라도! 라는 생각으로 뭐라도 하려고 했다는 점에 잘했다고 생각한다!P : 다른 사람과 내 코드를 합칠 때 어려움을 많이 느꼈다. 아직 클래스 구조로 짜여진 코드에 대해서 활용하는 방법에 대해서 많이 부족하다고 느꼈다.T : 다른 팀의 결과물을 보면서 조금 더 활발한 참여 분위기를 만들 수 있도록 독려하는 것이 제 책임이었..

카테고리 없음 2025.06.27

[스파르타코딩클럽] 베이직반 - 포인터와 레퍼런스 / 클래스

데이터의 원본을 변경하려면 1. 포인터 / 2. 레퍼런스 를 사용 // 클래스// 1. 설계도 느낌// 2. 타입#include using namespace std; // ??// 슬라임 1void slime1takeDamage(int& hp, int damage); // 함수의 선언을 해줘야 한다.int main(){ // 슬라임 1의 정보 int slime1Hp = 50; int slime1AttackPower = 10; // 스라임이 받는 데미지 계산 함수 slime1takeDamage(slime1Hp, 20); cout 클래스 -> 설계도 느낌 / 타입 클래스 없이 뭔가를 만들때. 슬라임이 10개 만들어진다고 할때 변수랑 함수를 각각 10개를 만들어야 한다.이런 불..

[스파르타코딩클럽] 게임 개발자를 위한 C++ 문법 - STL 기초

* STL의 구성요소를 이해하고, 효율적인 코드 작성* 컨테이너와 알고리즘을 활용하여 생산성을 높이는 프로그래밍 방식을 학습STL - Standard Template Library. C++표준 라이브러리의 일부, 컨테이너, 알고리즘, 반복자 등의 템플릿 기반 구성요소를 포함. STL을 활용하면 다양한 자료구조와 알고리즘을 직접 구현하지 않고도 사용 가능 1. 컨테이너데이터를 담는 자료구조데이터를 담는 방식이나 제공하는 메서드에 따라 여러 가지 컨테이너를 제공.-1. 모든 컨테이너는 템플릿으로 구현되어 있으므로 다양한 타입의 데이터를 저장 가능-2. 모든 컨테이너는 메모리 관리를 내부적으로 하므로 사용 시 메모리 해제를 고려하지 않아도 된다.-3. 대부분 컨테이너는 반복자를 제공, 따라서 내부 구현을 몰라..