ݺߣ

ݺߣShare a Scribd company logo
2019 iFunFactory Dev Day
‘아이펀 엔진으로 MO 게임 서버 개발하기’
1
‘아이펀 엔진으로 MO 게임 서버 개발하기’
2019 iFunFactory Dev Day
2
김진욱 CTO (jinuk.kim@ifunfactory.com)
개발 환경 설정하기
Linux + VS Code
2019 iFunFactory Dev Day
1. 시작하기 전에
2. 프로젝트 생성에서 배포까지
3. 데모 프로젝트 톺아보기
4. Q&A
3
2019 iFunFactory Dev Day
시작하기 전에
• 개발용 데스크톱/랩톱 (Windows, macOS, linux)
• Visual Studio Code 1.38 이상 설치
• C++ 개발 환경, 원격 개발 환경 확장 기능 필요
• Linux 서버 혹은 가상 머신 (혹은 docker 인스턴스)
• 아이펀엔진 1.0.0-4320 (experimental) 필요
4
2019 iFunFactory Dev Day
아이펀엔진
• Linux / Windows
• 게임 서버 프레임워크
• UE4, Unity, Cocos-X 지원
5
2019 iFunFactory Dev Day
Visual Studio Code
• Microsoft 제작
• Windows / macOS / Linux 에서 동작
• 다양한 확장 기능 (프로그래밍 언어, 개발 도구, …)
• Linux 원격 개발 지원
6
2019 iFunFactory Dev Day 7
아이펀엔진 + VS Code + Linux 원격 개발
2019 iFunFactory Dev Day
게임 서버 개발하기
8
2019 iFunFactory Dev Day
아이펀 엔진(Linux/C++) 프로젝트 만들기
• Linux 서버에서 프로젝트를 생성
• 생성된 프로젝트에서 사용할 VS Code 설정 생성
9
2019 iFunFactory Dev Day 10
아이펀 엔진(Linux/C++) 프로젝트 만들기 (1)
2019 iFunFactory Dev Day 11
아이펀 엔진(Linux/C++) 프로젝트 만들기 (2)
2019 iFunFactory Dev Day 12
아이펀 엔진(Linux/C++) 프로젝트 만들기 (3)
2019 iFunFactory Dev Day 13
생성한 프로젝트 살펴보기
2019 iFunFactory Dev Day
빌드하기
VS Code 상에서 빌드 실행 (터미널 → 빌드 작업 실행)
14
2019 iFunFactory Dev Day 15
(시연) 빌드하기
2019 iFunFactory Dev Day 16
(시연) 빌드하기: 오류 수정하기
2019 iFunFactory Dev Day
테스트/디버깅
디버그 탭 → (실행할 서버 선택 후) 실행
17
2019 iFunFactory Dev Day 18
(시연) 디버깅하기
2019 iFunFactory Dev Day
패키징/배포하기
VS Code 상에서 패키징 실행
(터미널 → 작업 실행 → Packaging 선택)
19
2019 iFunFactory Dev Day
아이펀엔진 패키징하기
VS Code 상에서 패키징 실행
(터미널 → 작업 실행 → Packaging 선택)
20
2019 iFunFactory Dev Day
패키지 배포하기
• Ubuntu 의 .deb (APT 저장소) / Centos 의 .rpm (YUM 저장소)
• Aptly (.deb 배포 도구)
• createrepo (.rpm 배포 도구)
• 3rd 파티 서비스 - packagecloud.io
• 패키지를 이용해서 docker 이미지 생성 및 배포
• 직접 혹은 자동화된 프로세스로 필요한 서버에 배포
21
2019 iFunFactory Dev Day 22
(시연) 패키징하기
2019 iFunFactory Dev Day 23
(시연) 패키지 설치하기
2019 iFunFactory Dev Day 24
(시연) 설치한 서비스 실행하기
2019 iFunFactory Dev Day
Demo 프로젝트 소개 - Pong
• Atari에서 1972년에 제작한 1:1 대전 아케이드 게임 따라하기
• Pong 게임의 로직에 더해서 아래를 제공:
• 유저 간 매치 메이킹
• 유저의 승/패 기록 저장
• 게임 승/패에 따른 랭킹 서비스 제공
• Facebook 인증으로 로그인
• 유저 수가 늘어도 게임 및 백엔드 서버가 수평 확장
25
2019 iFunFactory Dev Day 26
Pong: 게임 클라이언트
2019 iFunFactory Dev Day 27
Pong: 백엔드 서비스
2019 iFunFactory Dev Day 28
Pong: 백엔드에서 직접 만들 부분
2019 iFunFactory Dev Day
프레임웍을 썼을 때 개발자가 할 일
• 클라이언트 인증에 사용할 서비스 선택 (Facebook, Google, …)
• 인증 서비스 연동은 프레임웍이 처리
• 랭킹의 형태 선택 (랭킹 종류, 동점자 처리 방식 선택, 리셋 주기, …)
• 랭킹 데이터 저장 및 동점 처리, 리셋은 프레임웍이 처리
• 매치메이킹 규칙
• 매치메이킹 과정, 매칭 후 게임 서버로 이동 등은 프레임웍이 처리
• DB에 저장할 데이터 구조 (ORM 구조)
• DB 연결, 샤딩, SP나 SQL query 호출은 프레임웍이 처리
• 네트워크 메시지를 정의하고, 메시지가 왔을 때 처리 로직 작성
29
2019 iFunFactory Dev Day
(언제나) 개발자가 할 일
• Pong 게임의 로직 구현
30
2019 iFunFactory Dev Day 31
(시연) Pong 프로젝트: 인증
2019 iFunFactory Dev Day 32
(시연) Pong 프로젝트: 서버간 이동 (1)
2019 iFunFactory Dev Day 33
(시연) Pong 프로젝트: 서버간 이동 (2)
2019 iFunFactory Dev Day 34
(시연) Pong 프로젝트: 패키징
2019 iFunFactory Dev Day
요약
•Linux 서버 개발을 명령행 대신 VS Code를 써서
원격에서
•아이펀 엔진 + VS Code로 개발 진행
• 로컬 GUI + 원격으로 소스코드 편집
• 로컬 GUI 에서 원격 서비스 디버깅
• 패키지 생성 및 배포 준비
35
경기도 성남시 분당구 대왕판교로 660, 유스페이스1 B동 606호
info@ifunfactory.com 070-4923-6566www.ifunfactory.com

