Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iLoveCoffee Programming Postmortem
Search
ehooi
April 26, 2013
Programming
2.1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iLoveCoffee Programming Postmortem
ehooi
April 26, 2013
Other Decks in Programming
See All in Programming
どこまでゆるくて許されるのか
tk3fftk
0
270
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.6k
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
270
dRuby over BLE
makicamel
2
390
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.5k
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
310
Oxcを導入して開発体験が向上した話
yug1224
4
350
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.1k
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
110
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
310
Contextとはなにか
chiroruxx
1
380
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
Designing for humans not robots
tammielis
254
26k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
A Soul's Torment
seathinner
6
3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Scaling GitHub
holman
464
140k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
170
Product Roadmaps are Hard
iamctodd
PRO
55
12k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Code Review Best Practice
trishagee
74
20k
Transcript
아이러브커피 개발 포스트모템 - 온라인 게임 프로그래머 입장에서 파티게임즈 CTO
임태형
아이러브커피 과거사 • 2011년 – 1월 회사 설립 – 7월
싸이월드 출시 – 10월 대만 출시 – 12월 중국 출시 • 12월 모바일 개발 시작
당시 상황 • 웹 버전도 계속 라이브 합니다 – #
lines: 40,000 62,000 • Android가 우세하나, iOS도 무시할 순 없다 • 모바일 소셜 그래프 대세가 없다 – 직접 만들자
당시 상황 • 모바일 개발 경험 전무 – 회사에 Mac도
없고, 안드로이드폰도 없음 – 프로그래머 2인으로 시작 • 모바일에 맞도록 기획 – UI 수정 - Mouse Over … – 중력 센서, 터치를 활용한 콘텐츠
울고 싶다
순서 • Game Engine • Logic Converting • Client Optimization
• Server Optimization
GAME ENGINE
엔진 선정 Adobe AIR • 장점 – 코드 유지 –
강력한 2D 렌더러 – Flash • 단점 – 성능 – 안정성 Cocos2D-X • 장점 – Open Source • 단점 – 기능 빈약함 – OpenGL ES 1.1 – 버그 많다 – 툴이 없다
당시 각 파트 진행 상황 • 기획 파트 – UI
기획 중반 작업 – UI 화면 50개 이상 • 그래픽 파트 – UI 디자인 시안 작업 • 프로그래밍 파트 – Legacy 덩어리 ActionScript 코드들 Fla 파일들
UI Editor Cocos Builder 1.0 • Only for Mac •
No Source • No maintenance 자체 개발 • Undo 없으면 안 쓴다 • 자주 죽어도 안 쓴다 • 키보드로 픽셀 단위 조작 • 익숙한 MFC 사용 빠른 초기 버전
UI Editor
UI System • Non-Retina 제거 • UI Event Handling –
Modal / Popup – Multi-touch – Slide
Effect Editor
기능 추가 • Glow Effect • Sprite Masking • Text
Stroke 전부 Flash에 있던 기능
LOGIC CONVERTING
C++로 개발 시작 • 주요 인력은 웹 버전 경험 뿐
– ActionScript + Java • C++ – No Garbage Collection – No Closure 이 속도라면 몇 년은 만들어야 할 판
온라인 게임 경험을 살리자
Lua Patch • 한글변수 • UTF8 파일 지원 • continue
코딩 실수 방지 • strict • class / descriptor •
Visual Studio – Syntax highlighter – Build time syntax check (custom rule)
디버깅 • Debug Console – C++ Crash • Lua Crash
Report Server • VS Debugger – Debug API 너무 느리다
Coroutine 활용 • 절차를 서술 – 그냥 lua 코드 –
지역 변수 – 분기/반복 • yield? – 기본 함수 속
CLIENT OPTIMIZATION
그래픽 리소스 분량 • 인테리어 아이템: 4,500개 • 캐릭터 아이템:
720개 • 캐릭터 애니메이션: 233개 • 각종 아이콘: 1,400개
타겟 스마트폰 사양 • iPhone 3GS – Cortex-A8 600 MHz
– PowerVR SGX535 – 320x480 – 256 MB RAM • Galaxy S – 1 GHz Cortex-A8 – PowerVR SGX540 – 480x800 – 512 MB RAM
리스트 박스 80 Pages
리스트 박스 - 텍스트 버그 발견 • JNI memory leak
• 줄바꿈 무한 루프 버그 최적화 • 바뀔 텍스트 초기화 생략 • 메모리 할당 횟수 줄임 • 복사 횟수 줄임
리스트 박스 - 이미지 • 백그라운드 로딩 • 안 쓰는
텍스처 메모리 해제 • UI 재활용
캐릭터 시스템
None
None
캐릭터 시스템 최적화 • 캐릭터 당 레이어 수 = 16~25
– 레이어 = 텍스처 = Draw Call Texture Atlas
너무 디테일해서 문제
해결한 방법 • 힘으로 구겨 넣음 – 이 정도 만들었으면,
크게 벗어나진 않겠지 – 일부 아이템 수정 512x512 1장
인테리어 아이템 • 메모리/파일 용량 둘 다 문제 • PVRTC?
ETC1? DXT? PNG 8bit? • RGBA4444 (PNG 32bit) – 디더링 – 캐릭터, UI도 일부 적용
SERVER OPTIMIZATION
당시 구조 • Java Socket Server – 성능 향상 –
백섭 가능성 존재 • Mongo DB – 빠르게(만) 개발 • Web server?
모바일 네트워크 • 자동 재접속 시도 • 재접속 성공시 통신
내용 복구 – TCP 처럼 주고 받은 패킷을 맞춰 봄
당시 서비스 상황 • K사 클라우드 서버 – Amazon 대비
50% 이상 저렴 / 기능 부족 – 동시접속자 1만명 처리 / 월 40만원 – 새벽에 간혹 서버 멈춤 (Hang) 자체 서버 구매
트래픽 폭증 대비 Redis 도입 • Cache – 친구 레벨
등 • 소멸성 메시지 – 친구에게 요청 – 친구집 방문 행동 Mongo DB • Collection 분리 • 메모리 증설 • Sharding?
Game Server 장애 처리 • ulimit • iptables – ip_conntrack
• GC options • More Memory • Load balancing – uid % k
최적화 효과 • RU 약 500만 • DAU 약 150만
• CCU 약 22만 • DB 400만원 * 1대 • APP 110만원 * 3대 • IDC 임대료 70만원 / 월 – 단, CDN 별도
마무리
못다 한 이야기 • 패치 시스템 삽질기 • 안드로이드와의 사투
• 파티프렌즈를 아시나요?
하고 싶은 말 • 온라인 게임 프로그래머도 모바일 게임 잘
만들 수 있다 • Cocos2D-X로 개발하는 팀들에 도움이 되길
진행중인 프로젝트 • 아이러브커피 라이브 • SNG 2종 • 캐주얼
1종 • 퍼블리싱 다수
프로그래머느님 모십니다!
[email protected]
[email protected]