조이시티 반기보고서 (2022.06)
3년간 연구개발실적

☞ 본문 위치로 이동

연도	연구과제	연구결과 및 기대효과

2020년	라이브 서버 모니터링 시스템	Proxy 를 이용하는 서버에서 접속 장애를 감지하고 알림을 보내주는 시스템 개발

클라이언트 로그 리포터	클라이언트의 에러 및 크래쉬 로그들을 서버에 전달하는 시스템 개발

AWS 인프라 효율화 연	AWS 기반에서 탄력적으로 장비를 운영하기 위한 아키텍쳐 연구 및 윈도우 기반 컨테이너 서비스 연구

서버간 유저 이동 최적화	서버간 유저 이동 상의 트렌젝션 문제 최소화를 위한 DB 통합 및 구조 변경

렌더웨어 익스포터 개발	렌더웨어 엔진이 공식 지원종료 된 시점에서 윈도우10용 3D MAX버전용 렌더웨어 익스포터를 신규 개발.
렌더웨어 프로젝트의 아트 개발에 있어 윈도우 10 환경과 최신 3D MAX로 작업이 가능하게 됨으로써 개발 효율 증대.

서버 장애 시 메일 전송 시스템 개발	서버 비정상 종료 시 관련 담당자에게 알림 메일 전송하는 시스템 개발. 더욱 빠른 장애 대응이 가능해짐.

애니메이션 데이터 압축 적용	애니메이션에 사용되는 데이터형을 거의 손실없이 압축 적용하여, 애니메이션 퀄리티를 유지 한 채로 클라이언트 용량과 메모리 사용량을 줄임.

실시간 데이터 변경 처리	서버 락처리 변경을 통하여 라이브 서비스 중 이슈를 점검없이 처리 가능하도록 하여 이슈에 대한 점검 최소화에 도움이 되도록 하였음

리소스 버전 관리 시스템	배포 버전 유저 로컬 이슈를 체크 하기 위한 리소스 서버 구축을 통하여 유저 개인 환경 이슈 발생 시 안내 또는 자동 업데이트를 진행하여 문제 발생에 대한 스트레스를 낮춰줄 수 있도록 처리

Steam SDK R	스팀 서비스를 위한 스팀 SDK 지원 방법 및 로그인, 결재 시스템 분석 및 적용

언리얼4 UMG R 및 UI 개선	프로젝트의 UI 프레임 개선을 위한 UMG 분석 및 효율적인 UI 프레임 R 및 프로젝트에 적용 - 언리얼4 UMG에 대한 팀원들의 기술력 확보, 및 프로젝트 성능 향상 - 프로젝트 UI관련 코드 캡슐화 및 인지도 증가

서버 안정화을 위한 메모리 풀 수정	Boost Library 기능을 통한 서버 메모리 Pool 운영 분석 및 적용

부하테스트툴개발	golang 기반DB / Web 부하툴개발

Redis 비동기명령처리구조개발	다중스레드 c++ 게임서버 ↔ Redis 비동기 명령처리 구조개발

패치 자동화 시스템 개발	클라이언트, 서버, DB 모두 최신 버전으로 빌드부터 패치까지 자동으로 진행될 수 있는 시스템 개발

클라이언트 빌드 배포 시스템 개선	클라이언트 빌드가 완료되면 배포 가능한 저장소에 등록되고 다운로드 받을 수 있는 URL 이 팀 공용 메신저를 통해 전파되도록 함

JSON 사용 환경 안정화	Native 언어 환경에서 문자열 집합인 JSON 사용의 위험도를 줄이기 위해 주의해야 할 부분을 강제화 하여 쉽고 안정적으로 접근할 수 있도록 변경

파일 로그 안정성 확보	멀티 스레드 환경에서 하나의 파일에 서로 접근할 경우 내용이 깨지던 부분을 버퍼에 담아 순차 처리를 진행하여 무결점 하게 만들고 lockfree를 이용하여 버퍼를 관리, 대기에 대한 손해 비용을 최소화

