[Cocos2d-X.By.Example.Beginners
Total Page:16
File Type:pdf, Size:1020Kb
Cocos2d-x by Example Beginner's Guide Make fun games for any platform using C++, combined with one of the most popular open source frameworks in the world Roger Engelbert BIRMINGHAM - MUMBAI Cocos2d-x by Example Beginner's Guide Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: April 2013 Production Reference: 1190413 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78216-734-1 www.packtpub.com Cover Image by Roger Engelbert ([email protected]) Credits Author Project Coordinator Roger Engelbert Abhishek Kori Reviewers Proofreader Fabio Cunha Dirk Manuel Stelios Pallis Marcio Valenzuela P Indexers Rekha Nair Acquisition Editor Monica Ajmera Mehta Martin Bell Graphics Lead Technical Editor Valentina D'silva Joel Noronha Production Coordinator Technical Editors Prachali Bhiwandkar Veronica Fernandes Ishita Malhi Cover Work Prachali Bhiwandkar Saijul Shah About the Author Roger Engelbert is a game developer with over ten years of experience in developing online games. He grew up surrounded by video games and thinks of classic, 8-bit arcade titles as a form of art. He is the author behind the blog Done With Computers, which is chock-full of tutorials on game development and design. Roger sincerely hopes to soon live in a world where people of all ages will be given the knowledge and opportunity to experience the joy of building their own games. I would like to thank the people from Packt Publishing who helped me through the process of writing this book. And above all, my family, who lovingly accepted my, "Sorry, I can't do that, I'm writing a book" as an excuse to avoid every task and chore imaginable. (I wonder how long I can keep giving that excuse now that the book has been published...) About the Reviewers Fabio Cunha began web development about three years ago and worked as a mobile developer for two years. He currently works as a frontend developer in an e-learning company. He has his own blog (http://www.fabiosistemas.com.br/blog/) that describes all of the work that he does, and has published games on mobile platforms such as Android, iOS, and Blackberry. I would like to thank my mother, brother, and sister for always supporting me, my dad for teaching me to be a calmer person, and my girlfriend for always staying by my side. Stelios Pallis is 25 years old and lives in Cyprus. He studied Computer Science at the University of Cyprus (UCY), and at the moment he is a postgraduate student there. In 2011, he started developing games, and as a fanatic gamer he loved developing games. In 2012, he founded a startup company called Gamethru, a company for developing mobiles games. Gamethru has already published four mobile games; three are available in Google Play Store and one in App Store. Marcio Valenzuela P is a biochemist who has studied programming as a hobby for over 12 years. He is perseverant, autodidactic, and is always looking into the latest technologies. Marcio started by picking up ASP back in the early 90's as Chief Web Developer for a consulting firm that developed web applications for private companies. He also delved into PHP applications with a MySQL database backend. Then, in 2008, he started on his path down iOS and has had experience in developing applications and games for the platform. His experience is mostly in business applications where there exists a cloud-based web service to interact with, and more recently, in games created in Cocos2d. Marcio is the co-founder of Activasolutions.com and currently runs a small iOS project called Santiapps.com, which programs for companies wishing to enter the iOS platform. Marcio is a forum moderator at RayWenderlich.com. I would like to acknowledge the time I have taken from raising my son to dedicate to this book. I just hope that someday Santiago follows in the programming tradition as it fosters critical skills such as problem-solving and innovation, which is something we share. www.PacktPub.com Support files, eBooks, discount offers and more You might want to visit www.PacktPub.com for support files and downloads related to your book. Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version atwww.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks. TM http://PacktLib.PacktPub.com Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books. Why Subscribe? Fully searchable across every book published by Packt Copy and paste, print and bookmark content On demand and accessible via web browser Free Access for Packt account holders If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access. Table of Contents Preface 1 Chapter 1: Installation 7 Download and installation 7 Time for action – downloading and installing Cocos2d-x 8 Hello-x World-x 9 Time for action – creating an application 9 The folder structure 11 The iOS linkage classes 12 The AppDelegate class 12 The HelloWorldScene class 12 Who begets whom 13 Further information 13 Time for action – running the test samples 14 The other tools 14 Summary 15 Chapter 2: You plus C++ plus Cocos2d-x 17 Cocos2d-x – an introduction 17 The containers 18 The director and caches 19 Then there is all the other stuff 19 But you don't know C++? 19 The interface 20 Time for action – creating the interface 20 The implementation 22 Time for action – creating the implementation 22 Instantiation and memory management 23 Option 1 – use static methods 24 Option 2 – C++, Cocos2d-x style 25 Table of Contents What you get with CCObject 26 Summary 27 Chapter 3: Your First Game – Air Hockey 29 Game configurations 30 Time for action – creating your game project 30 Time for action – laying down the rules 30 Supporting retina displays 31 Time for action – adding the image files 31 Time for action – adding retina support 32 Adding sound effects 32 Time for action – adding the sound files 33 Extending CCSprite 34 Time for action – adding GameSprite.cpp 34 Time for action – implementing GameSprite 35 The actual game scene 36 Time for action – coding the GameLayer interface 37 Time for action – implementing init() 38 Time for action — handling multi-touches 41 Time for action – adding our main loop 44 Time for action – updating scores 47 Summary 49 Chapter 4: Fun with Sprites – Sky Defense 51 The game – Sky Defense 51 The game settings 52 The start project 52 Adding screen support for a universal app 52 Adding background music 53 Initializing the game 53 Using sprite sheets in Cocos2d-x 54 Batch drawing sprites 55 Time for action – creating a CCSpriteBatchNode 56 Bitmap fonts in Cocos2d-x 58 Time for action – creating bitmap font labels 59 Time for action – adding the final screen sprites 60 Time for action – creating our object pools 63 CCActions in a nutshell 64 Time for action – creating actions with Cocos2d-x 64 Animating a sprite in Cocos2d-x 66 Time for action – creating animations 66 Time to make our game tick! 68 [ ii ] Table of Contents Time for action – handling touches 69 Time for action – starting and restarting the game 71 Time for action – updating the game 73 Time for action – retrieving objects from the pool 75 Play the game! 77 Summary 79 Chapter 5: On the Line – Rocket Through 81 The game – Rocket Through 81 The game settings 81 Play first, work later 82 The start project 82 Screen settings 83 So what are particles? 84 Time for action – creating particle systems 85 Creating the grid 87 Drawing primitives in Cocos2d-x 88 Time for action – let's do some drawing! 88 The Rocket sprite 90 Time for action – updating our Rocket 91 Time for Action – handling touches 94 The game loop 98 Time for action – adding the main loop 98 Kill and reset 102 Time for action – adding our resets and kills 102 Summary 104 Chapter 6: Quick and Easy Sprite – Victorian Rush Hour 105 The game – Victorian Rush Hour 105 The game settings 106 Rapid prototyping with Cocos2d-x 106 Time for action – creating placeholder sprites 106 The Player object 108 The Block object 108 The Terrain object 108 Time for action – coding the player 109 Time for action – coding the Block object 112 Planning the Terrain class