For an independent developer seeking to develop a digital product, the seemingly endless task list can initially seem daunting.
Most applications, games and other digital products require basic skills and experience with: Coding, Graphic Design, Sound Design, Animations, Web-Support, Costumer Relations Systems and more depending on the project goals and type.

While there are many services and software products out the market today for professionals, these are typically very expensive and some independent developers, especially those new to developing, don't want to spend that kind of money for advanced features that won't really be useful to them early on.

Like many fellow independent developers, I try to stay updated on the free tools that are out there and I'll tell you something, you can probably find a free way to create almost any part of your product with these free tools. In most cases, these services are equal and sometimes even better (for the average user) than the more expensive options.

In this post I will tell you about the tools I'm using, what I'm using it for and where to get it.
As an iOS Developer, my experience with those tools apply for iPhone and iPad development, with that being said, most of those tools will apply to any OS development environment

Developing Fields:

- Developing Environment: Coding
- Game Engines
- Graphic Design
- Sound Effects
- Animations
- Cloud Space
- Web Development
- Web Promotion
- Costumer Relations (Push Notifications)

So let's kick off!

Developing Environment : Coding & Debbuging

In this field, whether you develop iOS apps, Android apps, Windows software or whatever, everything you need for your development environment can be found for free.
I develop mostly for the iOS (Apple) and the development software for that is called XCode.
XCode will be your "Home Base" for development, in this software you will write your code, arrange your components (graphic files, audio file etc...) and eventually compile them all to a single App file.

This is a link to Apple Developer website: https://developer.apple.com/xcode/
In here you can get a link to the XCode download in the Mac App Store and get additional information about the software and the tools that you can use as a developer.

XCode is free to download, you can install it, create a product and test it without paying anything.
A big limitation with this is that you can test your application ONLY on an iPhone/ iPad Simulator if you are not a registered paid user ($99/ year).

What it means is that if you are a new developer you can practice and learn until the stage when you feel that you have a project that is developed enough to be tested on a real device. Once you become a paid member, you will be able to install your project on iOS devices and test it to see how your project runs on a real device--this can often be very different from the simulator due to differences in the Processor Capabilities, Memory Size, Caps/Uncaps Coding and other capability differences between the Development Unit (computer) in your hands and the Mobile Device (iPhone) in your customer's hands.

Game Engines

Game Engines are pre-made frameworks and libraries that will make your life easier as a game developer.

Why should I use an open-source game engine?
Good question. If you were to build a 2D game for the iPhone (or any other platform) you will need a system to perform some basic types of actions like: Loading and Manipulating Images, Playing Sounds, Running Animations, Move, Jump, Display Alerts and Labels, Load and Render 3D Models, Create Explosions, Effects and much much more.

If you can create this kind of system on your own, you probably won't be reading this post. Game Engines are made to help us save time, effort and money to be able to perform all kind of basic (and advanced) actions we need for our game, without the need to understand all the things that happens behind the scenes or invest time to create them.

If you will do a simple search you can find all kind of free (and paid) game engines online:
http://en.wikipedia.org/wiki/List_of_game_engines

Here are some of the free game engines I use.

