Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
Jetpack Compose メカニズム
skydoves
0
390
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
Building an Out-of-Order CPU
latte72
1
770
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
200
スマート反転とウェブアクセシビリティ
camiha
0
200
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
140
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
200
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
710
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
120
一人だけ、Kiroが静止する日
hideg
0
100
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
960
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
The agentic SEO stack - context over prompts
schlessera
0
940
Building AI with AI
inesmontani
PRO
1
1.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Heart Work Chapter 1 - Part 1
lfama
PRO
9
36k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Tell your own story through comics
letsgokoyo
1
1.1k
Abbi's Birthday
coloredviolet
3
10k
Why Our Code Smells
bkeepers
PRO
340
58k
Documentation Writing (for coders)
carmenintech
77
5.5k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
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]