2017년 9월 29일 금요일

Cocos2d의 역사

한눈에 볼 수 있는 Cocos2d의 역사
(The history of Cocos2d in a glimpse)


원글: https://retro.moe/2017/04/16/cocos2d-in-a-glimpse/

Cocos2d 만든 Ricardo Quesada의 Cocos2d의 역사에 대한 블로그를 번역했습니다.

2008년 2월, 아르헨티나 코르도바의 Los Cocos에서 우리는 "Los Cocos" Python 게임 엔진을 시작했습니다.
나중에 Cocos2d로 이름을 변경했습니다. 아이디어는 우리가 PyWeek 용으로 게임을 만들기 위한 게임 엔진을 만드는 것이었습니다. 

PyCamp 2008. Centro Allen Gardiner, Los Cocos, Córdoba, Argentina

Alejandro Cura와 PyAr의 다른 멤버들의 도움을 받아 Lucio Torre, Daniel Moisset, Rayentray Tappa 그리고 제가 게임 엔진 개발을 시작했습니다.
2008년 3월, 우리는 PyCon Chicago에서 라이트닝 토크에서 발표한 베타 버전(또는 알파 버전?)을 발표했습니다.

PyCon March 2008, Chicago. We announced Cocos2d in a lightning talk.

2008년 7월, Lucio와 저는 Euro Python에서 Cocos2d를 발표했습니다. (v0.3 버전?) 

With Lucio Torre at Euro Python 2008 presenting Cocos2d.Vilnius, Lithuania, July 2008

또한 Lucio와 저는 PyCon Ar 2008 및 2009에서 Cocos2d를 발표했습니다.
2010년에는 Claudio Canepa가 새로운 Cocos2d 개발자/관리자가 되었습니다.

Cocos2d-iPhone 

2008년 초쯤에, 애플은 아이폰에 스토어가 있다고 발표했습니다. (앱스토어)
애플은 수익의 30%만을 가져갔습니다. (그 당시에는 통신사가 약 90 %를 차지하고 있었습니다).
게다가 아이폰은 OpenGL ES에 의해 구동되었고, OS는 유닉스 기반이었습니다.

이 무렵, 저는 돈을 벌 수 있는 앱을 만들고 싶었습니다.
저는 이전의 웹(플래시) 및 피처 폰(J2ME)을 가능한 시장으로 봤습니다.
하지만 애플의 발표 이후, 아이폰 전용 게임을 개발하기로 결정했습니다.

저의 iPhone 게임을 만들기 위해 게임 엔진이 필요했기 때문에 Objective-C로 Cocos2d를 다시 작성했습니다.
높은 수준의 디자인은 동일하게 유지되었지만 iPhone에서 동작하도록 실질적인 변화를 만들어야 했습니다. 이것이 바로 "cocos2d-iphone"이 탄생한 입니다.
첫 번째 cocos2d-iphone 버전 (v0.1)은 2008년 6월에 출시되었습니다.

2008년 3월, 저는 iPhone 개발자 라이센스를 얻기 위해 라이센스를 신청했으며,
마침내 2008년 7월에 라이센스를 받았습니다. (지금은 몇 분 안에 얻을 수 있는 반면, 저는 4개월이 걸렸습니다.)
라이센스없이 iPhone 앱에 게임을 게시하는 것은 불가능했습니다.
라이센스를 기다리는 동안 계약 업무도 하고, cocos2d-iphone을 사용하여 써드 파티를 위한 게임을 개발하였습니다.

제 iPhone 개발자 라이센스를 받으면서 저의 첫 번째 게임인 아이폰 용 Sapus Tongue를 만들었습니다.
그러나 상업용 게임을 만드는 것이 저에게는 그다지 재미있지 않다고 생각했습니다. 어느 누구도 쉽게 찾을 수 없었습니다.
cocos2d-iphone이 이미 유명해졌기 때문에, 저는 이 엔진에 풀타임으로 일하기로 결정했습니다.
제가 이렇게 결정할 수 있는 이유는 제가 실제로 cocos2d-iphone을 위한 두 개의 상업적 도구
LevelSVG(cocos2d 상위에 있는 에디터 + 물리엔진)와 Sapus Tongue 소스 코드를 판매함으로써 실제로 생계를 꾸려 나가고 있기 때문입니다.

2009년 초에는 이미 cocos2d-iphone을 사용하여 개발된 앱이 100개 이상 있었습니다.
iPhone App Store에서 1등에 도달한 첫 번째 앱은 Stick Wars입니다. 


Stick Wars: The first cocos2d-iphone game to reach #1 at the iPhone App Store

그 후 많은 cocos2d-iphone 게임이 1위를 차지했습니다.
그리고 대부분의 시간 동안 Top 10에는 적어도 하나의 cocos2d-iphone 게임이 있었습니다.
저는 이것이 2009년부터 2011년 말까지의 사례라고 생각합니다.

