분류 전체보기

게임 개발/디자인 패턴

Game Programming Design Patterns - 경량 패턴

게임에서 화면을 가득 채운 빽빽한 숲을 본 적 한 번쯤은 있을 것이다. 수천 그루가 넘는 나무들은 각각 수천 개의 폴리곤으로 이루어져 있는데, 이를 그리기 위해서는 이 데이터들을 CPU에서 GPU로 버스를 통해 전달해야 한다. 각 프레임마다 이 모든 객체들을 GPU로 전달하기에는 무리가 있다. 나무마다 필요한 데이터는 다음과 같다. 각 수천 그루의 나무가 공유하는 데이터는 파란색으로 표시한 mesh와 textures, 각 그루마다 다르게 조절할 수 있는 데이터는 보라색으로 표시한 Location과 Rotation, 크기, 높이, 음영 등이 될 것이다. 이 많은 데이터들을 모두 한 객체에서 전달하기에는 양이 너무 많다. 따라서 이를 앞에서 분류한 것과 같이 모든 나무가 사용하는 데이터 / 각 나무 객체마다..

게임 개발/디자인 패턴

Game Programming Design Patterns - 명령 패턴 (2)

실행 취소와 재실행 앞서 명령 패턴 (1) 에서는 기본적인 명령 패턴의 구조와 동작에 대해 정리했다. 명령 패턴 사용 예 중에서도 잘 알려져 있는 실행 취소와 재실행은 전략 게임, 게임 개발 툴 등에서 필수로 구현되어야 하는 부분이다. Command 클래스를 상속받는 MoveUnitCommand 클래스를 하나 만들어주었다. 이전에는 execute 함수를 pure virtual 함수로 구현했었지만, MoveUnitCommand 클래스에서 execute 함수를 오버로딩하여 구현해야 했기에 변경하게 되었다. MoveUnitCommand 함수에서는 매개변수를 전달하지 않는 execute 함수를 구현해주었는데, 이 클래스의 생성자에서 Actor와 이동하고자 하는 좌표 값을 받아 해당 좌표로 이동할 수 있는 동작을..

게임 개발/디자인 패턴

Game Programming Design Patterns - 명령 패턴 (1)

명령 패턴이란 ? 요청 자체를 캡슐화하는 것 메서드 호출 자체를 실체화하여 객체로 감싼다는 것 좀 더 쉽게 코드와 연관지어 접근해보자면, 유저의 입력을 받아 특정 행동을 하게 하는 코드가 있다고 가정해보자. 실제 Unreal Engine에서 C++을 이용해 구현한 코드이다. 위의 handleInput() 함수는 각 프레임마다 호출될 것이고, 해당 호출 때 마다 사용자의 입력을 감지하여 Jump(), FireGun(), SwapWeapon(), LurchIneffectively() 의 함수들을 실행시킬 것이다. 더보기 Jump(), FireGun(), SwapWeapon(), LurchIneffectively() 함수들의 구현 각 행동 메서드들은 화면에 DebugMessage만 나타낼 수 있도록 간단하게 ..

게임 개발/Unreal

[UE 5] In use pin <Unnamed> no longer exists on node ~. Please refresh node or break links to remove pin. 에러 해결

각 상호작용 가능한 아이템별로 서로 다른 인터랙션 기능을 주기 위해 BlueprintImplementable 함수와 BlueprintCallable 함수를 만들었고, 해당 기능을 넣기 위해 BP에 함수를 넣어주었다. 그런데 언리얼 에디터를 종료했다가 다시 켜면 항상 블루프린트 함수들이 깨져있었고 컴파일 에러때문에 실행조차 되지 않았다. 이 상태에서 문제되는 노드들을 제거해주고 Rider(VS / VSCode) 등으로 솔루션 빌드해주고 노드들을 다시 연결해주면 사실 일시적으로 고쳐지긴 하나.. 이 또한 언리얼 재시작시에는 똑같은 문제가 발생했다. 위의 컴파일에러들은 Chap1_SeeSaw를 상속받는 Seesaw BP 클래스를 Object Reference로 지정해주고 Chap1_SeeSaw 클래스에 구현되..

게임 개발/Unreal

[UE5 Error] Unable to patch action graph - unexpected executable in compile action

UE5 Live Coding을 사용하여 빌드할 때 발생하는 에러다. UE editor를 켜놓은 상태에서 Live Coding 빌드하려고 하면 "Unable to patch action graph - unexpected executable in compile action" 요런 에러가 뜨면서 내가 짜놓은 코드가 안돌아감 BP Class 만들려 해도 상속못받음 등등.. 이럴 땐 UE Editor를 닫고 Rider(혹은 VS / VSCode)로 Solution Build를 한번 진행한 후에 Live Coding 진행하면 쉽게 해결된다. 참고자료 https://forums.unrealengine.com/t/unable-to-patch-action-graph-unexpected-executable-in-compi..

게임 개발/Unreal

[UE5 Error]LNK1104: '~Binaries\Win64\UnrealEditor-ProjectName.dll' 파일을 열 수 없습니다.

UE5 업그레이드 후 잘 작동하던 Rider에서 빌드할 때 계속 "LNK1104: 'D:\Unreal Projects\urban_potato\urban-potato\Binaries\Win64\UnrealEditor-UrbanPotato.dll' 파일을 열 수 없습니다." 에러메세지와 함께 Build Failed 가 계속 떴다.. - 참고자료 https://forums.unrealengine.com/t/link-fatal-error-lnk1104-cannot-open-file/287530/3​ LINK : fatal error LNK1104: cannot open file Thank you. I tried but It failed too: 1>------ Rebuild All started: Project..

게임 개발/Unreal

[UE4 Error]Unreal Engine GPU Lightmass Error 해결

이번에 수업에서 진행하는 프로젝트가 너무 무거워서 최적화를 시키던 중에 GPU Lightmass 를 하게 되었는데 Build 하던 중에 계속 Error 뜨고 Crash가 났다.. ㅠㅠ 구글링하고 .. 유튜브 찾아보고 .. 해서 엄청 좋은 자료를 찾았다.!! https://www.youtube.com/watch?v=CRnd513xWLk 요약하자면,, 우선 여러 방법들이 있는데 99.9%는 저 영상에서 말하는 방법이 통한다고 했다.. 우선 작업관리자에서 GPU task를 좀 관찰하는데, 작업 관리자 켜놓고 Build 돌리니까 진짜 말도 안되게 GPU 메모리를 다 쓰고 있었다. 뭐 여유가 없으니까 계속 크래시가 난거겠지,, 우선 GPU 메모리 8GB 이하에서 8k resolution를 돌리는 것 자체가 말이 ..

알고리즘/알고리즘 공부

[알고리즘 분석] 2장. 분할정복법(divide-and-conquer) (4)

1. 큰 정수 계산법 $ u = x \times 10^m + y $, $ v = w \times 10^m + z $ $ u \times v = (x \times 10^m + y) \times (w \times 10^m + z) = xw \times 10^(2m) + (xz + wy) \times 10^m + yz $ x와 y, w와 z는 모두 u와 v의 반인 $ \frac{2}{n} $ 이 된다. ex) $ 567,832 = 567 \times 10^3 + 832 $ $ 9,423,723 = 9423 \times 10^3 + 723 $ - 문제: 2개의 큰 정수 u와 v를 곱하라 - 입력: 큰 정수 u와 v, 크기 n - 출력: prod(u와 v의 곱) - 알고리즘 large_integer prod(la..

꿀꺽람
'분류 전체보기' 카테고리의 글 목록 (5 Page)