게임
[Unity] Flow Free 게임 카피캣 만들기
UI 관한 로직 - UIManager.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.SceneManagement; public class UI_Manager : SingletonLocal { public GameUI GameUI_Obj; public ResultUI ResultUI_Obj; int mLayer; bool isCreatedResUI = false; // 파이프 UI 용도 public Canvas pipeUI_CanvasPrefab = null; Canv..
[Unreal] 스레드와 단일 스레드로 실행시키기 (-norenderthread)
언리얼은 두 개의 메인 스레드로 돌고 있는데, 하나는 우리가 아는 게임 스레드이고 나머지 하나는 한 틱 뒤에서 이 게임스레드를 뒤쫓고 있는 렌더 스레드이다. 게임 스레드가 월드의 변경점을 렌더 스레드에 반영시키기 위해서는 ENQUEUE_RENDER_THREAD라는 매크로를 통해 람다 함수로 이를 렌더 큐에 쌓아두는 방식으로 접근한다. void BeginInitResource(FRenderResource* Resource) { ENQUEUE_RENDER_COMMAND(InitCommand)( [Resource](FRHICommandListImmediate& RHICmdList) { Resource->InitResource(); }); } RenderResource.cpp에 정의되어있는 BeginInitRe..
데드 레커닝 - 온라인 게임의 이동처리 기법
현재 3D 온라인 게임 프로젝트에서 게임서버를 제작하면서 미처 예상하지 못한 부분에서 많은 문제들이 있다 그 중 캐릭터의 이동처리 부분이고 해결해 나가면서 큰 도움이 되고 있다. 사용자가 키보드를 이용한 방향키 입력으로 이동 패킷을 서버에 보내주고 그것을 서버에서는 브로드캐스트로 뿌려주는 가장 기본적이고 간단한 방법이 있지만 60프레임으로 돌아가는 게임이라고 한다면 1초에 60번이나 이동에 대한 패킷을 보내고 받게 됨으로 엄청난 서버 부하를 가져오게 된다. 이를 해결하기 위해선 기존 상태를 계속 유지하고 있다면 일정한 규칙을 가진 행동을 반복하고 있을테니 패킷을 보내지 않고 같은 처리를 계속 하도록 하고, 상태의 변화가 있을때만 패킷을 보내서 상태변화를 알리게 되면 서버는 이를 브로드캐스트하여 다른 클라..
보드 게임 관련 AI 알고리즘 [구현 예정]
테트리스 - 유전 알고리즘 (Gnome Algorithm) 오목 - 최소극대화 알고리즘 (Min Max Algorithm) 체스 - 최소 극대화, 알파-베타 가지치기 (Alpha–beta pruning) , Move Ordering, 전치 테이블 (Transposition table), Quiescence search 미로 찾기 - 다익스트라 > A* > JPS 각 알고리즘 별로 퍼포먼스 차이 결과 도출할 예정 지뢰 찾기 - Straightforward Algorithm, The Tank Solver Algorithm, Two Endgame Tactics 오델로 - 최소 극대화, 휴리스틱
그래픽스 파이프라인 (게임 엔진 관점)
3D 그래픽을 사용하는 게임들이 포함하고 있는 모듈들. - 사용자 입력(User Input) - 자원 관리(Resource Management) - 그래픽 로딩과 렌더링(Loading and Rendering Graphics) - 스크립트 해석과 실행(Interpreting and Executing Scripts) - 음향 처리(Playing Sound Effects) - 인공 지능(Artificial Intelligence) 위의 소스 코드 모듈은 집합적으로 게임 엔진(Game Engine)을 구성한다. 게임 엔진의 구성 객체의 표현과 렌더링 렌더링(Rendering)이란 3D 게임 세계의 객체들을 컴퓨터의 화면(2D)으로 그리는 것, 또는 그리는 과정이다. 메시(Mesh)는 게임 공간 또는 게임 세계..