Sign in to follow this  
rancineb

Tools for iOS/Android Apps

Recommended Posts

rancineb    359

So I'm starting to get back into programming and want to take a shot at game development (hence why I'm here).  I've been going back and forth in my head trying to figure out what direction I want to go.  At first I was thinking PC or xBox games, but now I'm leaning towards learning how to make mobile apps for iOS and Android.  I don't think I'll have the time to commit myself to making a full RPG game like I dream about, so figure I should aim for smaller games and apps for mobile so I have a higher chance of delivering.

 

My end goal is to make a fun, simple RPG mobile game and I have a few ideas that could be neat.  I'm a ways away from that, but that's that point I want to reach.  In the meantime, I want to try and make some basic education apps for my sister who is an elementary teach.  I figure this would be a good start to learn how to programs apps for iOS and Android, and then I can take the next step to make a full game.

 

From all the questions I've asked before and what I've read in other forums, it sounds like C# is the way to go.  What I'm trying to figure out now is the best tools to go about programming apps.  I've always used Visual Studio for programming in the past, but that was a long time ago.  I see that Apple offers a program called Xcode for making apps.  Is this worth getting, or are there other programs (like Visual Studio) that are fine for making apps as long as you get the APIs for iOS and Android.  What's the most popular tools for making apps and games for iOS and Android?

 

Thanks for your help.

Share this post


Link to post
Share on other sites
riverreal    797

For iOS development the standard language is Objective-C. For Android development the standard is Java.

Using the respective SDKs you can create "from scratch".

 

But, you can use "Cocos2d-x" a c++ based framework for both (android + ios). http://www.cocos2d-x.org/

 

Or, Corona SDK, the problem (for me) is the "code-less" part. http://www.coronalabs.com/products/corona-sdk/

 

Or Particle SDK. With Java or ActionScript 3.0. Supports Android, iOS, windows, and HTML5. http://www.particlecode.com/

 

Or Marmalade SDK. With C++. http://www.madewithmarmalade.com/

 

Or Mono touch and Mono droid both with C# http://xamarin.com/monotouch - http://xamarin.com/monoforandroid

 

Or PhoneGap. With Javascript, CSS, or HTML5. Supports multiple mobile platforms. http://phonegap.com/

Share this post


Link to post
Share on other sites
rancineb    359

Also, right now this is just a hobby for me so I don't want to purchase anything to build these apps until I know I have something good and want to publish to the market.  I'm sure there are plenty of tools ideal for hobbyists.

Share this post


Link to post
Share on other sites
riverreal    797

Thanks for the suggestions riverreal.  I'll have to check these out.  Is there a particular one that you like most, or have heard works best?

 

You had better choose a tool that accommodates your likes.

If you are a beginner I recommend to DO NOT start with C++. So we can discard cocos2d-x and marmalade SDK.

If you want programming we can discard Corona SDK.

Particle SDK looks a little bit complex.

Mono solutions looks good for you. It works with C# and it supports android, iOS, windows, linux, mac...

PhoneGap is a mobile aiming framework, so it also is a good option.

 

I'm not passionate with mobile development so I don't have much experience.

I think you should wait for a better answer from a experienced mobile developer. wink.png

Share this post


Link to post
Share on other sites
Lifepower    136