서버 개발 환경의 확장	기존 한명의 프로그래머가 1개의 서버 인스턴스를 사용하던 상황에서 하드웨어가 허용하는 범위에 한해 무한히 확장할 수 있도록 패턴을 적용하여 신규입사자 외, 기존 개발자들도 손쉽게 서버 세팅을 할 수 있도록 개선

언리얼4 엔진 심화 R	버튼등의 포커스 이동시 키보드/마우스를 모두 지원 할 수 있도록 네이게이션 기능을 사용하여, 개발 편의성 및 효율성 향상하여 UI 기능 강화하였으며, 각 맵마다 배치 위치가 다른 객체들을 런타임 생성/소멸을 통해 게임 및 로비 맵의 시즌 별 구성을 지원하여 Map 기능 강화하였으며. Texture의 용도별 최적화를 통해, 패키지 용량 감소 및, 실행 속도 향상하여 최적화함

이종 플랫폼간에 소셜 및 플레이 지원	플랫폼 간에 원할한 정보 통신을 위한 중간 단계 서버 개발, 동기화를 위한Replication 적용

렌더웨어 리소스 로드 최적화 및 퍼포먼스 개선	여러 PAK에 산재된 중복 리소스를 찾아서 제거하는 기능을 개발 및 활용하여 PAK간 중복 리소스 제거프로젝트에서 미사용중인 이미지 포멧을 탐색하지 않도록 엔진 로직을 개선하고, PAK 리소스 탐색 로직을 개선하여 퍼포먼스 향상.

클라이언트 해킹 보안 강화	보안 로직 적용 - 하드웨어 브레이크 포인트-프로세스가 HW BP에 걸려 있는지 확인 - 코드 변조 감지-로직이 적용된 코드 영역의CRC계산을 하여 변조 감지 보안로직으로 서버에 전송된 로그를 기반으로 해킹툴 분석에 사용.

GIF 형식의 스프라이트 애니메이션 개발	의상 및 아이템에 애니메이션 효과를 주기 위한 컨셉으로R 진행했고, UV 채널을 추가하여 실시간 셰이더 랜더링 방식으로 개발하였고, 미리 합성된 텍스쳐를 이용한 개발방식(렌더 비용 없음) 대비 렌더링 비용이 증가하긴 하지만, 메모리 사용량 및 퀄리티에서 좋은 결과를 가짐.

XboxOne 로그인 웹 서버 개편	XboxOne 신규 SDK 적용하여 서버 인증서 등록/관리 편의성 제공 및 관리툴을 지원하며, XSTS(Xbox 인증) 자동 갱신

해킹 제재 자동화 프로세스 구축	특정 주기 마다 게임 내 해킹툴을 사용한 유저를 자동으로 감지 및 분류 후 제재 리포트를 전달하는 자동화 프로세스 구축

팩 파일 변조 방어 프로세스 구축	팩 파일을 추출하여 리소스를 수정하는 행위를 막기 위해 서버에서 리소스 변조를 감지(SHA1, AES이용)하고 접속을 종료하는 프로세스 구축

스케일폼 GFx에서 라이브2D 와 유사한 연출 효과	스케일폼 무비클립에 영상 합성을 통한 라이브 2D와 유사한 연출 구현

백그라운드 다운로드 및 빠른실행 모드	최소한의 리소스로 게임을 구동할 수 있는 빠른 실행 모드를 도입하고, 백그라운드에서 나머지 리소스를 받을 수 있는 기능 추가

실시간 업데이트 되는 큰 데이터의 ACID 를 보장	데이터의 실시간 처리 중 대량의 데이터를 여러 개의 컬럼과 로우로 이루어진 텍스트로 치환 해 하나의 TRANSACTION 으로 저장 및 업데이트 할 수 있는 시스템

인 게임 동영상 추가	.wmv 파일들을 매핑하여 게임 내 원하는 위치와 사이즈로 동영상이 나올 수 있도록 개선

리로딩 시스템	리소스 파일들이 부족한 상태에서도 게임 진입이 가능하며, 전부 다운로드 시 리 로딩하여 애니메이션, 아이템, 사운드, UI 등을 재구성