More Related Content

2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱

  • 1. 2019 iFunFactory Dev Day ‘아이펀 엔진으로 MO 게임 서버 개발하기’ 1
  • 2. ‘아이펀 엔진으로 MO 게임 서버 개발하기’ 2019 iFunFactory Dev Day 2 김진욱 CTO (jinuk.kim@ifunfactory.com) 개발 환경 설정하기 Linux + VS Code
  • 3. 2019 iFunFactory Dev Day 1. 시작하기 전에 2. 프로젝트 생성에서 배포까지 3. 데모 프로젝트 톺아보기 4. Q&A 3
  • 4. 2019 iFunFactory Dev Day 시작하기 전에 • 개발용 데스크톱/랩톱 (Windows, macOS, linux) • Visual Studio Code 1.38 이상 설치 • C++ 개발 환경, 원격 개발 환경 확장 기능 필요 • Linux 서버 혹은 가상 머신 (혹은 docker 인스턴스) • 아이펀엔진 1.0.0-4320 (experimental) 필요 4
  • 5. 2019 iFunFactory Dev Day 아이펀엔진 • Linux / Windows • 게임 서버 프레임워크 • UE4, Unity, Cocos-X 지원 5
  • 6. 2019 iFunFactory Dev Day Visual Studio Code • Microsoft 제작 • Windows / macOS / Linux 에서 동작 • 다양한 확장 기능 (프로그래밍 언어, 개발 도구, …) • Linux 원격 개발 지원 6
  • 7. 2019 iFunFactory Dev Day 7 아이펀엔진 + VS Code + Linux 원격 개발
  • 8. 2019 iFunFactory Dev Day 게임 서버 개발하기 8
  • 9. 2019 iFunFactory Dev Day 아이펀 엔진(Linux/C++) 프로젝트 만들기 • Linux 서버에서 프로젝트를 생성 • 생성된 프로젝트에서 사용할 VS Code 설정 생성 9
  • 10. 2019 iFunFactory Dev Day 10 아이펀 엔진(Linux/C++) 프로젝트 만들기 (1)
  • 11. 2019 iFunFactory Dev Day 11 아이펀 엔진(Linux/C++) 프로젝트 만들기 (2)
  • 12. 2019 iFunFactory Dev Day 12 아이펀 엔진(Linux/C++) 프로젝트 만들기 (3)
  • 13. 2019 iFunFactory Dev Day 13 생성한 프로젝트 살펴보기
  • 14. 2019 iFunFactory Dev Day 빌드하기 VS Code 상에서 빌드 실행 (터미널 → 빌드 작업 실행) 14
  • 15. 2019 iFunFactory Dev Day 15 (시연) 빌드하기
  • 16. 2019 iFunFactory Dev Day 16 (시연) 빌드하기: 오류 수정하기
  • 17. 2019 iFunFactory Dev Day 테스트/디버깅 디버그 탭 → (실행할 서버 선택 후) 실행 17
  • 18. 2019 iFunFactory Dev Day 18 (시연) 디버깅하기
  • 19. 2019 iFunFactory Dev Day 패키징/배포하기 VS Code 상에서 패키징 실행 (터미널 → 작업 실행 → Packaging 선택) 19
  • 20. 2019 iFunFactory Dev Day 아이펀엔진 패키징하기 VS Code 상에서 패키징 실행 (터미널 → 작업 실행 → Packaging 선택) 20
  • 21. 2019 iFunFactory Dev Day 패키지 배포하기 • Ubuntu 의 .deb (APT 저장소) / Centos 의 .rpm (YUM 저장소) • Aptly (.deb 배포 도구) • createrepo (.rpm 배포 도구) • 3rd 파티 서비스 - packagecloud.io • 패키지를 이용해서 docker 이미지 생성 및 배포 • 직접 혹은 자동화된 프로세스로 필요한 서버에 배포 21
  • 22. 2019 iFunFactory Dev Day 22 (시연) 패키징하기
  • 23. 2019 iFunFactory Dev Day 23 (시연) 패키지 설치하기
  • 24. 2019 iFunFactory Dev Day 24 (시연) 설치한 서비스 실행하기
  • 25. 2019 iFunFactory Dev Day Demo 프로젝트 소개 - Pong • Atari에서 1972년에 제작한 1:1 대전 아케이드 게임 따라하기 • Pong 게임의 로직에 더해서 아래를 제공: • 유저 간 매치 메이킹 • 유저의 승/패 기록 저장 • 게임 승/패에 따른 랭킹 서비스 제공 • Facebook 인증으로 로그인 • 유저 수가 늘어도 게임 및 백엔드 서버가 수평 확장 25
  • 26. 2019 iFunFactory Dev Day 26 Pong: 게임 클라이언트
  • 27. 2019 iFunFactory Dev Day 27 Pong: 백엔드 서비스
  • 28. 2019 iFunFactory Dev Day 28 Pong: 백엔드에서 직접 만들 부분
  • 29. 2019 iFunFactory Dev Day 프레임웍을 썼을 때 개발자가 할 일 • 클라이언트 인증에 사용할 서비스 선택 (Facebook, Google, …) • 인증 서비스 연동은 프레임웍이 처리 • 랭킹의 형태 선택 (랭킹 종류, 동점자 처리 방식 선택, 리셋 주기, …) • 랭킹 데이터 저장 및 동점 처리, 리셋은 프레임웍이 처리 • 매치메이킹 규칙 • 매치메이킹 과정, 매칭 후 게임 서버로 이동 등은 프레임웍이 처리 • DB에 저장할 데이터 구조 (ORM 구조) • DB 연결, 샤딩, SP나 SQL query 호출은 프레임웍이 처리 • 네트워크 메시지를 정의하고, 메시지가 왔을 때 처리 로직 작성 29
  • 30. 2019 iFunFactory Dev Day (언제나) 개발자가 할 일 • Pong 게임의 로직 구현 30
  • 31. 2019 iFunFactory Dev Day 31 (시연) Pong 프로젝트: 인증
  • 32. 2019 iFunFactory Dev Day 32 (시연) Pong 프로젝트: 서버간 이동 (1)
  • 33. 2019 iFunFactory Dev Day 33 (시연) Pong 프로젝트: 서버간 이동 (2)
  • 34. 2019 iFunFactory Dev Day 34 (시연) Pong 프로젝트: 패키징
  • 35. 2019 iFunFactory Dev Day 요약 •Linux 서버 개발을 명령행 대신 VS Code를 써서 원격에서 •아이펀 엔진 + VS Code로 개발 진행 • 로컬 GUI + 원격으로 소스코드 편집 • 로컬 GUI 에서 원격 서비스 디버깅 • 패키지 생성 및 배포 준비 35
  • 36. 경기도 성남시 분당구 대왕판교로 660, 유스페이스1 B동 606호 info@ifunfactory.com 070-4923-6566www.ifunfactory.com