You can also develop native iOS applications using [url=http://wiki.freepascal.org/iPhone/iPod_development]FreePascal[/url].

 

The incoming Mobile Studio of Embarcadero will also allow you to create native iOS and Android applications, which is essentially Delphi for iOS/Android.

Share this post


Link to post
Share on other sites
Chad Smith    1343

I just want to point out some things I don't think have been pointed out yet.

 

To have your app published and put on the Apple App Store you must

* be a registered developer ($99 a year)

* I am almost positive that you must have a Mac to submit it.

 

Now to have it published on the official Google Play Store:

* be a registered developer ($25)

 

It will cost to get a license to publish your MonoTouch games on an actual device.

 

While it is very good that you wan to start small, if you are new I would aim even smaller right now.  Developing apps to be published on a mobile device is still not an easy task and is not really for a beginner.  

 

I am not trying to bust your bubble or anything.  I just wanted to point those things out so you would know.  I wish you the best of luck!

Share this post


Link to post
Share on other sites
Plethora    687

While it is very good that you wan to start small, if you are new I would aim even smaller right now. Developing apps to be published on a mobile device is still not an easy task and is not really for a beginner.

 

Just want to point out that he said for a start he was going to try to work on some basic education apps for his sister the teacher.  Now if he's making specific apps for his sister as a means to help her out in the classroom that seems like a good start to me.  You can manually install and run android apps without ever having to touch the play store (I have no idea if the same holds true on iOS but I would imagine it must be possible even if just for development purposes).

Share this post


Link to post
Share on other sites
rancineb    359

Just want to point out that he said for a start he was going to try to work on some basic education apps for his sister the teacher.  Now if he's making specific apps for his sister as a means to help her out in the classroom that seems like a good start to me.  You can manually install and run android apps without ever having to touch the play store (I have no idea if the same holds true on iOS but I would imagine it must be possible even if just for development purposes).

 

Yes, you are correct.  I'm just looking to make some simple education applications for my sister to get use to creating app for iOS and Android.  I use to be a developer for a few years, but that was many years ago so need to get the rust out.  Figured this is a good start.  I'm definitely not a beginner, just don't know the interfaces and tools to develop.

 

This was actually going to be one of my follow-up questions.  I know you can load apps to android devices, but not sure about iOS devices.  I'm thinking the answer might be no just given Apples background.  Also, I sure hope you don't need a Mac to submit to the App Store.  If that's really the case, then screw them and I'm going android 100%. I don't think that's true though.  Such a limitation.

Share this post


Link to post
Share on other sites
Serapth    6671

If you'v got no budget, but want to target iOS and Android, I would highly suggest Moai, the biggest problem is the lack of documentation, so you will have to puzzle things out yourself.  I've done a series of tutorials that cover about 85% of what you need to know to get started, so you are on your own for the last 15%.  Fortunately, they have hired someone to work on the documentation and community relations, so hopefully things improve.

 

HaXe is another option, but I have little experience.  A number of other options, such as monoGame, libGDX or PlayN require monotouch (400$) to target iOS.

Share this post


Link to post
Share on other sites
Serapth    6671

I just want to point out some things I don't think have been pointed out yet.

 

To have your app published and put on the Apple App Store you must

* be a registered developer ($99 a year)

* I am almost positive that you must have a Mac to submit it.

 

There are ways around this.  Some of the cloud based systems, where you submit your code to their servers and they build it for you, can remove the Mac requirement.  A few tools let you also publish under their registered developer account, but I am unaware of the side effects of doing this.  I personally wouldn't do it, but then, 99$ isn't a huge barrier for me.

Share this post


Link to post
Share on other sites
rancineb    359

Thanks for your suggestion Serapth.  I'll take a look at your tutorials.  I still need to go over the Game Developer one that you're know for.

 

I'm not concerned with paying $99 to be a registered developer when I publish something.  I just don't want to pay $500 upfront for a tool to develop apps and end up not having the time to create something and have the money go to waste.  If I come up with a finished product that I like, then I'd be more then willing to pay a developer fee as well as any licensing for the tools I used.  Right now, I'm just a hobbyist.

 

On a side note, I'm surprised that the only way to publish is paying $99.  I can't imagine people paying that money to submit an app to make fart noises.  HA HA HA.

Share this post


Link to post
Share on other sites
kop0113    2453
If you do decide to use C# (Which is pretty trendy with beginner programmers), then you will also need to pay a fee up front for monotouch / monodroid if you want to run / test your game on iOS or Android.

This is not the case with C++ (though the $99 apple developer fee still is required). Since you already have experience with programming, then I think you might be better off with this.

C/C++ is also the only languages I know of that supports *all* platforms. Not just platforms that a C# virtual machine environment has been ported to. Which might be important if you decide that iOS or Android are not the only platforms you want to target at a later date. (Things like pandora or the raspberry pi come to mind)

Share this post


Link to post
Share on other sites
Serapth    6671

If you do decide to use C# (Which is pretty trendy with beginner programmers), then you will also need to pay a fee up front for monotouch / monodroid if you want to run / test your game on iOS or Android.

This is not the case with C++ (though the $99 apple developer fee still is required). Since you already have experience with programming, then I think you might be better off with this.

C/C++ is also the only languages I know of that supports *all* platforms. Not just platforms that a C# virtual machine environment has been ported to. Which might be important if you decide that iOS or Android are not the only platforms you want to target at a later date. (Things like pandora or the raspberry pi come to mind)

 

There are tons of languages that support all platforms.  JavaScript/HTML ( web and native with third part apps ), Flash, HaXe, LUA, or of course applications like Construct2 or GameMaker.

 

The big downside to C++ on iOS is, well, XCode support for C++ stinks.  I would go far as to say XCode stinks, but some people seem to like it for reasons I can't quite fathom.

Share this post


Link to post
Share on other sites
kop0113    2453

There are tons of languages that support all platforms. JavaScript/HTML ( web and native with third part apps ), Flash, HaXe, LUA, or of course applications like Construct2 or GameMaker.

Flash player for Linux has no 3D support.
Not a single HaXe output runs on raspberry pi, pandora, 90% of UNIX OSes.
LUA needs an interpreter... The reference (and fastest) is for C and this ultimately means that you are going to be using C or C++. If you don't use C/C++, then you are restricted by the limitations of whatever platform / language you have chosen and you are back to square one!
Javascript / HTML needs a pretty new web browser but a large issue is that 3D (via webGL) isnt supported on iOS for mainstream users yet.
Construct 2 or GameMaker... yeah right. These have no support for Linux.

Who the heck would waste their time with any of the above? Doesn't make sense.

The big downside to C++ on iOS is, well, XCode support for C++ stinks. I would go far as to say XCode stinks, but some people seem to like it for reasons I can't quite fathom.

When porting my game from any other platform to iOS... I dont touch Xcode. This is no argument against C++. An IDE for the Mac means very little to a developer when they don't use a Mac for development lol.

Share this post


Link to post
Share on other sites
Serapth    6671

LOL... people care about Linux anymore?

 

Linux on the desktop lost, hard, to Mac OS X.  There is a reason nobody supports Linux anymore.  Perhaps Valve and their push towards Linux will change things, but I highly doubt it.  The OP certainly didn't mention anything about Linux.  There is a very good reason why these cross platform tools don't bother targeting Linux... there is no demand.

 

 

As to IDE meaning very little to a decent developer, that's just nonsense.  An IDE is a productivity tool, and a pretty much universally accepted one.  Cutting off your nose to spite your face is just ludicrousness.  iOS development basically pushes XCode down your throat.   

Share this post


Link to post
Share on other sites
rancineb    359

I watched a couple videos of Xcode usage and wasn't too impressed.  Looked like a drag and drop app maker for junior high kids.  I know that's probably not true and I wasn't viewing videos where they were doing a lot of actually coding, but didn't like the interface much at all.  I know that Apple tries to make it's products easy to use, but developers are a different breed and you need to cater to them as well.

 

Karsten - What do you use for iOS development?  Do you program in C++ for your apps?  I have experience in C++, but sounded like C# was the way to go for creating apps and games as a scripting language if I'm going to use an engine and C++ would be more for building a game completely from scratch (including building an engine).

Share this post


Link to post
Share on other sites
kop0113    2453
rancineb,

I do pretty much all my development in a pretty common text editor (Vim) and then use Makefiles and xcodebuild on my Mac build server to generate the iOS packages.

I have found that C++ and OpenGL to be the easiest to work with for everything because of the simple fact that once you have a rendering context up and running, the rest of the code (pretty much 99.9%) can stay exactly the same for all platforms I have ever used (and probably ever will use).

If you do have your heart set on a specific games engine, then you probably are going to have to use the language that it requires. If you want to do 2D games then I highly suggest C++ and OpenGL and for 3D there are also loads of different libraries to load 3D models etc... that you can put together your own engine extremely easily.

Perhaps all I am saying is don't just jump onto C# because it is "what everyone else uses" because similar was done with VB6* back in the day and once Microsoft dropped it in favour of .NET. People lost a *LOT* of work. Portability and longevity of my code (and hard work) is king in my book!

* VB6 code is not at all compatible with VB.NET.

Share this post


Link to post
Share on other sites
riverreal    797

I watched a couple videos of Xcode usage and wasn't too impressed.  Looked like a drag and drop app maker for junior high kids.  I know that's probably not true and I wasn't viewing videos where they were doing a lot of actually coding, but didn't like the interface much at all.  I know that Apple tries to make it's products easy to use, but developers are a different breed and you need to cater to them as well.

 

Karsten - What do you use for iOS development?  Do you program in C++ for your apps?  I have experience in C++, but sounded like C# was the way to go for creating apps and games as a scripting language if I'm going to use an engine and C++ would be more for building a game completely from scratch (including building an engine).

 

That's true, C++ is a very complex language that lets the programmer to involve different aspects for the program.

But you need to choose a language that you are adapted. If you feel comfortable with it just use it.

 

By the way, Karten_, Is OpenGL very different from OpenGL ES? 

Thanks in advance

Share this post


Link to post
Share on other sites
Serapth    6671

rancineb,

I do pretty much all my development in a pretty common text editor (Vim) and then use Makefiles and xcodebuild on my Mac build server to generate the iOS packages.

I have found that C++ and OpenGL to be the easiest to work with for everything because of the simple fact that once you have a rendering context up and running, the rest of the code (pretty much 99.9%) can stay exactly the same for all platforms I have ever used (and probably ever will use).

If you do have your heart set on a specific games engine, then you probably are going to have to use the language that it requires. If you want to do 2D games then I highly suggest C++ and OpenGL and for 3D there are also loads of different libraries to load 3D models etc... that you can put together your own engine extremely easily.

Perhaps all I am saying is don't just jump onto C# because it is "what everyone else uses" because similar was done with VB6* back in the day and once Microsoft dropped it in favour of .NET. People lost a *LOT* of work. Portability and longevity of my code (and hard work) is king in my book!

* VB6 code is not at all compatible with VB.NET.

 

 

That is a load of bunk.  Visual Studio 6 was released in 1998 and discontinued support in 2008!  That is, stopped formally supporting/patching/updating the product.  10 years!  There are hundreds of millions of lines of VB code running to this day.  Hell, there are probably still millions of people writing VB6 code at this point.  I am no fan of the language, but then, I wasn't the target demographic.

 

Also, unlike VB6, C# is an ECMA standards based language... if Microsoft went away tomorrow, it would live on in the form of Mono.  This sounds like fanboi rubbish you would hear on Slashdot 4 years ago, not the type of stuff discussed here.  Then again, anti-IDE I'm a Vim/Makefile guy sounds very Slashdot too...

Edited by Serapth

Share this post


Link to post
Share on other sites
Serapth    6671

That's true, C++ is a very complex language that lets the programmer to involve different aspects for the program.

 

What does that even mean?

 

Another thing I find boggling is, since when was complexity a good trait in a programming language?

 

 

EDIT: To actually answer your question OpenGL ES is an off-shoot of OpenGL based off OpenGL 2.0.  The programming models are almost identical, so if you are familiar with one, you can use the other with ease.  You can see most of the details here.  

Edited by Serapth

Share this post


Link to post
Share on other sites
riverreal    797

That's true, C++ is a very complex language that lets the programmer to involve different aspects for the program.

 

What does that even mean?

 

Another thing I find boggling is, since when was complexity a good trait in a programming language?

 

 

EDIT: To actually answer your question OpenGL ES is an off-shoot of OpenGL based off OpenGL 2.0.  The programming models are almost identical, so if you are familiar with one, you can use the other with ease.  You can see most of the details here.  

I didn't expressed well, sorry.

 

I never said complexity is a good thing in a language. On the contrary, I was trying to say that C++ is too "heavy". You need to care about memory. 

Basically complex things are made with complex languages.

 

...

So, OpenGL ES has a fixed function pipeline... It is a bad thing, isn't it?

Share this post


Link to post
Share on other sites
kop0113    2453
riverreal,

I dont mean to sound insulting, I really don't but C++ when written properly does not need manual memory management. This demonstrates that you are following a typical trend of this forums. Not trying out C++ before making an opinion and just going by what the rest of the users say. C# however, with threads and critical resources *does* require extremely manual management whereas C++ can use RAII.

As for Seraph and stuff about slash dot.. Not sure. Sounds a bit too trendy for me. Kinda like github and web developers and twitter API integration. Not really my "kinda scene" ;)