cocos2d-iphone은 게임은 뿐만 아니라 애니메이션 책, 사진 응용 프로그램 등을 만들 수 있었습니다.
일부 cocos2d-iphone 게임과 응용 프로그램은 WWDC 2010에서 선보였습니다.
Apple이 자랑스럽게 "Apple 라이브러리를 사용하여 제작한" 게임이라고 설명했으며, 실제로도 cocos2d-iphone으로 제작되었습니다. 

WWDC 2010. Steve Jobs presenting Elements, a cocos2d-iphone application

많은 cocos2d-iphone forks/ports/bindings도 생성되었습니다.
* 적어도 2개의 자바로 포팅된 프로젝트: cocos2d-android and cocos2d-android-1
* C++로 포팅된 프로젝트 : Cocos2d-x
* 2개의 자바스크립트로 포팅된 프로젝트: Cocos2d-HTML5 and Cocos2d-JavaScript
* C#으로 포팅된 프로젝트: CocosNet, Cocos2d-XNA, CocosSharp
* Go로 포팅된 프로젝트: Gocos2d
* Python로 바인딩, 포팅된 프로젝트
* Ruby로 바인딩된 프로젝트: ShinyCocos and support for RubyMotion

2011년 7월, cocos2d-iphone을 3년 이상 사용해본 것과 커뮤니티의 도움을 받아 cocos2d-iphone v1.0을 출시했습니다.
통계 : ~140명의 컨트리뷰터, ~2600개의 커밋 및 63개의 내부 릴리즈.


cocos2d-iphone v1.0 was released in July 2011

많은 사람들이 서로 돕고, 버그 보고서를 열며, Pull Request를 보내고, 기능을 제안하는 등 커뮤니티는 매우 건강했습니다.
cocos2d-iphone을 둘러싼 생태계도 매우 건강했습니다. 많은 cocos2d-iphone 서적이 출판되었고,
많은 편집자 / 도구 (상업용 및 무료 / 오픈 소스 모두)가 cocos2d-iphone을 지원했습니다.
많은 회사가 cocos2d-iphone 개발자를 찾고 있었습니다.

2011년 5월 저는 Zynga에 입사했습니다. Zynga의 일부 iOS 게임에는 cocos2d-iphone을 사용했습니다.
그들을 Android로 이식하기 위해 AndEngine을 사용하여 일부를 다시 작성하고
다른 것들은 AppPortable의 Objective-C/UIKit 스택을 사용하여 이식했습니다.


2012년에 Android는 이미 강세였습니다. 저는 안드로이드를 기본적으로 지원하고 싶었습니다.
(그리고 다른 플랫폼에서도), 3가지 옵션이 있었는데,
1. cocos2d-iphone 개발을 중단하고 Cocos2d-x (the C++ fork) 개발.
2. cocos2d-iphone을 계속 개발하고 Android 용 Cocos2d-iphone을 포팅할 수 있도록 타사 상용  Objective-C 스택 (StellaSDK, NoodleCake 또는 AppPortable 등)을 사용.
3. cocos2d-iphone을 계속 개발하고 cocos2d-iphone을 Android에 포팅하는 오픈 소스 Objective-C 스택을 개발.

저는 써드파티 상용 툴에 의존하기를 원하지 않았고, Objective-C 스택을 작성할 시간이 없었습니다.
Cocos2d-x는 이미 인기가 있었습니다. 그래서 Cocos2d-x 팀을 돕기로 결정했습니다.
우리는 Zynga에서 Cocos2d-x를 사용하기 시작했습니다. 

2012, at Zynga. With Rolando Abarca and Zhe Wang discussing Cocos2d-x’s and cocos2d-iphone’s roadmaps.

Zynga에서 Cocos2d-x 팀의 도움을 받아 우리는 매우 매력적인 툴링 개발했습니다.:
* Cocos2d-x 및 cocos2d-iphone은 기능 호환이 가능합니다. API는 거의 동일했습니다 (물론 C++과 Objective-C 중 하나)
* Viktor Lidholt가 만든 CocosBuilder에는 Scene 에디터, 키 프레임 애니메이션 에디터, JavaScript 스크립팅 등 많은 유용한 기능이 포함되어 있습니다.
* CocosBuilder에서 내보낸 Scene은 cocos2d-iphone과 Cocos2d-x에서 모두 사용할 수 있습니다.

CocosBuilder editor

유일한 단점은 Cocos2d-x와 cocos2d-iphone 간에 기능 호환을 유지하는 것이 비용이 많이 들었기 때문에
이를 해결하기 위해 기능을 두 번 작성해야 한다는 것입니다.
또한 CocosBuilder는 cocos2d-iphone을 기반으로 만들어졌기 때문에 Mac 용 (Windows 버전 없음)에서만 사용할 수 있었으며
이것도 기능을 두 번 작성해야했습니다. Windows 지원은 많은 Cocos2d-x 사용자에게 중요했습니다.

