Android Game Development for Beginners - Learn Core Concepts
3.4 (147 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
7,040 students enrolled

Android Game Development for Beginners - Learn Core Concepts

Learn Android Game Development with Android Studio and Java by making a complete Plane Shooter game in View
3.4 (147 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
7,040 students enrolled
Last updated 6/2020
English
English
Current price: $51.99 Original price: $74.99 Discount: 31% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 2.5 hours on-demand video
  • 6 articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • You'll be able to build a complete 2D game in less than 3 hours.
  • You'll have a clear understanding of the core concepts behind a 2D game.
  • You'll be able to brush-up your Java skills.
  • You'll be able to create different levels for your game.
  • Monetize your app through Google Admob and start getting some revenue.
Course content
Expand all 25 lectures 02:41:10
+ Introduction to Android Game Development
3 lectures 10:49

Are you confused about choosing a programming language for making Android apps and games?

In short, as a pro, it's completely up to you to choose which better suits your needs depending upon your specific requirement of the project. But as a beginner, you can choose Java for obvious reasons.

Whether for fun or profit, developing Android apps and games can be rewarding, both personally and professionally. You can make your apps for fun, to show off your friends and family or you may be serious about starting your career as a game developer. A game that you build yourself and publish on Play Store can be a great learning experience and can enrich your life either personally or professionally. Either way, you need to have a solid knowledge of app development fundamentals and the skills required to make your Android app or game a reality. But why Android? Because you probably found that Android has a larger amount of users available worldwide. Most smartphones, tablets, phablets, and other devices today use Google Play Store as well as the Amazon Store which is Android based. Exposure is super important for any app to get more downloads by users. Putting it in the Android mainstream market is one way to do that.

But you may be still confused about what programming languages do you need to learn? When it comes to choosing a language, the first and the most preferred option for an Android app is Java, the official language of Android Development and the default language as well. It is the one that most apps on the Google Play Store are built with. Large parts of Android are already written in Java and its APIs are designed to be called primarily from Java. Kotlin is relatively recent and another official language (in addition to C++, primarily used to build APIs or libraries and it's usage is limited in nature) for Android. A lot of games’ engines are made directly with C/C++. To let developers make an optimized part of codes in C/C++, Google offers the Android Native Development Kit or NDK which allows developers to write code in C/C++ that compiles to native code. You can also use Java Native Interface or JNI with NDK. What is JNI? JNI is the Java Native Interface. It defines a way for the bytecode that Android compiles from managed code written in Java or Kotlin to interact with native code written in C/C++. But, it may be cumbersome at times. You can find more information on JNI here and here. The primary difficulty is that JNI is limited on Android and it's relatively slow, and there may be some hard limits imposed at the kernel level. Now, as another alternative, you can also use Flutter - dart language. Flutter is an open-source mobile application development framework created by Google and is used to develop applications for Android and iOS. The companies who are looking for cross-platform solutions can use Flutter. It's also a good thing to know. But, as I said earlier, if you’re new to mobile app development, I’d recommend you to try native app development before jumping onto Flutter because, for a novice, it has a sharper learning curve. In the same way, I recommend making simple games on native android View or SurfaceView class first before jumping into Unity, Unreal, etc. Java has been around longer, so you can find more sample code and tutorials online. And the best thing is Kotlin is similar to Java and sits alongside Java. You can find more on the official site here.

I think language doesn't matter most. The important thing to learn is the development patterns or programming paradigm in a greater sense. Take Object Oriented programming for example. It's really important to understand this because both Java and Kotlin are OOP languages. It's super important that the beginner understands this object oriented programming paradigm first, why we use object-orientation, what is Object, what is a Class, the concept of Abstraction, Encapsulation, Inheritance, Polymorphism and many more to be able to write clean code. If you're curious about learning the OOP paradigm i.e the Object Oriented Programming Fundamentals, Android Games Development with android native View or SurfaceView class, SQLite programming in Android, jQuery for web development, or programming in general, you are welcome to check out or subscribe to my YouTube channel here.

This is the same reason I always say, you should learn to make an android game using Android native View or SurfaceView class before you jump into any framework like Unity, Unreal Engine or Buildbox for example. But, I am not against using it.

Now, learning new development patterns in Java can be accomplished much more quickly than learning a new language. Java has been around for so many years, we can find more solutions and tutorials online, for example, on StackOverflow, Quora, and Wikipedia, which we all use every day. Right? The great thing about Kotlin is its similarity in syntax and interoperability with java meaning we can write code in Kotlin within Java code and vice versa. Anyone can find that on the official site.

According to the official site, "Android Studio 3.0 and later supports all Java 7 language features and a subset of Java 8 language features that vary by platform version. Android Studio does not support all Java 8 language features, but more are being added in future releases of the IDE. " More on this link.

Now, if you want to use lambdas, one of the major features of Java 8 in Android, you can use gradle-retrolamba. It's a gradle build dependency that integrates retrolambda, a tool that converts Java 8 bytecode back to Java 6/7. If you set the compiler in Android Studio to compile Java 8 bytecode, thus allowing lambdas, it'll convert it back to Java 6/7 bytecode which then, in turn, gets converted to dalvik bytecode. It's a hack for if you want to try out some JDK 8 features in Android instead of official support. Maybe this StackOverflow link will give more insight into that.

And Java 9, 10, 11, 12 doesn't add any significant value as Java 8 did, one being lambdas, which Android can handle now. Also, note that there are lots of experimentation going on for 11,12 and should not be used.

Kotlin has it all like an amazing set of standard libraries, extension function, supports functional programming all are good. But so has Java. For Java, the compiler is not backward compatible, but the JVM is, as it can run older bytecodes. Both have an amazing set of libraries. According to Wikipedia, not all languages implement extension methods in an equally safe manner. For instance, languages such as C#, Java, and Kotlin don't alter the extended class in any way, doing so may otherwise break class hierarchies and interfere with virtual method dispatching. This is why these languages strictly implement extension methods statically and use static dispatching to invoke them. Eric Lippert, a principal developer on the C# compiler team, says "Extension methods certainly are not object-oriented. According to a Quora post, Java supports "Functional Style Programming" with Lambdas not "Functional Programming". Functional programming is a wholly different paradigm and traditional OOP based programming languages lack functional features in one way or another. Features like these probably don't make it more efficient than the other, though it can improve the productivity of developers during coding and debugging to some extent and both Java and Kotlin support that. In the case of Kotlin, reducing Boilerplate code (or less code) is only good once the programmer understands why he used it in the first place. Java uses that for a reason and there is meaning in it, not just code.

Finally, I can conclude with, as a professional, it's completely up to you to choose which better suits your needs depending upon your specific requirements or features of the app. But as a beginner, I think it's better to use Java for a few more years to come, understand the OOP paradigm deeply while having an eye on Kotlin. Again, I am not against Kotlin, I would love to see Kotlin grow to be able to use it soon.

If you're curious about Android apps and games development, check out or subscribe to my YouTube channel here.

I promise it will be fun and I am personally here to help!

That's it. Hope that helps. Happy learning!

Which programming language to choose?
06:31
+ Add more fun to this game
4 lectures 34:41
Add sound effects
07:07
Add score
04:40
Add health indicator
07:34
Create a cool explosion effect
15:20
+ GameOver
4 lectures 23:06
Design the GameOver screen
09:24
It's GameOver
11:30
Monetize your app with Google Admob
00:33
Idea for Creating Game Levels
01:38
+ Course Wrap-Up
2 lectures 01:52
Bye for now
00:40
Bonus Lecture
01:12
Requirements
  • We'll be using Java in this course, and since it's an OOP language, it's important to learn OOP fundamentals first. One of my courses titled "Object Oriented Programming Fundamentals" teaches that. Note that, it does not teach Java specifically. But it's important to learn that first to be able to work with Java, Kotlin, C++, Python, C# or any other OOP based languages.
  • You should have Android Studio installed.
  • Some basic programming experience like variable, if-else, loop, method.
Description

Hi, and welcome to my course Android Game Development for Beginners. I am Sandip, and I’ll be guiding you through the process of creating your very own Android games, using Android Studio and Java. Sound exciting? Let’s get started.

This course will introduce some key elements of game programming. I will be covering basic XML Layout designing, Frame by Frame Animation, Object Oriented concept for Animation, detecting Touch Event and Collision, showing Score and Health Indicator. Score is displayed in GameOver screen once the game is over. From the GameOver screen, you can either Restart the game or Exit from it. I will show you how you can save your personal best score using Android SharedPreferences class. I believe the best way to learn game programming is by making one. So, I will walk you through the process of creating a complete Android game, from start to finish, step by step in a completely hands-on fashion, sharing some super useful resources along the way. As we move on, we will be creating a small but complete game called “Plane Shooter”. I'll show you step-by-step how to Create Different Levels for your game and add features like changing game background and increasing the speed of the Planes for every succeeding level to make your game more interesting and fun, in the easiest way possible. This course improves your problem-solving ability as I invite you to find the solution yourself so that you can think and solve your coding problems like a pro. I am also available to support you along the way as much as I can. I'll do the heavy lifting for you so that you can have an enjoyable learning experience and focus on implementing the game features that you want. This course doesn't stop here. I'll demonstrate step-by-step how to monetize your app through Google AdMob Banner and Interstitial ads so that you can start getting some revenue. You can download all the project source codes once you purchase this course which you're free to use for your personal work. As a motivation for you, I've included few real apps made by my students with some help from this course (and/or my other android game development course titled Android Game Development - Create Your First Mobile Game). Isn't it amazing?

Whether for fun or for profit, developing Android games can be very rewarding, both personally and professionally. You can make your own games for fun, to show off your friends and family. You may have been curious about how to make a game. A game that you build yourself and publish can be a great experience and can enrich your life. Either way, you need to have a solid knowledge of game development fundamentals and the skills required to make your Android game a reality.

Why Android for making games? Because you will find Android to have a larger amount of players available, bringing more downloads and engagements in your app. Getting your app to big success is greatly dependent upon its exposure. Putting it in the Android mainstream market Google Play is one way to do that.

Join me on this exciting and rewarding journey to become an Android Game Developer. Enroll now, and let’s get started. 

Who this course is for:
  • This course is perfectly suitable for anyone interested in making Android Games from scratch but don't know where to start.
  • If you want to learn the core concepts of a 2D game development like animation, touch event, collision detection, playing sound, saving score etc. then this course is right for you.
  • If you want to learn game development by writing code in Java.