320x100

게임 18

Unity NaviMesh에서 obj 파일용 Mesh 데이터 뽑기

서버에서 사용할 NaviMesh를 뽑아내기 위해 이리저리 뒤지다가 알아 낸 것들을 정리차 적는다. 게임 서버에서 길찾기 & 이동 관련 처리를 하기 위해 NaviMesh가 필요했고 C++을 사용하는지라 recast detour 라이브러리를 사용하기로 한다. 해당 라이브러리 demo에서 프로젝트 맵을 띄워보기 위해 obj 확장자로 된 Mesh 정보가 필요했고, 기존 클라이언트에서 사용하던 파일을 변환해야 했다. *.obj 파일이란? https://danac.tistory.com/155 3d 에서 .OBJ .obj 파일이란? 구조파악 파일 파싱 방법 3차원 그래픽 이미지가 저장된 파일의 형태 (3 차원 그래픽 파일 포맷) 중 하나이다. 참고로 그래픽 파일은 어떠한 방식으로 압축하고 저장하느냐에 따라 이미지 용..

게임/Unity 2021.11.10

flatbuffer

flatbuffer는 이기종간의 데이터 교환을 위해 구글에서 만들어진 라이브러리다. 전용 script를 작성하고 전용 compiler를 돌리면 해당 언어에 맞는 ouput을 얻을 수 있다. raw와 비교해서 거의 속도 차이가 없고, 메모리 부분에서도 장점이 있으며 여러 언어에 구애받지 않고 작성할 수 있다는 것이다. protobuf에 비해 3000배 빠른 속도를 가진다고 들었으나 직접 확인한 결과는 아니므로 신뢰하지는 마시라 다운로드는 다음 URL에서 진행하면 된다. https://github.com/google/flatbuffers/releases Releases · google/flatbuffers FlatBuffers: Memory Efficient Serialization Library - goo..

부채꼴 모양 스킬 타겟 구하기

흔히 스킬 범위 중에 부채꼴 모양들이 있어서 현재 내 좌표 기준으로 해당되는 타겟이 누가있는지 알아야할 때가 있다. 그래서 부채꼴의 넓이를 구하기 위해선 관련 공식을 알아야할 필요가 있다. 우리는 주입식 교육으로 원의 넓이를 구하는 공식은 대부분 알고 있다. 반지름 x 반지름 x 3.14인데 사실 부채꼴은 원의 일부분 이므로 부채꼴의 각도 만큼만 구하면 부채꼴의 넓이가 된다. '호'란 원의 전체 둘레에서 부채꼴의 각만큼에 해당하는 길이다. 즉 피자 1조각으로 치자면 크러스트의 길이랄까... 자 그럼 다시 원래 주제로 돌아와서 해당 범위에 해당하는 적을 어떻게 구분해 내느냐인데 방법은 선택하기 나름이다. 1. 먼저 해당 스킬 범위를 반지름으로 하는 원에 해당하는 모든 actor 목록을 가져오고 각각 나와 ..

게임 2021.10.09

glog

프로젝트 내 로그 라이브러리로 glog를 사용하기로 해서 빌드 관련 내용을 정리한다. 다운로드 경로 github: https://github.com/google/glog site: https://code.google.com/archive/p/google-glog/downloads glog 특징 thread-safe함 level별로 파일이 생성 상위 level 내용이 하위 level에도 write됨 glog-0.3.3 버전을 사용했고, 개발 환경에 따라 맞게 셋팅해준다. 현재 프로젝트는 멀티바이트와 x64 환경이고, 프로젝트 내 공통 정적 라이브러리가 이미 존재하므로 동일하게 정적으로 빌드해서 사용했다. (문자 집합 변경, x64 플랫폼 추가, libglog_static 빌드 사용) 처음 프로젝트를 열면 ..

정렬 - 추가중

Best Worst Memory 선택정렬 n^2 n^2 1 버블정렬 n n^2 1 삽입정렬 n n^2 1 합병정렬 n log n n log n n 힙정렬 n log n 1 퀵정렬 n log n n log n 1 아래 설명은 정렬할 데이터를 vector로 가정하고 설명한다. 1. 선택정렬 처음부터 끝까지 순회하며 현재 위치에 들어갈 값을 찾아 넣는 방식 void sort(vector& v) { for (int i = 0; i v[j]) { min_index = j; } } int temp = v[i]; v[i] = v[min_inde..

[알고리즘] 허프만 트리를 이용한 텍스트 압축

엔트로피 인코딩(entropy encoding)은 정보 공학 주제 중 하나로, 데이터 압축에 있어 출현 빈도에 따라 데이터 압축률이 달라진다는 이론이다. 허프만 코딩은 텍스트 압축을 위해 사용되는 방법으로, 데이터에서 출현빈도가 높은 문자는 적은 비트의 코드로 변환하고, 출현 빈도가 낮은 문자는 많은 비트로 변환하여 표현함으로써 전체 데이터를 표현하는데 필요한 비트 수를 줄이는 방식이다. "AAAAAAABBCCCDEEEEFFFFFFG"를 허프만 코딩으로 압축하려고 한다면 글자의 출현 빈도를 다음과 같이 정리할 수 있다. 출현 빈도가 적은 순서대로 이진 트리를 구성하고, 해당 트리 루트 노드에 문자 출현 빈도를 더해 설정한다. 이와 같이 모든 데이터에 대해 반복한다. (매 회차 내림차순 정렬 필요) 마지막..

rapidjson

공식 홈페이지 : https://rapidjson.org/ RapidJSON: Main Page A fast JSON parser/generator for C++ with both SAX/DOM style API Tencent is pleased to support the open source community by making RapidJSON available. Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. Build status I rapidjson.org 사용 이유 : 담당하는 프로젝트에서 구조체를 Binary로 통짜 파일 저장하던 방식을 사용했는데, 잦은 구조 변화로 인해 Json으..

320x100