Sprite Kit and IOS Development - ios

Just a few questions which I can't find answers to anywhere:
To code games for IOS using Sprite Kit, do you also need to know Objective-C or Swift?
Can you code high quality games without knowing Objective-C or Swift?
Thanks!

SpriteKit is an Apple framework developed for Objective-C / Swift application. So, yes you'll need at least some code basics notions.
"Yes". You might be able to develop game with Unity2D for example, but that would include using another language to write your scripts.

I'll try to expand a little bit previous answer.
SpriteKit is an Apple framework developed for 2D/3D games. It uses Swift or Objective-C. Advantage of using this is that you can be 100% sure that this game will work flawlessly on iOS devices. Disadvantage is that you are locked only to iOS devices. If you have 0 knowledge of Swift or Objective-C, and you wish only to develop for iOS, I would choose Objective-C. It seems a little harder to learn and understand, but compared to Swift to it seems that Objective-C is still (and will be for long time) superior to Swift. Although, it just be my personal preference, because I truly hate Swift. (You can achieve same things in both languages) :)
I started this way, I do not regret.
You can develop games and apps for iOS without knowledge of Objective-C or Swift. You can use programs like Unity, Unreal engine, Corona, Cocos2D/3D. However these programs require learning another language to write your game (c++ or something else). You can also use GameSalad for 2D games. It requires 0 coding, many things are drag and drop, but you do need to understand logic behind it. For example, it wouldn't be programming but it would be coding :)
GameSalad is easy to learn, fun as well, but forget that you will be able to create any serious game logic or more advanced game than 2D platform one. I tried it, but very soon changed to Objective C and XCode.
If you decide to go with learning actual language (which I would strongly suggest), I would recommend either Objective-C or to learn Ionic software. Ionic uses javascript, but when you learn how to make games/apps you can easily distribute it to ANY platform: iOS, Windows mobile, Android...XCode is better software, but learning Ionic has huge advantage, and that is single click to deploy app on any platform.
Good luck.

Related

Xcode (swift) vs Unity for isometric 2d mobile-apps - Performace, Package Size

