Final Project Post: Scavenger Stuffs

Scavenger Stuffs

Savannah Mann

A mobile game based around scanning pendants against hidden stuffed animals to collect characters in-game

Poster

Describe what your project does and how it works

Scavenger Stuffs was built around the idea to make wearable technology cheap and accessible. By pairing a medium expense, a free mobile app, and a $1 player pendant together, the entire game helps create a unique and fun twist on scavenger hunts.

The stuffed animals are intended to be bought at-cost for manufacturing ($20-$30) by local business, or donated to libraries and museums. Each stuffed animal is a standalone unit in the game, complete with its own unique design in real life, and in the mobile app.

Once a player finds a location which distributes pendants (Decorative tags which cost <$1 to create), they use the pendant to register for an account on the mobile game. From that point on, players can scan their pendants against any stuffed animal they find, and it will be added to their game’s account.

Scavenger Stuffs’ goal is to bring wearable technology down to a more accessible level, and to help get everyone exploring.

Describe your overall feelings on your project. Are you pleased, disappointed, etc.?

Not only is the product completely functional, but the overall plushie design and app exceeded my expectations for what would be done by the end of the semester. The game is consistently  working, easy to manage, and involved a great deal of work that was planned well and executed clearly. Overall, this was a very complicated project that succeeded thanks to a great deal of initial research and rigid goals.

Describe how well did your project meet your original project description and goals. 

This project both meets and exceeds the initial concept. The idea to have an RFID-based scavenger hunt seemed a bit difficult in terms of hardware, but ended up proving to be much simpler after soldering the pieces together. The plushie designs ended up being unique, quickly craftable, and durable, the three aspects I was hoping for in their design. As for the app itself, it proved to be almost bug-free in its late stages of development, allowing for users to recieve animals with only a 5-10 second delay from the initial scan. The app not only featured the animated animals which were not an initial requirement, but the “adventure” system was also implemented early on to add gameplay to the app.

Describe the largest hurdles you encountered.  How did you overcome these challenges? 

The biggest challenge with this project was the data-transfer between the RFID scanner to the Unity game. Initially, the plan had been to implement the backend APK from the Pi to update the server as expected, however the issue that I ran into was that there was no APK in existence for this server that ran through any executable Linux file. The workaround that I ended up making was a dummy Unity file that ran on another computer, using a Linux clone to rsync the file over then using the Unity APK for the server to update the server. It added a lot of silly, complicated steps and terminology between points A and B, but once I got the system ironed out it worked well and with managable delay. The surprising upside to all this was that I got to monitor every step of the data transfer via my SHH terminals, command line for the Linux clone, and my dummy Unity file’s custom screen. What I sacrificed in simplicity, I made up for in reliability and ability to monitor/debug.

Describe what would you do next if you had more time 

First step would be to move the stuffed animals off a local network. I’ve got a few pages of notes on some good techniques for this, but I would like to delve a bit deeper into the research before committing to one method over the other.

Next step would probably be to add a stat system to the “adventure” mode of the game to make it more challenging and to reward players for collecting new animas.

Then, I think it’s just a matter of making more stuffed animals!

List of materials:

Pendants

  • RFID Tag (Blue circle tag)
  • Sculpey White Clay
  • Acylic paint, chalk, watercolor, nail polish

Stuffed Animals

  • RFID-522 Reader/Writer
  • Raspberry Pi 0W
  • 4GB SD Card
  • Fabric & Stuffing (Polyfill + Crumpled Paper for most)

Program Components:

  • Unity (Mobile App)
  • Unity (Dummy)
  • GameSparks Server (Scavenger Stuffs Datatypes & Messaging)
  • Bash on Ubuntu for Windows10
  • RSync bashLoop.sh script
  • RFID Reader/Writer I/O initializer script

Project Post #7: Scavenger Stuffs

Weekly Accomplishments:

Very good news this week in that the issues from last week were resolved! Soldering the pieces in fixed a lot of the issues I was seeing with the RFID reader/writer, and as of right now we have the following setup working:

RFID Read/Write -> File Write -> RSync -> Server Upload

Server -> Game