I started using Vim exclusively once Microsoft Visual Studio 6 changed and cost me time getting used to the 2002/3 .NET version.

As for OpenGL, the same code can work fine in both ES and normal version. No-one has really used the fixed functionality for about 10 years, unless they are learning or maintaining old software to work on new platforms (something that cannot be done with software like GameMaker once it is no longer on sale without rewriting your own implementation... ridiculous).

Anyways, I am leading this thread offtopic so I am gonna leave this here. Basically to the OP, look around to see what works best for you. Just don't be put off a platform or workflow because it is not "cool"... like slash dot ;)

Share this post


Link to post
Share on other sites
Serapth    6671

 

That's true, C++ is a very complex language that lets the programmer to involve different aspects for the program.

 

What does that even mean?

 

Another thing I find boggling is, since when was complexity a good trait in a programming language?

 

 

EDIT: To actually answer your question OpenGL ES is an off-shoot of OpenGL based off OpenGL 2.0.  The programming models are almost identical, so if you are familiar with one, you can use the other with ease.  You can see most of the details here.  

I didn't expressed well, sorry.

 

I never said complexity is a good thing in a language. On the contrary, I was trying to say that C++ is too "heavy". You need to care about memory. 

Basically complex things are made with complex languages.

 

...

So, OpenGL ES has a fixed function pipeline... It is a bad thing, isn't it?

 

