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
3
2k
iLoveCoffee Programming Postmortem
ehooi
April 26, 2013
Tweet
Share
Other Decks in Programming
See All in Programming
Go製CLIツールをnpmで配布するには
syumai
2
1.2k
新しいモバイルアプリ勉強会(仮)について
uetyo
1
250
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)The Basics of Agent Development with ADK — A Demo-Focused Introduction
risatube
PRO
6
1.4k
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
140
AHC051解法紹介
eijirou
0
400
『リコリス・リコイル』に学ぶ!! 〜キャリア戦略における計画的偶発性理論と変わる勇気の重要性〜
wanko_it
1
450
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
750
実践 Dev Containers × Claude Code
touyu
1
170
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
1.9k
Flutterと Vibe Coding で個人開発!
hyshu
1
250
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
10
2.4k
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
2
460
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Facilitating Awesome Meetings
lara
54
6.5k
Speed Design
sergeychernyshev
32
1.1k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Automating Front-end Workflow
addyosmani
1370
200k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Fireside Chat
paigeccino
38
3.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
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]