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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
App Intentsのビルドプロセスを支える技術
kntkymt
0
360
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
240
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
190
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
310
AHC070解法紹介
eijirou
0
110
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
270
iOSDC2026登壇資料.pdf
riofujimon
0
150
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
140
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
0
270
高専キャリア LT 発表内容
crysta1221
6
5.7k
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.7k
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Believing is Seeing
oripsolob
1
220
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.2k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Faster Mobile Websites
deanohume
310
32k
Building the Perfect Custom Keyboard
takai
2
870
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
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]