Unreal Gameplay Ability System 기초
·
Unreal
Gameplay Ability System (GAS) GAS란? 스킬, 속성, 상태 이상 효과 등을 체계적으로 구현하기 위한 언리얼 엔진의 프레임워크.캐릭터가 수행할 수 있는 행동, 캐릭터가 가진 수치, 그 수치와 상태를 변화시키는 요인 등을 가지고 있다. 네트워크 동기화를 지원해 클라이언트의 예측과 서버의 검증이 있고 스킬, 버프, 데미지 공식이 서로 다른 객체와 데이터로 구분되어 있어 모듈화 및 재사용성이 좋다. 기존에 모든것을 상속 - BP로 만들어야 하는 구조와 다르게 Data-Driven 한 설계를 할 수 있다. 핵심 클래스: UAbilitySystemComponent액터 컴포넌트. 어빌리티의 활성화, 이펙트 적용, 태그 관리 등을 지원한다. FGameplayTag계층을 가진 이름표.태그의 유무..
무기 시스템 - 1
·
Unreal
UnrealEngine으로 신규 프로젝트를 진행중, 무기 시스템을 개발하고 있다.무기 시스템은 보더랜드식 접두사, 접미사 모듈이 있으며 모듈에 따라 무기의 능력이 일부 바뀌어야 한다.또한, 발사 방법, 투사체 종류, 발사시 효과, 명중시 효과 등등이 무기마다 다 다르기 때문에 최대한 설계를 잘 해야 한다는 어려움이 있었다. 1. 무기는 액터로, 무기 정보는 데이터 에셋, 인스턴스로무기는 맵에 스폰 및 장착을 해야하니 액터를 상속해야 하지만, 인벤토리에 넣을 수 있어야 하기 때문에 무기 정보만을 위한 인스턴스 클래스가 필요하다. 무기의 데이터 자체는 UPrimaryDataAsset을 상속해 데미지, 발사 속도 등의 데이터를 넣고 런타임 인스턴스 클래스에는 이 DataAsset과 런타임에서 붙는 여러 모듈등..
[Dx] 실습 1
·
DirectX
Dx3D의 초기화는 장치, 컨텍스트를 생성하는 것. ID3D11Device: GPU 리소스(버퍼, 쉐이더, 텍스쳐 등) 생성하는 팩토리ID3D11DeviceContext: GPU에게 명령을 내리는 인터페이스 1. D3DClassInitializeGraphicsHW(screenWidth, screenHeight, vsync);InitializeSwapBuffer(screenWidth, screenHeight, hwnd, fullscreen);InitializeDepthStencilBuffer(screenWidth, screenHeight);InitializeRasterizer();InitializeViewport(screenWidth, screenHeight);m_projectionMatrix = XMMa..
[Dx] 렌더링 파이프라인
·
DirectX
1. 렌더링 파이프라인3D 씬 > CPU (Application) > GPU(Geometry, Rasterizer) > Image Application: 렌더링 할 그래픽 데이터 로드 Geometry: 정점별 연산 수행 (메쉬 / 카메라 이동, 폴리곤의 빛 연산, 투영, 클리핑)1. Lighting: 정점별 색을 계산한다.2. Projection: 3D 메쉬를 2D 평면에 매핑한다.3. Clipping: 프로젝션 후 화면 밖으로 벗어나는 영역을 자른다. depth 정보와 함께 다음 단계로 이동. 모델 좌표 > 월드 좌표 > 카메라 좌표 > 빛 계산 > 프로젝션 > 클리핑 > 출력 Rasterizer: 픽셀별 연산 수행 (보간, 텍스쳐링, Z-버퍼링)1. Double Buffering (Swap chain..
[Dx] 컴퓨터 그래픽스 기초
·
DirectX
1. 래스터 그래픽래스터 그래픽: 2차원 이미지를 정사각형 픽셀 형태로 표현하는 방법.래스터라이제이션: 도형을 래스터 이미지로 변환하는 작업.1. Frame buffer프레임 버퍼는 디스플레이에 표시될 모든 픽셀의 색상 값을 나타내는 데이터를 저장하는 메모리 버퍼를 의미함.GPU가 연산을 통해 렌더링한 화면 데이터를 디스플레이로 전송하기 직전에 저장함.더블 버퍼링: 티어링 등을 방지하기 위해 두개의 버퍼(프론트, 백)를 사용한다. 렌더링이 완료되면 두 버퍼를 교환해 부드러운 화면을 보여줄 수 있음.2. Refresh rate & Frame rateRefresh rate는 디스플레이가 1초동안 화면 갱신하는 횟수Frame rate는 GPU가 1초동안 렌더링하여 생성하는 프레임의 수3. Polygon버텍스와..
LLM을 이용한 행동트리 학습 가능성에 대한 연구
·
AI
이 글에서 공개하는 내용은 개인적으로 진행했지만, 논문 작성까지 가지 않은 개인 연구 입니다.본 원고는 학회에 게재되거나 발표되지 않았으며, 정식 심사를 거치지 않았습니다.0. Abstract게임 인공지능 분야에서 행동 트리(BT)는 높은 해석 가능성과 모듈성을 제공하지만, 복잡한 환경에 대응하기 위해서는 전문가의 수동 설계가 필수적이라는 한계가 있다. 최근 대규모 언어 모델(LLM)을 활용한 에이전트 연구가 활발하나, 실시간 추론 비용과 속도로 인해 게임 런타임에 직접 적용하기에는 제약이 따른다. 본 연구에서는 LLM을 실시간 컨트롤러가 아닌, BT를 설계하고 수정하는 프레임워크를 제안한다.1. 서론 게임 인공지능 분야에서 에이전트의 의사결정 모델을 설계하는 것은 크게 규칙 기반과 학습 기반의 두 가지..
GameReady Format의 필요성
·
GameReady Format
보호되어 있는 글입니다.
개인용 클로드 멀티에이전트 오케스트레이션 환경 구축
·
ETC
0. 클로드 설치1. Claude OMC 플러그인 설치 멀티 에이전트 오케스트레이션을 구성하기 위해 클로드 OMC 플러그인을 설치한다.https://github.com/Yeachan-Heo/oh-my-claudecode/blob/main/README.ko.md2. 스킬 플러그인 및 프로젝트 MCP 설정프로젝트 진행 시 토큰 최적화 및 지식 관리를 자동화하기 위해 플러그인을 설치하고 규칙을 명시한다.설치하는 플러그인: rtk, graphify, llm-wiki설치용 프롬프트: /rtk, /graphify, /llm-wiki 설치해. 매 프롬프트마다 /rtk로 토큰을 압축하고, /graphify 지식그래프로 정제하여 /llm-wiki에 적재하고 참조하면서 발전시켜나가는 것을 규칙으로 적용하고 기억해.3. 유..
프로그래머스 다음 큰 숫자
·
프로그래머스
처음에는 2진수에서 1의 개수를 세며 1씩 더해 맞을때까지 while문을 돌리는거는 비효율적이라고 생각해 패턴을 찾았음.패턴: 0111 > 1000, 오른쪽부터 봤을 때 1 다음에 나오는 첫 0을 1로 바꾸고 비트를 오른쪽으로 밀어버리는것.string으로 코드를 만들었는데 통과하지만 효율 테스트에서 걸러짐. 뭔가 비트연산으로 나오면 비직관적이라서 생각이 안드는듯 하다 정답:n=0111,0000 이라고 가정 bit연산으로n & -n = 최하위 비트 찾기0111,0000 & 1001,0000 = 0001,0000 n + (n & -n) = 아까 말했던 첫번째 패턴0111,0000 + 0001,0000 = 1000,0000 n ^ (n + (n & -n)) = 원본과 첫번째 패턴과 다른 비트 수0111,00..
강화학습 - IMPALA
·
AI
분산 강화학습의 필요성: 멀티태스킹이 가능함 학습의 속도 학습과 데이터를 동시에 얻는 등 리소스 절약같은 환경으로부터 다양한 데이터를 얻어 일반화 가능다른 환경, 변수를 주어 일반화 가능Actor - Critic (A2C)정책과 가치를 동시에 학습함Gt는 시간 t에서의 누적 보상Q함수는 특정 상태 s에서 행동 a를 했을 때 기대되는 누적 보상Critic은 상태 가치 V(St)를 학습함Gt는 에피소드가 종료되어야 결과가 나와 분산 학습에 적합하지 않음. 반면 IMPALA는 가치 예측 신경망 V(s)로 근사값을 예측함.IMPALA: A2C와 유사하지만 V-trace라는 타겟 밸류 계산법을 사용함속도에서 이점이 있음.A2C는 OnPolicy메소드라서 이전 Policy가 생산한 데이터를 학습하지 못한다?    ..