What should I learn first to develop Android app and game?
July 28, 2013 3:03 PM   Subscribe

I need a guide suggestion on learning for developing Android app and game. First of all, I have no background in programming and I am never good in math. What I do have is artistic skill and two ideas for mobile devices, one calendar app and one time management game.

What I found on the web is that Java seems to be the language to learn if developing an app while C++ is good for developing a game. I can definitely handle graphic art and animation but I have no idea where to start on the programming part. I downloaded SDK (Java) and discovered Cocos2d-X (C++) and I don't know what to do next, haha.

Unfortunately, I am kind of old now so I can't really go back to school and picking up two languages at the same time especially with the time efficiency. Really wish I had all these courses back in my university....

Anyone have suggestion for me. Which should I learn first? Or there are other ways, engine, language, developing strategy...etc. that would suit me better?

Any would be great, thanks for helping!
posted by lanhan to Computers & Internet (7 answers total) 15 users marked this as a favorite
Best answer: Learning to program is a pretty big challenge - if you're hoping that you could learn a little bit of this and that and end up with a game I think the answer is mostly going to be "no". The only way I can see that a non-programmer could make a game is if you found someone who had made a game "engine" that could be configured to express your game idea. This isn't necessarily that much of a long-shot, it's kind of common for games to be developed in this way. But you'd have to find an engine/framework that could be bent to your needs.

Where to start if you have to program it on your own? Well. You're going to have to learn to program. The very basics can be learned in a few weeks. I don't know how to express how much experience you'd need from nothing-to-making-apps but I'm thinking maybe a year? 6 months maybe if you worked on it a lot and were pretty dedicated to it?

And frankly, although making games is fun and a common motivator to learn to program, it's one of the tougher rows to hoe in terms of programming. It requires a confluence of a lot of areas of programming. Often performance is an issue and making things that perform well takes experience/skill. It often requires that you understand and can work with graphics libraries, maybe 3d rendering libraries, etc, etc. IMO the road from "hello world" to a functional game is further than the road to, say, a simple web application or text processing utility or something.

And finally, programming for phones is kind of a finicky business. The "debug cycle" (which is how long it takes to compile/install/run your program) is kind of awful because you have to deploy it to your device or simulator and run it. This means that every time you come across a bug or want to try your program it takes several minutes. It can be very frustrating even to a seasoned programmer.

I'm not trying to be discouraging - I like for people to learn to program, I think it's really a liberating thing to make a computer into a multi-purpose tool instead of a media-consumption device.

Regarding the C++ or Java thing - I think plenty of games could be written in just java. C++ is probably a bit higher performance but I've written games with high level languages before, not every game has high perf requirements. At least understanding very basic java is more or less a requirement to making android apps.
posted by RustyBrooks at 3:16 PM on July 28, 2013 [1 favorite]

Hmm... I don't think you'll be able to make a saleable Android game in a few months. But what you can do is just start making a prototype of your idea. Look at something like Unity. Just try and build something that looks and feels like the game you want to make. Then start learning about all the other things that you'll need to know. Even making a basic prototype will be a start.

Basically my advice is to start making stuff. If you specifically want to make things for Android you're going to have to learn Java anyway, so you could start there. Make something dead simple. Build on it. It's going to be very frustrating to begin with. But persevere and you will be rewarded. Oh, and learn how to use git first. Even when you are just playing with stuff it really helps.
posted by aychedee at 4:15 PM on July 28, 2013 [2 favorites]

Oh, and learn how to use git first.

More to the point, learn how to use github first. Make an account, put your work there. Otherwise I agree with aychedee. Just keep plugging at it. It will be hard, very hard, but if you can persevere you'll be great.
posted by ch1x0r at 4:51 PM on July 28, 2013

There are probably more people who can code than there are people who can create good art assets. Consider putting something up on Craigslist or something to find a partner who's a CS student at a local university or something?
posted by Sequence at 5:32 PM on July 28, 2013

There are probably more people who can code than there are people who can create good art assets. Consider putting something up on Craigslist or something to find a partner who's a CS student at a local university or something?

This is definitely true... I can do the programming part of games just fine, but I have zero art skill and as such anything I make is likely to be pretty crap.
posted by RustyBrooks at 5:53 PM on July 28, 2013

I'll second Unity. Currently using it to make a Android & iOS game. You can publish to both using the free version now. Look into 2d Toolkit if you are doing a 2d game. In my opinion its the best 2d plugin as far as capability, support and performance.

You can program in C# or unityscript, which is similar to javascript. There are many good tutorial series available and the Unity forum is pretty active. I went through these tutorials: Walker Bros. Here's a C# tutorial.
posted by meta87 at 7:38 PM on July 28, 2013

3rding unity.

People sometimes ask me where to start with game development, and it's a really hard question to answer because video games are really complicated things. Even using relatively easy tools like Unity. However, there are lots of resources available. Most of the time, you can google what you want to do + the word "Unity" and there will be a solution someone has come up with.

To learn game development, some people suggest making Pong first and cloning other games to get the hang of game development, this is also a great strategy.

A few people I know have had success with the cooking with Unity series. Personally, I learned Unity via 3DBuzz's Unity video tutorials. Unity has a very dense user interface, and it almost takes someone else to step you through it.

But most of these tutorials will teach you what you need to build a game. That is: How to spawn objects in the game world, how to control objects with the keyboard/mouse, how to detect when two objects run into one another, and how to display the score. The rest of game development is roughly an abstraction of those.

Regardless, Unity is going to be the most user-friendly for you. I have used many game engines and find Unity to be "easy mode" where I can just focus on what I want to make, rather than trying to make it work.
posted by hellojed at 8:36 PM on July 28, 2013 [3 favorites]

« Older Best places in Montreal to check out the...   |   What are some good online resources for... Newer »
This thread is closed to new comments.