1

Little Background and Scope

Let me put this as straight forward and be as honest as I can. I couldn't find wise and precise answer to my questions and confusions. So I thought Stackoverflow could help me.

I am currently a student who's really interested in developing apps for iOS (iPhone mainly). I did some research about how, where, what, when, who, and all sorts of questions. However, I have got different answers and some of them do not even agree with each other. Before asking my question let me tell you what I know from programming/developing.

I know:

  • Adobe Flash Professional (with ActionScript 3.0)
  • C++ language (with Object Oriented Programming)
  • Bash scripting (doubt that'll help)

I have big interest and enthusiasm for developing, programming, and specially making apps for iOS.


Now My Confusion and Questions

I have read in many palces that to develop applications for iOS devices, you MUST own a MAC, and have Xcode. On the other hand, I have also read that you can create applications for iOS with Adobe Flash as well, since Adobe has AIR now. I am VERY comfortable with Flash and Actionscript 3.0. In fact, I have already made some apps and games with it (which work on pc).

So my first question: Can you develop iOS apps with Flash and Actionscript? If yes, then why are people saying you MUST own a mac and you NEED Xcode? If no, then why not?

First Confusion: Many people are saying Flash is dying and HTML5 is taking its place little by little...!!! is it true? If it is true then it is useless to put time into advancing your knowledge in Flash and ActionScript!!!?

Second Question: If Xcode is the only way to develop for iOS then what is Cocos2dx??!!!!! They claim that you can use their product to develop apps for iOS!! (Using C++)

Second Confusion: Many people say different things about some apps on apple store. What i am REALLY eager to know is that what are games such as MegaRun, MegaJump, Fruit Ninja, and Snake are developped with? Xcode and Objective-C ???

And Finally, Any professional advice would be appreciated as in where I should start (with the knowledge I currently have), whether I really need to learn Objective-C or not.

Matt
  • 974
  • 1
  • 13
  • 31
  • 1
    Regarding Flash, it uses llvm (low level virtual machine) to adapt actionscript virtual machine into byte code that can be executed on ios and wrapped as an app: so most actionscript features will work+some air for ios specific ones. Any other native features won't be available with the flash option unless you write an air native extension(interop layer between air runtime and obj-c) which means you will need to know a bit of obj-c to do that. There are other app wrappers that use html (like phonegap and many others), but again, for low level/less common features you will need extensions... – George Profenza Dec 05 '13 at 17:16
  • 1
    ...performance is also another factor to consider when developing games and a wrapper will in most cases probably won't perform as well as native, but for simple things it might be enough. You can write a simple canvas game for example and it might run fine in the browser on ios or it can be wrapped as an app. If you're thinking about using 3d graphics or building a graphics rich game it makes sense to learn objective c. it might be tough to start, but will pay off (you will have the best performance you can on the platform and have low level control). If you don't want to jump straight into.. – George Profenza Dec 05 '13 at 17:21
  • 1
    ...objective-c and you already know c++ you might want to have a quick play with a creative coding frameworks like [cinder](http://libcinder.org) or [openframewoks](http://openframeworks.cc) where you can code using objective c++ (basically mix c++ and a bit o obj-c) and hopefully you'll ease your way into obj-c. If you're serious about developing games on IOS you will learn obj-c at some point. It up to you how you choose to that (jump straight in, or ease yourself into it). Another approach would be using cocos-2d. It's a Obj-c framework, but it does a lot for you so you can start by... – George Profenza Dec 05 '13 at 17:25
  • 1
    ...hacking away at examples and going back to obj-c concepts you skipped when you need them. Developing games in itself is no easy task: you need to learn about computer graphics, a bit of physics and linear algebra, etc. and doing it on a mobile device (be it ios or otherwise) it an extra challenge, but if you're passionate about what you do, all this challenges will have rewards. Regarding PCs, I guess there might be hacky ways around(cross compilers, virtual machines, building a hackintosh,etc.) but think about the time invested in this. If you're a student you should get a discount... – George Profenza Dec 05 '13 at 17:29
  • 1
    ...and get either a cheap mac mini(which is cheaper than a mac laptop) or even get a second hand/refurbished one or borrow one from a friend if you can. I guess apple are pretty good at building a brand and selling – George Profenza Dec 05 '13 at 17:31
  • @GeorgeProfenza Thank you for your useful comments and explanation. I have no problem with Learning Objective-C. I will directly jump in. And I will be buying a Macbook pro. I will be starting little by little with Xcode and objective-C. But later on, I would like to do a bit more graphical games and applications. That involves working with Xcode and OpenGL???. And finally, would you know how were the games I mentioned created or programmed? Did they use Objective-C? And what did they use for their graphics part? Thank you again – Matt Dec 05 '13 at 17:36
  • 1
    I haven't played them, had a quick look at a few. Fruit ninja looks like something that would be developed using OpenGL ES: it renders 3d meshes with textures/lights/etc., slashing a fruit in 3d and so on. I guess simpler 3d can be partally faked with pre rendered sprite sheets in 2d. If you're not already familiar with 3d (a bit of linear algebra) and opengl, you will need to at some point. You can however start getting familiar with obj-c and do some 2d games using a framework like cocos2d that handles the nitty/gritty stuff for you...then gradually move to 3d. ... – George Profenza Dec 05 '13 at 17:51
  • You might also want to have a look on some [questions and answers on GameDev stackexchange](http://gamedev.stackexchange.com/search?q=ios+game+development) – George Profenza Dec 05 '13 at 17:51
  • Ok ok I see... I have found this link where the person says that for iOS games, you won't need objective-C and that Objective-c is mainly for apps not games. http://stackoverflow.com/questions/7224479/what-is-required-to-develop-iphone-games Is it true? See? that's what confuses me. everyone says different things – Matt Dec 05 '13 at 17:59
  • You are caught up on this quote "Second, you probably aren't going to be using Objective-C all that much for games programming." It's an opinion. Words like 'probably' and phrases like 'all that much' are not at all saying you can't use Objective-C to make games. You notice the topic was closed as 'not constructive'. Clearly there are games made and in the app store made with cocos2d, Unity, corona(lua), Sparrow, and even Flash/AIR. Does your game require a high level of performance or cross platform is imperative? You might choose a different solution for such reasons. – prototypical Dec 05 '13 at 20:17

3 Answers3

3

1: You only need a mac to upload to itunes.

I have developed apps for iOS using AIR on a windows PC. You can do the entire process from a PC, except for one dang thing: You cannot upload your compiled application to itunes without a mac. So for that one little bit, you can borrow someone's mac, or run a virtual mac, or god save us all buy one. A mac mini will do.

2. You can export certificates on windows but it takes more steps.

You CAN get all the certificates you need without a mac. But its much simpler if you have one since the certificate and key exporting is pretty simple using Keychain Access. But you can do the same thing in about 5 slightly tricky steps using openSSL and Putty on a PC. Here's some instructions for that> http://help.adobe.com/en_US/as3/iphone/WS144092a96ffef7cc-371badff126abc17b1f-7fff.html

3. Flash for the web is dying.

Flash seems to be bleeding developer talent like nobodys business. The job market for flash developers has really diminished. But using it for games for iOS is one of the few remaining bright spots. Its too soon to know if flash will die out but it has already become a more niche skill.

As a flash developer with over a decade of experience with the technology, I'm migrating away. My opinion is that you would be better served making apps in objectiveC, or learn Unity 3D. I'm using Unity 3D for my own projects and its a great product with a strong community. And (again more opinion) community matters a LOT in terms of what launguage/tech you should use.

But moving away from opinion: AIR of iOS works great. It's easy to develop with, and the performance is decent. Plus porting to web windows and android is a snap. If you have the tools and the skills, it could be a good choice. But the future is not guaranteed for any of these technologies, nor are the job markets. The important thing is to ship your product. End users will not care what you used to make it.

Plastic Sturgeon
  • 12,527
  • 4
  • 33
  • 47
  • Would you suggest Unity 3D over Cocos 2D? – Matt Dec 05 '13 at 21:52
  • personally, yes. I like C# - it is very similar to Actionscript and Java which I like. Also Unity is multi-platform, and has a great community and support of 3rd party extensions. Its only drawback is some features are not free, but their pricing has gotten more friendly to indies recently. – Plastic Sturgeon Dec 05 '13 at 22:44
1

You don´t need to develop ios flash applications with a mac but you have to create the certificates with a mac. I don´t know why you should need xcode for that.

It´s true that flash is desappearing for mobile app development, they are starting not to supporting it.

If you´re really interested in iOS and not so much in cross application development, you should start learning objective-c

Sadako
  • 352
  • 3
  • 18
  • Again, confusion. Confused when I read the answers to this question VS this answer http://stackoverflow.com/questions/7224479/what-is-required-to-develop-iphone-games – Matt Dec 05 '13 at 17:47
  • I mean on one side everyone says to learn objective-C, but then this person said for games like 2D stuff, objective-C is slow and not used and C++ is used!!!!!!!!!!! – Matt Dec 05 '13 at 17:50
  • 1
    There are games made for iOS using Unity(C#), Corona(Lua), Cocos2D(OBJC), Sparrow(OBJC), now SpriteKit with (OBJC).. etc etc It's simply untrue that C++ is all that is used for making games. All these frameworks are completely capable of making a quality game. Now... that doesn't mean that C++ doesn't have a performance advantage in given areas and offer greater control in a certain areas. But I think asking if Objective-C or C++ is the way to go is going to yield a opinion/preference based answer. And possibly a blatant lie such as "no games are made with Objective-C". – prototypical Dec 05 '13 at 18:44
  • There is a wealth of information about differences between all the frameworks and options if you take the time to google it. http://www.learn-cocos2d.com/2013/03/choose-weapon-cocos2d-iphone-objective-cocos2d-x/ is an example of comparing two options. Much of it depends on YOU. If you have C++ proficiency, then you likely are going to be most efficient by choosing that route. Take some time to learn about all these options.Clearly you do not have to learn Objective-C to make an iOS game. – prototypical Dec 05 '13 at 18:52
  • http://techcrunch.com/2013/03/03/how-halfbrick-studios-develops-games-like-fruit-ninja-age-of-zombies-and-jetpack-joyride/ - articles like this are a google search away. If you are looking to go cross platform, you might want to think twice about using Objective-C. Although, there are now iOS to Android options like Apportable you can look into that do allow you to use Objective-C and target Android. – prototypical Dec 05 '13 at 18:57
  • 1
    Go to the careers page of a company like GetSet that made MegaJump -- http://getsetgames.com/careers/ - You'll notice in their requirements that they want you to have Objective-C, C, and C++ experience as well as Cocos2d - which I believe the game was made with. – prototypical Dec 05 '13 at 19:04
  • @prototypical That was very useful. Also, the graphics can be made with Cocos2d? or will I have to work with OpenGL !!! – Matt Dec 05 '13 at 21:55
  • You do not need a mac to generate your certs. http://help.adobe.com/en_US/as3/iphone/WS144092a96ffef7cc-371badff126abc17b1f-7fff.html – Plastic Sturgeon Dec 05 '13 at 23:46
  • @Matin you can use OpenGL with Cocos2d. http://stackoverflow.com/questions/9768034/opengl-vs-cocos2d-what-to-choose - Your questions are not new ones, it would be most efficient if you utilize google and the search features on this site. – prototypical Dec 06 '13 at 12:39
0

You can develop iOS applications with AIR, as well as Android and Desktop applications. But you will need a Mac for the necessary signing and certificates and so on, as well as the iPhoneSDK. (although it is possible to get a iPhoneSDK running on a Windows 7 PC, but from my experiences it's kind of wacky)

There's nothing wrong with learning or using AS3, especially AIR. As long as AIR gets supported and frameworks are being updated by people, it'll always have a reason to exist (for example in games).