We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Having fun with droidcon NFC/QR hunt

00:00

Formal Metadata

Title
Having fun with droidcon NFC/QR hunt
Title of Series
Number of Parts
46
Author
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Did you play with our funny game in Droidcon? Now it's time to understand how we develop it starting by the open source code by Google, extended it with new design, improved functionality and enhanced experience.
18
RepetitionBit error rateInteractive televisionGroup actionBit rateGame theoryBookmark (World Wide Web)Event horizonLecture/Conference
Bit error rateGoogolGame theoryMobile appGame theoryOpen sourceType theoryPort scannerMultiplication signSequelSystem callQuicksortUniform resource locatorGoogolLecture/Conference
Event horizonOpen sourceMobile appUniform resource locatorCodeQuicksortEvent horizonGame theoryDigital photographyProof theoryAreaCoefficient of determinationPhysical lawPrice indexLecture/Conference
Service (economics)Software developerPower (physics)Game theoryEvent horizonGoogolLecture/Conference
Point cloudGame theoryGame theoryMultiplication signMereologySoftware developer40 (number)Graphical user interfaceVideoconferencingComa BerenicesWeb pagePoint cloudService (economics)Analytic setLecture/Conference
AerodynamicsGame theoryGame theoryTotal S.A.Dynamical systemMixed realityReal-time operating systemStatisticsAnalytic setLecture/Conference
Bit error rateDistribution (mathematics)Game theoryMaxima and minimaService (economics)Software developerPoint (geometry)Real-time operating systemGame theoryDynamical systemCartesian coordinate systemRoutingFunctional (mathematics)Android (robot)Video game consoleHydraulic jumpCore dumpLecture/Conference
Software developerVideo game consolePoint (geometry)Condition numberAnalytic setDependent and independent variablesWhiteboardLibrary (computing)Game theoryMoment (mathematics)Lecture/Conference
CodeOracleCuboidPoint (geometry)Library (computing)SmartphoneGame theoryThermal conductivitySoftware developerCartesian coordinate systemQR codeCodePort scannerLecture/Conference
Library (computing)Service (economics)Data managementDecision theoryElectronic mailing listMultiplication signMarginal distributionMobile appGroup actionElement (mathematics)Event horizonOpen setPhysical lawFunction (mathematics)Computer animationLecture/Conference
Front and back endsData storage deviceMobile appSoftware developerCartesian coordinate systemEvent horizonGame theoryMereologyVector potentialNumbering schemeFunction (mathematics)Lecture/Conference
Programming languageComputer virusRevision controlArmFormal languageComputer programmingComputer animation
Library (computing)Software frameworkLogic gateVirtual machineGoodness of fitFormal languageObservational studyVideoconferencingComputer programmingDemosceneSineCuboidWeb 2.0Mobile appSpeicherbereinigungLecture/Conference
ScalabilitySoftware developerFront and back endsWeb 2.0JSONXMLComputer animation
Type theorySoftware frameworkScalabilityWeb 2.0Function (mathematics)Goodness of fitoutputLecture/Conference
Software frameworkSoftware frameworkFrame problemSpeech synthesisUsabilityWater vaporComputer animation
MiddlewareElectronic mailing listSoftware frameworkType theoryAuthenticationMobile appData managementVideo GenieMetropolitan area networkWater vaporLecture/Conference
Game theoryRevision controlFront and back endsMobile appServer (computing)JSONXMLComputer animationLecture/Conference
Front and back endsSystem administratorServer (computing)MereologyWeb 2.0Formal languageBit rateStress (mechanics)Object (grammar)Lecture/Conference
Formal languageWeb 2.0Object (grammar)Scripting languageEndliche ModelltheorieWeb applicationXML
Game theorySoftware developerWeb applicationMobile appLink (knot theory)Cartesian coordinate systemSystem administratorWeb 2.0CodeAndroid (robot)GoogolQuicksortSystem callLecture/Conference
Android (robot)Software development kitCodeVirtual machinePrototypeGroup actionMoment (mathematics)Event horizonGame theoryRevision controlInformationCartesian coordinate systemoutputLecture/Conference
Game theoryLink (knot theory)Representational state transferService (economics)Web applicationSoftware developerCartesian coordinate systemMobile appoutputOperator (mathematics)Range (statistics)Function (mathematics)Open sourceData storage deviceLecture/Conference
Mobile appEvent horizonSource codeDiscounts and allowancesElement (mathematics)Lecture/Conference
Element (mathematics)Self-organizationVideo gameLecture/Conference
Computer iconBit error rateSoftware developerRule of inferenceGroup actionGame theoryPhysical lawCausalityDependent and independent variablesPoint (geometry)QR codeLecture/Conference
Software developerLecture/Conference
Transcript: English(auto-generated)
Hi everybody, I'm Giovanni from Google Developer Group Roma and this is Alessandro Mancini from the same group too. And today we want to talk to you about funny games we developed and we use in many
conferences and many events because it's so fun and because it favorites the interaction between the people. And this game is Scavenger Hunt and we call it for this occasion Droidcon NFC Quarantine
but it is called GDG Scavenger Hunt. We started this game because we read about the Google IO NFC Hunt, this was the same type of app that Google developed for Google IO 2013.
And Google released the open source decoder from this app and this was a game using the NFC tag. It's some sort of Scavenger Hunt in which the player has to log in with his Google
ID and the app shows a photographic clues so it's like a picture of a place in the
location of the game. The user has to find, has to look for this place and needs to scan the two tags NFC placed near the place. The user scans these tags and unlocks the next clue. We use this open source code and rearrange it for other events like Droidcon UK 2014
and other events in Italy and on. And this kind of game makes use of the play game services that is a powerful Google
API to easy develop, easy developing all the services that a developer need to a back end for his game. At the page that develops Google com game services you can find all the documentation
for this API. The main important part is that this API are useful to develop the saving game data into the cloud of Google in a very easy way.
Could be using this API the developer could analyse all the analytics that are coming from the players and understand why and during what time is played and many other things
like statistics and analytics about the game. Another feature, another key feature of this API is that this allows them to kind of dynamics, the real-time dynamics and the dynamics.
The dynamics is based on a room like API in which for example a game, a player could create a room and await for another player to join him in the player or real-time gameplay
is for real-time and checking of data between the players. A developer using this API could easily develop gaming achievements or leaderboards
so could develop all the gamification points of this game. All the API could be easily adjusted by in the Google Play developer console of Android
application for example using the joypad icons you can create a back-end using the services for your application and you could activate all the functionality needed by it. For example for our GDG scavenger route we need the achievement feature so player for
example using between clues we have some question that a user that the player should respond incorrectly and so it can unlock some achievements so we have in our console
the achievement used for these games, it's easy to create these, just we need the picture, the title and the condition and some points of this achievement. And the very powerful data a developer could take from this console is the analytics for
example about this achievement. And we need also the leaderboard that is in Italian classification, the classification
of the user based on the point. The first problem we meet developer the game, enhancing the game by Google was that this
game only supported NFC tags but in Italy about two years ago not many users had smartphones supporting NFC so we announced the application supporting the QR code, it's using a very simple library so a user can scan NFC code or with this camera scan the QR code.
We announced all the design using material design and we just used the last week library from Google, the design support library.
We just have some problem developing the floating action button by Google because there are some margins to the element for the API lower than I think 4.0 and the second problem
we faced was that we have to develop an app for an event.
So each time we have to develop the NFC app for that event. And we rearrange it, rearrange all the app to support a list of events so you have to download only one app and you have to select the event where you want to play.
For example, you want to play in 2015 here in Berlin, you can because we have developed a backend that is storing all the data for this game and you need only one app.
And if you want to add this application also for your event you only have to take one app from the store, from the play store and you have to create the app, we let her see how we could implement.
All the backend was realized in using Golang backend and is the developer of this part of application. Do you want to talk about the Golang backend of our app? Okay. Hello.
How many people here know about Golang? Wow. I'm lying. Okay. Golang is a programming language developed by Google in 2027. Golang is a young language, last version is 1.4 and released in February.
It is a good language. Golang is a syntax by C++, it has garbage collector for many purposes of app, web app,
video app, many kind of app. It has good performance because it's a compiled language program, it's not like Java or Python
that need a virtual machine. Why we use Go for our backend? Because it's simple for a non-web developer like me to develop a web backend with Golang because it's syntax derived by C++.
And very easy to develop a rest type that is what we need. And it's good scalability. We think that with Go we can improve our app in very, very simple.
There is many web framework for Go, Martini, Gorilla, Negroni, Bigo, Gorgi, Gores, Jin.
And every framework has its features and is different with the other framework. We use Jin because it's more simple and maybe Martini, Gorilla has more features
as is more full framework. But Jin has what we need.
It's simple and it has a middleware for talk with MongoDB, a middleware for manage JSON request and a simple authentication. We need only this feature.
So Jin is a good compromise for our app. Our rest type give us rest type for add an ant, add a clue in an existent ant,
and get a list of all ants, get a detail of one ant. So now the backend is very simple.
We think about improving this backend in next version of this app. So yes, because anyone who want to develop a game like this could use this backend to create an ant for this event and create all the ant clues that he needs.
So he can put in our server all the picture that a player has to look for. The administrator could also add the question and the answer that he needs between the two clues that the players has to respond and you can activate or deactivate an ant.
All this backend could need a web administration part that we are realizing using Dart, the
like an object oriented language to create and create in my opinion very efficient web
application not using JavaScript but compiling to JavaScript. We are using Polymer to give a bunch of material design also in the web administration app for this game. So anyone could, we are working to the code and the code is on GitHub, this is the link
to the package of this Dart application web administration app. So anyone can help us also with the development knowing Dart and Polymer and the Dart application
is interfacing with this backend development. So it's a whole Google solution for Google games. So using this web application you can create an ant, you can add some clues and the Android
application could automatically download all the information it needs to start the game. We are planning to develop also an iOS version, now this is a prototype version that
we are developing. We are publishing about, we are going to publish in about one month from here and so because we have the problem that many GDG events, someone has an iPhone and many
people want to play with the iPhone too. And like I said just two minutes ago that player services are also compatible with iOS and they are also compatible with the C++ application, web application with the
rest API. So anyone could develop gaming app with the play game services. We are planning a Dart application, so the Android application is available at this link,
the upper link on the play store. You can download it now and maybe this afternoon we could play with this funny games, the source code of the app for suggestion or for improving or also to rearrange it for
your events if you need some particular feature. We are planning to add some cardboard support, for example to enhance the designs with VR elements. And if you want to play today, this afternoon, you just have to take a picture and tweet
the picture with Droidcon DA and hunt. If you want to play this afternoon, I think the Droidcon DA organization also has some prizes to give you to the players who complete first the hunt.
Just download the app, download all the clues and look for the photographic clues in this place. And you have to scan all the NFC tags or QR codes near the place and you have to respond
to answer all the questions between the clues to earn some points. And that's all. And if you have any questions about the development of the game, okay.
Someone want to play this afternoon? Just tweet. Okay, thank you.