저는 2013년 6월까지 cocos2d-iphone을 계속 개발했고,
그다음에 Lars Birkemose (2016년에 Andrei Volodin에게 다시 전달)에 그 성화를 전달했습니다.
2013년 8월에 나는 Chukong에 입사했습니다.

Cocos2d-x 

Note: Cocos2d-x와 Cocos Studio 뒤에 있는 Chukong은 베이징에 본사를 두고 있는 중국 회사입니다.
Cocos Studio는 베이징에서 개발되었습니다.
Cocos2d-x는 Xiamen (중국 남부)에서 개발 중입니다.
우리는 모든 것을 다했기 때문에 캘리포니아 사무실에 합류했습니다.

Cocos2d-x는 2010년 7월 Zhe Wang에 의해 시작되었습니다.
이것은 cocos2d-iphone의 복제본이었지만 Objective-C 대신 C++로 코딩되었습니다.
그의 목표는 cocos2d-iphone 게임을 uPhone (나중에 취소된 phone 프로젝트)으로 포팅하는 것을 용이하게 하는 SDK를 만드는것이 었습니다.
이식을 용이하게 하기 위해 Cocos2d-x에는 cocos2d-iphone에서 발견된 모든 Objective-C 패턴이 포함되었습니다. 2012년쯤에 (또는 2011 년) Cocos2d-x팀이 Chukong에 합류했습니다.
Chukong은 Cocos2d-x를 세계적 수준의 게임 엔진 / tooling으로 만드는 자원, 의지 및 위치를 확보했습니다.
2013년 Cocos2d-x는 중국 시장 점유율의 약 70%~80%를 차지했습니다.

Chukong에서 우리는 코드에서 Objective-C 패턴 제거, 최신 C++ API 사용, 렌더러 업데이트 (Nite), 3D 기능 추가 (Tony 및 Harrison) 등
Cocos2d-x v3을 설계하고 프로그래머 가이드 문서 작성 (Jason)을 했습니다.

그러나 가장 중요한 것은 에디터였습니다. 우리에게는 에디터가 필요했습니다. Chukong은 Cocos Studio에 많은 리소스를 투자했습니다.
그것은 많은 특징을 가지고 있었지만 UX는 미국/서구 시장에 호소력이 없었으며 Windows에만 있었습니다.

그래서 미국 지사에서 Justin, Nite, Kai는 Cocos2d-x 편집기를 처음부터 개발 시작하여 중국 및 미국/서양 시장을 목표로 했습니다.
(CocosBuilder와 유사하지만 Cocos2d-x 및 Windows 및 Mac과 호환되는 Qt가 이 용도로 사용되었습니다.)

At Beijing, with Hao Wu, Shun Lin, Harrison, Zhe Wang, Nite Luo, Justin Graham.

불행히도 새 에디터는 취소되었습니다. 우리가 Cocos Studio의 UX를 향상 시키려고 노력했지만, 미국/서구 시장을 유치하지 못했습니다. 

Mac version of Cocos Studio with an improved UX

Cocos2d-HTML5 v4, Cocos2d-x v4 렌더러 + HAL, Cocos2d-x 런처, Cocos IDE와 같은 다른 프로젝트도 취소되었습니다.
Cocos Studio조차 취소되었습니다. 

At Xiamen, with Zhe Wang, Ibon Tolosana and Kai Zhao. November 2014

특히 프로젝트가 거의 완료되어가는 중에 프로젝트가 취소되면 실망할 수 있습니다. 그러나 우리의 주요 과제는 훌륭한 비즈니스 모델을 찾는 것이었습니다.
우리는 다른 것을 시도했지만 좋은 것을 찾지 못했습니다.

뒤늦은 시야에서, 이것들은 우리가 해야 한다고 생각한 것들입니다.
* 하나의 에디터에서 작업하세요: Qt 에디터는 Cocos Studio를 대체해야합니다.
* 데이터 내에서 SDKBOX 및 기타 서비스를 제공해야 합니다.
* Focus : 캐주얼/미드 코어 기능 (VR 또는 기타 산만 기능 제외)에서만 동작합니다. 그 범주에서 가장 좋은 것이 되도록 노력해야 합니다.

Cocos2d에서 9년을 일한 후 최근 사건이 발발하여 다른 일을 할 시간이 되었습니다.
다음에 저는 무엇을 해야 할까요? 어떤 사람들은 미래가 IoT라고 말하고 또 다른 사람들은 기계 학습이라고 말하고 나머지는 VR/AR이라고 말합니다. 그들은 모두 잘못되었습니다. 미래는 Commodore 64입니다. See you soon.

댓글 없음:

댓글 쓰기

JIRA Plugin - ScriptRunner 소개 #2

관련 글 소개 #1:  https://pineoc.blogspot.com/2019/03/scriptrunner-1.html ScriptRunner 소개 #2 지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 ...