Skip to content

Latest commit

 

History

History
133 lines (99 loc) · 8.64 KB

README.md

File metadata and controls

133 lines (99 loc) · 8.64 KB

Table of Contents

Introduction

In order to teach my students the fundamentals of programming for mobile devices, in 2017 I took advantage of the then-recent release of the Pokémon GO game (Android, iOS) and developed this Android version of the game similar to the one originally created by Niantic.

I used this application to demonstrate in the classroom how to program using the main features of a mobile device and I provided students with all the documentation for the application, without giving the source code at first. The students were divided into groups and each group had to implement the same project, which had already been previously analyzed and documented by me. In addition to practicing development technologies for mobile devices, this work aimed to provide students with the experience of participating in a software engineering laboratory, implementing a backlog of features as a team, following a pre-defined schedule and quality standards, all this using the SCRUM agile method to manage the project.

After the end of the course in 2017, I used this public GitHub repository to make the source code of this didactic experience available, thus allowing new collaborators to contribute to the evolution of this project.

In 2020, many additional features were collaboratively implemented by another group of students. These novel features are documented as issues.

▲ back to Index

Resources applied in Pokemon GO clone

To develop this project, I used native application development resources for Android. More specifically, these were the main resources used and demonstrated to students through this app:

  • Basic Android Concepts
  • Navigation between screens
  • Activity Lifecycle
  • GUI - layout managers
  • GUI - different types of views
  • GUI - Fragments
  • Threads, Handler and AsyncTask
  • Client-server communication with HTTP and JSON
  • Data persistence with SQLite
  • Intents and Intent Filters
  • Multimedia – audio and camera
  • Use of Maps and Routes (Google Maps API, Places SDK and Directions API)
  • Geolocation
  • Communication via network (Bluetooth)
  • Support for different screen sizes
  • Moving an image around the screen using touch
  • Gyroscope sensor
  • Use of design and architectural patterns

▲ back to Index

Application features

As my goal with this application was purely didactic, not all features of the original game were implemented. I selected the following features for implementation:

  • Register user (trainer avatar defined according to gender)
  • Login/Logout
  • Search for Pokémon (walk around the map, seeing random Pokémon scattered within a dynamic radius updated according to the trainer's geolocation. Pokémon respawn every 3 minutes.)
  • Catch Pokémon (after clicking on a Pokémon on the map, an augmented reality simulation is presented using the camera, gyroscope, sound effects, and moving objects on the screen via touch)
  • Pokémon trainer profile (Catch history and more)
  • Pokédex (View all pokemon ever caught among the 151 pokemon of the first generation)
  • Pokédex details (See types of all pokemon and locations on the map where they have already been found/captured)
  • PokéStops (Specific points marked on the map, usually buildings and historic places where the main character can find Pokémon eggs.)
  • Hatch Eggs (Eggs are available at PokéStops around the map. When the player gets close enough to a PokéStop and interacts with it, he gains items, which are usually eggs. To hatch an egg, simply walk the distance indicated by the egg (two, five, or ten kilometers) for the egg to hatch and you get a new Pokémon.)
  • Trace a route to a distant Pokémon (To try to catch an existing Pokémon on the map, the player must be within a minimum distance of it. Whenever the player interacts with a Pokémon that is not within this minimum distance, the game shows the player a route on the map between the Pokémon and the trainer. After the route is traced and the trainer starts moving, it is warned when the pokémon is within the minimum distance. Feature implemented using the Google Directions API)
  • Pokémon Trading (Allow nearby users to use a Bluetooth connection to trade Pokemon they've caught before)
  • Pokémon Evolution (When capturing a Pokémon, it comes with specific candies of that species. When a certain amount of candies from an evolutionary line is accumulated, the trainer can evolve a Pokémon of this belonging to that evolutionary line)
  • Trainer experience points (Whenever a trainer catch or evolves a Pokémon, interacts with a PokéStop, or hatches an egg, the trainer gains experience points and can level up.)

Screenshots

The next screens implement some of the main features mentioned above:



The navigation flow of the screens follows the storyboard presented below:



▲ back to Index


Demonstration Video

The video below (pt-BR) shows the complete app in action.

Pokémon GO Clone presentation

▲ back to Index

Technical Documentation

The complete technical documentation of this project (pt-BR), including its functional requirements, non-functional requirements, structural and behavioral modeling can be found at this link.

▲ back to Index

About

This project was developed during the course "Programming for Mobile Devices" of the undergraduate in Computer Science at Federal University of Viçosa (Brazil). It sought to reproduce the main features of the original game, with a purely didactic and pedagogical purpose. This game is not marketed or distributed to end users.

The UFV Computer Science undergraduate course website published a note detailing this experience a little more. This note is in Brazilian Portuguese and can be accessed at this link.

  • Pokémon is a brand owned by Nintendo Co. Ltd., Creatures Inc., and Game Freak Inc.
  • Pokémon GO was originally developed by Niantic Inc., and Nintendo Co. Ltd.

▲ back to Index