Android development begginer's questions

Started by
8 comments, last by BrokenKnight 10 years, 7 months ago

I'm trying to make a game for Android platform. Well, on the begging nothing complicated but:

1.Do I have first to be good at making normal apps, I mean something non-multimedia like music app but something a bit more complicated than app with one button changing background color.

2.Is it better to start with some engine like cocos 2d or unity? Or make something custom (I'm not a big programmer, I just know some basics about java and C++). By custom I don't mean creating own big engine but using for example some basic, build-in options.

I'd be also thankfull for any tips about quick start in android development.

and third question

3.Are all game buttons are made/placed with XML? Generally, how much items/menus/HUD of game are made with XML?

Advertisement

1) You should have a good fundemental understanding of the language you wish to work in if you wish to do game programming effectively. For example, in C++ you need to have your memory management skills locked down as it can be a bottleneck for any game. You will also need to know effective programming for speed because the demands of a game are quite high and unoptimized code will make quite the shit game.

2) It's what you want. Starting from scratch is definitely a more difficult task as you have to do more low level programming and you'll need to understand API's like OpenGL and OpenAL and understand how the GPU works and how data should be worked around and drawn. Starting from a prebuilt engine is your best idea since you can avoid things like this and start off straight with game development. Especially by yourself, starting with an engine makes completing a game a more feasible task.

3) I'm not sure if XML is restricted by the engine or by the phone, but it does make sense. A menu doesn't really need code as much as it needs styling and buttons just need little hooks with which they can call code. I'm building my own engine and i'll probably handle UI with XML.

My partial reply is:

1. You don't have to be good at anything to make a game, but whatever you are good at, your game can benefit from. People who can't hardly program at all have made "games" or "mods" using various tools that allow such things. Making games is such a broad thing that there are not just more than 1 type or approach, there are dozens of valid types of game "development".

Obviously, most people think of "programmer" or "game designer" when they think of "making" games - but plenty of people make cool songs and videos on youtube without being musicians or videographers (using advanced tools like fruity loops).

2. I will tell you that if you want to ANY of the "programming" you should focus ONLY on 2D games, don't even think about doing 3D stuff for YEARS ahead (like 3-5 years minimum). But if you don't care about focusing on the programming part, you can make 3D games using tools out there to do so. However, even then, becoming a master of the tools to the point of making semiprofessional quality stuff is a full career in itself that also takes years.

3. No, not all UI elements are done with XML. Not all are done with any sort of markup at all. But it is very popular currently and I'd say at least half the popular toolkits use some XML like UI markup. In most such cases, the XML is just an easier thing for a layout tool to manipulate, instead of having to read and write code from the tool. But in most cases you can write code instead if you prefer. Typically there is very little benefit for standard UIs to use code unless you are doing stuff like generating the UI from a database or advanced feature.

There is no wrong way to start trying game development - unless whatever you are trying frustrates and discourages you. Do what interests you, and then do something else when it doesn't. But if you get CLOSE to "finishing" something (like 60 or 85% lets say) ... finish it before moving on. You'll feel a lot better later if you can SHOW someone what you did. But if you get 6 weeks into something and realize your original goal will take a year or more ... follow your interests and do what you like.

I personally find both extremes fun (writing the very love level code from scratch, or using a toolkit to get cool results quickly), but I find connecting the 2 difficult, so I just have fun playing in separate worlds.

The answers to these questions depend a lot on what you are aiming for. You are not going to want to use the base android sdk for game development. You are probably going to want to look at other tools/frameworks like Unity or LibGDX. They will get rid of a lot of boilerplate code and make prototyping/development faster.

1) Depends on what toolset you choose. You might choose an engine that abstracts out a lot of the underlying stuff like Unity. If that's the case you probably won't have to look at the native code. It would still be useful to learn for making the final builds or debugging if issues do come up.

2) Depends on what your timeline is. If you want to release a game in like 4-5 months you'd definitely want to go with a pre-made engine. If you absolutely must write your own engine be prepared to spend A LOT more time.

