320x100

NDC 2016 4

[NDC 2016] <야생의 땅: 듀랑고> 중앙 서버 없는 게임 로직

객체가 중심이 되는 서버? 하나의 지역을 물리적인 서버가 담당하는 것은 땅의 크기가 서버의 성능에 의해 제한될 수 밖에 없다 => 서버는 모종의 규칙에 의해 배정된 객체를 담당한다 장점 서버에 소속된 객체의 시야 외에는 관심이 없어 전체 세계의 크기와 상관 없는 구조 => 이론적으로 무한한 크기의 세계를 표현 가능 특정 서버에 문제가 생겼을 때 재 접속하면 바로 그 위치에서 정상적인 플레이 가능 => 안정성의 향상 동기화 동기화가 잦을 수록 DB에 부담이 된다 분산 환경에서는 서버간 동기화가 이루어지므로, N배 부담이 된다 동기화 최적화 1. 미래를 예측해 동기화 횟수를 줄이자 변화량을 입력하면 그래프 방식으로 데이터를 보여주는 라이브러리 https://github.com/what-studio/gauge..

NDC/Server 2023.01.16

[NDC 2016] <야생의 땅: 듀랑고> 지형 관리 완전 자동화 - AWS와 DOCKER 체험기

도전 과제는 크게 2가지로 - 지형 배포: 지형 배포 자동화 - 자연물 관리: 자연 상태 파악, 생태계 시뮬레이션 자동화 지형 제작 & 배포 개요 - 전용 도구로 지형 파일들을 제작 - 후처리를 거친 뒤 지형 파일을 git에 commit - 서버 코드에서 해당 커밋을 참조하도록 변경 지형 제작 & 배포 도구 - WorldGen: 지형 파일 제작(C#) - ManageTool: 지형 배포 및 관리에 필요한 기능 제공(Python) 지형 배포 절차 - 청크별 빠른 색인을 위해 여러가지 지형 정보들을 청크별로 나눔 - 청크: 16 x 16 타일 -> pub-sub 토픽, 분산의 최소 단위 - 타일: 가로 세로 2m의 정사각형 -> 자연물, 건축물 등의 최소 단위 - cm: 동물의 위치등 섬세한 위치 조정에 사..

NDC/Server 2023.01.15

[NDC 2016] 유니티, iOS에서 LINQ 사용하기

LINK(Language Integrated Query): 데이터 저장소 종류와 관계 없이 저장소에 일관성 있는 인터페이스로 질의 - 동일한 인터페이스 사용 - 다양하고 편리한 기능 (Max, Min, Average, OrderBy, First ...) - 지연 실행 (성능 이점) - 간결한 High Level 코드 품질 - 컴파일 타임 에러 체크 int[] numbers = { 5, 10, 8, 3, 6, 12 }; Query syntax var result = from num in numbers where num % 2 == 0 orderby num select num * 2; Method syntax var result = numbers .Where(num => num % 2 == 0) .Order..

NDC/Dev 2023.01.15

[NDC 2016] 테라 서버의 Modern C++ 활용기

smart pointer (RAII) - 객체의 생성 소멸 관리를 위해 사용하는 객체 - shared_ptr, unique_ptr t_ptr - shared_ptr처럼 Reference Count를 공유 - 침습형(invasive) 카운터를 사용 Cppcon2015 중 "Smart pointers" are overused (스마트 포인터는 과다 사용되고 있다) - shared_ptr can be expensive => reference count의 증감 연산이 많이 일어나기 때문에 사례1) 빠른줄만 알았던 type_cast template T* type_cast(S* s) { if (s && TypeTable -> -> seq * C++14부턴 간단하게 std::make_index_sequence으로 대..

NDC/Server 2023.01.14
320x100