Kingston University London
Transcription
Kingston University London
Kingston University London DESIGN AND DEVELOPMENT OF A MULTIMEDIA COMPUTER GAME ON A SOFTWARE PLATFORM FOR MOBILE DEVICES CHARALAMBOS SERETIS Master of Science in Networking and Data Communications THESIS INDEX 0. Abstract......................................................................................2 1. Introduction...............................................................................2 2. Operating Systems for mobile devices......................................3 3. What is Android.........................................................................6 4. Android applications and Android Market.............................6 5. What is a multimedia computer game......................................7 6. Android and multimedia computer games...............................9 7. How to develop a game for android.........................................10 8. Game analysis and design ........................................................11 9. Running our game.....................................................................19 10. Conclusion..................................................................................21 11. References..................................................................................22 [1] Abstract- Mobile devices have invaded our lives so that is an integral part of our daily lives. So entertainment has been transferred to portable devices, forcing companies to spend more time on creating games that are cut and sewn to the measures and the abilities of mobile devices. As a result of these circumstances the market is trying to understand user needs and to offer new innovations on its entertainment. 1. Introduction In this Thesis we will design and develop a multimedia computer game for a mobile platform. To achieve this we need to understand the market of the mobile devices and especially what the differences between the mobile platforms are. At the beginning we will examine the difference between the mobile operating systems and we will choose one operating system for our application. Our application will be a multimedia computer game so we will do a little research behind the term “multimedia” computer game and we will take a look in the course of the multimedia games in the last twenty years. Developing a computer game it is needed some developers tools, so we will take a soon survey on different developers tools and after we choose our tool we will design our game using some tools like logical flow charts and pseudo-codes. The development will follow in the next part and after that our application will be ready to run on mobile devices. [2] 2. Operating Systems for mobile devices Operating system is a set of programs that make a device and its features accessible from applications and ready to use. Those programs work together and they combine to a system that operates the “hardware” resources of a device. Such resources are CPUs, memory, sensors, input – output devices like printers and monitors etc. in short, operating systems are the heart of a device. Operating systems for mobile devices – mobile phones appeared back in 1979 with the form of embedded systems, after that and with the computer evolution operating systems passed from personal computers in the mobile devices like PDAs and mobile phones. The first operating system that was used in a mobile phone was a version of Dos (Disk operating System) and had features like fax, pager and PDA and it had preinstalled applications for email, calculator, calendar, games etc. In our days there is a plenty of operating systems for mobile devices, after a small survey on mobile operating systems we will see the most important of them. The operating systems for mobile devices that someone can meet are: 1. iOS 2. Symbian OS 3. Blackberry OS 4. webOS 5. Microsoft Windows CE 6. Android 7. MeeGo 8. bada 9. MXI 10. PalmOS Picture 2.1: iOS, SymbianOS and Blackberry OS [6] [3] Picture 2.2: Android, Windows Mobile, Meego [6] iOS is the operating system that was created by Apple for her mobile devices and is a derivative (based on Mac OS X 10.5 Leopard) of its main operating system for personal computers Mac OS X. It was first released in 2007 and is been used by apples mobile devices like iPhone, iPad and iPod. iOS have a plenty of preinstalled applications like e-mail client, web browser, telephone application, a map application that uses GPS for tracking, multimedia applications for music and videos etc. The most impressive feature of iOS is the application store where someone can find more than 500,000 applications for downloading. iOS is a closed source OS and community cant intervene to modify or make an alternative version of the OS. For developing an application for iOS you need to have the latest Mac with iTune for synchronization knowledge of objective C and a Developers Certificate. Symbian OS was created by Symbian Ltd, Nokia, Sony Ericsson and others by combining their software experience in mobile devices. It is closed source for general public but has a free license for mobile device manufacturers. Its appearance was made back in 2000 and was the operating system with the biggest part in the market for many years. It was one of the first mobile operating systems that was using widgets – Widgets are small applications that they look native to the OS and they use internet data instead of using a web browser. For internet services Symbian is using Ovi platform for browsing, application store, music store, games, file access and other functions. For application development it is used mainly C++ but Qt environment can be used alternative. Blackberry OS was basically designed for business purposes and it was focused in corporate e-mail, calendar, tasks, contacts, notes and other PDAs applications. It was first released in 1999 by Research in Motion for its native “Blackberry” mobile phones. It’s a closed source operating system and for application development is needed Blackberry API classes and a digital signature. webOS is the operating system that was developed by Palm and it was acquired by Hewlett Packard for its mobile devices. It was first released in 2009 and was used for the HP Tablet device. Despite the initial enthusiasm and promises from Hewlett Packard for using webOS in all her products (tablet PCs, Printers, PCs) it is still used only by tablet PCs. A positive step for the future development of the webOS was a [4] notice from Hewlett Packard that it will release an open source license for the operating system. webOS has an application store with many third party applications but it also has another source of applications that is called Homebrew but it is not supported by Hewlett Packard. For application development its is basically used HP Palm development program that is given through HPs web site. This program gives many libraries and resources for C/C++ programming. Microsoft Windows CE was first released in 1996 and was focused in mobile devices with very low hardware resources. The version of Windows CE that is used in mobile devices like tablet PCs and smart phones is called Windows Mobile. It has its own application store called windows market place for mobile and it uses many commercial application that are been used and in Windows Desktop. Application development is very easy with the windows mobile API tools. A variety of programming languages and environments can be used to create applications like C++, Delphi, Java, Visual Studio, Lazarus, Delphi etc. Android was released in 2007 by Google and the Open Handset Alliance. It’s an open source operating system that it is based on Linux kernel and it was supported from the beginning by a large number of enthusiast developers that they started to develop applications from its first release. It has its own application store named Google play (Android Market) and has more than 300,000 applications for downloading. Application development is easy by using Android API and it is based in Java. MeeGo is an operating system for mobile devices that is based on Linux and is developed by the Linux Foundation and was announced in 2010. It is still in development and it targets to be a cross platform operating systems that includes a variety of mobile devices (phones, PDAs, Tablets, Netbooks, Laptops etc) and non portable devices like Desktop PCs, Televisions, IPTVs etc. For application development it is used Qt framework and GTK. MeeGo has give many characteristics in a new developed operating system named Tizen. Bada was developed in 2010 by Samsung for mobile devices like smartphones and tablet PCs. It has its own store named Samsung apps for applications and it has more than 3,000 applications for download. Bada is an open source operating system with some restrictions. Application development can be done in C++, Java and Flash . MXI is a universal operating system for mobile devices that supports applications from other operating systems to run without redevelopment. MXI allows interoperability between different platforms, software, networks, and hardware components. Palm OS is closed source operating system developed for mobile devices by Palm back in 1996. Palm OS has many third party applications that can be installed, a number of 50,000 was in 2010. For application development C++ and Pascal are the most famous languages about PalmOS development. [5] 3. What is Android? Android is an operating system for mobile devices such as mobile phones (smart phones) and tablet computers. It was created by Andy Rubin, Rich Miner, Nick sears and Chris White back in 2003 [1], in 2005 Android acquired by Google. Google wanted to create an operating system that is flexible, upgradable and to be used by a variety of devices. So Google began cooperation with many partners for developing a system that fits all. By this move it was created in 2007 the Open handset Alliance that is a movement for creating open standards for mobile devices. Android is based on Linux kernel and that makes it to be very flexible between different devices and their drivers. Because Linux is a custom made operating system Android was made with this in mind. So Linux kernel is the responsible that many different devices with different characteristics run the same operating system. If we want to take a look on Android architecture then we can divide the operating system on four tiers. Tier one is the Linux Kernel that drives the device and recognizes all the sub devices of the device. It is the key for connecting the hardware with the software. Tier two is the common libraries that are used from the basic programs of the operating system. Those libraries are used to create the common Android libraries using the Dalvic Virtual machine. Dalvic virtual machine is the “converter” of different hardware devices to the same Android device. And after Dalvic work we can now have the common Android Libraries in use. Tier three has the basic software for functioning the different sub-devices and basic services of the device such as Location manager, window manager, telephony manager etc. The last tier is Tier four that give access to the final user for using the device and its applications. In this tier end users can add or remove applications make phone calls by using their phonebook etc. Android have many features and many that are still in development, some features are, Storage, 2D2D - 3d graphic layouts, connectivity with many networks (such as GSM, UMTS, WIFI, WIMAX, CDMA, BLUETOOTH, LTE etc), Messaging services (sms, mms), web browsing, media support, java support, streaming, GPS, multi-touch, multilanguage support, audio and video calls, voice recognition, tethering, screen capture and others. So Android is a modern operating system that is been used by many devices and is preferred by a large number of users and a huge community that supports it. According to Google at the first quarter of 2012 had one million activated devices using android per day making it the most popular mobile platform. 4. Android applications and Android Market Android was created for having a variety of applications that supports the devices characteristics. Because of huge popularity community started to create its own applications. For a safe distribution of these applications Google created the Android Market (now called Google Play). Through the Android Market Google created a commercial application that controls the distribution of the applications that are valid for the Android. Through the Store third party developers can create their own android applications and can distributed with safety to the end users for free or with some charge. The same application can be found on the Android market for free or with charge with the only difference that in the free version there are advertisements. Android market is a good reason for someone to test his creativity and make some “easy” money without the need of a publisher. Android market was the reason for the rapid expansion of the Android devices. Android applications are divided in two main categories, the pure applications and the “widgets”. The pure applications are stand [6] alone programs such as games, calculators etc. Widgets are applications that are mining specific data from the WEB without the need of a WEB browser, so we can say that widgets are mini web browsers that have access to a specific page. The reason that widgets created is to make fast and flexible applications that the main data volumes are installed on the device and it is not needed to stream every time the same data volumes. That helps the devices that have poor hardware to run heavy web applications with no performance problems. Without the need of huge data volume streaming many WEB sites becomes available in poor networks like old mobile telephony networks such as GSM and EDGE. Through android market users can find except applications music, books, movies and TV series. 5. What is a multimedia computer game? A multimedia computer game is an application that combines audio graphics and user interaction in a custom made story or scenario. Multimedia games where first published back in the decade of 1980 and had basic graphics that in many cases they where handmade pictures / posters or simple drawings with only a basic “beep” sound from a 16 sound pc speaker. Picture 5.1: Mystery house one of the first multimedia games from On-line systems back in 1980 [7] Despite the fact that they appeared in the early 80’s the definition “multimedia” was first heard in early 90’s from the gaming industry for promotion purposes that was describing computer games with audio and graphics distributed on the new media called compact disc or “CD”. Multimedia games evolved during the mid of 90’s because the developers wanted to give a more realistic approach in their games. So they used actors in their games and real sceneries, at the beginning actors where used for some in game videos and finally they used them as the game characters. Picture 5.2: Darren Eliker as Jim Pearson in the interactive multimedia game “Black Dahlia” [8] [7] Picture 5.3: Tim Curry as Gabriel Knight in “Gabriel Knight 3” [9] Picture 5.4: 3D Models for faces designed for the game “Elder Scroll adventures – Skyrim” [10] After the evolution of 3D hardware the actors where used only for their face shape and after a while they stopped using actors due to high production costs and they started designing characters and places with new techniques that where very close to reality. Since the 3D model design was prevailed every game that is using graphics, sound and interaction is called as a “multimedia application” or just a video or computer game. Picture 5.5: A variety of multimedia puzzle games [11] [8] 6. Android and multimedia computer games With the rapid evolution of mobile devices that are using Android it was made the need for creating multimedia games for the Android platform. Many Android users have tested their skills in developing a small or a larger game for their favorite device and they share it with their friends through the Android market. Many game distributors have ported large commercial game titles in the Android platform or they distribute exclusively for the Android platform. As time passes devices using android have more and more features so more complex and fun multimedia games are been developed. Games using accelerometers, touch screen are in common in our days. Picture 6.1: A Game for android using accelerometer [11] Publishers have also rebooted older popular games for the Android platform, titles that were released in the mid 90’s are now back again with the same popularity. Other platforms that are not now in the market such as Nintendo Super NES, Nintendo 64, Sony Play station, Sega Genesis, Commodore 64, Atari, MS DOS and others are now can be found in the Android Market. Many of the emulators or the remakes are made either by fan made projects or by their own publishers. Picture 6.2: An older game that was compiled for the Android from the super NES platform [11] [9] 7. How to develop a game for the Android There is a large community about the Android development methods and tools. The programming language for the Android applications is Java. So to develop any application for android we need basic knowledge of Java. The second part to develop the application is to find an IDE (integrated developers environment). There are many IDE for Java such as intellij IDEA, NetBeans, Borland JBuilder, Sun Java studio Creator, Macromedia dreamweaver, Oracle jdeveloper, jcreater, IBM WebSphere Studio, eclipse etc. When we decide which IDE to use we need the Android tools that called Android software developers kit or just Android SDK. For testing our application we need an android emulator. The officially IDE for Android application development is Eclipse that has a native plug-in for Android Development Tools (or Android ADT). Picture 7.1: Eclipse with Android SDK [3] For developing our multimedia application we will use Eclipse with the Android SDK installed. [10] 8. Game analysis and Design For developing our game we need first to decide what type of game will be, what mechanics will use and what will be the concept. The type of game that we will develop will be a puzzle game with a random processes and the goal will be to beat the computer. The main concept of the game is to find through three options the right one, in case we will find the right one then a score meter will raise and a sound like trumpet and claps will be heard. In case that we will fail to find the right choice then no sound will play and a message will inform us that we didn’t find anything, our score will decrease in this case. Music will play all the time in the background. From the game description we may call our game as “WhereIsIt”. The next step in our game design is to create a logical flow chart for the game. Picture 8.1: Logical Flow Diagram for our Game After the flow chart we need to create a pseudo code as a skeleton for our application. The pseudo code will describe the main functions of the game and the choices of the user. Below we can see our pseudo code: Start Display Splash Screen “WhereIsIt” Kill after 3,5 Seconds Play Theme Music Main While return key is not pressed do Display Graphics Draw three boxes Display Text “Try to Find the Cake” Display Choice Button [11] On press Button Random Cake (1-3) Wait for choice If choice = Random Cake then Score = Score +1 Play Sound Else Score = Score – 1 Display message “You didn’t found it” Else Kill application End of program As we can see from the pseudo code we need three main functions, a loop for keeping the game running, an “if’ function for making the choice and a random generator. Also we need some graphics for making our code to become alive. We need a background screen, a splash message, and graphics for items. Bellow we can see our flow diagram with “graphics”. Picture 8.2: Logical Flow Diagram for our Game graphics After we need to create a project in Eclipse, we choose Android application Project and we make our commissioning in the project breakdown tree to make our project run in android 2.2 that is the most common Android system. After we interpret the pseudo code to Java Code: [12] package WhereIsIt.org; # HERE WE IMPORT CLASSES FROM JAVA AND ANDROID TOOLS import java.util.Random; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TableLayout; import android.widget.TextView; import android.widget.Toast; #THIS IS OUR MAIN CLASS public class WhereIsIt extends Activity { ImageButton a,b,c; #ASSIGN IMAGES AS BUTTONS Button roll; #CREATE BUTTON “ROLL” CountDownTimer go,go2; TextView score,cake; #OUR DISPLAY TEXTS int change=0; #A VARIABLE TO CHECK THE RANDOM EFFECT int cardset,points=0; #VARIABLES FOR THE SCORE TableLayout table; #ASSIGN SPLASH SCREEN ImageView splash; RelativeLayout mainlayout;#ASSIGN BACKGROUND int i=0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); music(); mainlayout = (RelativeLayout) findViewById(R.id.relativeLayout1); mainlayout.getBackground().setAlpha(0); cake = (TextView) findViewById(R.id.textView1); cake.setVisibility(4); table = (TableLayout) findViewById(R.id.tableLayout1); table.setVisibility(4); splash = (ImageView) findViewById(R.id.imageView1); CountDownTimer spcount = new CountDownTimer(5000,10) { @Override public void onTick(long millisUntilFinished) { } @Override public void onFinish() { // TODO Auto‐generated method stub [13] splash.setVisibility(4); table.setVisibility(0); cake.setVisibility(0); mainlayout.getBackground().setAlpha(255); } };spcount.start(); a = (ImageButton) findViewById(R.id.imageButton1); b = (ImageButton) findViewById(R.id.imageButton2); c = (ImageButton) findViewById(R.id.imageButton3); roll = (Button) findViewById(R.id.button1); score = (TextView) findViewById(R.id.score); score.setText("Your score is: " + Integer.toString(points) ); a.setOnClickListener(new OnClickListener() { #FUNCTION FOR USING THE BUTTON INCLUDES THE IF FOR BUTTON A public void onClick(View v) { if (cardset==0){ a.setBackgroundResource(R.drawable.cake); Toast toast = Toast.makeText(WhereIsIt.this, "You found it!!",100); #CASE THAT WE FIND THE CAKE effect(); toast.show(); points=points+1; score.setText("Your score is: " + Integer.toString(points) ); } #CASE THAT WE DIDN’T FIND THE CAKE else { if (points‐1>=0){ points = points ‐1; score.setText("Your score is: " + Integer.toString(points) ); } Toast toast = Toast.makeText(WhereIsIt.this, "You didn't found it!!",100); toast.show(); } a.setEnabled(false); b.setEnabled(false); c.setEnabled(false); a.getBackground().setAlpha(100); b.getBackground().setAlpha(100); c.getBackground().setAlpha(100); roll.setEnabled(true); roll.getBackground().setAlpha(225); } }); b.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (cardset==1){ b.setBackgroundResource(R.drawable.cake); [14] Toast toast = Toast.makeText(WhereIsIt.this, "You found it!!",100); toast.show(); effect(); points=points+1; score.setText("Your score is: " + Integer.toString(points) ); } else { if (points‐1>=0){ points = points ‐1; score.setText("Your score is: " + Integer.toString(points) ); } Toast toast = Toast.makeText(WhereIsIt.this, "You didn't found it!!",100); toast.show(); } a.setEnabled(false); b.setEnabled(false); c.setEnabled(false); a.getBackground().setAlpha(100); b.getBackground().setAlpha(100); c.getBackground().setAlpha(100); roll.setEnabled(true); roll.getBackground().setAlpha(225); } }); c.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (cardset==2){ c.setBackgroundResource(R.drawable.cake); Toast toast = Toast.makeText(WhereIsIt.this, "You found it!!",100); toast.show(); effect(); points=points+1; score.setText("Your score is: " + Integer.toString(points) ); } else { if (points‐1>=0){ points = points ‐1; score.setText("Your score is: " + Integer.toString(points) ); } Toast toast = Toast.makeText(WhereIsIt.this, "You didn't found it!!",100); toast.show(); } a.setEnabled(false); b.setEnabled(false); c.setEnabled(false); a.getBackground().setAlpha(100); b.getBackground().setAlpha(100); c.getBackground().setAlpha(100); [15] roll.setEnabled(true); roll.getBackground().setAlpha(225); } }); a.setEnabled(false); b.setEnabled(false); c.setEnabled(false); a.getBackground().setAlpha(100); b.getBackground().setAlpha(100); c.getBackground().setAlpha(100); roll.setOnClickListener(new OnClickListener() { public void onClick(View v) { a.getBackground().setAlpha(225); b.getBackground().setAlpha(225); c.getBackground().setAlpha(225); roll.setEnabled(false); roll.getBackground().setAlpha(100); go = new CountDownTimer(1000,20) { @Override public void onTick(long millisUntilFinished) { // TODO Auto‐generated method stub Random card = new Random(); cardset = card.nextInt(3); if (change==1){ a.setBackgroundResource(R.drawable.gift); b.setBackgroundResource(R.drawable.gift); c.setBackgroundResource(R.drawable.gift); } if (cardset==0 && change ==0){ a.setBackgroundResource(R.drawable.cake); change =1; } else if (cardset==1&& change ==0){ b.setBackgroundResource(R.drawable.cake); change =1; } else if (cardset==2&& change ==0){ c.setBackgroundResource(R.drawable.cake); change =1; } Handler myHandler = new Handler(); Runnable mMyRunnable = new Runnable() [16] { public void run() { a.setBackgroundResource(R.drawable.gift); b.setBackgroundResource(R.drawable.gift); c.setBackgroundResource(R.drawable.gift); } }; myHandler.postDelayed(mMyRunnable, 20); change =0; } @Override public void onFinish() { a.setEnabled(true); b.setEnabled(true); c.setEnabled(true); a.getBackground().setAlpha(225); b.getBackground().setAlpha(225); c.getBackground().setAlpha(225); } };go.start(); #OUR LOOP FOR RESTARTING THE GAME // TODO Auto‐generated method stub } }); } public void music(){ MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.music); #PLAYING MUSIC FILE FOR OUR THEME MUSIC mPlayer.setLooping(true); mPlayer.start(); } public void effect(){ #PLAYING MUSIC FILE FOR SOUND EFFECT MediaPlayer effect1 = MediaPlayer.create(this, R.raw.cheer); effect1.setVolume(0.3f, 0.3f); effect1.start(); } #FUNCTION FOR EXIT THE GAME public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { WhereIsIt.this.finish(); return false; } return super.onKeyDown(keyCode, event); } } [17] From the Java Code we see that we have these main parts: package WhereIsIt.org; #Program name import java.util.Random; #importing Java and Android Tools public class WhereIsIt extends Activity { #Variables that we use in our functions ImageButton a,b,c; Button roll; CountDownTimer go,go2; TextView score,cake; int change=0; int cardset,points=0; TableLayout table; ImageView splash; RelativeLayout mainlayout; int i=0; public void onCreate(Bundle savedInstanceState) #On create function we have the main code of our program, in this function we create four key buttons, 1 for roll that creates one random number from 1‐3 and enables the choices, and three buttons that each one is a choice. Every button has a function if to check if the random generated number corresponds to their characteristic number. public void music() #In this function we create a media player to play our music file and we set the loop function true public void effect() #In this function we create a media player for our sound effect public boolean onKeyDown(int keyCode, KeyEvent event) #This is the escape key, if we press return the program closes and exits to Android. } [18] 9. Running our game After finishing our code the next step is to run the game. For doing this we need an emulator. Eclipse after the Android SDK add-on has a built in emulator, so we can run our game with just a click. After launching our emulator we can find our program in the Android main menu. From there we run the WhereIsIt program and now we can play the game. Picture 9.1: Eclipse Running the Android Emulator Picture 9.2: Eclipse Running the Android Emulator and our program In picture 9.2 we can see our program in the Android main menu, after selecting the “WhereIsIt” icon the game launches and the Splash screen is shown up. [19] Picture 9.3: Main Screen of our game Picture 9.4: The two cases of the game In picture 9.3 we see the main screen of our game the only thing we have to do is to press the roll button and chose one of the gifts. In Picture 9.4 we can see the two cases of the game, one is when we find the cake and we score and the other is when we don’t find the cake and a message is shown to tell us that “You didn’t found it!” [20] 10. Conclusion In this Thesis we examined and acquired knowledge about the operating systems for mobile devices, about their applications and how they are been distributed to them through application stores. We show a large variety of operating systems and its main characteristics. After the operating systems we analyzed the Android operating system and we examined its inner architecture. Then we examined what is a multimedia game and we made an overview in their evolution from the early years until our days. The next step was how to create our own application for the Android platform and we made a research for the Integrated Developers Environments known as IDEs and we decided to create our game in Eclipse. We analyzed our game after we set the scope of work using diagrams and pseudo code. After the Pseudo code we created the programming code in Java and we developed or project in Eclipse. After we finished the development we run our application we tested it and we do some debugging for making it to run with no problems on our devices. From all this way in the thesis we gained knowledge on how it should be investigated and evaluated a system before it progressed into the production process. For future research on the development of games could be the use of various methods of user interaction such as voice commands and the use of micro-sensors, surpassing the traditional model of multimedia and developing models with real user interaction and mobile device. [21] 11. References [1] Programming Android (Zigurd Mednieks, Laird Dornin, G. Blake Meike and Masumi Nakamura) O’ REILLY Media 2011 [2] Professional Android 4 Application Development (Reto Meier) John Willey and Sons 2012 [3] Eclipse IDE pocket guide (Ed Brunnette) O’ REILLY Media 2005 [4] Writing for Video Game Genres: From FPS to RPG (Wendy Despain) A K Peters 2009 [5] www.android.com (accessed 5/4/2012) [6] Search in Google pictures for mobile operating systems (12/3/2012) [7] Picture from the Game Mystery House of On-Line Systems 1980 (Sierra Online) [8] Picture from the Game Black Dahlia of Take 2 Interactive 1998 [9] Picture from the Game Gabriel Knight 3 of Sierra On-Line 1999 [10] Picture from the Game Elder Scrolls V: Skyrim of Bethesda game studios 2011 [11] Search in Google pictures for Android games (3/6/2012) [22]