전체 글 35

서버 구현/구조 방식

서버의 구현 방식'서버 프로그램을 어디서, 누가 실행할 것인가?'이 질문에 대한 답에 따라 게임의 비용, 안정성, 구조가 완전히 달라집니다. '실행 주체'를 결정하는 대표적인 세 가지 방식에는 데디케이티드, 리슨, P2P가 있습니다. 1. 데디케이티드 서버 (Dedicated Server)데디케이티드 서버는 이름 그대로 '게임 서비스만을 위해 존재하는 전용 서버'입니다. 게임 회사가 직접 고성능 컴퓨터(서버)를 구매하거나 클라우드 서비스를 임대하여 24시간 안정적으로 운영합니다. 이 서버는 플레이어로서 게임에 참여하지 않고, 오직 모든 클라이언트의 데이터를 처리하고 동기화하는 역할만 수행합니다.개념 : 게임만을 위한 독립된 고성능 전용 서버.장점:안정성 & 쾌적함 : 고성능 서버를 사용하므로 모든 플레이..

CS/서버 2025.10.16

TCP / UDP

프로토콜(Protocol)과 TCP/IP 4계층 모델프로토콜은 "컴퓨터 네트워크에서 장치들끼리 데이터를 원활하게 교환하기 위해 약속된 규칙과 절차의 집합"입니다.네트워크 통신은 하나의 규칙으로만 이루어지지 않고, 여러 개의 계층(Layer)으로 나뉘어 각자 역할에 맞는 프로토콜을 사용합니다.이 구조를 TCP/IP 4계층 모델이라 부릅니다. (UDP도 동일한 4계층을 사용하지만, TCP가 대표적이라 TCP/IP 4계층 모델이라 부릅니다.)네트워크 계층은 OSI 7계층이라는 정교한 이론 모델도 있지만, 이 글에서는 실제 인터넷의 표준인 TCP/IP 4계층을 기준으로 설명하겠습니다.4계층 (응용 계층) : HTTP, 게임 프로토콜 등 실제 프로그램의 통신 담당.3계층 (전송 계층) : 데이터 전송 방식을 결정..

CS/서버 2025.10.16

클라이언트와 서버

관계네트워크 통신을 한 문장으로 요약하면 ' 요청(Request)과 제공(Response) '입니다.클라이언트 (Client) : 서비스를 요청하는 쪽 서버 (Server) : 클라이언트의 요청에 응답하여 서비스를 제공하는 쪽 클라이언트(Client)클라이언트는 서버가 제공하는 서비스를 받아 사용하는 모든 장치 또는 프로그램을 의미합니다.클라이언트 장치 : 우리가 일상적으로 사용하는 데스크톱, 노트북, 스마트폰, 태블릿처럼 네트워크에 접속하는 물리적인 기기 자체를 말합니다.클라이언트 프로그램 : 사용자가 서버에 특정 서비스를 요청할 수 있도록 해주는 소프트웨어입니다. 대표적으로 웹 브라우저(크롬, 사파리)나 PC/모바일에 설치된 온라인 게임 클라이언트(실행 파일)가 있습니다. 서버(Server)서버는 클..

CS/서버 2025.10.16

Map / Set 비교

Map Setmap과 set은 모두 정렬된 상태로 데이터를 저장하는 연관 컨테이너(Associative Container)입니다. 둘 다 내부적으로는 레드-블랙 트리(Red-Black Tree)라는 균형 이진 탐색 트리로 구현되어 있어, 데이터를 항상 정렬된 상태로 유지하며 빠른 검색, 삽입, 삭제가 가능합니다. (평균 시간 복잡도: O(log N)) 하지만 둘 사이에는 데이터를 저장하는 방식에서 차이가 존재합니다. mapKey-Value 쌍으로 데이터를 저장합니다.마치 사전처럼, 키(Key)를 통해 값(Value)에 접근할 수 있습니다.Key는 중복될 수 없지만, Value는 중복이 가능합니다.map[key] = value 와 같은 형태로 데이터를 저장하고 조회하는 데 사용됩니다.사용 예시: 플레이어의..

CS/자료구조 2025.10.16

싱글톤 패턴

싱글톤 패턴의 개념싱글톤 패턴이란, 특정 클래스의 인스턴스(객체)가 프로그램 내에서 오직 하나만 생성되도록 보장하고, 어디서든 그 유일한 인스턴스에 접근할 수 있도록 하는 디자인 패턴입니다. 즉, 아무리 new 키워드를 여러 번 호출해도 새로운 객체가 생성되는 것이 아니라, 최초에 생성된 단 하나의 객체만을 계속해서 반환합니다. 게임 개발에서는 전역적으로 상태를 관리하거나 유일해야 하는 시스템에 주로 사용됩니다. 예를 들어, 게임의 모든 설정을 관리하는 GameSettings 클래스나, 사운드를 총괄하는 SoundManager, 플레이어의 데이터를 관리하는 PlayerDataManager 등이 싱글톤 패턴의 좋은 예시입니다. 싱글톤 패턴의 구현 핵심싱글톤 패턴을 구현하기 위한 핵심 아이디어는 다음과 같습..

CS/디자인 패턴 2025.10.15

디자인 패턴

디자인 패턴의 개념디자인 패턴(Design Pattern)이란 소프트웨어를 설계할 때 자주 발생하는 문제들을 해결하기 위한, 검증된 해결책들의 모음이라고 할 수 있습니다.우리가 요리를 할 때, 맛있는 김치찌개를 만들기 위한 '황금 레시피'가 있는 것처럼, 프로그래밍 세계에도 특정 문제를 효과적으로 해결하기 위한 '모범 답안' 혹은 '설계의 정석'이 존재합니다. 이것이 바로 디자인 패턴입니다.중요한 점은 디자인 패턴은 특정 언어나 기술에 종속된 완성된 코드가 아니라, 문제 해결을 위한 설계 사상(Concept) 이라는 점입니다. 따라서 개발자는 디자인 패턴을 이해하고, 현재 마주한 문제 상황에 맞게 적절히 변형하여 적용할 수 있어야 합니다. 디자인 패턴을 장점재사용성 및 확장성 향상 : 검증된 설계 구조를..

CS/디자인 패턴 2025.10.15

연관 컨테이너와 레드-블랙 트리 / 비정렬 연관 컨테이너와 해시 테이블

C++ vs C# 형태 비교C++ 컨테이너 형태C# 컬렉션 형태핵심 자료구조 (동일)특징 (동일)mapsetSortedDictionary SortedSet레드-블랙 트리자동 정렬O(logN) 성능unordered_mapunordered_setDictionary HashSet해시 테이블비정렬평균 O(1)의 빠른 성능 ※ 아래에서부터는 C++ 기준으로 설명하도록 하겠다. 연관 VS 비정렬 연관 비교구분연관 컨테이너 (map, set)비정렬 연관 컨테이너 (unordered_map, unordered_set)핵심 자료구조레드-블랙 트리 (Red-Black Tree)해시 테이블 (Hash Table)데이터 정렬키(Key) 기준으로 자동 정렬됨정렬되지 않음시간 복잡도검색, 삽입, 삭제 모두 O(logN)평균적으로..

CS/자료구조 2025.10.15

map / unordered_map

map이란?Map은 Key와 Value를 하나의 쌍(pair)으로 묶어서 저장하는 연관 컨테이너(Associative Container)입니다. Key 값을 이용해 Value에 빠르게 접근(검색, 삽입, 삭제)하는 것을 목적으로 합니다. 주요 특징은 다음과 같습니다.Key-Value 쌍 : 모든 데이터는 Key와 그에 해당하는 Value로 구성됩니다.고유한 Key : Key 값은 중복될 수 없습니다. 만약 중복된 Key로 새로운 값을 추가하면, 기존의 Value가 덮어씌워집니다.빠른 검색 속도 : Key를 기반으로 데이터를 검색하기 때문에 매우 빠른 시간 복잡도를 가집니다. 일반적으로 O(log N) 또는 O(1)의 시간 복잡도를 보입니다. C++과 C#에서의 MapC++C++ 표준 라이브러리(STL)에..

CS/자료구조 2025.10.15

나인 솔즈(어느 것 하나 부족하지 않았던 게임)

내가 한 게임 중에 손에 꼽을 정도로 재미있게 플레이 한 게임을 리뷰해 보려고 한다. 반교, 환원을 만든 레드 캔들 게임즈 나인 솔즈이다. 메인 장르는 액션, 메트로 배니아 어드벤처, 타오 펑크, 2D인데... 내가 좋아하는 암울한 배경, 무협, SF, 하드 코어, 패링 등등 여러 가지가 섞여 있는 게임이다.(내 취향에 아주 딱 맞았다.) 데모 때, 플레이해보고, 너무 재미있어서, 정식 발매하자마자 바로 구매해서, 4일 만에 올 클리어했다.(2회차까지 완) 게임의 전반적인 내용은 배신 당한 주인공이 자신을 배신했던 사람?들에게 복수를 하러 가는 내용이다.(자세한 내용은 스포가 될 수 있으니 생략... 궁금한 사람은 GCL의 게임 리뷰 참고 바란다.) (스포 주의) 게임을 플레이 해보고 보면 좋은 해석 영..

아무거나/게임 2025.10.14

C# Virtual / Abstract / Interface

비교구분Virtual (가상)Abstract (추상)Interface (인터페이스)한 줄 요약기능의 선택적 재정의기능의 강제적 재정의구현을 위한 명세/계약구현 여부✅ 구현된 본체(body) 있음❌ 본체(body) 없음 (선언만)❌ 본체(body) 없음재정의(Override)선택 (필요시 override)필수 (반드시 override)필수 (반드시 구현)인스턴스화가능불가능불가능다중 상속/구현단일 상속단일 상속다중 구현 가능키워드virtual / overrideabstract / overrideinterface / :(구현)관계is-a (상속 관계 강화)is-a (상속 관계)can-do (기능 중심) Virtual "기본 레시피를 제공할게, 바꾸든 말든 자유야!"virtual은 부모 클래스에 이미 완성된 기..

CS/C#_C++ 2025.10.13