[NDC21-프로그래밍] C# 정의를 사용하는 서버, 클라 코드 생성기 개발 이야기
NDC 넥슨 · YouTube
AI 핵심 요약
C# 서버 메시지를 리플렉션으로 직렬화하던 방식의 성능 부담을 줄이고, 기존 메시지 정의를 C++와 UE4 클라이언트에서도 활용하기 위해 코드 생성기를 만들었다. Roslyn으로 C# 코드를 분석해 중간 자료구조를 구성하고, T4 템플릿으로 C#, C++ 및 UE4 코드를 생성해 NuGet 패키지의 빌드 타깃에서 컴파일 전에 실행하도록 했다. 상속은 타입 코드와 가상 함수로, 제네릭 컬렉션은 사용된 타입을 수집해 직렬화 코드를 생성하는 방식으로 지원했으며, C++의 전방 선언·헤더 참조와 UE4의 타입 및 명명 규칙도 별도로 처리했다. 직접 구현하면 상속이나 UE4처럼 기존 도구가 지원하지 않는 요구를 반영할 수 있지만, 여러 언어를 함께 지원하고 기능의 검증과 유지보수를 책임져야 한다는 점을 배웠다.
- Roslyn의 Syntax와 Semantic 정보를 이용하면 기존 C# 메시지 정의를 별도 스키마로 옮기지 않고 분석할 수 있다.
- 분석 결과를 Roslyn 타입에 의존하지 않는 중간 자료구조로 분리하면 테스트와 코드 생성 로직의 유지보수가 쉬워진다.
- 상속 메시지는 타입 코드와 가상 직렬화 함수를 조합해 런타임의 실제 타입을 처리할 수 있다.
- 컬렉션 직렬화 코드를 미리 생성하면 리플렉션 비용을 피하면서 중첩 제네릭과 사용자 정의 타입도 지원할 수 있다.
- 여러 메시지를 한 C++ 헤더에 생성할 때는 참조 관계를 그래프로 구성해 선언 순서를 정하고 순환 참조를 고려해야 한다.
소개
● 설문조사: https://forms.gle/tPkXvVFXZ25Z3TTq7 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 넥슨코리아 이연성 ● 권장 대상: 프로그래머 ● 키워드: #코드생성기, Roslyn, C#, C++, UE4 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
비슷한 학습 자료
컨퍼런스 NDC
↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 넥슨코리아 이동현 ● 키워드: #프로그래밍언어 #VSCode #인텔리센스 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
프로그래밍 언어 개발 도구
컨퍼런스 NDC
[NDC21-프로그래밍] 게임 서버를 품은 쿠버네티스
컨퍼런스 NDC
● 설문조사: https://forms.gle/fQp2bW5VrSQGTSaR9 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 데브시스터즈 용찬호 ● 권장 대상: 서버 프로그래머, DevOps 및 인프라 엔지니어 ● 키워드: #클라우드 #쿠버네티스 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
데브옵스 · 인프라
컨퍼런스 NDC
● 설문조사: https://forms.gle/zYktz7D24DUsTWLU9 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 넥슨코리아 성우경 ● 권장 대상: 컴파일러 설계, 프로그래밍 언어에 관심 많으신 분 ● 키워드: #프로그래밍언어 변환 #ANTLR #Scala #Transpiler 설계 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
프로그래밍 언어
컨퍼런스 NDC
[NDC21-커리어] 처음 만드는 건데 실수 좀 할 수 있죠
컨퍼런스 NDC
● 설문조사: https://forms.gle/xDX2BbuNkbYfcSxw9 ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 커리어 ● 발표자: 넥슨코리아 박소현 ● 권장 대상: 학생, 개발자 지망생 ● 키워드: 학생 게임 개발 사례 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
컨퍼런스 NDC
[NDC21-프로그래밍] 로컬라이징 노하우 공유
컨퍼런스 NDC
● 설문조사: https://forms.gle/JG9Y97FfeLYqW8b4A ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 데브캣 김한수 ● 권장 대상: 툴 프로그래머, UI 프로그래머 ● 키워드: #로컬라이징 #개발환경 #글로벌원빌드 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물을 작성, 공중송신, 배포할 수 없습니다.
개발 · 프로그래밍 기타
컨퍼런스 NDC
[NDC] 개발이 쉬워진다? - 생산성을 올려주는 개발자 도구툴
컨퍼런스 NDC
NDC 2019 [개발이 쉬워진다? - 생산성을 올려주는 개발자 도구툴] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 홍진우 2. 발표자 소개 : 6년차 프로그래머, 마비노기 개발을 담당했었으며, 현재 인프라기술팀에서 개발자 도구툴(사이드킥)을 만들고 있습니다. 3. 세션 소개 : 개발 시 버그로 고민할 때가 많습니다. 어떤 부분에서 어떤 문제가 생겼는지 빠르게 확인할 수 있다면 얼마나 좋을까요? 이 세션에서는 문제 상황을 빠르게 파악할 수 있고 작업자의 시간을 아껴주는 개발자 도구툴을 소개합니다. 감사합니다. 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포함)은 해당 저작물의 저작자(발표자 포함) 또는 (주)넥슨코리아 (이하 “권리자”라 합니다)에게 귀속되며, 권리자의 허락 없이 이를 상업적으로 이용하거나 무단으로 도용, 편집, 2차적저작물...
개발 도구