전체 글

· Game/Unreal
GAS란? GAS란 Game Ability System의 줄임말로 액터가 소유하고 발동할 수 있는 어빌리티 및 액터 간의 인터렉션 기능을 제공하는 프레임워크이다. GAS는 데이터를 기반으로 동작하며 모듈화되어 확장성이나 유연성이 좋다. 또한, 네트워크 멀티플레이를 지원하기도 한다. 이러한 이유로 GAS는 게임을 보다 효율적으로 제작할 수 있도록 해준다. GAS 구성 요소 GAS의 핵심 요소는 위의 사진과 같다. 각각의 요소들이 어떠한 역할을 하는지 간단하게 정리하면 다음과 같다. ASC: Ability System을 관리하는 중앙처리장치 같은 역할을 한다. Tag: GAS를 간편하게 관리하게 해주는 구분자 GA: 게임 내에서 일어나는 액션 GE: GA의 결과로 Attibute에 주는 영향 Attribut..
문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한 사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다...
문제 설명 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용량이 줄지 않지만, 앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 듭니다. 그러므로 아이언 슈트를 착용하고 이동할 때는 순간 이동을 하는 것이 더 효율적입니다. 아이언 슈트 구매자는 아이언 슈트를 착용하고 거리가 N 만큼 떨어져 있는 장소로 가려고 합니다. 단, 건전지 사용량을 줄이기 위해 점프로 이동하는 것은 최소로 하려고 합니다. 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 return..
· 알고리즘
문제 설명 A와 B가 n개의 주사위를 가지고 승부를 합니다. 주사위의 6개 면에 각각 하나의 수가 쓰여 있으며, 주사위를 던졌을 때 각 면이 나올 확률은 동일합니다. 각 주사위는 1 ~ n의 번호를 가지고 있으며, 주사위에 쓰인 수의 구성은 모두 다릅니다. A가 먼저 n / 2개의 주사위를 가져가면 B가 남은 n / 2개의 주사위를 가져갑니다. 각각 가져간 주사위를 모두 굴린 뒤, 나온 수들을 모두 합해 점수를 계산합니다. 점수가 더 큰 쪽이 승리하며, 점수가 같다면 무승부입니다. A는 자신이 승리할 확률이 가장 높아지도록 주사위를 가져가려 합니다. 다음은 n = 4인 예시입니다. 주사위 구성 구성 #1 [1, 2, 3, 4, 5, 6] #2 [3, 3, 3, 3, 4, 4] #3 [1, 3, 3, 4,..
· Game/Unreal
인게임 Mesh 변경 프로젝트에서 Item의 Mesh를 동적으로 바꿔야 하는 상황이었다. 에디터에서 플레이할 때는 올바르게 동작하여 그냥 넘어갔었다. 근데, standalone으로 게임을 돌렸을 때, Mesh가 제대로 변경되지 않고 Default Mesh로 고정되어 있었다. 하지만, 특정 Item들만 Mesh가 변경되지 않았고 제대로 변경된 Item들도 있었다. 분석해 보니 Mesh 세팅의 차이가 있었다. Mesh가 변경되지 않는 Item들은 환경 요소로 사용하고 있는 Item들이다. 예를 들면, 채집 가능한 맵에 자라나는 열매나 꽃 같은 것들이 이에 해당한다. 따라서, 이들은 생성된 위치에 고정되어 움직이지 않기를 원했기 때문에 Mesh의 모빌리티를 스태틱으로 설정했었다. 이 부분이 문제가 되어 Mes..
· Game/Unreal
BeginPlay 프로젝트 중 상호작용 가능한 Actor에 WidgetComponent를 넣어 놨는데 해당 위젯이 보이지 않는 현상이 발견되어 많은 시간을 고민했다. 기존에도 했던 방식인데 다른 Actor에서는 동일한 Widget을 써도 올바르게 동작하고 Root로 설정한 Mesh의 scale 문제인지도 체크해 봤다. 계속 찾아보다 다른 점 하나를 발견했다. 다른 점은 BeginPlay에서 Super의 BeginPlay를 호출하지 않은 것이었다. Super인 AActor의 BeginPlay에서는 Component를 초기화하는 부분이 있다. //... for (UActorComponent* Component : Components) { // bHasBegunPlay will be true for the c..
· Game/Unreal
상속과 인터페이스 상속과 인터페이스의 공통점은 다형성이다. 상속은 자주 사용하지만 인터페이스는 자주 사용하지 않았다. 프로젝트를 진행하던 중 적절한 사용상황을 발견하여 기록한다. 프로젝트 중, NPC와 Drop Item 모두 캐릭터와 상호작용하는 경우가 있다. NPC는 대화를 통해 퀘스트를 주고, Drop Item은 Inventory에 Item을 추가한다. 둘 다, 상호작용하는 Actor이기 때문에 하나의 부모를 가지고 Interact 함수를 구현한 뒤 상속받게 하였다. 하지만, NPC를 구현하다 문제가 발생했다. 올바르게 동작하지만, 원하지 않는 상속이 이루어지게 되는 문제였다. 예를 들어, 부모 클래스인 InteractiveActor에서 Item에 관한 정보를 가지고 있다고 가정했을 때, NPC는 I..
hvv_an
이미난