Создание многоплатформенных игр с использованием cocos2d-x версии 3.0 и выше

Управление данными

В Cocos2d-x метод разработки управляется кодом, и большинство данных игры хранятся в коде, если разработчик не создал свой собственный фреймворк, основанный на данных. В рамках Cocos Creator все сцены будут сериализованы как чистые данные. При запуске эти чистые данные будут использоваться для восстановления таких факторов, как сцены, интерфейсы, анимации и даже компоненты и т. д.

Что такое управляемый кодом и что такое управление данными?

Почему мы называем Cocos2d-x управляемым кодом способ разработки? Например, предположим, что в сцене присутствует персонаж, который будет постоянно ходить в одной области, тогда мы будем программировать следующее:

В этом коде взаимозависимость сцены, информации о местоположении, секция действия и информация анимации реализуются кодом; поэтому он называется управляемым кодом. Также есть некоторые разработчики, которые хранят данные в других документах, но им все же приходится реализовывать парсер данных самим. Даже при использовании некоторых традиционных редакторов парсерам также необходимо парсить данные, экспортируемые из редакторов в сцены.

Но то, что предлагает Cocos Creator, является более основательным методом, основанным на данных. Вся информация, редактируемая в редакторе, будет сериализована в документах данных. При запуске движок будет напрямую преобразовывать данные в объект путем десериализации. Эта процедура принципиально отличается от описанной выше процедуры: свойство категории в движке может быть непосредственно сериализовано или десериализовано. Вам не нужно преобразовывать его каким-либо отношением отображения. График сцены, свойство местоположения и анимация и т. д. В приведенном выше примере могут быть сериализованы редактором в данные. При загрузке сцен данные не требуются, разработчикам необходимо десериализовать всю сцену из данных сцены:

Сериализация

Сериализация и десериализация поддерживает большинство публичных свойств в Cocos Creator. Эти свойства отображаются разработчиками через панель свойств. Разработчики могут произвольно изменять и сохранять свойства в редакторе. Процедура сохранения — это сериализация ресурсов и данные сцены в базу данных ресурсов. Напротив, в процедуре загрузки сцен механизм десериализации может создавать экземпляры соответствующих объектов в соответствии с данными сцены и восстанавливать все свойства, созданные в редакторе.

Более того, сила управляемых данных заключается в том, что компоненты, отредактированные самими пользователями, также могут создавать объявления свойств. Эти свойства могут быть отредактированы в редакторе, сохранены в данных сцены и, наконец, десериализованы в игровые сцены при запуске.

Исходная база данных представлена в виде Assets в редакторе.

Понимание рабочих процессов Cocos Creator с точки зрения управления данными

Будучи отличным от Cocos2d-x, рабочие процессы Cocos Creator ориентированы на создание контента. Разработчики могут столкнуться с различными сложностями в процессе перехода. Тем не менее, при просмотре с точки зрения данных, такие изменения рабочих процессов будут само собой разумеющимися. Данные приводят к возможности свободно редактировать сцены. Разработчики могут не только визуально строить всю сцену, но и редактировать логику игры (редактировать свойства, предоставляемые компонентами), что делает редактор доступным для всех, но не для кода. Как и в предыдущем примере, в Cocos Creator разработчики сначала создают отношения родитель-потомок, задают положение и создают анимацию с помощью редактора, затем проектируют логику узлов в сцене с использованием кода компонента; и собирают компоненты в разные узлы в конце.

How to Start a New Game

  1. Run
  2. Run the script

Example:

###Run the project under the game directory

  • Run Cocos2d-html5 project with a Websever:

  • Compile and run project in Cocos2d-JSB :

And if you have any doubt about the usage, please use with any command to have some help messages.

You can also use prebuilt Xcode or Visual Studio projects which are located in

##Folder structure of new project

  • frameworks
    • cocos2d-html5 : Cocos2d-JS html5 engine source
    • js-bindings : JSB engine source (include Cocos2d-x and JSB)
    • runtime-src : IDE projects (Android, iOS, Mac OS, Win32)
  • publish : Published apps
  • runtime : Debug app files
  • tools : JS Bindings generator
  • res : Your game resource folder for images, sounds, etc
  • src : The source code folder to place your game’s js files
  • main.js : The entrance of your game logic
  • index.html : The web page for hosting your game in web server

##Built-in Projects

There are two prebuilt projects in Cocos2d-JS repo:

Test cases, located in samples/js-tests

Game sample : Moon Warriors, located in samples/js-moonwarriors

And they share the same project files which are located in folder, there are Xcode and Visual Studio projects.

