Category 45

[CPP] 1. 객체와 메모리

객체에 어떻게 접근할까? - 주소와 포인터#include int main(){ int x = 10; int* p = &x; int& r = x; std::cout x는 객체다.메모리의 어딘가에 4 바이트의 메모리를 잡고 10을 저장한다.&x는 x가 10을 저장한 메모리의 주소이다.int* p는 주소를 저장하는 변수로, 여기에 x의 주소인 &x를 저장할 수 있다.즉, p는 x의 주소 &x이다.*p는 p의 주소에 저장된 객체에 접근한다.p는 x의 주소가 있으므로 x의 주소에 저장된 10에 접근한다.int& r은 x를 x라는 이름 대신 r이라는 이름으로 쓸 수 있게 해준다.따라서 r의 주소도 x와 같고, 값도 x와 같으며, x를 수정하면 값이 같이 달라진다.x value: 10x addr..

[softeon-theme] Stitch와 Codex로 Jekyll Blog Theme 만들기

Home | softeon-themeThis preview sentence appears on the Projects Sample Beta card. Sample Projects Order 70taeahnk.github.io GitHub - TaeAhnK/softeon-themeContribute to TaeAhnK/softeon-theme development by creating an account on GitHub.github.comCodex가 프론트엔드는 매우 잘 만든다고 해서 기존의 포트폴리오 사이트를 새로 만들어보기로 했다. 웹개발 쪽은 잘 모르지만 정적 웹사이트 정도는 만들 수 있을 것 같다.지금은 Github Pages로 호스팅하는 Jekyll 블로그를 포폴로 쓰고 있다.사이트에서 다운 받..

[ProjectRE] 개발 일지 1

프로젝트가 개발 단계의 한 사이클을 돌았다고 할 정도가 진행되었다.이제 어떤 게임을 만드려고 하는지 보이는 프로토타입 정도가 되었다.며칠 정도 현재까지 개발한 내용을 검토하며 다져놔야 할 부분을 다질 타이밍인 것 같다.복기개발 방식LLM 도입초창기에는 GPT를 참고용으로 활용하다가 Enhancement System 개발 즈음부터 본격적으로 Codex와 Gemini cli를 도입했다. 몇 달 사이에 너무 많이 발전했다. 몇 번의 시행착오와 조사 끝에 나만의 작업 흐름을 완성했다. 1. 기획 문서 작성구현하려는 기능의 기획을 작성한다. 어떤 기능이고, 어떤 식으로 쓰일 지, 규칙 등을 작성하고 GPT로 구체화해서 완성했다. 어떻게 구현할지 코드 관련 내용은 모두 빼고 기획 측면에서 원하는 내용을 적었다.2...

[TinyRenderer] Lesson 1. Bresenham 직선 알고리즘

Lesson 1: Bresenham’s line drawing algorithm · TaeAhnK/TinyRenderer@c308465+ void line(int x0, int y0, int x1, int y1, TGAImage& framebuffer, TGAColor color)github.com점을 그렸으니, 이제 선을 그려야 한다.두 점을 잇는 선을 어떻게 그릴까?픽셀 위에서는 결국 점을 찍어야 한다.가장 간단한 방법은 보간을 사용하는 방식으로, 두 점 사이를 나타내는 식을 구하고, 시작점을 0, 끝점을 1로 둔 뒤, 0에서 1까지의 값을 함수에 넣으며 선 위의 좌표를 계산해 점을 찍는 것이다.두 점 $(x_0, y_0)$, $(x_1, y_1)$, 보간 매개변수 $t (0 \le t \le1)$에..

etc

[TinyRenderer] Lesson 0. 시작하기

Lesson 0: getting started · TaeAhnK/TinyRenderer@206b974Create a tga file and draw pointsgithub.com이 프로젝트는 ssloy/tinyrenderer를 보고 진행한 실습으로, OpenGL, DirectX, Vulkan과 같은 현대 3D 그래픽 API가 작동하는 원리를 재현한 렌더러 프로그램이다.그래픽 API는 사용하지 않았고, 그래픽 API가 동작하는 원리를 학습하기 위해 진행하였다.Visual Studio 2022에서 빈 프로젝트를 만들고, main.cpp 를 추가한다.int main(){ return 0;}우리의 첫 목표는 이미지 파일 한 장을 직접 생성하고, 픽셀에 점을 찍어보는 것이다. TinyRenderer는 .tg..

etc

순열과 조합, 비트마스크

순열permutation 함수를 통해 벡터를 순열 순으로 정렬할 수 있다.이때, a는 정렬되어 있어야 한다.using namespace std;int main() { vector a = {1, 2, 3}; sort(a.begin(), a.end()); do { // 이제 a는 while을 돌면서 // {1, 2, 3}, {1, 3, 2}...로 정렬됨 for (int x : a) cout 조합5개 중 3개를 선택한다고 하자.선택한 원소를 1, 아닌 원소를 0으로 00111과 같이 표현할 수 있다.00111에 대해 permutation을 통해 순열을 구하면 포함 정보를 구할 수 있다.(00111, 01011, 01101, 01110...)using n..

Lyra와 모듈형 게임플레이

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/game-features-and-modular-gameplay-in-unreal-engineGame Feature와 ExperienceLyra는 여러가지 모드가 존재하고, 이를 Experience라는 단위로 나누어 구분한다.이때, 필요없는 종속성과 인터랙션을 방지하기 위해 Game Feature로 여러 기능을 Plugin화 한 뒤, Experience를 로드할 때 필요한 Game Feature만 동적으로 추가하는 방식으로 작동한다.Experience는 ULyraExperienceDefinition라는 데이터 에셋으로 저장되어 이 Experience를 로드할 때 수행해야할 Action, 사용할 Def..

Lyra의 스킬 발동

Lyra는 GameplayAbilitySystem를 기반으로 스킬을 처리한다.Move, Look, Crouch, AutoRun은 별도의 C++ 구현을 두고, Dash, Heal, Grenade, Emote 등 다른 스킬은 모두 Gameplay Ability로 구현되어 있다.먼저, LyraHeroComponent에서 InputAction을 바인드 한다.void ULyraHeroComponent::InitializePlayerInput(UInputComponent* PlayerInputComponent){ ... UEnhancedInputLocalPlayerSubsystem* Subsystem = LP->GetSubsystem(); check(Subsystem); Subsystem->C..

Unreal Engine에서 기본 요소의 초기화 순서 (Host-Client)

각 요소를 초기화하고 의존성을 묶는 시작 지점에서 연결이 안되는 문제가 발생했다.그래서 GameMode, PlayerController, PlayerState, DefaultPawn, HUD 클래스의 초기화 순서에 대해 알아보기로 하였다.실험 방법TEST 클래스를 만든 뒤, 클래스를 상속 받는 BP를 만들고, GameMode에 적용했다.ATESTGameModeBase::ATESTGameModeBase() { NET_LOG(Log, TEXT("GameMode::Constructor")); }TEST 클래스는 NET_LOG 매크로를 구현해 로그를 출력했다.LogNetRole: [PIE0][Standalone][SID=-1] [Server] GameMode::Constructor[PIE0] : P..

반응형