3) Depends on what toolset you choose. The best tools will have a WYSIWYG editor, the format the tool exports is irrelevant. If you write your own engine.....well then you are going to need to write your own editor.....the last thing you want is for your artist wasting time editing XML files.

I think the best thing for you to do is evaluate what you want to accomplish. Then research the best tools to use to get you there. Experiment with a bunch of tools until you find one that suits your needs. Give each tool a good week of experimenting like trying to create a simple asteroid clone in each.

Well, I'm now expeimenting with Unity and cocos2d-x and also reading about OpenGL

Just asking - how long it can take to develop engine for simple game (lets say for platform game in classic style) and what's tools and starting point?

Well, I'm now expeimenting with Unity and cocos2d-x and also reading about OpenGL

Just asking - how long it can take to develop engine for simple game (lets say for platform game in classic style) and what's tools and starting point?

You don't need much of an engine for a classic style platform game so personally i wouldn't even bother with that type of abstraction for such a game.

[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

so you mean that for simple platform its better to make it custom?

1.Do I have first to be good at making normal apps

Probably. In order to program you need to know how to program.

If you don't know how to program then it would be hard to program an app. If you have some programming knowledge but not enough knowledge to make the thing you want to make, you will need to increase your knowledge so you can do the thing, or you will need to use a library that will do that thing so you don't have to.

Ask yourself if you can program the thing you want. Developing for a mobile device is just one more thing in the long list of things needed to make a program. If you cannot make all the parts then you will need to acquire the skills in order to fill in the gap.

So you need to come up with a list of stuff your program needs. Do you know how to program the graphics, animations, scene graphs, levels, and other resources necessary for your game? If you don't, then adding a mobile device is just adding yet another item to the list of things you don't know how to do. It is yet another thing to learn.



2.Is it better to start with some engine like cocos 2d or unity? Or make something custom (I'm not a big programmer, I just know some basics about java and C++). By custom I don't mean creating own big engine but using for example some basic, build-in options.

It can be better, or it can be worse. If your app is a simple game like tic-tac-toe then you will probably have an easy time using the Canvas to draw your shapes on. If your game involves complex rendering techniques that you don't know how to write then you may be better off using a library to do that for you.


3.Are all game buttons are made/placed with XML? Generally, how much items/menus/HUD of game are made with XML?

This is a misunderstanding of XML. XML is not a user interface tool. XML is just a file format used to store data. It is convenient because many tools and libraries support it for data exchange. XML is a container format, it is up to you and your application to what data you store within it.

I know that XML is not UI tool but it was reffered in tutorial I read to create UI in a simpler way in android app so I was wondering if all UI and HUD elements of game can be held with it :)

Well, I'm now expeimenting with Unity and cocos2d-x and also reading about OpenGL

Just asking - how long it can take to develop engine for simple game (lets say for platform game in classic style) and what's tools and starting point?

Here is a pretty good list of android game engines.

If your goal is to make a game go through that list and find the one that is going to make life easiest. If your goal is learning to code then go through and find the one that has the best documentation/code/tutorials.

Time estimate table

(1: Little to no work, 2: A couple of days, 3: A week, 4: Three weeks, 5: Two Months)

Here are a few systems you need to consider when evaluating an engine OR creating one from scratch. Look at each engine you want to use and give it a 1-5 time estimate from that table for getting these systems in:

A) Physics System. This is the bread and butter of all platformers. It needs to be fast, flexible, and easy to edit. You need to get this right because the whole feeling of your game depends on it!

B) Rendering and art pipeline. It needs to at LEAST handle frame by frame animations from a sprite sheet. You need to figure out what your import/export formats are and what tools the artist will use.

C) Level creation pipeline. You will need some level editor that can place objects down with certain sprites/values attached. It needs to export out and your engine needs to read it in.

D) GUI system. You will need a system to handle at LEAST the Screens, dialogs, and basic buttons in the game. You need to figure out what tool the artist will use to place them and how your engine is going to read it in.

E) Sound! You need some way of creating, importing, and playing sound.

F) Player Data. You need some way of saving a players progress.

Developing an engine from scratch for even a simple game can be very time consuming.

This topic is closed to new replies.

Advertisement