Cocos2d-x is a suite of open-source, cross-platform, game-development tools used by millions of developers all over the world.

Overview

cocos2d-x

Win32 Others
Build status Build Status

cocos2d-x is a multi-platform framework for building 2d games, interactive books, demos and other graphical applications. It is based on cocos2d-iphone, but instead of using Objective-C, it uses C++. It works on iOS, Android, macOS, Windows and Linux.

Cocos2d-x Framework Architecture:

cocos2d-x is:

  • Fast
  • Free
  • Easy to use
  • Community supported

Git user attention

  1. Clone the repo from GitHub.

      $ git clone https://github.com/cocos2d/cocos2d-x.git
    
  2. After cloning the repo, please execute download-deps.py to download and install dependencies.

      $ cd cocos2d-x
      cocos2d-x $ python download-deps.py
    
  3. After running download-deps.py.

      cocos2d-x $ git submodule update --init
    

Download stable versions

Documentations and samples

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
  • Integrated with physics engines: Box2d and Chipmunk
  • Particle system
  • Skeleton Animations: Spine 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
  • 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

Build Requirements

  • Mac OS X 10.7+, Xcode 8+
  • or Ubuntu 14.04+, CMake 3.1+
  • or Windows 7+, VS 2015
  • Python 2.7.5+(NOT Python 3)
  • NDK r16+ is required to build Android games
  • Android Studio 3.0.0+ to build Android games(tested with 3.0.0)
  • JRE or JDK 1.6+ is required for web publishing

Runtime Requirements

  • iOS 8.0+ for iPhone / iPad games
  • Android 3.0.0+ for Android
  • OS X v10.9+ for Mac games
  • Windows 7+ for Win games

Environment Setup

Should set up environment before starting a new game or running tests

$ cd cocos2d-x
$ ./setup.py
$ source FILE_TO_SAVE_SYSTEM_VARIABLE

Should invoke this script if using linux system

$ cd cocos2d-x
$ ./install-linux-deps.sh

Running Tests

$ cd cocos2d-x
$ mkdir build
$ cd build
$ cocos run --proj-dir .. -p [mac|win32|android|linux|ios]

How to start a new game

$ cd cocos2d-x
$ ./setup.py
$ source FILE_TO_SAVE_SYSTEM_VARIABLE
$ cocos new MyGame -p com.your_company.mygame -l cpp -d NEW_PROJECTS_DIR
$ cd NEW_PROJECTS_DIR/MyGame
$ mkdir build
$ cd build
$ cocos run --proj-dir .. -p [mac|win32|android|linux|ios]

You can also create a Lua project with -l lua.

Using IDE

If need to debug program, then it is more convinent to use IDE to run and debug it. All platforms other than Android can use CMake to generate corresponding project file. Can refer to Detail CMake Guide for detail information.

For Android, the Android Studio project file lies in PROJECT_DIR/proj.android. Can just use Android Studio to import the exsting project file.

Learning Resources

Spreading the word!

You can help us spread the word about cocos2d-x! We would surely appreciate it!

  • Talk about us on Facebook! Our Facebook Page
  • Tweet, Tweet! Our Twitter
  • Read our Blog and promote it on your social media.

Where to get help

Contributing to the Project

Cocos2d-x is licensed under the MIT License. We welcome participation!

Did you find a bug? Do you have feature request? Do you want to merge a feature?

Contact us

Want an awesome editor?

Cocos Creator is the new generation of Cocos game engine with a full featured editor and content creation friendly workflow. It supports all major platforms allowing games to be quickly released for the web, iOS, Android, Windows, Mac, and various mini-game platforms. A pure JavaScript-developed engine runtime is available on the web and mini-game platforms for better performance and smaller packages. On other native platforms, C++ is used to implement the underlying framework, providing greater operational efficiency. The engine is completely open source, and retains the advantages of Cocos2d-x which includes high performance, customizability, ease for debugging, easy to learn, and small package size.

