# Cocos2d

Cocos2d est un framework libre en Python, permettant de développer des applications ou des jeux vidéo.
Attention à ne pas confondre Cocos2d et Cocos2d-X qui sont deux frameworks différents. Le premier est utilisé en Python, le second en C++. Par exemple, le jeu Geometry Dash a été créé avec Cocos2d-X et non Cocos2d.

## Sprites et scènes

Toutes les versions de Cocos2d fonctionnent à l'aide de la primitive de base connue sous le nom de sprite. Un sprite peut être considéré comme une simple image 2D, mais peut également être un conteneur pour d'autres sprites. Dans Cocos2D, les sprites sont disposés ensemble pour former une scène, comme un niveau de jeu ou un menu. Les sprites peuvent être manipulés dans le code en fonction d'événements ou d'actions ou dans le cadre d'animations. Les sprites peuvent être déplacés, pivotés, mis à l'échelle, leur image peut être modifiée, etc.

## Fonctionnalités
### Animation

Cocos2D fournit des primitives d'animation de base qui peuvent fonctionner sur des sprites à l'aide d'un ensemble d'actions et de minuteries. Elles peuvent être enchaînées et composées ensemble pour former des animations plus complexes. La plupart des implémentations de Cocos2D vous permettent de manipuler la taille, l'échelle, la position et d'autres effets du sprite. Certaines versions de Cocos2D vous permettent également d'animer des effets de particules, des effets de filtrage d'image via des shaders (déformation, ondulation, etc.).

### GUI

Cocos2D fournit des primitives pour représenter les éléments d'interface utilisateur courants dans les scènes de jeu. Cela inclut des éléments tels que des zones de texte, des étiquettes, des menus, des boutons et d'autres éléments courants.

### Système physique

De nombreuses implémentations de Cocos2D prennent en charge les moteurs physiques 2D courants tels que Box2D et Chipmunk.

### Audio

Différentes versions de Cocos2D disposent de bibliothèques audio qui encapsulent OpenAL ou d'autres bibliothèques pour fournir des fonctionnalités audio complètes. Les fonctionnalités dépendent de l'implémentation de Cocos2D.

### Prise en charge des scripts

La prise en charge de la liaison à JavaScript, Lua et d'autres moteurs existe pour Cocos2D. Par exemple, Cocos2d JavaScript Binding (JSB) pour C/C++/Objective-C est le code wrapper qui se situe entre le code natif et le code JavaScript utilisant SpiderMonkey de Mozilla. Avec JSB, vous pouvez accélérer votre processus de développement en écrivant votre jeu à l'aide de JavaScript simple et flexible.

## Platformes et langages supportés

| Branch | Target Platform | API Language |
| Cocos2d | Windows, OS X, Linux | Python 2.6, 2.7 or 3.3+, Objective-C |
| Cocos2d-x | iOS, Android, Tizen, Windows, Windows Phone 8, Linux, Mac OS X | C++, Lua, JavaScript |
| Cocos2d-ObjC | iOS, Mac OS X, tvOS | Objective-C, Swift |
| Cocos2d-html5 | HTML5-ready browsers | JavaScript |
| Cocos2d-xna | Windows Phone 7 & 8, Windows 7 & 8, Xbox 360 | C# |
| Cocos Creator | Android, iOS, HarmonyOS | C#, C++, TypeScript, JavaScript |

## Histoire
### Cocos2d (Python)

En février 2008, dans le village de Los Cocos, près de Córdoba, Argentine, Ricardo Quesada, un développeur de jeux, et Lucio Torre ont créé un moteur de jeu 2D pour Python avec plusieurs de leurs amis développeurs. Ils l'ont nommé « Los Cocos » d'après son lieu de naissance. Un mois plus tard, le groupe a publié la version 0.1 et a changé son nom en « Cocos2d ».

### Cocos2d-iPhone

Attiré par le potentiel du nouvel App Store d'Apple pour l'iPhone, Quesada a réécrit Cocos2d en Objective-C et en juin 2008 a publié « Cocos2d pour iPhone » v0.1, le prédécesseur de la famille Cocos2d ultérieure.
Cocos2D-ObjC (anciennement connu sous le nom de Cocos2D-iPhone et Cocos2D-SpriteBuilder), est maintenu par Lars Birkemose.
De plus, le designer anglais Michael Heald a conçu un nouveau logo pour Cocos2d (le logo Cocos2d était auparavant une noix de coco en marche).

### Cocos2d-x

En novembre 2010, un développeur de Chine nommé Zhe Wang a dérivé Cocos2d-x basé sur Cocos2d. Cocos2d-x est également un moteur gratuit sous licence MIT, et il permet de compiler et d'exécuter sur plusieurs plates-formes avec une seule base de code.
En 2013, Quesada a quitté cocos2d-iPhone et a rejoint l'équipe cocos2d-x. En mars 2017, Quesada a été licencié par la société Chukong$^,$. En 2015, 4 branches cocos2d sont activement maintenues.
Cocos2d-x & Cocos2d-html5 sont maintenus et sponsorisés par des développeurs de Chukong Technologies. Chukong développe également CocoStudio, un éditeur WYSIWYG pour Cocos2d-x et Cocos2D-html5, ainsi qu'un fork Cocos3d-x gratuit du projet Cocos3D.

### Autres ports, forks et liaisons

Cocos2d a été porté dans divers langages de programmation et sur toutes sortes de plateformes. Parmi eux, il y a :
* ShinyCocos, en Ruby
* Cocos2d-Android, en Java pour Android
* Cocos2d-windows, en C++ pour Windows XP et Windows 7
* CocosNet, en C# basé sur Mono
* Cocos2d-javascript, en JavaScript pour les navigateurs Web
* Cocos2d-XNA est né dans la communauté cocos2d-x pour supporter Windows Phone 7, mais il est maintenant devenu un projet indépendant utilisant C# et mono pour fonctionner sur plusieurs plates-formes. Jacob Anderson de Totally Evil Entertainment dirige cette branche.
* Cocos3d fonctionne comme une extension de cocos2d-iPhone, écrite en Objective-C. Bill Hollings de Brenwill Workshop Ltd dirige cette branche.
* Axmol Engine est un moteur multiplateforme open source en C++ conçu pour les appareils mobiles, les ordinateurs de bureau et la Xbox, bien adapté au développement de jeux 2D. Il a été lancé en novembre 2019 en tant que fork de Cocos2d-x v4.0.