##Main features

  • Support All modern browsers and native platforms
  • Scene management (workflow)
  • Transitions between scenes
  • Sprites and Sprite Sheets
  • Effects: Lens, Ripple, Waves, Liquid, etc.
  • Actions (behaviours):
    • Trasformation Actions: Move, Rotate, Scale, Fade, Tint, etc.
    • Composable actions: Sequence, Spawn, Repeat, Reverse
    • Ease Actions: Exp, Sin, Cubic, Elastic, etc.
    • Misc actions: CallFunc, OrbitCamera, Follow, Tween
  • Basic menus and buttons
  • Integrated with physics engines: and
  • Particle system
  • Skeleton Animations: and Armature support
  • Fonts:
    • Fast font rendering using Fixed and Variable width fonts
    • Support for .ttf fonts
  • Tile Map support: Orthogonal, Isometric and Hexagonal
  • Parallax scrolling
  • Motion Streak
  • Render To Texture
  • Touch/Accelerometer on mobile devices
  • Touch/Mouse/Keyboard on desktop systems
  • Sound Engine support (CocosDenshion library) based on OpenAL or WebAudio on web
  • Integrated Slow motion/Fast forward
  • Fast and compressed textures: PVR compressed and uncompressed textures, ETC1 compressed textures, and more
  • Resolution Independence
  • Modularized engine for customization
  • Open Source Commercial Friendly: Compatible with open and closed source projects
  • OpenGL ES 2.0 (mobile) / OpenGL 2.1 (desktop) based
  • Full WebGL support and auto canvas fallback

How to use ColliderManager

is used to manage collisions. Every scene has an instance of . You can use it like this to listen collision events:

creator::CreatorReader* reader = creator::CreatorReader::createWithFilename("creator/CreatorSprites.ccreator");

// will create the needed spritesheets + design resolution
reader->setup();

// get the scene graph
Scene* scene = reader->getSceneGraph();

auto colliderManager = scene->getColliderManager();
colliderManager->registerCollitionCallback((creator::Contract::CollisionType type,
                                                             creator::Collider* collider1,
                                                             creator::Collider* collider2) {
        if (type == creator::Contract::CollisionType::ENTER)
            colliderManager->enableDebugDraw(true);
        
        if (type == creator::Contract::CollisionType::EXIT)
            colliderManager->enableDebugDraw(false);
        
}, "");

More features of can refer to the header file.

Main features

  • Scene management (workflow)
  • Transitions between scenes
  • Sprites and Sprite Sheets
  • Effects: Lens, Ripple, Waves, Liquid, etc.
  • Actions (behaviours):
    • Transformation Actions: Move, Rotate, Scale, Fade, Tint, etc.
    • Composable actions: Sequence, Spawn, Repeat, Reverse
    • Ease Actions: Exp, Sin, Cubic, Elastic, etc.
    • Misc actions: CallFunc, OrbitCamera, Follow, Tween
  • Basic menus and buttons
  • Particle system
  • Fonts:
    • Fast font rendering using Fixed and Variable width fonts
    • Support for .ttf fonts
  • Tile Map support: Orthogonal, Isometric and Hexagonal
  • Parallax scrolling
  • Motion Streak
  • Render To Texture
  • Touch/Accelerometer on mobile devices
  • Touch/Mouse/Keyboard on desktop
  • Sound Engine support
  • Integrated Slow motion/Fast forward
  • Fast and compressed textures: PVR compressed and uncompressed textures, ETC1 compressed textures, and more
  • Resolution Independent
  • Language: C++, with Lua and JavaScript bindings
  • Open Source Commercial Friendly(MIT): Compatible with open and closed source projects
  • OpenGL ES 2.0 (mobile) / OpenGL 2.1 (desktop) / metal(macos and iOS) based

Limitations

Given that Creator uses a component based model to create its objects, and
cocos2d-x has its monolithic structure, it is only possible to support a limited
subset of Creator features.

Supported nodes:

  • (but only one per scene)
  • :
    • Need cocos2d-x 3.16+ to support img tag, refer to this issue for detail information.
    • Doesn’t support because cocos2d-x’s doesn’t support this features.
    • Doesn’t support because cocos2d-x’s doesn’t support this features. Though cocos2d-x v3.16+ supports this feature, but it is hard for plugin to danymicly supporting it according cocos2d-x’s version.
  • : only supports
  • : iOS should add to the project

Supporting JavaScript scripts would be overkill. If you need JavaScript scripting
support, just use Creator.

