The start of every software project (maybe every project) should be a problem (or a need), waiting for a solution. This post discusses what problems PoGoRaidCo is solving and in which way players benefit from it. Let’s start by taking a short look in Pokemon Go (our problem domain)
This post may not sounds to you as focusing on an application developer. Sure, maybe the same methodologies are used by UX designers or requirement engineers, but a good software developer has an understanding of a structured way to express an idea. If you are more curious about actual coding, you can skip this post. If you are looking for an approach more useable in a business context, we recommend exploring the topic EventStorming by Alberto Brandolini.
Pokémon Go is an argument reality (AR) game for Android and iOS based on the universe created by Nintendo’s Pokémon game and televisions series. Niantic has developed Pokémon Go and still provide content updates.
Pokémon Go transforms the ‘reality’ into a Pokémon world. A Player is becoming a trainer, trying to catch Pokémon, compete with other trainers, and battle in gyms. A player can find Gyms at places like points of interest, train stations, playgrounds or lookouts.
Back and forth, a player can encounter a special Pokémon at a gym. This encounter is called ‘raid’. A raid has two phases. In the first phase is an egg. The egg indicates the difficulty of a raid, measured in tiers. Usually, it takes about 45 minutes until the players see what pokemon is in the egg. The second phase starts directly after the hatching of the egg. Now, trainers can start the encounter and usually have 60 minutes to defeat the Pokemon.
While it is easy to conquer a tier-one raid alone, it is nearly impossible to win a tier five raid alone. However, players can join a raid to fight a Pokémon cooperatively. After the raid is finished players can catch the Pokémon. To join a raid, you have to be very near (50 meters) to the gym.
Besides, each player sees not the whole world. Instead, each trainer sees only a specific area around him. Let’s say nearly 1000 meters. Therefore, a trainer does not know raids which are 2 kilometers away from him, which may be easy to reach. Also, it is unclear for a trainer if he will meet other players at the gym, which could help him with the challenge. PoGoRaidCo is going to solve these issues.
Software as a problem solver
Each software is a tool, and like other tools, it has a dedicated purpose. You want to cut wood. Because your hands aren’t handy for this, you use a saw. Therefore, the saw is a tool to achieve cutting woods. You want to write a book and your handwriting isn’t the best, so you choose to use an editor program. You don’t have a piece of specific knowledge in mind, so you use a search engine to find relevant articles.
Unfortunately, sometimes, software systems cannot clearly express their benefits. Think about a map service, like Google Maps. You can use it for navigation but also as a search for recommended restaurants. If you want to find the best restaurant in town, will you use Google Maps or TripAdvisor?
Therefore, a ‘good’ software does not only solve a problem efficiently, but furthermore, it has to explain a crystal clear ‘how’.
Let’s try it on the book writing example.
Problem: ‘I want to write a book, and my handwriting isn’t one of the best’.
Solution: Using an editor
How: When using a keyboard as input (instead of a pen) to write your text, handwriting doesn’t matter anymore.
In this example, we have a problem: the intention to write a book but having unreadable handwriting. The solution seems obvious, using an application like Word. However, more important is that we have a comprehensible description, how the solution helps us.
PoGoRaidCo in a nutshell
Pokémon Go Raid Collaborator – in short PoGoRaidCo – is an online platform designed to bring Pokémon trainers. Helping them to conquer raids that they might not win alone.
Every trainer create a raid profile and set preferences like time slots and areas. If a raid, matching the criteria, is reported, the trainer gets a notification. Besides, a user can browse the reported raids, searching for other trainer profiles, or start a direct communication with a trainer. PoGoRaidCo eliminates uncertainty if other players are going to attend a raid.
PoGoRaidCo is an education project
PoGoRaidCo is not only a pan and paper project. As soon as we have finished, our work trainers around the globe can use our tool to get their wished raid Pokémons. You can visit PoGoRaidCo.techkatz.org for more information.
However, PoGoRaidCo is a project for educational purpose for mid-level developers. If you think about PoGoRaidCo as a project to earn money, we would have chosen a more advanced architecture (microservice) and implementing more features, and more complex UIs. Besides, we would omit some intermediate steps.
It may sound bigot to create a ‘real-word’ application by using some technologies we wouldn’t use in a ‘real-world’ application. However, this assumption is only valid on the surface. Primarily, you should always be open to new architectures and patterns. It is a sign of a ‘mature’ developer to question yourself wheater you have chosen the right ones. Secondly, every technology we discuss is still widely in use. A commercial product only changes the orchestration. Thirdly we want to target midlevel developers. Hence, to create an easy to follow tutorial, we have to avoid a level of particular complexity.
Wireframes to structure an idea
We have already spoken about the idea of PoGoRaidCo, but it is more than likely that you don’t really can image the application, yet. How will this application work? How will it solve the problems?
Ideas exist mainly in the brain of their creators. There, ideas create a landscape full of thoughts. Unfortunately, we haven’t invented the technology to share our thoughts (yet). Therefore, we need tools to channeling ideas in shapes we can share. A possibility is to write a description of an idea. However, a description in a text can be messy too: We have a picture in mind, describe this in words (text) and expect from the reader to ‘see’ the same picture.
For a software project, we want to introduce another approach: wireframes. Wireframes are sketches of a user interface and can be used to get a first impression of how a user can interact with our solution. Moreover, it can be used to explain an idea: ‘If a user clicks this button, you see…’.
There are a lot of tools available, helping you to create wireframes or even more advanced prototypes. If you want to get a first impression without paying anything, we suggest you Moqups (https://moqups.com). On the free plan, you can create 200 objects and have many stencils for standard interfaces like Bootstrap, Material Design or native iOS elements.
Wireframes for PoGoRaidCo
To prove that wireframes are a great tool to explain a not yet existing software to others, we examine the PoGoRaidCo example.
The PoGoRaidCo Navigation
Sure, PoGoRaidCo has a starting page for users, which are not signed in yet. Maybe this page displays information, or statistics about PoGORaidCo, trying to ‘convince’ a visitor to become a part of the PoGORaidCo community. However, this page is not crucial to explain PoGORaidCo. Thus, we discuss the view a logged-in user would see.
The menu suggests that PoGoRaidCo consists of four main sections: »Dashboard«, »Raids«, »Report a Raid«, and »Trainers«. Besides, we grouped some ‘personal’ preferences, like profile, settings, and messages into the »Settings and logout« tab, hidden by the dropdown menu. Above the menu, on the left side, you can see the logo, and on the right side, an indicator for active alerts and new messages. Furthermore, a user can indicate his online state manually.
PoGORaidCo should bring trainers together and even if this is a first, not very detailed, wireframe, we get a better impression on the how. It is now clear that a trainer can create a raid profile and that they can search the database for current raids or other trainers. Also, this sketch indicates that a trainer can configure alarms to be informed about new raids. For better communication, trainers can send messages. The first wireframe was a good start. However, there is still a lack of details to understand how the application should work. Hence, we need more wireframes.
The raid profile
To help trainers find raids, they create a profile. The profile consists of two parts. A trainer profile and a raid profile.
The trainer profile lists general properties like the current level, team, name, or contact details.
The raid profile contains all properties needed to find suitable raids automatically. We grouped these properties into two sections.
In the first section, you have to choose which Pokemon (you can choose more than one) you want to defeat or which tier you want to encounter. These settings are not related to a particular area.
Despite the second sections, where you have to fill in at least one »preference«. A preference is a set that contains a location and a timeframe. This information is used to decide against a potential raid matching. Besides, PoGoRaidCo utilizes this preference when a profile is considered to be a potential profile in the raid search. You can have a preference for home and another for work or school with different addresses and times.
Report a raid
The ‘counterpart’ of a raid profile is the reporting of a raid. The needed properties are quite clear, but a wireframe makes it is even more precise.
Every raid takes place in a gym. This field is mandatory. Raids can be grouped by ‘already started’ – when you know the Pokémon – and not started – when you only know the tier. For a raid, that has not started yet, you can report, when the egg is going to hatch.
If the raid has already started, you know when the raid ends and also which Pokemon you see.
Describing the ‘How’ now more accurate and derive a mission
Now we jump a few steps back. We haven’t been able to explain very well, how PoGORaidCo is going to help connecting trainers to battle raids. After reviewing the wireframe about the profile and the reporting of a raid, it is easy to explain how.
The problem exists mainly because of a lack of knowledge. Trainers even when playing in the same area don’t know each other. Furthermore, they don’t know about the availability of others. We close this gap by providing a mediator, our PoGoRaidCo platform. This platform informs matching profiles about a raid possibility and providing a list of the matching trainers increasing the likelihood of a meeting the right group drastically. Moreover, by providing accessible and secure communication between trainers, it is more comfortable and likely that you are going to meet people at the gym at a specific time.
From the last paragraph, the mission of the project can be derived directly:
Creating an easy to use, online platform generating knowledge about trainers and raids. Knowledge, which is used to connect them to participate in raids, which they are unable to win on themselves.
The raid search
To underline the project mission, we look at the raid search and the search displays.
The criteria for the raid search correlates with the properties of a raid profile. Therefore, a user can load the properties form a profile into the raid search. The search should help a trainer, who searches actively for raids or just for a spontaneous impulse to find a raid. The only mandatory input for the raid search is an address and a permitter to search. All other criteria narrow the result set and producing fine-grain results.
If a search leads to a non-empty result set, a user can browse through the entries. The user sees all relevant details of a raid, like the properties gathered from the ‘Report a raid’ form. This information is enriched with two other sources: a list of possible players, meaning matching profiles and a queue of trainers waiting to encounter the raid.
A user can decide to write a message into the raid chat. A raid chat is a space created for all players in the queue as a simple instrument to coordinate. Also the user can decide to join the queue and sending a system-generated message into the chat.
The result of a raid, which has not started yet looks nearly the same.
The raid details
Let’s examine the case where no player is in the queue. PoGoRaidCo can help in such situations by providing a list of possible trainers, displayed in the raid details.
Each trainer profile in a certain perimeter is generally considered to be a match even if not all criteria coincide. Handling a ‘match’ this way increases the likelihood that the trainer finds each other in PoGORaidCo. Maybe during a small chat, a trainer is convinced to get a little bit further to join a raid, or somebody can leave work a little bit earlier. This platform is not intended to be a fully automated system to ensure every participant gets the best result. It should be seen as a knowledge base, and, in this scenario, it provides a trainer with information. Based on this information a trainer can start writing to others or decide to try a different raid because it is unlikely that he can build a group.
This post has described what we are going to develop, namely PoGORaidCo. PoGoRaidCo is an internet-based collaboration platform, connecting Pokemon Go Players, who want to battle in raids. We introduced the concept of wireframes to structure an abstract idea into a reader-friendly version.
In the next post
The next post is about the start of the development process by discussing the architecture. Besides, we create a structure plan as a guideline for the next steps towards our platform.