Jump to content

Mobile Development : Android & iOS

prolemur

A couple of friends and I are going to make a mobile game. We want to make a game for android and ios.

 

Should we write all of the code native to each platform or use a already existing engine for the game?

 

It is a pretty simple space shooter game with some simplistic styled graphics. If making this decision requires more information please ask.

 

* Going tubing with my family, will be gone for over an hour*

Edited by prolemur
Link to comment
Share on other sites

Link to post
Share on other sites

I would have thought that C/C++ would be one way you could go. It's quite straight forward to interface using Swift/Objective-C/++ for iOS and JNI + NDK for Android.

The single biggest problem in communication is the illusion that it has taken place.

Link to comment
Share on other sites

Link to post
Share on other sites

i whould use something like unity becausee then you only have to do the work once

Link to comment
Share on other sites

Link to post
Share on other sites

I would have thought that C/C++ would be one way you could go. It's quite straight forward to interface using Swift/Objective-C/++ for iOS and JNI + NDK for Android.

C++ would work well for Android but would be significantly harder, and require more experience. Java is more than capable of this. As for IOS, go with Obj-C. More mature.

Link to comment
Share on other sites

Link to post
Share on other sites

I always recommend using the native language. Until you get more experience, and have larger projects to work on it won't be too much of a hassle to support two games. You will get better performance and a better developing experience.

I agree to go with obj-c for iOS. Swift is too new, and not many examples are available.

I would also recommend taking a look at cocos2d-iPhone. It is a very powerful framework for making iOS games. It came out before sprite kit, so it does stuff that the iOS SDK allows you to do, but it is still really easy to pick up. It also had some other tools like spritebuiilder to help you get started, and A LOT of examples online.

On the contrast, there is cocos2d-android which is a java port with the same APIs.

You can also look at cocos2d-x if you want a cross platform c++ version.

Link to comment
Share on other sites

Link to post
Share on other sites

libGDX is beast. I am using it to develop my unofficial ltt forum notification app for android/ios.

I made a shooter in it utlizing box2d as well.

Basically it allows you to develop your game in java and release to desktop, android, iOS through roboVM, and HTML5 (no applet)

 

It has libraries like box2d built in and allows for almost any java library to be used even on iOS/HTML5.

 

libGdx is really well documented and there are plenty of tutorials.

http://libgdx.badlogicgames.com/

Gaming Rig: i5-3570k+H100i (4.3 ghz) | P8Z77-i Deluxe | MSI Twin Frozr 7950 Boost | HX650 | 1TB HGST | 840 Evo 250 GB

Link to comment
Share on other sites

Link to post
Share on other sites

I always recommend using the native language. Until you get more experience, and have larger projects to work on it won't be too much of a hassle to support two games. You will get better performance and a better developing experience.

I agree to go with obj-c for iOS. Swift is too new, and not many examples are available.

I would also recommend taking a look at cocos2d-iPhone. It is a very powerful framework for making iOS games. It came out before sprite kit, so it does stuff that the iOS SDK allows you to do, but it is still really easy to pick up. It also had some other tools like spritebuiilder to help you get started, and A LOT of examples online.

On the contrast, there is cocos2d-android which is a java port with the same APIs.

You can also look at cocos2d-x if you want a cross platform c++ version.

I thought native coding was better too. If I made the game for iOS would I have to get a mac or how would I run the code?

Link to comment
Share on other sites

Link to post
Share on other sites

Yes. Apple requires iOS developers to have an Intel Mac so they can run the XCode IDE.

 

Because of this, there are many platforms and tools which attempt to convert code from other languages into an iOS app and circumvent that Mac requirement. I personally don't really like these tools, and would stay away from them.

 

Most of them are expensive, and there's no guarantee that they'll be around forever. You might end up spending a few hundred dollars, and all of a sudden a year or two later the conversion tool you relied on went out of business and is no longer supports new iOS versions. Even worse, those months or years of time you've spend developing your app for their platform would be wasted and you'd have to figure out a way of porting your app to another language without introducing bugs, or leaving out features.

 

That in itself is easily worth the $600 that a new Mac Mini costs, which is by far the cheapest way of getting a Mac. If you shop around, you can find a slightly older model for $450-500, some MacBooks for $600-700. Currently Apple CA has a refurbished Macbook Air for $729.

 

Plus, as a Mac user for nearly a decade, they're not bad computers to use. Especially for getting stuff done and software development.

 

Since we're talking about $, also keep in mind that Apple requires an iOS Dev account which is $100/yr. The account is only required in order to release your app onto the App Store, and to run the app on actual devices. For free, XCode is provided and you can run your app in a simulator; however, you do need a real device in order to test performance, etc.

Link to comment
Share on other sites

Link to post
Share on other sites

Yes. Apple requires iOS developers to have an Intel Mac so they can run the XCode IDE.

 

Because of this, there are many platforms and tools which attempt to convert code from other languages into an iOS app and circumvent that Mac requirement. I personally don't really like these tools, and would stay away from them.

 

Most of them are expensive, and there's no guarantee that they'll be around forever. You might end up spending a few hundred dollars, and all of a sudden a year or two later the conversion tool you relied on went out of business and is no longer supports new iOS versions. Even worse, those months or years of time you've spend developing your app for their platform would be wasted and you'd have to figure out a way of porting your app to another language without introducing bugs, or leaving out features.

 

