320x100

전체 글 435

[NDC2013] C++에서 극한의 생산성 뽑아내기(M2프로젝트의 AI코드 리뉴얼 사례)

AI 작업의 특징 외부 코드에 많의 의존한다 시간의 흐름에 따라 연속적으로 변화한다 그러므로 이터레이션 속도 = 생산성! 이터레이션 = 코드 수정 + 빌드 + 로딩 + 테스트 일반적인 해결책들 컴파일 시간: pch, 의존성 감소 링크 시간: DLL 빌드 로딩 시간: 로딩 최적화 실행 중 DLL 교체 Dynamic Linked Library: 실행 시점에 코드를 메모리에 로드 Implicit link(묵시적 링크) 보통 접하는 dll 빌드. __declspec(dllimport) 라이브러리 프로젝트 빌드하면 .lib와 .dll 생성됨 사용하는 쪽에선 .lib을 static 링크함 .lib가 초기화될 때 .dll을 찾아서 자동으로 로드한다(언로드 또는 교체할 수 없다) Explicit Link(명시적 링크)..

NDC/C++ 2021.11.14

[NDC2013] 테스트 꾸준히 잘하는 법

개발자 테스트와 테스트 자동화의 중요성 모듈 품질이 좋아짐 차후 모듈 수정이나 개선시에 개발 속도 향상 테스트를 꾸준히 잘하려면? 디자인과 구현이 잘 되어 있어야 한다(의존성을 줄이는 것이 핵심) 테스트를 꼭 해야 하는건 아니다 (Where, Oh Where To Test) 어느 레벨에서 테스트를 진행해야 하는가? 시스템 테스트가 좋은가? 유닛 테스트가 좋은가? => 핵심은 Cost(비용), Stability(안정성), Reliability(신뢰성) Cost(비용) 테스트 작성 비용 유지보수 비용 테스트 수행 시간 테스트를 적고 빠르게 만들 수록 좋다 => 테스트 스크립트 최소화, Mock 사용 최소화 Stability(안정성) 잘못된 피드백의 비용 Stable한 결과를 얻는데 드는 비용 고려 => UI..

NDC/Dev 2021.11.14

[NDC2013] 라이브 프로젝트에서 C++로 테스트 주도 개발하기

GoogleTest를 써라 TEST(AccountTest, ConstructorWidthBalance) { Account account = Account(10000); if (account.Balance() != 10000) { FAIL(); } } 장점 xUnit을 포괄하는 기능 GoogleMock과의 연계 Google이 개발 의존성을 끊어라 TEST(Player, Fall) { Player player; player.SetZ(1000); player.Fall(1.0f); EXPECT_EQ(900, player.GetZ()); } Player::Player(Server* s, string id) { s->ReceivePlayerInfo(this, id); } Player 객체를 생성할 때는 단독으로 생..

NDC/Dev 2021.11.13

[NDC2013] 너무너무 훌륭한 MySQL

비상용 RDBMS의 선두 주자 무료 작고 가벼움 간편한 유지 관리 손 쉬운 Scale out 쿼리 작성의 제한 MultiThread 관리의 허접함 한 개 세션에서 다량의 DML 발생시 전체적으로 IO 비용 증가에 따른 성능 저하 발생 Oracle MYSQL 통합 관제 TOOL Oracle Enterprise Manager 제공(고비용) 없음 능동적 Clustering 데이터 이중화 솔루션 RAC 기능 제공 진정한 Cluster 일반 DBMS 벤더와 비슷한 형태의 Cluster 제공 SQL Hint 많음 인덱스 사용과 관련된 Hint만 존재 Analytic Function 제공 8.1.6 버전부터 추가 없음 고성능 트랜잭션 최고 MyISAM 스토리지 엔진 Table lock InnoDB 스토리지 엔진 Ro..

NDC/DB 2021.11.12

Recast & Detour

C++용 NaviMesh 생성(Recast)과 길 찾기 알고리즘(detour) 라이브러리 언리얼 내에서 쓰인다고 하며, 길 찾기 알고리즘으로 A* 알고리즘을 사용한다. 공식 홈페이지 https://github.com/recastnavigation/recastnavigation GitHub - recastnavigation/recastnavigation: Navigation-mesh Toolset for Games Navigation-mesh Toolset for Games. Contribute to recastnavigation/recastnavigation development by creating an account on GitHub. github.com 다운로드 하고 솔루션 파일이 없으므로 VS에서..

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
320x100