Another Naive Person Interested in Developing an App

Discussion in 'Public Game Developers Forum' started by MaxiCalifornia, Mar 24, 2010.

  1. originalcopy

    originalcopy Well-Known Member

    Sep 10, 2009
    369
    0
    0
    Really? Obj-c is more irritating than either C/C++ and java? Wow. No school lectures on Obj-c, right?
     
  2. Uptown Arts

    Uptown Arts Well-Known Member

    Just personal prejudice. Ideally, I should be able to ignore the differences and just concentrate on what I'm trying to get done. I'm working on it.

    ON Obj-C, yeah, IN Obj-C, no. Just trying to illustrate something first-semestery like an abstract class gets hairy when the language doesn't support it.
     
  3. kali

    kali Well-Known Member
    Patreon Gold

    Nov 2, 2009
    51
    1
    0
    Senior Software Engineer
    #23 kali, Mar 27, 2010
    Last edited: Mar 28, 2010
    I'm a software engineer with 25+ years of experience and spent the last 8 years working on objective C for Mac and iPhone OS.

    Personally if you are new to programming and wish to program for the iPhone.

    I'd start with C and skip C++ and go directly to objective C. C++ is a complex and byzantine language that would only help you if you are writing cross platform object oriented code or are using existing code provided for you. Most commonly this would be a 3D engine or the like that you purchase or use for free.

    You need to familiarize yourself with the following topics in order to write a game on iPhone:

    • basic C programming (variables and declarations, assignment, arrays, pointers, flow control, functions, pre-processor, etc)
    • Objective C object oriented programming (subclassing, protocols, delegates, collections)
    • UIKit for building UI
    • Quartz Graphics for 2D graphics
    • OpenGL ES for 3D graphics

    You can find books that cover each of these subjects some books cover more than one such as Objective C programming and UIKit would be found in books on iPhone development focused for beginners.

    I would focus on trying to build a 2D game to start with. Once you start on the 3D path you will most likely need to learn C++ to allow you to use 3rd party 3D engine unless you want to go it yourself with open GL.

    This is a challenging but also rewarding road.

    An alternative and possibly easier way to get your feet wet is to build a java script based web app for the iPhone before you move on to the above.
     
  4. bravetarget

    bravetarget Well-Known Member

    Sep 14, 2009
    330
    0
    0
    Very well said, OP should read this post twice, then a third time.
     
  5. Flickitty

    Flickitty Well-Known Member

    Oct 14, 2009
    761
    1
    0
    iPhone Dev
    #25 Flickitty, Mar 27, 2010
    Last edited: Mar 27, 2010
    Yeah, I could get behind that too. I had completely forgotten the original reasons I started working with C++: to access 3rd party engines. Good point.
     
  6. MaxiCalifornia

    MaxiCalifornia Active Member

    Jul 12, 2009
    32
    0
    0
    So learning C as a first step is concrete, and from what everyone else is saying, I should go to Objective C after that.

    What is the difference between Cocoas and UIKit? Is UIKit just a general name for all UI Frameworks or is it a specific framework like Cocoas?
     
  7. kali

    kali Well-Known Member
    Patreon Gold

    Nov 2, 2009
    51
    1
    0
    Senior Software Engineer
    #27 kali, Mar 28, 2010
    Last edited: Mar 28, 2010
    Yes you should learn Objective C. Since ObjC is pretty inter-twinned with the iPhone or Mac platform you should learn this alongside basics of Cocoa and UIKit. You should be able to find a book covers these topics. I would recommend one but I haven't looked at those kind of books in a while.
    Cocoa is the broad name for the objective C class frameworks on OS X and iPhone OS. UIKit is a particular framework that is used for building iPhone user interface. It gives you stuff like tab bars, navigation bars, table views, view controllers, navigation controllers, buttons, text labels, etc.

    UIKit is but one of a number of frameworks available to developers. Others include MapKit, Address Book UI, Core Foundation, Core Location, Store Kit, etc.
     
  8. Thaurin

    Thaurin Well-Known Member

    Feb 10, 2009
    154
    0
    0
    Okay, my turn. :)

    Objective-C is an extension of C to allow object-oriented programming. So, yes, learn C, because basically Objective-C is C. You won't need everything in C to get somewhere, but the basics (already mentioned in other posts) are a must. The frameworks from Apple (like Cocoa Touch, which is an iPhone version of Cocoa on Mac OSX) allow you to use the different controls, functionality and structures that make up an iPhone application. So you'll need those too, unless you want to reinvent the wheel.

    Game programming is also pretty specific and would require some learning. I'm not experience with game development, but there are some concepts that are used in game design that you should be familiar with when building a game engine. There are plenty of good resources for this both on the internet and on paper.

    Basically, just getting anything on the screen with a program you compiled yourself is your first goal. From there on, it's a lot of trial and error, looking things up on the internet, asking many questions, bumping your head several times, screaming at your monitor in disgust and giving up... then coming back to fix your previous problem. :)

    I'm a C#/ASP.NET programmer by day and I'm currently in that situation. ;) Objective-C and Apple's frameworks have a bigger learning-curve than most other languages, but when you "get it", you realize that it's put together really well.
     
  9. Carlos

    Carlos Well-Known Member

    Sep 29, 2009
    755
    0
    0
    Software architect, game dev and book author
    xor eax, eax
    #29 Carlos, Apr 3, 2010
    Last edited: Apr 3, 2010
    Before venturing into making games, you should really go through a few evolutionary steps which are part of the process which ends up in becoming a software developer.

    You should start off with - as already suggested - the basics of programming. Once you can write a simple console application you can consider yourself a novice.
    Deepen your knowledge and try to create more and more complex applications, without being intimidated of the fact that you won't be able to publish your own game after a month or two. Not even using 3rd party libs or engines. Why? In order to use these, you have to understand their way of working.

    Understanding the principles of Object Oriented way of programming is probably the most important part of the process. Once you get a grip of it you should take a closer look at the Design Patterns. The Gang of Four made us, software engineers a big favor by putting together all the important patterns a developer should now. Then read some books on game development, and also get some good iPhone books.

    My opinion is that once you've got a clear understanding of OO and design patterns, the programming language itself just does not really matter. A software engineer can switch among programming languages easily, as he knows the "Rules". Programming languages differ mainly in syntax, but actually the concepts are nearly the same - whether you use C++, Java, C#, or Obj-C.
    Remark:
    While Java and C# are managed languages (actually Obj-C as well, but not in the iPhone world), C++ is not. In C++ and Objective-C (iPhone case) you have to take care of the memory for yourself (there are of course exceptions, see smart pointers, but I would not go in details right now). While on the Mac you have automatic memory management, Apple engineers took this decision for the iDevices in order to avoid garbage collection, which can become easily a beast (wondering why Google and Blackberry have not taken this route also).
    Besides, Obj-C has another interesting twist: instead of invoking an object's method, you send messages to it! This comes from it's SmallTalk origins, and after getting used to it, a developer can implement elegant things using this approach.

    I'm trying to finish this lengthy comment now. Hope I could help a bit.
    Have fun, software development is great both as a hobby and as a profession as well.
    (Especially if you suffer from insomnia. ;))
     
  10. AttackOfThePwned

    AttackOfThePwned Well-Known Member

    May 28, 2009
    884
    0
    0
    Photographer
    San Francisco, CA
    Lots of good information here. I have a question as someone looking at getting into programming. I have lots of design background working with Fireworks/Photoshop/Corel and some basic html/java/xml and visual basic knowledge.

    For beginners looking into basic C and Object C can any developer here recommend library books to take a look at for getting started in the programming languages? Maybe even UIKit or iPhone development books (by author and title)?

    I know I can google this but I would like to hear personal opinions as far as what texts are available, how informative are they, and worth my time to read. Thanks for any assistance.

    My goals are to start out on the productivity side of apps and then later on venture into 2D and ultimately 3D gaming.
     

Share This Page