프로그래밍 282

전문가를 위한 C++ 4판 CHAPTER 3

아무래도 시중에 나온 번역본은 저작권 문제도 있을 것이고, 영어 공부도 할 겸 해당 서적을 직접 번역하여 작성하는 것으로 결정했습니다. 해당 게시글은 professional C++. 4th Edition 를 번역하였습니다. 번역 과정에서 의역이 들어갔음을 참고바랍니다. Coding with Style 코딩 스타일 해당 챕터에서 배우는 것들은 무엇인가? 1. 코드의 문서화의 중요성과 당신이 사용할 수 있는 주석 스타일이 무엇인지? 2. 코드 분해란 무엇이고, 코드 분해는 프로그래머가 어떻게 사용하는가? 3. 명명 규칙이란 무엇인가? 4. 포매팅 (형식 지정) 규칙이란? 만약 몇시간 씩 코드를 작성해가고 있다면, 그 시간 내내 코드에 대한 책임을 져야 할 것이다. 주어진 작업을 완료해가며 코드를 작성하는 것..

취미/개발서적 2024.05.17

에러 처리와 스레드의 상관 관계와 커널 개체

해당 환경은 WINDOWS 환경이며, C/C++에 대해서만 다룬다. 에러 처리와 스레드의 상관 관계 에러처리를 잘 하기 위해서는 일단 윈도우가 제공하는 수많은 기능 중 하나인,윈도우 함수가 에러를 어떻게 처리하는지에 대해 먼저 이해해야 한다. 윈도우 함수를 호출하면 호출된 함수는 먼저 전달된 인자의 유효성을 확인하고함수의 기능을 수행하려 한다. 만일 전달된 인자가 유효하지 않거나 다른 이류로 인해 해당 기능을수행할 수 없으면 함수는 실패를 반환한다. 윈도우 함수가 실패하면 왜 함수가 실패했는지의 여부를 알아내는 과정이 반드시 필요하다.마이크로 소프트는 발생할 가능성이 있는 모든 에러 코드를 32비트 숫자로 정의해 두었다. 윈도우 함수가 실패하게 되면 내부적으로함수를 호출한 스레드의 스레드 지역 저장소에 ..

ESPMode