2021년	GPU Instancing 연구	동일한 여러 메시의 Draw Call 병목 최소화를 위해 렌더링에 필요한 데이터를 버퍼에 담아 CPU -> GPU 통신을 절약하는 기술 연구

Dynamic Batch 최적화	게임 오브젝트들의 Render Queue를 조정 및 같은 Panel로 묶어 최적의 Dynamic Batch가 이뤄지도록 연구 진행

Kafka 도입	이벤트 지향 아키텍처 도입으로 약한 결합을 통한 유연한 서버 구성 도입

Spring Batch Cloud Stream	전체 게임서버 및 분산저장소를 모두 제어할 수 있는 서버통합 컨텐츠 개발에 유용한 관제서버 개발

AWS S3를 활용한 패킷 정보 Pack 수집 및 Crash 리포트 수집	i. 클라이언트 Crash 발생시 Dump 파일을 S3 스토리지로 자동 전송 Crash 리포트를 통한 라이브 버그 대응 가능.ii. 클라이언트 인게임을 리플레이 할수 있는 패킷들을 수집하여 필요시 S3 스토리지로 전송 핵킹 or 비매너 플레이에 대한 User 제제의 기반 정보로 활용 가능.

DB 레플리케이션 적용	i. 기존 오픈쿼리 보다 속도 약 10배 정도 빠른 성능ii. 크로스 컨텐츠 제작시 효율성 증가ii. DB 장비 이상시 문제 해결 가능 (미러링 역활 가능)

실시간 업데이트 되는 큰 데이터의 ACID 를 보장	라이브의 SP 콜 횟수가 줄어들고 복잡한 데이터 들에 대해서 업데이트가 자유로워 짐에 따라 개발이 수월 해 짐

리로딩 시스템	게임 실행 시 런처에서 모든 리소스를 받지 않아도 게임을 실행 할 수 있으며런처에서 다운로드가 오래걸림에 따라 실행 도중 이탈 유저가 적어지도록 개선

인 게임 동영상 추가	필요한 곳에서 이미지 파일이 아닌 동영상 파일로 유저에게 쉽게 정보 제공

글로벌 서비스를 위한 '자동 채팅 번역 서버' 구축	구글 클라우드 번역 서비스 를 이용하여 다양한 언어의 채팅 메시지를 번역하고, 이용자 클라이언트에 지정된 언어로 표현할 수 있는 번역 서버 구축.

다중서버 랭킹시스템	다중서버간 일관된 랭킹시스템 구축. Redis 기반의 비동기 명령을 위한 동기화 전용 스레드 다중서버 제어를 위한 관제서버 구현

x86 아키텍쳐 연동 작업	안드로이드, iOS 플랫폼으로 서비스하고 있는 프로젝트를 x86 아키텍쳐의 환경에서 동작하도록 개발하며 R 진행, 리소스 및 어플리케이션 패치를 위한 클라이언트 런처 개발

플랫폼별 분리된 클라이언트 프로젝트 통합	1. 플랫폼 별 PS4, Xbox, Steam 등의로 나눠져 개발이 진행되던 프로젝트 통합을 통해 컨텐츠 관리 및 개발시 효율성 확보2. UE4 엔진의 다른 버전을 사용하던 각 플랫폼 별 엔진 통합 PS4/Xbox(UE4.19), Steam(UE4.23) > 모두 UE4.23으로 통합되어 엔진 유지 보수 효율성 확보

스트리밍 텍스쳐를 이용한 메모리 최적화	1. ps4, xbox 는 한정된 메모리에서 서비스를 해야 하는 제약이 있어, 새롭게 추가되는 컨텐츠 및 기능으로 점점 사용되는 메모리가 늘어나는 현상 발생.2. 해당 이슈 해결을 위한 방안으로, 스트리밍 텍스쳐를 이용함으로서 게임의 퀄리티를 최대한 유지하며 가용되는 메모리를 30%정도 줄여 메모리 최적화 개선.

