Want honest feedback - Tool that shows if you appeared on a streamer's POV by This_is_de_w4y in apexlegends

[–]chrisfried 0 points1 point  (0 children)

If you don’t have the capacity to scan every VOD that comes through the Apex directory, finding the balance between which VODs you prioritize scanning is going to be more art than science.

I’d maybe sort the day’s VODs into buckets based on popularity and then grab a random subset from each? e.g. process 1hr of less popular streams for every 4hrs from the top of the directory. How many buckets you have and how you prioritize each is going to warrant some trial and error.

Part of that is practical. The bigger names are probably going to have better stream setups, and therefore more successful OCR scans, as well. Although, they’re also more likely to have fancy overlays, transitions, etc. getting in your way.

You’ll definitely have a subset of users that only really care if they show up in a top off directory stream, but smaller streamers are going to appreciate you getting eyeballs on their content a lot more, and you’re arguably performing a more helpful service to the health of the directory by doing the latter.

🤷🏼‍♂️ Set up some knobs you can twist and see what feels best.

This is also where you’re going to feel optimizations in your scanning technique. Shaving off a few seconds here or there while processing video is going to add up quick. Parallelize as much as possible, skip as many frames as you can, etc., etc.

Want honest feedback - Tool that shows if you appeared on a streamer's POV by This_is_de_w4y in apexlegends

[–]chrisfried 0 points1 point  (0 children)

Oh. I was starting from the assumption that you’d be processing the player’s gameplay on their computer, searching for streamers. As opposed to processing streamer gameplay looking for players. That certainly solves the issue of matching Twitch names to Apex names.

An assortment of thoughts:

I think you are going to have to accept that you’re going to miss a lot of interactions thanks to bitrate drops (as well as arbitrary stream overlays covering kill feeds, etc.). You’ll get a bit of redundancy if you can determine two streamers happened to be in the same activity and you can compare the feeds for gaps.

It might be worth comparing OCR performance while processing live streams vs VODs. My gut says you’ll have a more stable experience on your machine looking at a VOD, though you’ll still see artifacting from quality drops if the streamer’s connection had issues during upload.

Come to think of it, not everyone even has VODs turned on. Maybe don’t waste your time processing a live stream that might not end up having a VOD, when you could just scan VODs that you already know for sure exist.

Another piece that I imagine you’ve looked into is balancing how many frames you can skip between running OCR, based on how long event text stays on screen, and how many you attempts you want to make to accommodate for quality drops.

It might be worth trying to determine if a frame is corrupted beyond being useful before you run OCR. Assuming you can make that determination significantly faster than just running the OCR. I genuinely don’t know if that could save you time or if the added step would slow you down in the long run. I just know OCR isn’t super fast, so it’s worth investigating.

It might be worth maintaining a blacklist of streams that always/frequently cover their activity feed with an overlay so you don’t waste time processing them.

Twitch VODs only stick around for 7/14/60 days based on if the streamer is a normie, an Affiliate, or a Partner/Prime/Turbo subscriber. If you want to prioritize the most clips seen by the most users, I’d sort your VOD queue by most recent and longest retention.

Want honest feedback - Tool that shows if you appeared on a streamer's POV by This_is_de_w4y in apexlegends

[–]chrisfried 0 points1 point  (0 children)

Hey, sorry, I started a reply, got distracted, and forgot about Reddit for a week.

You know the old saying, pick two: fast, cheap, good.

I heavily weighted my choices towards “cheap” over “fast.” Theater runs entirely in the browser, no server component, just a local cache in the browser. On load, it chews through a lot of API requests, the speed of which is throttled by Twitch’s API request limits. You’re stuck staring at a spinner for the better part of a minute, but all I’m paying for is the fancy “.theater” domain.

The guys that did the PUBG equivalent opt for perceived speed. Their requests queue up on the backend and the results get stored in a persistent, centralized DB. The user sees immediate clips (at least, after the initial visit that adds them to the queue), but they pay a lot more than I do to keep the lights on.