Issues
  • [big refactoring] Audio latency fix for Android. Support to preload effects on Android now.

    [big refactoring] Audio latency fix for Android. Support to preload effects on Android now.

    PLEASE DONT MERGE BEFORE DEVELOPERS TEST IT. AND MORE COMMENTS NEED TO BE ADDED.

    This Pull Request has done the following things:

    • Supports to preload small audio files and cache them with PCM data buffer
    • MP3/Ogg/... files are decoded to PCM data by OpenSLES API
    • Decoded PCM buffer data matches the best sample rate & buffer size in frames of device by using resampling source code in Android Source (Android 6.0, platform/frameworks/av)
    • Big refactoring for the implementation of AudioEngineImpl for Android, better class responsibility
    • Mixing audio clips by ourself, in this way, we only need a single OpenSLES AudioPlayer for playing many clips and this will fix latency of making a AudioPlayer active and play a track. For now, we only support 32 audio clips being played simultaneously. But AudioEngine module has limited it to 24 clips by default.
    • Adds audio performance test case
    • Supports to preload audio files asynchronously.

    Please help to test it on the Android devices which have low performance. Thanks :)

    platform:android 
    opened by dumganhar 206
  • Android rendering performance issue

    Android rendering performance issue

    Some developers report there is performance issue on Android, specially on Android 6.0 + QHD devices. There are also many tickets in forum reporting about it: http://discuss.cocos2d-x.org/t/cocos2d-x-and-poor-updates/29296.

    critical platform:android 
    opened by minggo 200
  • CCEAGLView:setMarkedText problem in iOS13

    CCEAGLView:setMarkedText problem in iOS13

    • cocos2d-x version: 3.12
    • devices test on: iPhone
    • developing environments
      • NDK version:
      • Xcode version:
      • VS version:
      • browser type and version:

    Steps to Reproduce: input Chinese in TextField just recieve one charactor in setMarketedText , input number or English both ok.

    opened by lxhhuangjin 87
  • CCLabelTTF - sometimes rendering as black boxes on Android

    CCLabelTTF - sometimes rendering as black boxes on Android

    Note

    This issue is migrated from here. It was created at 2014/01/10 20:00:25 +0000

    Description

    From time to time, if I exit my game on Android while text is being displayed with CCLabelTTF, then when I re-enter the game, the text is replaced with black boxes. I’m guessing the texture is getting lost. All other textures are fine though.

    Another way to reproduce the issue:

    start game

    launch some activity (such as an interstitial ad)

    close that activity and return to game

    at this point, have CCLabelTTF display some text ==> here the text is just black boxes

    Also, here’s a related forum post in which more than one developer have experienced this issue: http://cocos2d-x.org/forums/6/topics/42500

    Comments

    • Sheado added comment: Ok,

    After tinkering I found the cause of the problem. I was preparing my CCLabelTTF in applicationWillEnterForeground(). Simply moving the code to a runAction(…callfunc…) fixes the problem.

    I don’t know if this is a bug or if the documentation just needs to be updated to warn people that they should schedule the work to be done on resuming the application.

    • wollf added comment: Problem exists with new Label::createFromTTF. If i create a label label like so: Label::createWithTTF(fontBig,"Example ttf text",TextHAlignment::RIGHT); I hide app to background (pressing HOME button) and when i re-enter it i get "white boxes". normal label: before after re-entering: after

    I think this is caused by not reloading ttfConfig created resources in reloadAllTextures. This is bad and must be fixed, though i can't deal with this myself :( Tested Device: Google Nexus 7(2013)

    • yaxinhoo added comment: @Sheado i got the same , does it fixed?
    • WenHai added comment: Hi guys,which version of Cocos2d-x are you using?
    type:bug critical 
    opened by minggo 70
  • Experimental::AudioPlayer stopped playing sounds after 10 min of game play

    Experimental::AudioPlayer stopped playing sounds after 10 min of game play

    After around 10 min of playing on my game the AudioPlayer stopped playing the audio and start giving me this message on play2d .

    cocos2d::experimental::AudioPlayer::play2d(cocos2d::experimental::AudioCache *):alGenBuffers error code:a003 I tried to clear the cash and re cash on replacing the scenes and it did't fix it . i tried to

    experimental::AudioEngine::end(); But the game crash .

    platform:ios 
    opened by Kotaiba 56
  • Cmake linux mac fixes

    Cmake linux mac fixes

    This should fix 3 issue with my previous path for cmake build system.

    • Compile errors in MacOS X 10.8 (yes too old, but forum post show that exists people that use it)
    • Link with static libraries determined with pkg-config --static --libs not works on almost any Linux distros. So do not try to do it ever. (Someone who needs fully static build on linux, can improve prebuilt libs in external).
    • FindFontconfig.cmake failed to find library on centos, because check FONTCONFIG_INCLUDE_DIRS, but on centos pkg-config returns empty include dirs, because package in standard search location for compiler.

    All this fixed now. And tested, but not against current state. Because after commit: Merge pull request #9193 from pipu/v3_flatbuffers build fully broken as folder external not contains source code for flatbuffers (

    opened by vovkasm 54
  • iPhone 6 and 6 Plus resolution issues

    iPhone 6 and 6 Plus resolution issues

    Using iPhone 6 and 6 Plus, we do not return the proper resolution for those devices.

    The proper resolutions are here: http://www.iosres.com

    Justin thinks that the UIView is returning a scale factor of 2 instead of 3, but I haven't been able to test this quite yet.

    Also, even doing something like:

    glGetIntegerv(GL_VIEWPORT,m_viewport);
    

    returns the wrong values.

    Forum thread: http://discuss.cocos2d-x.org/t/iphone-6-and-iphone-6-plus-resolution-issues/17409

    highlight 
    opened by slackmoehrle 54
  • closed #4150: fix physics position and rotation bug.

    closed #4150: fix physics position and rotation bug.

    1. Fix the bug if a node has a parent, it's physics body position is incorrect.
    2. Set anchor point to middle when invoke Node::setPhysicsBody
    3. Add PhysicsBody set/getPosition/RotationOffset method.
    4. Add PhysicsPositionRotationTest.
    opened by boyu0 53
  • new android project crash in android 5.0.2 device (Nexus 7) when use 3.12

    new android project crash in android 5.0.2 device (Nexus 7) when use 3.12

    This is the process to see this bug:

    1. cocos new test_project -p com.test.test -l cpp
    2. cd test_project
    3. python /Users/jun/Code/cocos2d-x-3.12/tools/cocos2d-console/bin/cocos.py  compile -p android --android-studio --ap android-15 --ndk-mode release --mode release  --output-dir .
    4. adb install test_project-release-signed.apk
    

    When run this test app in android 5.0.2 device (Nexus 7) , it will crash! but in android 4.4 and android 6.0, it was no problem.

    The ndk version is r11c

    type:bug critical platform:android 
    opened by boyjunqiang 52
  • Radial Gradient Layer

    Radial Gradient Layer

    Hello,

    I'm looking for a RadialGradientLayer for cocos2d-x. Discussion started here http://discuss.cocos2d-x.org/t/radial-gradient/26602/6

    I don't know OpenGL and shaders, so I can't implement it in any way. Really looking for solution from cocos2d-x developers.

    Some helpful links from thread: https://github.com/saeedafshari/ShaderLayer https://github.com/SFML/SFML/wiki/Source:-Radial-Gradient-Shader

    Can this feature be added to cocos2d-x? I believe this should be easy to implement for cocos2d-x developers..

    type:request 
    opened by Volodymyr-13 50
  • cocos compile run -p android no longer works after Android SDK update

    cocos compile run -p android no longer works after Android SDK update

    Just updated Android SDK tools to the latest version 25.3.1 and now tools/android.bat no longer works, it reports:

    The "android" command is no longer available.
    For manual SDK and AVD management, please use Android Studio.
    For command-line tools, use
    tools\bin\sdkmanager.bat and tools\bin\avdmanager.bat
    Error running command, return code: 1.
    
    • cocos2d-x version: 3.14

    Steps to Reproduce:

    1. Update android SDK to the latest versions
    2. Launch android app build compile compile -p android or compile run -p android
    opened by dmrdev 49
  • What is the status of this engine ?  is it still updated ?

    What is the status of this engine ? is it still updated ?

    Hey , As you guys putting all the effortes into https://github.com/cocos/engine-native what is the actual status of this engine ? is it maintained ? abandon? are you planing to make it public ? In short what is the future of the engine ?

    According to this git log letest commit was 8 months ago :

    90f6542cf7 - CHP, 8 months ago : V4 macos fix build (#20704)
    84a6afc011 - CHP, 8 months ago : Setup github actions for V4 (#20702)
    084b7c2b81 - nk5, 1 year, 2 months ago : Fixed bug size does not change when the screen is rotated. (#20662)
    247bb14cb0 - Slack-Moehrle, 1 year, 2 months ago : Update cmake readme (#20669)
    95e5d868ce - minggo, 1 year, 7 months ago : Update README.md
    6d14112e01 - 江战, 1 year, 7 months ago : fix zlib (#20634)
    c78c58e7f9 - Tony Tian, 1 year, 10 months ago : Fix @20596 Crash on Android when HttpResponse did not return 200 OK (#20597)
    5bf5619a25 - Andy Duplain, 1 year, 10 months ago : Fix template CMakeLists.txt so correct Info.plist is used. (#20564)
    a8de1ccee2 - Juan Andrés Nin, 2 years, 1 month ago : Add custom programs to ProgramCache (#20496)
    121f8e90bb - coulsonwang, 2 years, 2 months ago : fix crash issue due to the uninitialized (#20457)
    674bb716f7 - Ricardo, 2 years, 3 months ago : Update AudioMacros.h (#20514)
    7157fad9b9 - CHP, 2 years, 3 months ago : Setup precompiled header for all platforms (#20510)
    f888277b9a - minggo, 2 years, 4 months ago : fix cocos command usage for windows
    2656646e55 - Juan Andrés Nin, 2 years, 4 months ago : Fix incorrect rendering with tilemaps with csv data on windows (#20483)
    63d340836b - Jare Guo, 2 years, 5 months ago : Update README.md (#20477)
    38ce692361 - coulsonwang, 2 years, 5 months ago : remove experimental (#20463)
    06367eb772 - coulsonwang, 2 years, 7 months ago : fix drawnode line width issue (#20442)
    c98f105911 - coulsonwang, 2 years, 7 months ago : fix memory leak issue (#20440)
    4c17a75e44 - CocosRobot, 2 years, 7 months ago : [ci skip][AUTO]: updating luabinding & cocos_file.json automatically (#20438)
    41ed468e03 - minggo, 2 years, 7 months ago : set xcode installation path to (#20402)
    8d2646b15c - RH, 2 years, 7 months ago : V4 bmfont improved api (#20406)
    1959c79d31 - RH, 2 years, 7 months ago : V4 uilayout scissorclipping fix (#20415)
    e628a78aec - Arnold, 2 years, 7 months ago : set attribute (#20417)
    cfad5de188 - coulsonwang, 2 years, 7 months ago : fix memory leak (#20423)
    bc800efab7 - Arnold, 2 years, 7 months ago : [bugfix] set CFBundleExectuable in template info.plist (#20425)
    90299f6dde - coulsonwang, 2 years, 7 months ago : set gl framebuffer read and write back again (#20403)
    f46a9a6811 - CocosRobot, 2 years, 7 months ago : [ci skip][AUTO]: updating luabinding & cocos_file.json automatically (#20422)
    47613393a7 - Arnold, 2 years, 7 months ago : [v4] spine v3.8 (#20421)
    9b2a2db6e3 - RH, 2 years, 8 months ago : Fix for issue #19890 (#20407)
    8214f27982 - Arnold, 2 years, 8 months ago : [bugfix] set Info.plist path (#20405)
    ff333f7c0a - minggo, 2 years, 8 months ago : update error link
    f20b14a430 - coulsonwang, 2 years, 8 months ago : no need to convert to RGBA8888  when it is DEFAULT (#20397)
    b53528cb2a - Slack-Moehrle, 2 years, 8 months ago : removed old URLs I could not fine, replaced 404 with new URLS (#20398)
    3ac72c076d - CocosRobot, 2 years, 8 months ago : [ci skip][AUTO]: updating luabinding & cocos_file.json automatically (#20393)
    7234ef9c5f - minggo, 2 years, 8 months ago : update to v4 (#20392)
    
    e3438ed3fd - minggo, 2 years, 8 months ago : fix flicker of fast tilemap (#20387)
    31510ee4fd - Arnold, 2 years, 8 months ago : [CI ]add cocos new for iOS (#20380)
    61ff9ed7c0 - CocosRobot, 2 years, 8 months ago : [ci skip][AUTO]: updating luabinding & cocos_file.json automatically (#20378)
    b35a20c01d - Arnold, 2 years, 8 months ago : fix template (#20377)
    2659f800e7 - coulsonwang, 2 years, 8 months ago : fix incorrect hash structure for RenderPipeline (#20373)
    138843c9a6 - Saber Haj Rabiee, 2 years, 8 months ago : Fix to properly delete easingParams array (#20375)
    9ea4aded75 - Arnold, 2 years, 8 months ago : fix appvenyor env (#20372)
    
    opened by meiry 0
  • RichText._fontElements  Why is the initialization size 20 instead of 0?

    RichText._fontElements Why is the initialization size 20 instead of 0?

    https://github.com/cocos2d/cocos2d-x/blob/cd7446f17956d73041f9b33b37b4c747c6bc1993/cocos/ui/UIRichText.cpp#L361

    I see that properties are looked up in reverse order when they are fetched, and default values are returned when they are not found change pr: https://github.com/cocos2d/cocos2d-x/commit/a8ddbdc12c233c52b2746cd03e806d0fc59c2cdb

    opened by tidys 4
  • Updated the Android build files so a new project builds on creation

    Updated the Android build files so a new project builds on creation

    The Android Gradle Plugin has been updated from 3.4.0 to 7.2.1 -- https://developer.android.com/studio/releases/gradle-plugin#7-2-0 jcenter() has been updated to mavenCentral() -- https://developer.android.com/studio/build/jcenter-migration The gradle wrapper has been upgraded to 7.3.3 (required for the Android Gradle Plugin) -- https://developer.android.com/studio/releases/gradle-plugin#updating-gradle The default ABI has been changed from armeabi-v7a to arm64-v8a since it's mandatory for new games -- https://developer.android.com/games/optimize/64-bit

    opened by patm1987 0
  • How i can take runtime update for spine and cocos2dx v3.17.2

    How i can take runtime update for spine and cocos2dx v3.17.2

    hi all, how i can take runtime update for my older project and current running project with new updated change available in GitHub cocos2dx repository. showing latest commit on version-3 nearly 6 moths ago. i am using coco2dx v3.17.2. also i want to update spine for version 3.17.2… so kindly please help me.

    opened by ashK7 0
ZBar Bar Code Reader is an open source software suite for reading bar codes from various sources

ZBar Bar Code Reader is an open source software suite for reading bar codes from various sources

null 2.3k Aug 4, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.8k Aug 6, 2022
The fastest tools for 3dtiles convert in the world!

English | 简体中文 Introduction Tools for 3D-Tiles convertion. This is a RUST language project with cpp lib to handle osgb data. Tools provided are as fol

null 1.3k Aug 6, 2022
Open source Altium Database Library with over 147,000 high quality components and full 3d models.

Open source Altium Database Library with over 147,000 high quality components and full 3d models.

Mark 1.2k Jul 27, 2022
Dust3D is a cross-platform open-source 3D modeling software

Dust3D is a cross-platform open-source 3D modeling software. Auto UV unwrapping, auto rigging with PBR Material support, pose and motion authoring all in one.

Jeremy HU 2.4k Aug 9, 2022
Metal-cpp is a low-overhead C++ interface for Metal that helps developers add Metal functionality to graphics apps, games, and game engines that are written in C++.

About metal-cpp is a low overhead and header only C++ interface for Metal that helps developers add Metal functionality to graphics applications that

Бранимир Караџић 143 Jul 11, 2022
OpenCorr is an open source C++ library for development of 2D, 3D/stereo, and volumetric digital image correlation

OpenCorr OpenCorr is an open source C++ library for development of 2D, 3D/stereo, and volumetric digital image correlation. It aims to provide a devel

Zhenyu Jiang 53 Jul 30, 2022
The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) representation

DirectX Shader Compiler The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) pr

Microsoft 2.3k Aug 7, 2022
Cross-platform 2D and 3D game engine.

Urho3D Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by O

null 4.1k Jul 31, 2022
Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform AAA Open 3D Engine

Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.

O3DE 5.1k Jul 30, 2022
A completely free, open-source, 2D game engine built on proven torque technology.

Torque2D 4.0 Early Access 1 MIT Licensed Open Source version of Torque2D from GarageGames. Maintained by the Torque Game Engines team and contribution

Torque Game Engines 547 Jul 31, 2022
OpenGL®-Starter is a template for your upcoming OpenGL Projects which has been compiled to run the most basic Hello World OpenGL Program from LearnOpenGL.com.

OpenGL®-Starter OpenGL®-Starter is a template for your upcoming OpenGL Projects which has been compiled to run the most basic Hello World OpenGL Progr

Kushagra 9 Jul 18, 2022
This Project Implement an interactive camera for 3D model using Quaternion. It have some advantages over eulerian camera like no gimbal lock and faster to compute.

Quaternion-Camera This Project Implement an interactive camera for 3D model using Quaternion. It have some advantages over eulerian camera like no gim

Phan Sang 6 Jul 30, 2022
NVRHI (NVIDIA Rendering Hardware Interface) is a library that implements a common abstraction layer over multiple graphics APIs

NVRHI Introduction NVRHI (NVIDIA Rendering Hardware Interface) is a library that implements a common abstraction layer over multiple graphics APIs (GA

NVIDIA GameWorks 389 Jul 31, 2022
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

bgfx - Cross-platform rendering library GitHub Discussions Discord Chat What is it? Cross-platform, graphics API agnostic, "Bring Your Own Engine/Fram

Бранимир Караџић 11.9k Aug 3, 2022
A modern cross-platform low-level graphics library and rendering framework

Diligent Engine A Modern Cross-Platform Low-Level 3D Graphics Library Diligent Engine is a lightweight cross-platform graphics API abstraction library

Diligent Graphics 2.4k Aug 1, 2022
Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

RetroArch RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulat

null 6.9k Aug 3, 2022
Gearcoleco is a cross-platform ColecoVision emulator written in C++.

This is an open source project with its ongoing development made possible thanks to the support by these awesome backers.

Ignacio Sanchez Gines 34 Apr 20, 2022
A small cross-platform graphics library made in C

minigfx Small graphics library made in C Intended to be: Simple to understand Intuitive Fun to use Features Cross platform: Windows and Linux. To see

Laurentino Luna 27 Jul 18, 2021