언리얼 엔진에 있는 ESP 모드가 있는데그 모드를 이해하고자 해당 글을 포스팅 하기로 했다. 사실 언리얼 스마트 포인터가 가지는 이점이 멀티 스레드를 이용한다면언리얼 스마트 포인터의 ESPMode를 설정해줘야 한다. 자주 쓰이고 꼭 알아야하는 언리얼 스마트 포인터에도 ESP가 쓰인다.즉 언리얼 스마트 포인터를 잘 이용하려면 ESP가 뭔지 잘 알아야 한다. 일단 Windows에서 제공하는 ESP의 설명을 정리하기 전에,언리얼에서 제공하는 ESP을 간단히 설명해보겠다. ESPMode는 'fast' 또는 'thread safe' 두 가지 중 하나의공유 포인터 타입을 선택해서 사용해야 한다. NameDescriptionNotThreadSafeForced to be not thread-safe. (= 강제적으로 ..

UE5 2024.05.10

게임 서버 프로그래밍 입문 - (1)

게임 서버의 정의 우선 목적을 명확이 해야지 서버책 한 권이라도 잘 이겨나갈 수 있을 것이다.서버가 어떤 프로그램인지 먼저 생각해보자. 온라인 게임이라 하면, 다수와 접속해서 즐기는 MMORPG 온라인 게임도 있을 것이고,디아블로3 처럼 특정 몇 명만 같이 즐기는 게임도 있다. 이런 프로그램들을 만들고 관리하는 서버 프로그래머들은 어떤 일을 할까? 신규 게임이라면 당연히 게임 서버를 만들지 않을까? 기획자들이 이것저것 새로운 게임에 대한 콘텐츠 기획을 제안할 것이고그것에 맞게 프로그램 구조를 고려해 서버 프로그램을 작성할 것이다. 물론 신생회사가 아니거나, 기존 코드가 엉망인 아닌 이상 기존에 안전성을 검증받은코드를 계승해서 제작하게 될 것이다. 요약하면, 이미 돌아올 수 없는 강(가정을 고려한 코딩)을..

언리얼 모듈과 언리얼 게임플레이 모듈

언리얼 모듈 (Modules)모듈이란 무엇이냐?모듈은 빌딩 블록이다.   그런 모듈을 왜 쓰냐?모듈은 언리얼 엔진 소프트웨어 아키텍처의 구성 요소로,코드를 모듈로 청리하여 더 효율적이고 유지보수하기 좋은 프로젝트를 만들 수 있다.UE에서 모듈은 특정 에티터 툴, 런타임 기능, 라이브러리 등의 기능을 독립된 코드로 캡슐화 한다. 모든 프로젝트와 플로그인에는 기본적으로 자체 프라이머리 모듈이 있지만,모듈을 따로 정의하여 코드를 정리할 수 있다. 해당 게시글에서는 모듈의 구와 언리얼 엔진 프로젝트에 사용했을 때의 이점에 대한 개요를 다룬다.  그럼 게임 플레이 모듈은 무엇이냐?(1)엔진 자체가 여러 모듈로 이루어져 있는 것과 마찬가지로,각 게임은 하나 이상의 게임플레이 모듈로 이루어져 있다.이들은 관련 클래스..

UE5 2024.05.09

전문가를 위한 C++ - Chapter2

프로그램을 작성하다 보면 스트링을 사용할 일이 생기기 마련이다. C언어를 사용하던 시절에는 단순히 널null 로 끝나는 문자 배열로 스트링을 표현했다. 하지만 이렇게 하면 버퍼 오버플로를 비롯한 다양한 문제 때문에 취약점이 드러날 수 있다. C++ 표준 라이브러리는 이러한 문제를 방지하기 위해 안전하고 사용하기 쉬운 std::string 클래스를 제공한다. 스트링은 굉장히 중요한 기능이므로 자세히 알아보자. 동적 스트링스트링을 주요 객체로 제공하는 프로그래밍 언어를 보면 대체로 스트링의 크기를 임의로 확장하거나, 서브스트릥(부분 문자열)을 추출하거나 교체하는 것처럼 고급 기능을 제공한다. 반면 C와 같은 언어는 스트링을 부가 기능처럼 취급한다. 그래서 스트링을 언어의 정식 데이터 타입으로 제공하지 않고 ..

취미/개발서적 2024.05.08

한 권으로 읽는 사서삼경

일단 이 책은 진짜 두껍다. 살면서 다 읽어야 할 의무감이 없다면 이 정도 페이지를 공부해야 하는 전문분야가 아니라면 한 권으로썬 읽어나가기 힘들 페이지 수일 것이다. 그래서 그냥 공부하다 마음이 답답하면 쓱 본다. 모든 책이 으래 그렇겠지만, 철학 책의 가장 큰 묘미는 남의 삶, 남의 생각을 엿본다는 것이다. 특히 고전적으로 내려오는 성인들의 생각을 엿본다는 건 아주 흥미롭다. 살면서 다양한 선택을 마주한다. 예를 들어 가볍게는 저녁 뭐 먹을까?에 대한 고민도 한다. 배움이 중요하다면 간단히 먹을 수 있는 간편식 중에 저녁을 고민할 것이고, 친교가 중요하다면 친구와 적당히 먹을만한 식당을 고민할 것이다. 그 가벼운 저녁 한 끼의 선택도 한 사람의 중요도에 의해 갈리고, 성향에 의해 또 갈린다. 책 한 ..

Unreal Engine - 멀티플레이어 게임에서의 이동

언리얼 내에서의 Travelling은 크게 두 가지가 있다.1. Seamless 2. non-seamless travel 둘의 가장 큰 차이점은 Seamless는 non-blocking(비차단) 작업,non-seamless는 blocking call(차단 호출)이라는 차이가 있다. 이는 즉 클라이언트가 non-seamless travel를 실행할 때,클라이언트는 서버로부터의 연결을 잠시 끊은 뒤 동일 서버에 재연결한다.해당 작업이 완료된다면 클라이언트는 새로운 맵을 로드할 준비를 갖추는 것이다. 언리얼에서 추전하는 것은UE4 멀티플레이어 게임은 가능하다면 seamless travel을 권장하고 있다.이러한 방식이 일반적으로 재연결 과정에서 발생할 수 있는 문제를 방지하며 좀 더 원할하게 진행 될 것이라는..

UE5 2024.05.04

4월 발자취

그간 읽은 책과 강의 (완독 및 완강) 혼자 공부하는 C언어 2회독 기초 C++ 1회독 1회독 컴퓨터 시스템 개론 1회독 혼자 공부하는 컴퓨터 시스템 + 운영체제 2회독 이득우의 언리얼 C++ 게임 개발의 정석 1회독 윤성우의 열혈 C++ 1회독 윤성우의 열혈 자료구조 2회독 완강 강의 Udemy Unreal Engine 5 C++ The Ultimate Game Developer Course 홍랩 자료구조 홍랩 DX Part 1 진행 중인 책과 강의 윤성우 자료구조 윤성우의 열혈 TCP/IP HLSL 프로그래밍 게임 서버 프로그래밍 교과서 전문가를 위한 C++ 강의 코딩 테스트를 위한 자료 구조와 알고리즘 With C++ IT 취업을 위한 코딩테스트 외대 신찬수 교수님 자료구조 Unreal Engine..