18 February 2013

How to make simple game in Android part 3 - Planning

WARNING!
Few honest informations.  
I have a few years experience in software developer BUT  I am NOT a game developer! I am NOT an expert. 
This guide was written by person who want write game as part of hobby and make dreams come to true (As i want to write simple RPG game in future).   
 I put best efforts to write  accuracy informations, but I cannot guarantee the perfect accuracy of all content in this  articles  on this blog.
I do not take any responsibility or liability for any error, omission , inaccuracy
or destructions!


How to make simple application or game in Android

BASED ON GAME EXAMPLE: 
DOMS COUNTRIES, CAPITOLS, FLAGS AND CONTINENTS QUIZ GAME

 TO DOWNLOAD GAME

Part 3 
PLANNING


It this part I will explain how I prepare, plan and setup my project.

I start from list of things, which is good to do and remember during preparing and planning:
1.       Write down all ideas and conclusions from brainstorm - as best ideas and solution for your problems appear in most unexpected moments. In toilets, just before go to sleep. Always write them somewhere!
2.       Create a “to do” list. It is many way to do .Starts from notes on piece of paper (notepad in your device) through program for task management, GTD-like application or Kanban like application.  Make sure that you setup priority (Most practical are (must have, maybe have, useful to have). I using Kanban to  
3.       DO BACKUP and keep it in external place (for example: If you work on PC at home. Your backup should be keep NOT at home.You must store backup in different place like cloud service(Dropbox) , pendrive at parents home etc.). 
4.       Use your favourite source code management. I recommend using Git. What is source code management? Here is link to Wikipedia article about it: http://en.wikipedia.org/wiki/Source_code_management 
5.       Whatever you do always follow KISS priniple ( KISS stands for: Principle Keep it simple ,stupid(or sir). Good article about that can be found here: http://people.apache.org/~fhanik/kiss.html
6.       Collect all interesting resources and keep source information (in this example, I collected all flags), sounds and data/algorithms that will be useful during implementation.
7.       If you have any problems with planning particular parts of you application use UML software for class design, user cases or flow. Mock some UI using UI designers in Eclipse or IntelliJ IDEA), to see how things look and allow you to test usability of your application or game. Make some quick user cases.
8.       If you planning to be a professional software developer. You can start select to use specific methodology or use some "software development methodology" principles to improve your skills. I suggest read at least this: http://en.wikipedia.org/wiki/Software_development_methodology .If you want. try one of plenty methodologies like  Agile ,Incremental , Iterative , V-Model , Spiral , Scrum   , FDD ,   TDD ,  XP and many more. (Btw. Forgot about waterfall is worst approach, as it will doom you, if requirement changes over time, which happen even in my doms countries capitals flags quiz example, where I added a new game mode and change high score). I usually used Kanban based methodology and it works fantastic for me (however, I loosely followed my Kanban board.).
9.     Write down all bugs, which you find in one place. In can be in your to-do list or you can use bug tracking software .I used

This and design stage are very important.
Why? As more effort you put it, then you will lower your chance to re-write your code. You will be more flexible for adapt to unexpected changes. Do not design everything upfront (like in waterfall methodology). Think more about flow, cases and usability and prepare task-list with prediction for how important it is and how difficult/how much time it will take. Tasks should be designed and implemented independently.

Important: this is only suggestion .Choose what can be useful for you.
How I planned my game?

This how looks my setup and planning for my project

I used IntelliJ IDEA as IDE. I used some agile and Kanban principles as methodology. I used Kanbanize.com as my Kanban board ,where I store my brainstorm idea, task list , bug tracking and as visual process management (to visualise workflow, manage flow and to-do list, manage adaptation for changes in requirements).I use Git as my source code management and my own program called nanobackup to do .. backups (that were stored internally and on Dropbox).
For simple game as doms countries, capitols, flags and continents quiz game that was based on previous project it was a bit easy, but this is shortcut of how I done it. I started from brainstorm. All ideas from brainstorm I added into task list. I put all task on Kanban board (I used kanabinze.com). I collected most data (flags, icons) and add/edit/remove task during my free time prior start of implement specific tasks.

I draw some UI to play with usability and with game flow. I used UI builder for Android that can be found in IntelliJ IDEA (better tool can be found in Eclipse). I decided then priority and task order for each task/feature. I create a text file with my loose plan about what will be including for each main release (v0.4, v0.5, v0.6, v0.8 and v1.0 (unfortunately I deleted file with info, what was in each release).
I play around with planning flow as part of test.
That is all.

Note: Even in small project like this one. Few elemnts in my plan changed few times during development. My planning is very flexible and it allowed me to fit these changes to development flow.

It was quick as my plan for this project was very similar to Dom’s learn Chinese game, so I followed pattern used in past.

Strategy vary depends on project size, deadline, complexity, your experience and many other factor, but do not worry too much about. If you just started, try to have some fun with planning and design that and allow a lot time for implementation.

 In next part, I will describe my design for “doms countries, capitols, flags and continents quiz game” with some example of uml ,task and etc.
Go to part 4: Design