데이터 베이스 목적에 맞는 분리 운영	1. 통합되어있는 데이터 베이스 운영의 비효율 발생 (static data, game user data, log data) 를 각 목적에 맞게 분리 작업 진행2. 데이터베이스 분리 작업을 통해 목적에 맞도록 운용, 가독성 증가3. 데이터베이스 유지 및 보수 (백업, 복구) 측면에서 효율성 증가

클라이언트 코드변조 감지 시스템	1. 보안 솔루션을 우회하는 해킹을 감지하기 위해 클라이언트 자체적으로 코드변조 체크 기능을 개발. 서비스 안정화 효과

인게임GIF 로더 추가	다양한 아트웍을 표현하고 새로운 BM형태를 추가 하기 위하여 GIF를 아이템에 적용하였고, 새로운 BM구조로 매출 향상에 기대UI 리소스 등에서 이펙트 형태를 프로그래머의 공수를 넣지 않고 아트에서 표현을 컨트롤 할 수 있게 제공하여 개발 공수를 줄일 수 있는 효과를 기대

관전 허용 유저 수의 확대	인게임에서 관전 유저수가 서버 전체 MAX 수치에 한정되어 있던 부분을 게임룸 당 최대 인원수를 확장한 R 진행하여 대회 모드 등 특정방에서 대다수 인원이 관전할 수 있도록 처리하여 대회 경기가 진행될 경우 스트리밍 외의 인게임 내에서도 많은 유저가 관전을 할 수 있도록 진행

클라이언트 크래시 분석 툴 개발	클라이언트 크래시 발생 시 자동으로 덤프파일을 게임 서버로 전송, 크래시 발생 건에 따라 통계를 내고 콜스택 까지 확인 가능하도록 프로세스 구축. 빠른 장애 대응 효과 기대

네트워크 지연에 따른 게임 유연성 제공	유저의 네트워크 레이턴시에 따라 유동적인 밸런스 적용. 핑이 높은 유저와 핑이 낮은 유저의 플레이에서 발생되는 불만 요소를 개선. 서비스 퀄리티 개선 기대

2022년	FS 3D Max Import 개발	서비스가 오래되어 아트리소스 원본이 소실된 경우 리소스 수정이 어려웠던 부분을 Import를 개발하여 Max파일을 복원 후 리소스 재사용을 가능하게 함

간편 채팅 신고 개발	단축키로 인하여 게임내 모든 채팅 기록을 운영사로 취합 후 자동 전달하여 부정행위에 대한 자동화 프로세스 구축하여 불필요한 접수 단계를 해소

렌더웨어 DirectX 디바이스 리스토어 개선	렌더웨어의 랜더링 프로세스에서 다이렉트X의 디바이스 손실, 복구 과정을 개선하여 화면 멈춤 현상을 개선

바이너리 hash를 이용한 위/변조 실시간 체크 기능 개발	실시간으로 바이너리 Hash를 등록하여 변조를 체크할 수 있는 기능 개발, 해킹 보안이슈 대응

제너레이티브 아트 개발	레이어별로 구성된 아트 리소스를 이용하여 자동으로 다양한 구성의 결과물을 빠르게 생산. 작업 효율 증대

AWS 인프라 효율화 연구	AWS 기반에서의 안정적인 서비스를 위해 각 리전별 속도 차에 의한 서비스 품질 향상 연구 적용

Animation Instanceing 최적화	CPU에 많은 비용 발생하는 부분을 GPU 로 연산을 넘겨 많은 캐릭터를 그려도 드로우 콜 및 안정적인 프레임을 유지 할 수 있는 기술 연구

보안 솔루션 탑재	모바일 및 PC 취약점 방어를 위한 상용 보안 솔루션 이식 구조 개발 및 서비스 준비

매크로 유저 차단 시스템	매크로 프로그램 등을 이용하는 유저를 판단할 수 있는 행동 패턴 분석 및유저의 반복적인 행동에 대해 사람의 수동 입력을 요구하는 CAPTCHA 시스템 개발