Main features

  • Scene management (workflow)
  • Transitions between scenes
  • Sprites and Sprite Sheets
  • Effects: Lens, Ripple, Waves, Liquid, etc.
  • Actions (behaviours):
    • Transformation Actions: Move, Rotate, Scale, Fade, Tint, etc.
    • Composable actions: Sequence, Spawn, Repeat, Reverse
    • Ease Actions: Exp, Sin, Cubic, Elastic, etc.
    • Misc actions: CallFunc, OrbitCamera, Follow, Tween
  • Basic menus and buttons
  • Particle system
  • Fonts:
    • Fast font rendering using Fixed and Variable width fonts
    • Support for .ttf fonts
  • Tile Map support: Orthogonal, Isometric and Hexagonal
  • Parallax scrolling
  • Motion Streak
  • Render To Texture
  • Touch/Accelerometer on mobile devices
  • Touch/Mouse/Keyboard on desktop
  • Sound Engine support
  • Integrated Slow motion/Fast forward
  • Fast and compressed textures: PVR compressed and uncompressed textures, ETC1 compressed textures, and more
  • Resolution Independent
  • Language: C++, with Lua and JavaScript bindings
  • Open Source Commercial Friendly(MIT): Compatible with open and closed source projects
  • OpenGL ES 2.0 (mobile) / OpenGL 2.1 (desktop) / metal(macos and iOS) based

Using Cocos Creator With C++ and Lua Projects

Cocos Creator supports JavaScript, built in. Edit your and source code all from within. However, If you are a C++ or Lua developer, Cocos Creator allows exporting of to sour code for further development. Why isn’t C++ built in, you ask? There is no need to re-invent the wheel. There are many really good development environments out there. Writing a text editor is no trivial task. For this reason, it is best to allow developers to edit source code in the editor of their choice.

What Is Supported?

Cocos2d-x v3.14 and Cocos Creator v1.4 and above are required. If you find some are not supported, upgrading Cocos2d-x and Cocos Creator may add support for them.

The following are supported.

Node Node Node Node Node
Scene Sprite Canvas ScrollView Label
EditBox ParticleSystem TiledMap Button ProgressBar
RichText SpineSkeleton Widget Animations VideoPlayer
WebView Slider Toggle ToggleGroup PageView
Mask Collider Prefab DragonBones

Installing The Plugin

Adding C++ and Lua language support to Cocos Creator is easy:

  • clone the Creator To Cocos2d-x repo.
  • from this repo, copy the creator_project/packages/creator_luacpp_support folder into your Creator project in packages. directory

    In the Project menu inside Creator a new menu option will appear LuaCPP Support.

Plugin Setup

To run the plugin:

  • select Project -> LuaCPP Support -> Setup Target Project. It is required to tell Cocos Creator where to build all the necessary files.

  • select Build. Always use the Build button to build your project before running it. The result is all the needed code and resources to drop into your external build system.

    • C++ projects use these paths:
      source code: NATIVE_PROJECT_ROOT/Classes/reader
      resources: NATIVE_PROJECT_ROOT/Resources/creator

    • LUA projects use these paths:
      source code: NATIVE_PROJECT_ROOT/frameworks/runtime-src/Classes/reader
      resources: NATIVE_PROJECT_ROOT/frameworks/runtime-src/Resources/Creator

Moving from Creator to an external build system

After using the Build function the source code and resources are exported to the filesystem. From here, you can use these items in an external build system.

It is still necessary to set some header and include search paths.

For C++:

For Lua:

Android

When developing for Android the Android.mk needs to be modified. There are a few simple lines to add,

For C++:

For Lua:

Example Usage

Once everything is done, you can add code to tie everything together. It’s elegant and simple:

For C++ projects, just 1 step:

For Lua projects, require 2 steps:

  • register the creator reader bindings

  • add code to access the exported files.

To read about additional features of , refer to the header file.

How to generate the needed files

  • use Cocos Creator to open creator_project
  • click Project -> LuaCPP Support -> Setup Target Project
  • fill in Project Path, it is a c++ or lua project created by cocos2d-x(3.14+) console
  • click Build

Options

  • Export Resource Only, only resources include Creator scene files will be exported, the reader source code won’t. It will be usefull when you don’t want to cover the reader code in Cocos2d-x project.
  • Export Resource Dynamically Loaded, export the resources that might be used in runtime, those resources located at assets/resources.
  • Auto Build After Scene Saved, as the name said, auto build and export resources after Creator scene saved.

You will find:

  • all needed source codes are generated into
  • all needed resources are generated into
Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий