분류 전체보기
[번역] HTTP 서버: 밑바닥부터 만들어보기
이 포스트는 다음 포스트를 번역/의역한 글입니다. 가독성을 위해 임의적으로 편집한 부분이 있습니다. 출처 https://medium.com/from-the-scratch/http-server-what-do-you-need-to-know-to-build-a-simple-http-server-from-scratch-d1ef8945e4fa HTTP Server: Everything you need to know to Build a simple HTTP server from scratch Vote for next post or mention what do you want to see next here: medium.com 서론 HTTP는 어디에나 있습니다. 우리가 방문하는 모든 웹사이트가 HTTP 서버 위에서 ..
[C++ Primer Plus] 3. Dealing with Data
대답해야 할 질문들 ASCII, Unicode, UTF가 어떤 개념인지, 어떤 차이가 있는지 설명하세요. Simple Variables int braincount; braincount = 5; 이 두 줄의 코드는 구체적으로 다음과 같이 작동한다. int형 데이터를 담을 수 있을 만큼의 데이터를 할당한다. 할당된 데이터 위치를 기록한다. 5라는 값을 해당 위치에 복사한다. Integer Types 일부 언어는 정수형 데이터로 int 하나만을 지원하지만 C++은 여러 개로 구분한다. 그 구분에 따라 메모리 사이즈가 다르다. 즉, 담을 수 있는 값의 범위가 다르다. short, int, long, long long으로 구분한다. 차이는 다음과 같다. 2bytes
[C++ Primer Plus] 2. Setting Out to C++
출처: C++ Primer Plus 6th Chapter 2 대답해야 하는 질문들 Function Header는 어떤 정보를 담고 있나요? #include는 빌드에서 어떻게 작동하나요? Namespace는 왜 사용하나요? The Function Header Funtion Header는 해당 함수를 호출하기 위한 인터페이스를 알려준다. Return Type은 Called function이 끝나서 Calling function으로 돌아갈 때, 어떤 정보가 들어오는 지 알려준다. argument list 또는 parameter list는 Calling funtion에서 Called function으로의 정보 흐름을 알려준다. void main() main 함수를 선언하는 여러 방법이 있다. main() // ..
[C++ Primer Plus] 1. Getting Started with C++
출처: C++ Primer Plus 6th Edition Chapter 1 대답해야 하는 질문들 C와 C++의 역사를 간략히 설명하세요. Procedural Programming과 Object Oriented Programming을 비교하세요. C++가 어떻게 C에 Object-Oriented Programming 컨셉을 구현했는지 설명하세요. C++가 어떻게 C에 Generic programming 컨셉을 구현했는지 설명하세요. Program은 어떻게 만들어지나요? Learning C++: What Lies Before You C++는 Procedural Programming(=C), Object-Oriented Programming, Generic Programming의 교차점에 있다. 그렇기에 만약..
Replication
출처: https://youtu.be/JOJP0CvpB8w Net Mode Net Mode는 World의 상태다. 4가지 상태 중 하나여야 한다. 플레이 가능한가? 월드에 권한이 있는가? 다른 사용자를 받을 수 있는가? NM_Standalone O O X NM_DedicatedServer X O O NM_ListenServer O O O NM_Client O X X 게임이 시작되면 UGameEngine 가 생기고 그 밑에 UGameInstance 와 ULocalPlayer 가 생긴다. 그러면 우리는 브라우저에 URL을 통해 해당 게임 서버에 접속할 수 있다. 이 때, Net Mode도 함께 입력해야 한다. 예를 들어, NM_Client라면 게임을 플레이할 수 있지만 월드에 대한 전적인 권한은 가질 수 없..
#23: 인벤토리 아이템 정보창, 속공과 강공의 데미지 타입
인벤토리 아이템 정보창 아이템 정보창은 다음과 같이 동작하도록 정의했다. 아이템에 마우스가 들어오면 화면 중앙에 나타난다. 아이템에 마우스가 나가면 사라진다. 아이템 정보창은 그때 그때 Create하지 않고 한번 만들어두고 여러번 재활용하는 방식으로 사용한다. 아이템 정보창에 쓸 텍스트는 인벤토리 구현 때 생성한 ItemObject에 저장했다. 저장하는 변수는 3개다. Item Name : 아이템의 이름 Item Type : Weapon, Food 같이 아이템의 분류 Item Info : 아이템에 대한 설명 Item Widget 생성 시 실행 노드 Item Widget에 마우스가 들어왔을 때 실행 노드 결과 속공과 강공의 데미지 타입 공격의 메커니즘은 다음과 같이 설계했다. 플레이어가 마우스를 눌러 속공..
#22: Multi-cell(Jigsaw) Inventory System
Multi Cell Inventory 디아블로나 이스케이프 프롬 타르코프처럼 인벤토리가 2차원 모눈종이 상에 아이템을 보관하는 방식을 의미한다. 사진 출처 보통 이런 인벤토리 방식은 난이도와 리얼리티를 더해준다. Inventory 구성 요소 InventoryComponent : UActorComponent 메인 캐릭터에 붙어 있는 액터 컴포넌트. 인벤토리의 논리적 기능 (아이템 추가, 제거 등)을 담당한다. InventoryWidget : UUserWidget 인벤토리 UI에 해당하는 위젯 InventoryGridWidget : UUserWidget 인벤토리 UI에서 아이템 그리드를 그리는 위젯 ItemWidget : UUserWidget InventoryComponent가 가지고 있는 아이템들의 UI에..
언리얼에서 낮 밤 만들기 (+시간 시스템)
결과물 1. 시간 시스템 만들기 (GameState) 시간 시스템은 두 개 변수가 필요하다. 하나는 하루의 길이, 다른 하나는 현재 게임 시간이다. 이 때, 현재 시간은 런타임(게임이 실행되고 있을 때)에 어디서든 쉽게 접근할 수 있어야 한다. 쉽게 접근하기 위해 해당 코드는 GameState에 구현하도록 한다. Create Blueprint를 하고 Parent Class를 GameStateBase로 한다. 그리고 안에 변수를 두 개 만든다. MinPerDay(float) : 게임의 하루가 현실의 몇분인지 CurrentDateTime(DateTime) : 현재 게임의 시간 * CurrentDateTime은 계산의 편의성을 위해, UE에서 정의한 FDateTime으로 저장했다. Tick은 다음과 같이 구현..