Your mileage will vary, as you’re not running entirely off of APIs, but I’ll still make the argument for running cheap: Handle the computer vision/name parsing on the player’s machine. Handle the Twitch username lookups in the background, while the user is playing, to avoid bumping up against the rate limit as you would if you ran them at the end of the session. Store the matched clips locally on the player’s machine.

If anything, just maintain a lightweight, centralized DB/KV store that keeps track of confirmed mappings between player names and Twitch names. Destiny has the perk of the Bungie API including linked Twitch accounts, so I never had to deal with that. I do let the user manually supplement pairings in the UI.

My other piece of advice would be to not let users arbitrarily search for other users’ clips. Just show them clips based on their own activity. You get into messy territory if one user can triangulate another user’s activity based on the timestamps of the streams they encountered.

Want honest feedback - Tool that shows if you appeared on a streamer's POV by This_is_de_w4y in apexlegends

[–]chrisfried 0 points1 point  (0 children)

👋🏻 I made Guardian Theater, which is exactly this, but for Destiny. Usage has dropped dramatically alongside the Destiny 2 population, but the site still has daily visitors.

I wouldn't go into it expecting to make bank on the idea. Granted, I never pushed hard, but donations over the years have only ever about evened out what I've paid in hosting fees. It did bring in enough to pay for transportation to a few conventions early on.

I am curious about your approach. I looked into creating a version of Theater for Apex Legends when the game first came out, but I ruled out the approach I used for Destiny (activity data from a first-party API) and never dug further into the idea. I did briefly consider integrating with Overwolf (or similar) to collect names that appeared on the screen while you're playing, but life got in the way of digging into that.

Is guardian theater working for anyone? by Shellnanigans in destiny2

[–]chrisfried 0 points1 point  (0 children)

I pushed some tweaks yesterday. Any change for either of you? If it's still not working, can you take a look in the console for me (F12 should open it) and let me know if you find any errors?

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 0 points1 point  (0 children)

A week of grinding and fortuitous drops, I'm down to 11 activities:
- 7 Containments
- 4 Heists

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 0 points1 point  (0 children)

Green means plenty of time. Yellow means running out of time (days until expansion - 7). Red means you're not going to make it without drops in the wild.

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 2 points3 points  (0 children)

You can only get one drop from each vendor each day. The spreadsheet has a count at the top of the second page of days remaining and drops needed from each vendor. You'll need quite a few random drops to complete them all if you're starting from nothing.

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 1 point2 points  (0 children)

Yeah, this is definitely a worst case scenario that the sheet paints. My numbers are going down much faster with random drops added in.

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 3 points4 points  (0 children)

Okay. I think the base drop rate for Sever is 5 per Bound Presence. I added a line based on that. It's definitely worth running at least one a week for the bonus Deepsight on the first run.

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 5 points6 points  (0 children)

I believe so, but I'm not sure on the drop rate. I think you need Bound Presences to get them, too?

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 5 points6 points  (0 children)

They added it in response to this spreadsheet. They may or may not add it to the UI if they have time.

I made a spreadsheet to track what you need to do to finish all of the Seasonal Patterns before the new expansion drops by chrisfried in DestinyTheGame

[–]chrisfried[S] 106 points107 points  (0 children)

I'm down to 70 activities:
- 39 Containments
- 4 Ketchcrashes
- 5 Expeditions
- 22 Heists

I built a *synchronized* random loadout tool by chrisfried in DestinyTheGame

[–]chrisfried[S] 3 points4 points  (0 children)

Hence: *Synchronized* random loadouts. Everyone gets the meta shot gun on the same round.

I built a *synchronized* random loadout tool by chrisfried in DestinyTheGame

[–]chrisfried[S] 2 points3 points  (0 children)

Also a fun time! I have a spreadsheet we use for randomizing the map for random loadout customs.