Let's assume I want to develop an isometric 2D mobile-game such as Clash of Clans for example.
My main target would be iOS but of course Android would be nice, too (but not a must-have).
Now I have to decide to either program with Apples XCode (therefore Swift as a language, which I am already pretty familiar with), or develop my game with Unity3D (and therefore C# as a language, which I am also pretty familiar with).
Personally, I don't prefer one over the other.
So much for the set-up.
As I don't have any preferences, I'd like to choose the one that offers the most benefits for my 2.5D game to me.
The questions:
Is there a difference in getting an approval for the App-Store if you program in Swift, or use Unity; C#?
How big is the difference of the published package-size of the app between Unity and XCode?
Does my Unity-written app run as smoothly as my XCode-written app?
I hope you could help me with that.
If I missed some points there, feel free to criticize me and give me your opinions on it.
Greetings
Chriz
Is there a difference in getting an approval for the App-Store if you program in Swift, or use Unity; C#?
No, given this general comparison - there should be nothing here favoring or disallowing one over the other.
How big is the difference of the published package-size of the app between Unity and Xcode?
That is very hard to say. There will be added libraries for Unity inclusion whereas Apple would already have shared libraries apart of the OS - used by every app. Think shared libraries here - only Apple is permitted to do this. Not to be confused with the to be newly released iOS 9 'App Thinning'.
The larger weight will be media/images/bitmaps.
Does my Unity-written app run as smoothly as my XCode-written app?
Since they both end up using OpenGL, the end result should be the same or very similar. Obviously as the OS and device mature - if Unity doesn't leverage it, they could end up giving up performance advantages.
But... the flip side of being so tightly coupled with Swift/iOS/Apple, is you abandon your Android market - and if you are even considering it - I'd suggest Unity based on what you shared if there is a remote possibility you want to deploy to Android, desktops, *TV devices in the future.

Apart from Objective-C, which languages can I use when developing for Mac OS and iOS?

I want to start developing for Mac and iPhone. I'm familiar with Objective-C a little and found it pretty complicated. Besides, I'm not sure that it would be worthwhile to learn it.
So it is possible to develop for Mac/iOS without knowing Objective-C, what programming languages do I have to use then? C++, C?
I like Scala, Java, by the way.
You can use c and c++ but you can't make any application without using objective - c. Since you need to use native app controllers and libraries.
Also in starting you find it difficult to learn obj-c because of it's syntaxes but after using them you are going to love it. So don't be scared and learn obj-c.
You can use some frameworks (e.g aapcelerator, phone gap)
but they are unable to give result like native app.
There are many frameworks you can use, like Mono where you can use C# (http://xamarin.com/monotouch) or some frameworks with HTML5 (see Creating native iOS/Android apps from HTML5)
But at the end basic understanding of objective-c and it's architecture will help you.
Why not? !!
But for iOS Native Development, you should learn objective C.
And if you want to develop using any other languages, you should use some other frameworks.
Haven't you heard about Sencha, jqueryMobile ,monotouch etc?
Once you get the hang of it Objective-c is actually quite fun.
Download some iOS samples and step through the code, that will greatly help you.
Or just create an empty project like a "Master/Detail" tableview app and see how it works.

Porting android code into objective C

I have an android game thats basically completed and I want to start porting it to iOS.
I'm completely foreign to objective c and I have no idea where to start. In android I have a surface view, canvas, and a game loop which draws and posts the canvas. What's the iOS equivalent?
First, be very careful of trying to transliterate between languages. You can't just pick up Java idioms and "do the same thing" on iOS in many cases. Many things are done with a completely different approach (threading is a major example; drawing is often done differently as well). You should spend some time learning the platform first or you'll get something that "almost" works and chase bugs and performance problems forever.
That said, the tool you probably want to study is Cocos2D which is a very good 3rdparty toolkit for building 2D games on iPhone. This is generally a much better approach than trying to build it up from scratch and should have a lower learning curve for game dev.
It's difficult to know how you should port without knowing the nature of your game but most iOS games are written in OpenGL which is very extendable. It has some optimization tricks that can play a big role in how you architect your rendering pipeline though.
If you decide to go with OpenGL you should check out this Stanford talk presented by NGMoco on how to do this...
http://www.youtube.com/watch?v=VNr5I3ZRecE

Best 2D/3D Game engine for a map-based game in iOS

I am not very familiar with Game engines for iOS app. Can anyone suggest an open source game engine for my game development?
My game scenario is as follows: The user selects a map, and a character inside of the game I moves through a path predefined in the map.
I was thinking about writing this game in OpenGL but it seems like I have to write a huge amount of code. Do any game engines exist in which I can successfully write this game?
Lua is easier to learn than Objective-C. There are several Lua development environments:
Gideros Studio: http://www.giderosmobile.com/
Corona SDK: http://www.coronalabs.com/
Moai: http://getmoai.com/
My favourite is Gideros Studio, because it seemed to me the easiest to get started, and is free until you want to remove the splash screen, and has a very friendly forum with access to the developers. You can also include native plugins (Objective C and C++ for Android).
Moai is the only actual open source one, if you really need to change the source, but it is probably the hardest one to learn.
cocos2d is popular and easy to use and learn. you could also use kobald2d as that includes cocos2d and other frameworks as well. you can download them through a search on google
As state by the other user cocos2d would be a good solution for what you want. Although you asked for "open source", you can always check, for free, Unity for iOS. You could also check a question I made some time ago, which can give you some hints of some options you have, here. From the Unity site:
Oh, and don't forget that Unity is free and we have fully-functional
30-day trials available for Unity Pro and Unity iOS Pro!
I know it's not perfect, but still, if you see it's worth, it can make a huge difference in your project.
Try Stencyl, it's not free, but it is a good engine that doesnt require a lot of code

Developing for iPad 2

I want to start learning about creating apps/games on the iPad 2. I cannot find hardly anything about iPad 2 although I have found lots of resources for iPad 1 development. Basically, I want to ask if I was to create an iPad 1 application, can it be deployed onto iPad 2 for testing/debugging/release no questions asked?
Also, am I able to use other frameworks which allow me to use Java, C# or C++? if so, can you recommend anything?
Thanks very much,
Jamie.
There is not much difference between iPad 1 and 2. You should target both devices (as long as you don't need the few extras on iPad 2 like camera for example).
All iPad 1 software will run on iPad 2.
Edit: No native Java or C# on iOS, although there might be some projects making them work - but it's rather "hackyish". C++ is of course just fine, as is C.
iPad, iPad 2, iPod touch, and iPhone all use iOS. Other than possible issues like "Oh, I assumed a resolution here that doesn't hold true for this device...", programming for one is the same as programming for another.
This is especially true for the iPad and the iPad 2, since they are very similar pieces of hardware. I wouldn't be surprised if an iPad program worked perfectly on the iPad 2 without any adjustments.
As for java, etc., sorry, Apple doesn't want to make anything too easy. You have to stick with C++ or, preferably, Objective C (since Objective C comes with a lot of iOS specific functions.)
In addition to Eiko's answer, Monotouch is a very popular framework for .NET development on iOS devices.
I would very, very strongly recommend using Objective-C and the Cocoa Touch frameworks as the basis for your app. UIKit is excellent at getting good looking, well performing UI quickly, and Xcode provides very nice development tools.
The iPad 2 is like the iPad 1, except that it's faster and has cameras, basically. Build for iPad 1 and you shouldn't expect any problems.
EDIT: Learn Objective-C and the Frameworks, it's not hard and provides great results. A very good book for people who know object-oriented programming and want to learn Objective-C and Cocoa Touch is IPhone Programming: The Big Nerd Ranch Guide. Despite being targeted at iPhone development, its examples can be built for iPad with nearly zero changes (and by the time you get to a chapter where you need to make slight changes, you'lll know how to). Programming for iPhone and iPad are very nearly the same, with some differences in the availability of certain UI elements (and of course resolution and GUI/UX paradigm), as someone else already pointed out. This book will teach you the basics you won't instantly get from Apple's excellent documentation, and explain the reasoning behind certain pattern choices.

Resources