"Cocos 2D"
http://www.cocos2d-iphone.org/
Cocos 2D is an open-source 2D game engine that will make your life much easier if you want to develop 2D games for the iOS (and other platforms).
Cocos2D is simplified, in most cases you will need one or two lines of code to perform actions that without Cocos2D will take writing an entire class (http://en.wikipedia.org/wiki/Class_%28computer_programming%29) to perform.
Cocos2D is easy to install, simple to understand and is supported with a large and live community of developers just like you and me who constantly develop and maintain this framework.

"Unity"
http://unity3d.com/

"Unity is a feature rich, fully integrated development engine for the creation of interactive 3D content. It provides complete, out-of-the-box functionality to assemble high-quality, high-performing content and publish to multiple platforms"

Unity is a development environment that allow you to create 3D (and 2.5D) games in a high quality commercial quality.
In Unity you will be able to create a 3D world, load 3D models, load sounds, and combine them all together into a single game, almost like an interactive movie which can be exported in to many operating systems just by changing the development target.

Unity is relevantly easy to understand and is also supported by a large community that will offer answers to most of your questions.

You can download Unity for free, create your games and export them to several OS without spending a penny.
If you are into 3D Games Development and you haven't tried Unity- now will be a good time to try it, you won't regret it.

Some features of Unity require a paid license (like exporting to the iOS Environment).

-------

That's it for this post, I will continue this series of articles in the next few weeks so check in for updates every once in a while.
Feel free to comment and let me know if there you have any questions I can help with.

Thanks for reading!.



 
"cocos2d for iPhone is a framework for building 2D games, demos, and other graphical/interactive applications. It is based on the cocos2d design: it uses the same concepts, but instead of using python it uses objective-c."

Cocos2d will allow you to easily implement actions like moving objects, scaling, jumping and much more.
There is a lot of documentation online about how to use Cocos2d.
In this short article will help you to install the  templates and make them accessible right from your "new project" window
in XCode.

To use coco's2d game engine in our XCode projects we must first install coco's2d templates.

First, download a stable version of coco's2d here: http://www.cocos2d-iphone.org/download
Make sure you download the final version and not a beta version, that way you can know that it's free of unknown bugs.
 
Once downloaded, extract the downloaded file into a folder of your choice.
Next, open the Mac OS native application called Terminal, you can use the "finder" to locate it or simply go to your applications folder and inside you will find the utility folder that contains the Terminal application.
Once Terminal is open  type cd  on the command line (make sure to add space after the cd)
Next drag the extracted folder and place it after "cd".
Press Enter (return).

this will change the directory to the coco's2d extracted folder.

Now type: "./install-templates.sh -u." and press return.

this will install coco's2d templates in our developer folder and allow us to use them right from XCode menu.

Your done!
When you start XCode, on the left menu you should be able to see coco's2d templates.

Cocos2d Forum: http://www.cocos2d-iphone.org/
 
This is a short tutorial that will give you a basic example of how to use a UITableView to display items in a list.

 
This is a simple tutorial about how to load a web page using UIWebView.
The video describes how to: Add a UIWebview, make a connection to an object in the code, create a NSURLRequest with the google.com URL and load it in the UIWebView.
 
This is a video tutorial that explains how to create a simple project with a single view that displays a count down label.
Using NSTimer
 
In this short article I will try to provide information that will give you an overview on some of the steps going from having an idea to having a product on the app store and make it work!

1. The Idea - "Know your idea"
So you have an idea for an iPhone App, great! that's the first thing you need.
What does your idea do? How does it look like?  What problem does it solve? Who are your clients? Does it exist already? if so, how can you improve it?

These are some of the questions you should ask your self once you have an idea that you want to develop, define your idea, give it meaning, decide who your clients are and find out how your product help your clients. your goal is to "know your idea" from start to end, the more information you can extract from your idea the better your development process will be.

Knowing your idea will help you know better what your app will need, once you know your target audience it is easier to decide which colors you will use, which functions you will need, how "big" your project will be and much more!. Try it out!.

2. How Does It Look Like ?
Another great (and very important) thing to do is to Sketch your idea.
Get a notebook and a pen, break down your idea into screens, how will the home screen of your app looks like? how does the last screen looks like? your drawings can be as simple as you like, this stage helps you figure out which features you will need in your application, it helps you prepare for development and gives you great information about how your UI (user interface) will function and will look like.

Plan a simple UI, use only the features that your app needs to deliver your idea, try not to add features that will complicate the app and make the UI harder to understand, remember that users won't spend much time on trying to figure out your application, the more comfortable and easy your app feels, the easier it is for your users to use it.

Once you have a good idea on how your app looks, take some time to pick the right colors for your idea.

3. Make Decisions:
Your application will be better and more focused if you make some decisions before development.
  • Decide how long you want the development process to take - This won't be a "contract" with your self but it will first give you a good idea on how long the development should take, allow you to know when to start preparing for other stages like advertisement, set boundaries for your self (we all need them) and allow you to focus on what's really important for you in this app instead of having no frame to work on.
  • Paid or Free ?
    Knowing your price before developing will allow you to know your expectations from your product, if you plan to sell your product for $4.99 your users will expect more then an app that being sold for $0.99, if your application will be free you might want to add advertisement (iAd, adMob).
  • Promotion
    There are many ways and approaches to when and how promote your app. some say it is better to start promoting your app before you even write the first line of code to build a bigger client list that may buy your application on the day it is published, others suggest that you will first focus on building a good app then make efforts to promote it. explore this subject and make a decision on which approach fits your application the most.

4. Develop
You know your idea from all aspects, you know how it looks like, you decided how long it will take and made other important decisions before developing, now you can start!
Arrange your files and folders on the project, make sure the project will be accessible for you, create folders that will help you get a "cleaner" development process.
A great idea is to create "Helper" folders, if you found a good example online on how to perform an action that your app will require, save it in a special "Examples" folder so that later you could easily go back to it without searching your computer too much. Save helpful links in a special development folder, create arranged folders both in XCode and also in your computer. accessible information is valuable and will help you get things done quicker and better.

Backup your files - Loosing everything you already did won't help you...

5. Test
Let your friends (and basically anyone that pass by you) try your application, even during development. getting feedback from people will help you create a better application, you can get many ideas from others about how your idea works and how good it is, don't let anyone bring you down, most will suggest that you improve this and change that and will generaly tell you how they will make this app better, remember that you are the developer, check other ideas and suggestions given to you and change only what you decided to be worth it.

There is no replacement to a field test of your product.

6. Upload!
Once you are pleased with your product, get it out there!
Here are few important things to remember:

  • Your app is rated according to amount of downloads - The more you get, the higher you are on the list.
  • Great Images capture the eye, people buy (and download) apps mostly by visual contact, make an amazing icon!
  • Present your App by what it does - Look at successful app pages on the app store and learn from them.
  • Control Publish Date - be ready with your advertisment for the day your app lunch.
  • Send promotion codes to your friends, bloggers, websites and anyone you can think of, ask for review!



When I think about the app store I like to imagine it as a giant shopping mall, I have a small shop in that mall and it's my job to not only create a great product but also make sure that shoppers get to see my product and want to get it.

Research the web and find information that will help you create better products, there are many great web-sites out there!


 
Many people who wants their apps to be developed are not really sure on how complicated or easy it will be to develop their idea into a real-working application. There is not a lot of information out there that will answer this question and most of the times the search will end up making you feel that your idea will be expensive to produce.

There is no real price for developing an iPhone app beacuse the price range is large and varies so much from country to country  and from developer to developer, it is not simple to find the right person for the job and have them working with your budget but searching online while knowing what you want and how complicated it should be will give you a much better idea on how long your project will take to produce and how much money you can expect spending on that.

How to start ?
The first thing you need to do is to get  your idea in writing. take a notepad and simply write down all of the features your app will contain, what is it suppose to do ? who is it targeted to ? how will it help others or solve others problems, how will the user interact with the app, which kind of information will be there and basicly all the information you can extract from your idea.

Next, try to summerize all those points into one sentence that will represent your main idea and the purpes of your application, once you have that you already took a big step to get your application out there!.
Having your idea in like that will give you (and the developer) a much clearer view of your app development needs.

A simple application
There is no way to really define what a simple application is, from developer to developer this definition will change. And what about graphic design? User Interface (UI) design? Audio files included? how would that work in your application?

You will be one step furter if you will have answers to all those questions, knowing your app capablities will allow you to know what you want better and will help you find a developer that will fit your requiements better.

Here are some features that will take longer (and will be more expencive) to develop:

Using a web-service (your own, RSS Feed, Dropbox etc..)
Using social media (Facebook, Twitter)
Using a design and componets that are not part of the iPhone SDK (Diffrant Buttons, Toolbars)
Having a large or complex data source (a big employie list that needs to be edited for example)
Having more the 5 diffrent screens to display (Views)
Using Push Notifications Service (Local and Remote)
Downloading data from your server (Pictures, Videos)
Using the camera

And the list goes on.

If you want your application out there, regardless to its compexity and your programming skills, you will have to spend time, money and mind space for that, there is no replacment to having thousands of people downloding and using somthing that you have created.

Focus on your idea needs and get it written down, sketch your idea on paper and figure out which components it needs and how many views it will have, find a great developer for the job, set a budjet and go for it!


 
Who can develop applications for the iPhone ?

Well, if you are an apple fan you probably already have to right tools for it because all you really need is a Macintosh computer, an Apple Developer ID and some free time to learn.
You will also need some dedication and paitience and your not far from having your own application or game on the app store.
More and more people are getting into that business, from big compenies with an army of developers to indeviduals with an idea that invest time and money developing their ideas into real products.

You have an idea but your not really sure what to do with it.
First, there are some things your can do regardless to your programming / design skill levels. Here's a few suggestions:
  • Check whats out there - search the app store and online for applications that you think might do the same thing you are trying to accomplish, sometimes you can have a great idea and a quick search on the app store will make you feel like "some one already done that" and abandon your idea, sometimes you will find applications that remind you of your idea but you will feel that you can do it better!, and sometimes you will just find an original idea that just might work.
  • Draw a sketch of your idea - A lot of iPhone and iPad applications share the same objects, a quick Google image search for iPhone UI will result many common iPhone components like "Table View", "Picker View", "UIButton", "UIToolBar" and more, you already have the basic tools design, draw it on your notebook and have a clearer view of your idea, this alone will allow you to estimate your project size better. Try to describe the relationship between one screen to another, one button to another.
  • Figure out how your application idea will be helpful to others - This will help you identify the strength and weakness of your idea, making it more solid. if you know how your application help others, you know more of what you want it to do.
  • Ask for others opinion - Getting other people's opinion on your idea or parts of it can give you a good perspective on your idea, while the response may vary from one person to another it will still be better to know what other people think rather then not knowing, learn from other people, they are your clients and users.
Hire a developer or develop on your own? searching for information on that online will bring great results for both approaches, on one hand, many people search for either individuals developers or developing companies to get their idea into the app store, big brands do that, television, restaurants, parents, gaming websites and many more. on the other hand there are many people, in many groups of interests and many countries that want to learn how to create their own application, the online world is full of articles, blogs, tutorials and books on how to get your application out there.

If you are interested in learning how to do it on your own then you better prepare your self to a journey, there are many things to learn, actually, there are so many ways to go in this world that you won't have enough time to learn most of what's out there.
The approaches are endless and the resources are out there for you to learn.

Good Luck!