This is a demo for Scouter - a mobile version of “I spy with my little eye”.
How it Works
You can read the full spec doc, but the gist of it is:
- turn based game
- take a picture of something
- scan it using machine learning for clues
- another player takes a picture to guess based on clues
- get points for guessing right
- dominant color of an image
- where the image was taken and geocode information
- what labels machine learning finds
- what objects machine learning finds
- what text machine learning finds
- what landmarks machine learning finds
- what rhymes with the dominant machine learning field
The basic clue is location and color.
Making mobile applications in my spare time does normally suit me as I get bored from doing it for a living.
One thing that became apparent is the need to have manual override of the clues gatherd about an image.
In the full version (not demo), there exist such functionality as well.
As usual, unless formally enforced, my test automation is lacking.
The monetary incentive is in-app purchases of additional clues when guessing.
Manually overriding clues, might be a good purchasable add-on as well.
As well as unlocking limits on the amount of games you can play and specific game limits like amount of players and images.
Once the app was spec’ed out, it took about 4 months to build to this point.
I rewrote in React-Native for a month, then abandoned with fatigue and boredom.
The app itself is native android written in kotlin - which is a very nice language, much better than java. Some of the libraries include:
- android architecture components
- live data
- realtime db
- mi kit / tensorflow
The push messaging component is written on the backend to coordinate when a players turn ends and begins.
It is written in GoLang with an API and a background scheduler task.
There is also a simple HTML frontend for creating ad-hoc messages and other admin tasks.
Obviously an iOS and Web solution would be preferable to have as well.
I have attempted to rewrite in React-Native and Flutter already. Made some progress but this prototype is too far ahead.
The backend has to be secured and put into my infrastructure which still needs upgrading (the final 1% of version 2 is elusive).
Firebase is pretty awesome, but I worry about the cost of scaling.
Testing the validity of the automatic clue engine will be a challenging task.
It would be nice to generate a customized machine learning model for the application.
Overall, not a bad app and use case.
I enjoyed it, learned a bunch and think it has potential.