As was foretold, we've added advertisements to the forums! If you have questions, or if you encounter any bugs, please visit this thread: https://forums.penny-arcade.com/discussion/240191/forum-advertisement-faq-and-reports-thread/

Making iOS/Android Apps/Games for dummies?

BeltaineBeltaine BOO BOO DOO DE DOORegistered User regular
So, I have some ideas floating around in my head for some mobile Apps/Games and I'd like to teach myself to make them.

Can someone point me in the right direction for this?

I also realize games may be a little more complicated especially when it comes to making them for both iOS and Android. Is there anything I should know beforehand that would make it easier to develop for both platforms?

XdDBi4F.jpg
PSN: Beltaine-77 | Steam: beltane77 | Battle.net BadHaggis#1433

Posts

  • EvigilantEvigilant VARegistered User regular
    edited February 2014
    Beltaine wrote: »
    So, I have some ideas floating around in my head for some mobile Apps/Games and I'd like to teach myself to make them.

    Can someone point me in the right direction for this?

    I also realize games may be a little more complicated especially when it comes to making them for both iOS and Android. Is there anything I should know beforehand that would make it easier to develop for both platforms?

    I'm not sure what your experience is with programming so I'm going to do two scenarios:
    1. You're going to need to learn some programming
    Before you decide which language to use, decide which mobile device you want to target first.
    iOS: Objective C, Ruby, Python, Lua, Scheme, Lisp, Smalltalk, C#, Haskell, ActionScript, JavaScript, C++, C. If you decide to go with iOS first, I'd say C#.
    Android: Java (if you do Android, get the Eclipse IDE)

    The bonus here learning Java or C# first makes learning the other easier because they're both C derived languages. If you learn C# first, you learn all of the good programming stuff before going to Java (personal bias, I despise Java after 12 years of working with it).
    http://msdn.microsoft.com/en-us/library/aa288436(v=vs.71).aspx MSDN is a great resource for C#, .NET, ASP.NET, etc.
    http://docs.oracle.com/javase/tutorial/ is the Java resource, but a lot of your time will be surfing the docs for the librarys.

    Stay away from w3schools. That site is shit for learning concepts and ideas. Do use Stackoverflow and coderanch. Codeacademy seems decent, but I've only quickly browsed through it once.

    So say you get a grasp on the programming required, the next step is building it. I'm a big believer in YAGNI: You ain't going to need it. Build what you need when you need it, try to be smart and stick to specific patterns so that you can easily go back to refactor the code and add more functionality on top of it later, but don't spend the majority of your time building up functionality you aren't directly going to need at this very moment.

    2. You have a firm understanding how to code
    The biggest question I've seen so far about mobile phone development is what framework/patterns they want to follow. Most think MVC is overkill whereas I tend to think while you are building a lot of robustness that goes wasted for a single app; the idea is that it's easily extendable since your model and controller are the real guts of your app and you can adapt any UI adapter you want a lot easier because your code behind is strong. But that breaks the YAGNI.

    Especially true for game development is just get it working as fast as possible. Even simple concepts, just get it pushed out to the app. You can worry about adding on additional functionality later; but the main idea here is that you're forcing yourself to only be developing ideas that you can push out to the app quickly, and you're prioritizing your concepts and ideas based on this immediate value. There will be a lot of basic functionality you need to lay down before you get to the more complex things, but say you're building a top-down RTS mobile app. One of the very first things you should try and code is just getting a simple map pushed to the screen, then tracking coordinates. You can worry about what the map you're pushing out to the screen looks like and what you need to do with the coordinates later, but those are two core ideas you should work on first.

    The biggest hurdle: organizing your concepts. I find that doing simple UI mockups will do a lot of organizing and driving of your development because it lets you easily see how the game is supposed to be accessed, what events you need to account for, what's going to be on the screen, etc. Don't spend a lot of time with simple UI mockups because they're just mockups and you'll probably be changing them as you go along.

    My suggestion: Start with a web app and once you have that working and solid then decide which mobile device you want to target first and then release to that device. You will most likely need to get a SDK and license.

    Evigilant on
    XBL\PSN\Steam\Origin: Evigilant
  • XixXix Miami/LosAngeles/MoscowRegistered User regular
    Don't start with a web app they work too differently from how a mobile app works.

    If you are programming a game it's more important to understand Entity-Component systems first rather than MVC. MVC fits more for classical mobile apps. Entity-Component systems are the key to fierce and rapid iteration in modern game design.

    Learn unit testing!

  • MelinoeMelinoe Registered User regular
    I have no idea how robust it actually is for games but Corona SDK is supposed to be stupid easy to learn and will automatically convert whatever ios thing you make to be compatible with android. It probably won't be as refined as something you build from scratch in both languages but it's worth looking into if you just want to make a game. I've seen it used with reasonable success and that was an older version so it's probably better now.

  • CelestialBadgerCelestialBadger Registered User regular
    Xix wrote: »
    Don't start with a web app they work too differently from how a mobile app works.

    If you are programming a game it's more important to understand Entity-Component systems first rather than MVC. MVC fits more for classical mobile apps. Entity-Component systems are the key to fierce and rapid iteration in modern game design.

    Learn unit testing!

    I've been making games professionally for 15 years including apps and I don't know what half the things you just mentioned are. I do know what unit testing is and I know that most games companies below AAA don't bother. So my message is, don't overthink it. Just get out there and do it.

    It's actually not too hard to make games. Get a mac, an ios device, and download xcode. Play with the example apps until you get it. This may take several years but should be fun.

    Unity is a great system for making cross-platform games.

  • XixXix Miami/LosAngeles/MoscowRegistered User regular
    edited February 2014
    Unity works on an Entity-Component system.

    Nobody likes talking about Unit testing except other unit testers, but the fact is Unit Testing your game model helps avoid perilous bugs and code rot that can eat up valuable time in development down the road. There's not much to gain by unit testing rendering code, the real advantage is testing abstract game model related code. It is definitely not only for AAA games and apps. Being able to run hundreds or thousands of tests in a few seconds with each build leaves little room for bugs to hide.

    Chances are, if you are writing code then testing to see if what you did works, you're basically already doing a shitty version of unit testing, very inefficiently and non-automated. Might as well invest time in doing it right.

    I agree none of this shit is too necessary, making anything is better than nothing. I recommend making a prototype of your ideas in something easy like Gamemaker or BYOND and just get feedback ASAP.

    Xix on
  • CelestialBadgerCelestialBadger Registered User regular
    Yeah, there's lots of things we should be doing but don't! But scaring a beginner by throwing all this stuff at him is more likely to put him off than encourage him to become a rigorous coder for life. Human nature. The best way to learn code is to roll up your sleeves and get your hands dirty.

  • Grunt's GhostsGrunt's Ghosts Registered User regular
    I dont know if Java or C++ lets you do this but when I used to mess around with Ruby Script on RPG Maker Ace, I would leave notes for myself after a line of script that basically broke down what it was going and how much different changing variables would change what the game did. It made it easier for my programming friend to fix what I messed up on too as he could see where I was going with my code and show me where I was wrong. Since programming can require a lot of moving parts, this is a great way to lable those parts.

  • CelestialBadgerCelestialBadger Registered User regular
    Yes, every language allows you to "comment" lines of code, and doing so is a great habit to get into. Not only for beginners, but everyone. A lot of professionals don't do it!

  • wonderpugwonderpug Registered User regular
    I've dabbled with Corona SDK and I think it's a fantastic place to start. It's super easy to understand, has very clear commands (Lua-based), and has a built-in emulator so you can quickly and easily see how your game will look and run on the Android/iOS device of your choosing.

    I personally decided to move off of Corona and onto Cocos2d for my personal game programming hopes and dreams, and that's also worth a look. If you're starting with absolutely zero programming experience though, I think Corona is the way to go. You can get something up and running extremely quickly and then decide if you can make your dream app within Corona's confines or if you want to move onto something more robust. If the latter, the programmer fundamentals you learned from programming in Corona will still be useful wherever you go nextx.

  • TaekoTaeko Miami, FLRegistered User regular
    edited April 2015
    This post has been removed.

    Taeko on
  • BeltaineBeltaine BOO BOO DOO DE DOORegistered User regular
    Taeko wrote: »

    Awesome find! I signed up to get my feet wet.

    Digging into this has actually gotten a little overwhelming. There's SO MANY options, especially for someone starting fresh and hasn't programmed anything beyond a little BASIC in high school (Oh so long ago).

    XdDBi4F.jpg
    PSN: Beltaine-77 | Steam: beltane77 | Battle.net BadHaggis#1433
  • CelestialBadgerCelestialBadger Registered User regular
    Beltaine wrote: »
    Taeko wrote: »
    Digging into this has actually gotten a little overwhelming. There's SO MANY options, especially for someone starting fresh and hasn't programmed anything beyond a little BASIC in high school (Oh so long ago).

    Yeah, things are much more complicated these days! But unlike back then, you can get help on pretty much anything by googling it. Stackoverflow results are usually very helpful. Google what you want to do, or the error you get from something, and 9/10 someone else had the same problem and has already figured it out.

Sign In or Register to comment.