That in itself is easily worth the $600 that a new Mac Mini costs, which is by far the cheapest way of getting a Mac. If you shop around, you can find a slightly older model for $450-500, some MacBooks for $600-700. Currently Apple CA has a refurbished Macbook Air for $729.

 

Plus, as a Mac user for nearly a decade, they're not bad computers to use. Especially for getting stuff done and software development.

 

Since we're talking about $, also keep in mind that Apple requires an iOS Dev account which is $100/yr. The account is only required in order to release your app onto the App Store, and to run the app on actual devices. For free, XCode is provided and you can run your app in a simulator; however, you do need a real device in order to test performance, etc.

Thanks for the insight, this is good to know. I guess apple store apps cost more because of that $100 and people not originally having a mac to develop on :P

Link to comment
Share on other sites

Link to post
Share on other sites

So you have a couple of options for developing for those platforms.

 

  1. Going native, Java and Obj-C/Swift
  2. LibGDX (Java)
  3. MonoGame (C#)
  4. Unity (C#/JavaScript (actually UnityScript))

However in all cases you will need to have a Mac (there are options of doing stuff in a VM) and accounts for the Apple Developer portal and Google Play which both cost money.

 

MonoGame isn't entirely free either, it requires you to have accounts for the Xamarin tools but that is a cost of 25 USD per month, which is fairly decent if you are a serious developer.

Unity isn't free either if you want to deveop for those platforms.

So I guess the most cost effective option is Native or LibGDX, the former you won't be able to share much code between platforms, unless you unload a lot of work on a server or such. However, then you might encounter scalability issues.

Link to comment
Share on other sites

Link to post
Share on other sites

So you have a couple of options for developing for those platforms.

 

  1. Going native, Java and Obj-C/Swift
  2. LibGDX (Java)
  3. MonoGame (C#)
  4. Unity (C#/JavaScript (actually UnityScript))

However in all cases you will need to have a Mac (there are options of doing stuff in a VM) and accounts for the Apple Developer portal and Google Play which both cost money.

 

MonoGame isn't entirely free either, it requires you to have accounts for the Xamarin tools but that is a cost of 25 USD per month, which is fairly decent if you are a serious developer.

Unity isn't free either if you want to deveop for those platforms.

So I guess the most cost effective option is Native or LibGDX, the former you won't be able to share much code between platforms, unless you unload a lot of work on a server or such. However, then you might encounter scalability issues.

 

Indeed, if your organisation’s annual turnover is less than USD100,000, you can download and keep the free perpetual license version of our software, use it to develop your content and pitch a prototype to investors or publish a commercial product to Android, iOS and Windows devices without it ever costing you a dime.

source: http://unity3d.com/unity/multiplatform/mobile What about this?

 

Could I do things in a VM for free, does virtualbox work with osx? I think Yosemite or Mavericks is free or fairly cheap which I wouldn't have a problem to pay the license.

Link to comment
Share on other sites

Link to post
Share on other sites

I've run OSX in VMWare Workstation, it took some work to get it running, but it works. Although I am not sure whether it is a breach of their EULA, but that is up to you whether you want to follow it or not.

 

With Unity I meant Unity3D :)

Link to comment
Share on other sites

Link to post
Share on other sites

VirtualBox is cross-platform and works on Windows, Mac OS X, and Linux.

 

Mac OS X Mavericks and Yosemite are both free, however, they're only free to qualified Mac users who have Mac OS X Snow Leopard (only certain Intel Macs support Snow Leopard) or higher installed. If you quality, Mavericks is just a free download from the Mac App Store within Mac OS X. Luckily, the Apple Store still sells Snow Leopard DVDs for $20; though I think you'd have to buy it online as the local stores don't carry them here.

 

Running Mac OS X inside of a Virtual Machine is allowed, however, by Apple's EULA that you must agree to, you can only have up to two VMs running Mac OS X, and it has to be running on an Apple-branded computer. i.e. it's unlawful to install Mac OS X in a VM on Windows. I believe there are exceptions to this rule if you have an OS X Developer account, but you can't quote me on that. This is also the same EULA you must agree to that says you can only install Mac OS X on an Apple-branded computer.

 

As for the free version of Unity, it's also an option. I don't know about Canada, but in the US I would recommend starting an LLC (Limited Liability Company) for the game development company. This way you have clear proof of how much revenue is being made by the entity, and reduce your liability; i.e. you make $100,001 dollars and Unity sues you for lying then your personal assets aren't affected.

 

I've tried Unity a few times in the past, and personally didn't like it. I prefer something like Cocos2D which allows you to control everything via software instead of a IDE GUI.

 

-robodude666

Link to comment
Share on other sites

Link to post
Share on other sites

I've tried Unity a few times in the past, and personally didn't like it. I prefer something like Cocos2D which allows you to control everything via software instead of a IDE GUI.

 

You can do everything that you do in the IDE GUI in code as well, it is entirely up to you how you create objects etc.
Link to comment
Share on other sites

Link to post
Share on other sites

What did I link?

 

You linked to Unity3D, and asked a question... Which made me think you were questioning whether I was talking about something not being Unity3D, but with a similar name.

Link to comment
Share on other sites

Link to post
Share on other sites

You linked to Unity3D, and asked a question... Which made me think you were questioning whether I was talking about something not being Unity3D, but with a similar name.

Ok this is cleared up.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×