본문 바로가기

프로그래밍/Game Dev16

[C#] MessagePack MessagePack https://github.com/MessagePack-CSharp/MessagePack-CSharp Serializer for C# 퍼포먼스가 중요한 게임, 분산 컴퓨팅, 마이크로 서비스, 데이타 캐시 목적으로 사용된다. 사용 방법 Serialize 하길 원하는 class 또는 struct에 [MessagePackObject]를 붙인다. 처리되어야 하는 필드에 [Key] 속성을 붙인다. 처리하길 원하지 않는 필드에 [IgnoreMember] 속성을 붙인다 [MessagePackObject] public class MyClass { // Key attributes take a serialization index (or string name) // The values must be u.. 2023. 8. 26.
[C#] 메모리 베리어 하드웨어는 최적화를 위해 연관성이 없는 연산의 순서를 바꿀 수 있다. 이러한 최적화를 막기 위해 메모리 베리어를 사용한다. 메모리 베리어의 기능 1. 코드 재배치 억제 2. 가시성 재배치 억제는 하드웨어의 연산 최적화를 허용하지 않는 것이다. 가시성은 데이터를 메모리에 올리고, 다시 받아오는 개념이다. 메모리 베리어의 종류 1. Full Memory Barrier: Store/Load 둘 다 막는다. 2. Store Memory Barrier: Store만 막는다. 3. Load Memmory Barrier: Load만 막는다. 다음 프로그램에서 r1과 r2에는 0이 들어가지 않을 것처럼 보이지만, 실제로는 0이 들어가 loop를 빠져나온다. 이는 컴파일러에서 최적화를 위해 연산 순서를 재배치하기 때문이.. 2023. 8. 26.
[C#] 캐시 메모리 철학 캐시의 철학 1. 방금 주문한 테이블에서 추가 주문이 나올 확률이 높다. (Temporal Locality) 2. 방금 주문한 사람 근처에 있던 사람이 추가 주문할 확률이 높다. (Spacial Locality) (Spacial Locality) int[,] arr = new int[10000, 10000]; { long now = DateTime.Now.Ticks; for (int y = 0; y 2023. 8. 26.
[C#] 쓰레드 생성 오브젝트 풀링이란? 미리 생성한 오브젝트를 필요한 순간에 가져다가 사용하는 개념이다. 프로그램 중간에 할당하지 않아 성능상 이점이 있다. C# 환경에서는 ThreadPool과 Task를 지원하고 있다. ThreadPool은 인력소 같은 느낌이고, Thread는 고용되서 일하는 Worker라고 볼 수 있다. Task는 작업해야 하는 업무의 개념이다. // 쓰레드 생성 기본 코드 static void ThreadBasic() { Thread t = new Thread(MainThread); t.Name = "TestThread"; t.IsBackground = true; // MainThread 종료시 같이 종료된다. t.Start(); Console.WriteLine("Waiting for thread").. 2023. 8. 26.
채용 정보를 통해 알아보는 게임 서버 기술 스택 정리 최흥배님의 '채용 정보를 통해 알아보는 게임 서버 기술 스택 정리' 영상을 보고 정리한 글입니다. https://youtu.be/SSPJSxqHF8c PC 게임 개발에 사용하는 기술 Windows, C++, IOCP, MS SQL Server 채용 정보에서 언급된 것들(빈도수를 위주로 볼 것) RDBMS, Nodejs, Git AWS, 쿠버네티쿠스 .Net Core, .Net Framework 언리얼, C++ C++, Nodejs, MySql, Redis C++, C# RDBMS, NoSQL 멀티쓰레드, C#서버 언리얼, 윈도우 C++, 멀티쓰레드, 자료구조, 알고리즘 병렬 처리 프로그래밍, 소켓, 웹 프로그래밍 PHP, Golang, MySQL 하나 이상의 언어(Java, Python, Javascri.. 2023. 8. 19.
웹 서버 방식의 게임 서버 정리 최흥배님의 '웹 서버 방식의 게임 서버' 영상을 보고 정리한 글입니다. https://www.youtube.com/watch?v=NuxHxHbU-jU&ab_channel=%EC%B5%9C%ED%9D%A5%EB%B0%B0 Socket 서버 방식의 게임 서버 1. 게임 서버는 일반적으로 socket 서버이다. 2. 실시간 통신이 많이 필요한 곳에서 주로 사용한다. 3. TCP/UDP, IOCP 웹서버 기반 게임 서버 1. 주로 모바일 게임에서 사용한다. 2. 수집형 RPG 게임들에서 주로 사용 3. 백엔드 개발과 다르지 않음. 4. 웹 프론트 기술 스택은 사용하지 않음. (게임 엔진을 쓰지...) 5. 주로 POST 방식의 통신 사용하는 웹서버들 C#(ASP.Net core) Java(Spring) PHP .. 2023. 8. 19.