This means that the only outstanding issue is translating the RFID output to something recognizable by the game. When reading the RFID tag, any blank space appears to be changed into junk values, meaning that the user associated with it is not recognized (for example, if the user was “Maywood”, it is read in but the game sees it as “Maywood+junk vals” and doesn’t associate it with the user “Maywood”.

I started on a trimming piece to stop this error from occurring but messed up a bit of code in the process. First priority is fixing this bug so that we can finish the core functionality of the game.

It’d also be nice to do an automated RSync. That’s 2nd or 3rd priority.

As for other progress this week, we got the claws for Jody done, and the pendant designs are in the work. Instead of 3D printings, we’re going to use clay to envelop the tags and carve/paint designs in. Should be a much easier solution.

Also attempting to get a 3rd animal made before the end of the class. We’ll see how it goes.

Images:

Here’s a video of the program reading in a user’s name through the RFID reader/writer, ready to give them an anima

https://drive.google.com/open?id=1iwWv7HLuNg9Qk-LZaCYXrq_0CxLINis8

 

 

Additional Material List:

    1. Battery/USB Charger (still torn on which I’ll be using, but right now it isn’t a priority)
    2. MicroSD Card (this might add a bit to the expense of the plush
    3. Cost of Plastic for 3D printing the pendants (depends on whether I’m crushing the old pendant ot make the new one, or working around the original key fob. Again, I’ll make this call once I have a base product working).

Areas of Concern:

Now that most soldering is done, just a matter of fixing that RFID output formatter and setting up automated tasks for rsync.

It’d also be nice to get the pis hooked up to the wifi of wherever we’ll be presenting them, so that they won’t be tied to a 10ft radius around my phone.

Project Post #6: Scavenger Stuffs

Weekly Accomplishments:

This week was tackling the major issue of communicating between the RFID scanner and the Unity game. Thankfully, a solution has finally been found. It feels a bit over-complicated, but it works under manual testing and should hold up all the way:

  1. Power up Pi and RFID Read/Writer
  2. Power up computer on the same network, ssh to pi
  3. Scan pendant against RFID reader, output to file
  4. Rsync file to the computer via ssh (hopefully this will be automated in the near future)
  5. Run the dummy unity program which looks at that location and updates gamesparks accordingly
  6. Pull results from gamesparks in-game

The setup for this took a while, but it ends up being fairly simple in the pi and application. The video below shows the file transfer occurring.

Also done this week, more component acquisition. We have the paint and clay needed to finish up the goat, and two additional pis and scanners have been ordered, along with 10 extra tags. I will need 2 additional microSD cards, but they have not been ordered.

As for plush progress, I have a good idea of what the third animal will be and have some fabric set aside. The anteater plush now has eyes as well.

For the game side, login/registration was fixed, and the app was finally hooked up to read in acquired animals from the server. Users can tap to swap which anima they use in-game.

Images:

Video this week, showing off the new RSync between our pi and my laptop

https://drive.google.com/open?id=1uwSZU0IbvlXcYmhjvJBxuMjCMQBm7wx7

Additional Material List:

    1. Battery/USB Charger (still torn on which I’ll be using, but right now it isn’t a priority)
    2. MicroSD Card (this might add a bit to the expense of the plush
    3. Cost of Plastic for 3D printing the pendants (depends on whether I’m crushing the old pendant ot make the new one, or working around the original key fob. Again, I’ll make this call once I have a base product working).

Areas of Concern:

Right now, biggest concern is with soldering the RFID Reader/Writer and making sure it works consistently. Right now, every component works individually, but linking them up is always cause for concern. Here’s what it looks like now:

RFID to File: Tested, but torn apart for transport. Code is good, hardware needs to be redone

File to Computer: Tested as of 4/14

Dummy Unity to Game: Tested as of 4/7

Essentially, we have 3 groupings of technologies that need to be tied together. This means we need, respectively:

  1. The RFID reader/writer to work consistently after soldering
  2. A scheduled task to run RSync
  3. The dummy file to be updated to grab the file from the new location

3 is a quick fix, but requires me to take a few notes before implementing. 2 can be skipped until everything else is done because the test can be run manually. 1 is what concerns me most, since my soldering skills are pretty stale. We’ll see how it goes.

Project Post #5: Scavenger Stuffs

Weekly Accomplishments:

Second stuffed animal has been started and details have been added.

The game now has a working “travel” feature, allowing users to venture out with their animas for a set period of time. The user is updated every [x] seconds, showing what their Anima is up to

The server (GameSparks) has been fully set up to hold the information for the game. Right now, everything is being tested on the provided test harness, but I’ve been able to confirm some of the features such as the “Add Anima” script are working as intended on the gameside.

The RFID tags can now be read. The wiring is a bit iffy, so its not consistent yet. I’ve switched over to setting up on the RaspberryPI 0W for testing as a result. After many attempts with the bluetooth/wifi connections, I believe the best way of handling passing information will be making a dummy controller of Unity to load onto the pi and run to update the database.

Images:

 

Additional Material List:

    1. Battery/USB Charger (still torn on which I’ll be using, but right now it isn’t a priority)
    2. MicroSD Card (this might add a bit to the expense of the plush
    3. Cost of Plastic for 3D printing the pendants (depends on whether I’m crushing the old pendant ot make the new one, or working around the original key fob. Again, I’ll make this call once I have a base product working).

Areas of Concern:

Biggest issues this week:

  • The RFID Read/Writer works, but the wiring causes it to be a bit iffy as to whether its going to work or not. Shouldn’t be an issue once soldered, but I’m hesitant to solder without having a working temp on the 0W
  • Passing information is a bit odd since I don’t have a proper SDK for the pi. The best way of adding Animas will be writing to a file the RFID data as is implemented now, and then having a dummy Unity file waiting for that change and using the Unity SDK to pass the info up. The dummy Unity file works, and the RFID part works, so now it’s just a matter of making sure a Linux Unity build is viable and works as intended
  • (Also WIFI will be needed for the Animas due to this change. Not a bit deal, but since there is no graphical interface, I’ll either have to scan and jump on the nearest network or SHH into the pi whenever setting one up)