블록체인 연동 토큰 서버 개발	블록체인 플랫폼 상에서 작동하는 인게임 재화와 토큰의 상호 교환을 위한 서버 개발

Elastic Search 검색 툴 연구 및 개발	Elastic Search 로그 검색 시 제한된 수량 및 상세 검색 기능 부족 / DB(Data Base)화 위한 연구 및 윈도우 기반 GUI 환경의 툴 개발

WAS 서버에서 Excel Data 파일 처리 위한 공통 라이브러리 연구 및 개발	기획자가 Excel 파일 생성 및 수정 내용에 대해서 WAS 서버 소스 작업 시 참조가 가능 하도록 개발 및 적용 서버 개발 효율화 기대

Redis Clustering을 활용한 대규모 분산 데이터 처리	게임 내 필드에 존재하는 대규모 객체들의 데이터를 Redis Clustering을 활용해서 분산 저장 및 접근이 가능한 구조 설계 및 개발

논리적 서버 월드 분리	물리적으로 하나의 장비에 적재되어 있는 유저 DB 데이터를 컨텐츠 단위로 논리적 분리하여 월드 단위로 새로운 환경에서 플레이 할 수 있도록 연구 및 개발

스팀 플랫폼 연동 작업	기존 프로젝트의 멀티플랫폼 특성을 활용하여 스팀 플랫폼 입점을 위한 게임 기본 기능 및 스팀 SDK 특화 기능 개발

블록체인 기술을 이용한 NFT 마켓플레이스 개발	NFT 아이템의 거래와 경매, 관리 기능을 구현하여 신규 블록체인 게임 개발에 연동 할 수 있는 환경 구현

블록체인 규약 ERC1155를 이용하여 한 트랜잭션안에서 NFT 대량 민팅이 가능하도록 개발	기존 한 트랜잭션 안에서 하나의 NFT를 민팅하는 방식에서, 한 번에 여러 개의 NFT를 민팅을 할 수있도록 개발, 민팅에 있어 가스비 감소와 속도에 있어 큰 효과를 보임.

멀티텍스쳐링 애니메이션	버텍스의 u,v 좌표를 추가로 설정하여 다른 u,v좌표를 가지는 텍스쳐 두 장을 합성 가능하도록 변경, 추가된 텍스쳐는 애니메이션 기능을 가지며 다양한 효과를 줄 수 있도록 함. 기존 리깅된 아이템 외에 고정된 본을 가지는 오브젝트(안경, 마스크, 귀걸이 등...)도 적용 가능하도록 개발.

리액트 기반 웹 구성	리액트 기반으로 웹을 구성하여 defi-dao, marketplace 페이지 작성. mui, tailwind css 등 여러 라이브러리를 사용하여 기존 웹 구성과 개발 속도의 차이점을 확인

텐센트 API를 활용한 필터 기능 개발	중국 로컬 언어의 대량의 금칙어 리스트를 검출하기 위하여 현지 텐센트 API를 활용하여 필터 기능을 구현하여 리스트 업데이트의 최소화를 진행

고도화된 AI R 위한 학습 시뮬레이터 개발	향상된 AI를 위한 환경 정보 분석을 위한 학습 시뮬레이터 개발. 강화 학습을 위한 시뮬레이터 개발이 선행되어 정보를 수집할 수 있도록 처리. 시각적 정보 수집에 도움이 될수 있는 미니맵 기능 개발

AWS 인프라에서의 장애 복구와 서비스 운영 방법	AWS에서 발생되는 장애에 대하여 연구하고 이에 대한 피해 최소화 방안 모색과 장애 방지 방법에 대한 연구

Protocol buffer 연구 및 적용	서버와 클라이언트의 개발언어가 다른 상황에서의 패킷통신 이슈를 해결하기위한 방법으로 구글에서 만들어진 Protocol Buffer를 연구함. Protocol buffer는 언어에 무관하게 포맷만 공유되면 각 모듈들이 알아서 Serialize / Deserialize 기능을 제공함.