2024/09 3

[Unity System Programming Pt.1] 2주차

개요모든 프로그램에서 데이터는 중요하다. 결국 프로그램은 데이터를 조작하는 것에 불과하기 때문이다. 게임에서 사용하는 데이터는 크게 2가지로 나눌 수 있다. 유저 데이터와 게임 데이터다. 유저 데이터는 게임 설정 값, 인벤토리, 육성하고 있는 캐릭터 등이 되고, 기본 값이 있으며 수시로 저장이 이뤄지는 편이다.* 게임 데이터는 몬스터 정보, 던전 정보, 필드 정보 등이 되고, 데이터 테이블로 관리가 되며 불러오기만 있다. 그리고 유저가 게임에 몰입하기 위해서는 적절한 오디오도 필요하다. 게임에서 사용되는 오디오의 종류는 기본적으로 효과음과 배경음이 있고, 그 외에 게임에 따라 종류가 추가되는 편이다. 이번에는 유저 데이터 관리 모듈, 게임 데이터 관리 모듈, 오디오 관리 모듈 설계를 살펴보고자 한다.* ..

Study/Unity 2024.09.24

게임 서버 라이브러리 제작하기 - 교착 상태 탐지 모듈

개요게임 서버를 구축할 때 멀티스레딩은 필수다. 따라서 자연스럽게 락을 사용하게 되는데, 락을 사용하다보면 교착 상태(Deadlock)를 피할 수 없다. 모든 교착 상태를 미연에 방지할 순 없지만 그래도 개발하면서 발생할 수 있는 교착 상태에 대해서는 탐지할 수 있는 모듈을 개발해보자.교착 상태 탐지 원리교착 상태는 자원의 잠금 순서를 지키지 않았을 때 발생한다. 아래의 코드를 보자.#include #include #include using namespace std;mutex lock1, lock2;int main(){ jthread t1([&] { // while()을 하는 이유는 아래의 코드가 엄청 빨리 끝나기 때문에 // 단발성 실행으로는 교..

Study/Game Server 2024.09.23

[Unity System Programming Part.1] 1주차

개요제자들과 함께 유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지 학습을 시작했다. Unity 엔진에 관한 지식은 매뉴얼과 유튜브 공식 자료를 통해 습득할 수 있는 반면, 효율적인 아키텍처에 대해서는 늘 고민이 많았기 때문이다.Unit Of Work 패턴을 적용하려고 애쓰던 때가 새록새록하다. 사용하는 Unity 버전은 2022.3.45f1으로 글을 쓰고 있는 현 시점에서 가장 최신 LTS 버전이다. 단, 에디터는 계속 새로운 버전이 나올 때마다 업그레이드 할 예정이다. 스터디와 관련된 정보는 이 저장소에서 확인할 수 있다.씬 설계Unity 프로젝트에서 기능이 부여될 수 있는 객체를 게임오브젝트(GameObject)라 한다. 그리고 이러한 게임오브젝트를 묶는 단위가..

Study/Unity 2024.09.10