The Blog

Hackathon 15

By Sam Toews
Monday, July 28, 2014

Thursday, July 24 - Friday, July 25 was Agora’s first ever Hydra themed Hackathon.

Kafka Scripts

Andrew implemented a simple utility allowing users to view filtered subsets of Hydra Studio API traffic (request response pairs). Filtering is done by request time window, environment, and API key as well as request processing time and response HTTP status code. This tool can be used to tail traffic as it occurs as well as view historical traffic via a unified interface. It’s a simple program that is around 100 lines of Python reading messages from a Kafka topic.

Oculus Unity Demo + Hydra

John worked on getting familiar with Agora’s Hydra Studio features as well as our Unity SDK. Looking through the Unity store there’s a lot of services similar to ours integrated into the Unity demo projects to help developers get an idea of how to use them. Following this pattern he took the 2D example project and started integrating Hydra features into it.

Hydra UI for Achievements

Nick worked on making a customizable yet easy to use achievement system for the Hydra SDK for Unity3d. It was made with Unity’s Editor Script, so users can adjust all kinds of settings (Display time, color, trophy/picture) without looking at any code. Proof of concept as to what tools for unity can be made once Hydra Studio comes out of beta.

Tournament Seeding Gem UI

Matt worked on a plain-ruby library for managing and tracking multi-round tournaments. It knows about two types of tournament structures right now (random pairing and swiss pairing), with the promise of more to come, via bracket-tree and a couple swiss variations. You can customize various things about the tournament and also track player metadata, so it should be pretty easy to serialize data to and from.

Next steps are a more formal data serialization layer and cleaning up some known edge cases (mostly around byes) in the current code, then wrapping bracket_tree to handle elimination style tourneys.

It’s not open source yet, but it will be once he has cleaned up the codebase.

Text Web Game (MUD)

David A. worked on a text-based, RPG style, game with Hydra integration. You can play it here.

It is written in Dart, and compiled to javascript.

It uses the following Hydra features:

  • Match Templates: Store metadata about how to generate maps
  • Matches: Store map data in the match
  • Profiles: Save basic stats
  • Achievements: Display achievements for the logged in user

Lua for OAuth

Aaron finished extracting last hack-a-thon hacks into a legit project, adding most of the features and documentation a user would need to add Google OAuth to their nginx hosts, available here.

Tie Handling in Leaderboard Libraries

David Cz. worked on tie handling in the Ruby, Python and JavaScript leaderboard libraries. Two types of tie handling are now supported, Tie Ranking and Competition Ranking. In Tie Ranking, you define a leaderboard where members with the same score are given the same rank. In Competition Ranking, you define a leaderboard where members with the same score will have the same rank, and then a gap is left in the ranking numbers. The documentation for each of the libraries goes into more detail on what the tie rankings look like.

Confirm with Reveal Bug

Jack fixed a bug with Agora’s open-source “confirm-with-reveal” JavaScript plugin that stopped it from working with Rails' unobtrusive JavaScript jQuery plugin.

See here for details/commit.

He also made some progress toward extending that plugin to allow users to provide an existing popup already on the page as the confirmation dialog, rather than using one generated by the plugin.


Brett used the day to learn the basics of HTML and CSS using codeacademy. He made a really simple HTML file and a simple CSS file to show off a little bit of what he learned.