Personal Projects
- Clickable spark:// links that let users share their match in Discord
- Spectate Me, which launches Echo VR in spectator mode
- Server selector GUI for creating private matches
- .NET 6 WPF (using C#)
- Native Windows APIs for window placement and border removal of overlays
- Server Location
- Exact throwing speed readout
- Player stats and pings
- Match hosting to post matches to a board
- Joining and creating spark:// links
- Private match rule presets
- Flutter
- FastAPI (Python)
- Flask (Python)
- Svelte (JS Web Framework)
- Hugo (Static site generator)
- three.js (3D visualizations in the browser)
- Oracle Cloud
- MediaWiki
- Python (web scraping and automatic page generation using MediaWiki API)
- Oracle Cloud
- A VR mode for immersive playback and visualization
- Slow-motion playback with frame interpolation
- Player highlighting and connection visualizations for analysis
- Scoreboards that match the in-game displays
- Significant visual upgrades
- Replay file trimming interface
- Live data viewing from a local game
- Unity
- Blender
- C# (Replay file creator and reader library used in both Spark and the Replay Viewer)
- JS (Web-based replay reader)
- Python
- discord.py
- Flask (not currently)
- FastAPI (REST API)
- SQLite (not currently)
- MySQL (MariaDB)
- Google Cloud Platform (not currently)
- Oracle Cloud
Spark
PC Companion App for Echo VR
Spark is a Windows desktop program that can record, process, and upload EchoVR data from either a local EchoVR client or an Oculus Quest on the same network.
It has been used extensively by members of the competitive Echo Arena community as well as league casters. Currently it has several thousand installs and over 100 daily active users.
Selected features:
Tools Used:
Spark Mini
Multiplatform Companion App for Echo VR
A multiplatform version of Spark that is built with Flutter.
Just like the main Spark application, it interacts with Echo VR’s API over the local network to show detailed stats about matches in progress. It can be used to share and join links to private matches, making it particularly useful at LAN events.
Spark Mini has fewer features than the desktop version of Spark due to the lack of ability to run Echo VR on phones, but here is a subset of Spark Mini’s features:
Selected features:
Tools Used:
Ignite Metrics
Data Collection and Analysis Efforts for Echo VR
The Ignite Metrics website is a portal for accessing the data collected through our 24/7 Echo Arena spectator stream and the hundreds of users using Spark in their matches.
Player stats pages show detailed information for dozens of types of events in every recorded match they play. A replay analysis page allows users to select local replay files created with Spark to get detailed insights into their matches.
The public API is used by several other community projects. I also made a relatively popular Discord bot that responds with player information from the same database.
Tools Used:
Echopedia
The source for EchoVR history and community knowledge.
The Echopedia is a traditional community wiki based on MediaWiki for Echo VR. I set it up manually on a private server to avoid the advertisements and platform restrictions of using a service like Fandom.
Part of the Echopedia effort was scraping and organizing the thousands of players from multiple historical league websites to generate team and player pages automatically.
An interactive block map shows user-voted callouts for blocks throughout the Arena, allowing newer players to learn. Users can vote or submit block names using Discord Oauth.
I created many other pages on the site, such as server location history maps for Arena, speedrunning guides for Lone Echo and Lone Echo II, and usage guides for Spark and Spark Mini.
Tools Used:
Replay Viewer
3D replay file playback software for Echo VR
The Replay Viewer is a collaborative project started by other members of the Echo VR community, but I added a significant part of the current feature set.
Some of the features I added or contributed to were:
Tools Used:
Butter Replay Files
Custom binary replay file format for the Echo VR API
The .butter replay file format was created as a way to reduce the file size of stored replay files.
Previously, replay files were stored as zipped JSON data, which is efficient at compressing the highly repeated data in the API response for every frame of the replay.
Butter uses techniques that mimic video compression to reduce the file size of zipped JSON data by an additional 4/5 before generic compression. Features include frame diffs for each continuously changing number, inclusion bitmasks for numbers that don’t change often, smallest-3 compression for rotations, and keyframes to reduce the numeric precision of the numbers to the highest degree possible.
Tools Used:
Player Count Graphing
CCU visualizations for Gorilla Tag
Originally, this Discord bot was intended to show if any other people were playing the game, so that people would have someone else to play with. As the game grew and exploded in popularity, it became a way for people to share in the excitement of new CCU peaks.
Every Gorilla Tag client sends the current user count to a server when they join and leave. The data collection was designed for small populations but has caused challenges at scale.
Approximately 20-30 requests are sent to the server per second, and a lot of the data is inaccurate due to delayed sending when the headset goes to sleep. I had to make heavy use of caching, filtering algorithms, and secondary tables.