No, OpenGL ES 2 *doesnt* have a fixed pipeline.  The fixed pipeline was removed from normal OpenGL, then added back.

 

I wouldn't call it a bad thing, just a thing.  Fixed pipeline graphics libraries ( GL 1.1, DX9 ) were certainly a heck of a lot easier to learn, but less flexible and more importantly, less well suited towards modern GPUs.

 

In a way silicon design changed from optimizing video cards to perform a lot of functions fast, to performing many many many many many more simpler tasks much much faster.  So, on modern hardware, it should perform a heck of a lot faster.  I am butchering that in my over simplification, but thats the gist of it.

 

Frankly, the world has moved on and fixed pipeline SDKs are a dying breed.  This is one of the big flaws to XNA, it was built around DX9 and a fixed pipeline.  Part of this is a shame though, as it really was a lot easier to comprehend fixed function pieplines.  They were basically just a huge library of functions burned onto silicon.  Now you use smaller building blocks to perform the same action... often adding a great deal of complexity, but also a great deal of flexibility.

 

 

As to C++, I wouldn't consider it's ability to directly allocate memory complex, that speaks more to being a low level language.  I mean C has the same functionality and it's one of the simplest production languages out there.

 

What makes C++ complex is the cruft.  It's basically 4 programming languages smushed together with 20 years of cruft added on.  Hell, C++ templating is itself a turing complete language.  On top, some parts of the language are just (needlessly?) complicated, the inheritance system is certainly one such beast, the linker is another, while the preprocessor is arguably another.  

Edited by Serapth

Share this post


Link to post
Share on other sites
riverreal    797

Karsten_

I love the C++ syntaxis, the structure, the complexity.

I only use C/C++ for my projects. I want to be a proffessional C++ programmer. I really don't like to program in other languages.

 

But the complexity of C++ is a fact. I don't want to mislead anyone.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this