<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nayan Kumar</title>
    <description>The latest articles on DEV Community by Nayan Kumar (@novocayn).</description>
    <link>https://dev.to/novocayn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4080565%2Fd6fd26b7-8432-47cc-a8e2-9dd444208744.png</url>
      <title>DEV Community: Nayan Kumar</title>
      <link>https://dev.to/novocayn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/novocayn"/>
    <language>en</language>
    <item>
      <title>Why We’re Building TestFlight for PC Games</title>
      <dc:creator>Nayan Kumar</dc:creator>
      <pubDate>Sun, 16 Aug 2026 20:43:15 +0000</pubDate>
      <link>https://dev.to/novocayn/why-were-building-testflight-for-pc-games-4c52</link>
      <guid>https://dev.to/novocayn/why-were-building-testflight-for-pc-games-4c52</guid>
      <description>&lt;p&gt;When we started building Userplay, we thought the hard part of playtesting was going to be getting players into the game. We were wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1p37pc7d607p0hng74s7.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1p37pc7d607p0hng74s7.webp" alt="Userplay platform overview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Getting someone a build is one small part of the problem. The rest is everything around it: finding the right players, managing them, figuring out who's already tested the game, sending keys, getting NDAs signed, collecting feedback, watching recordings, following up. Then doing it all again for the next build.&lt;/p&gt;

&lt;p&gt;Most studios already had a tool for each of these things. The problem was everything in between.&lt;/p&gt;

&lt;h2&gt;
  
  
  We started with the players
&lt;/h2&gt;

&lt;p&gt;One of the first things we noticed was how much information about players ended up scattered. A Discord username in one place. A spreadsheet somewhere else. Survey responses in another tab. Notes about previous playtests living in someone's head.&lt;/p&gt;

&lt;p&gt;It made it hard to answer basic questions — who has tested the game before, who gave useful feedback last time, who's been quiet for a while.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faeewi3r5dxchub62q92y.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faeewi3r5dxchub62q92y.webp" alt="Player CRM showing player profiles and testing history" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we built the &lt;a href="https://userplay.io/product/player-crm/" rel="noopener noreferrer"&gt;Player CRM&lt;/a&gt;. We didn't set out to build a CRM, but we kept hitting the same wall: you need some understanding of your players before you can run a good playtest. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1uso1rkdzzxlwjjnzm0a.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1uso1rkdzzxlwjjnzm0a.webp" alt="Player Waitlist" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once we had that, &lt;a href="https://userplay.io/product/waitlists/" rel="noopener noreferrer"&gt;waitlists&lt;/a&gt; and eligibility rules followed naturally. So did grouping players and keeping their history in one place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F77wem990ywjf3j73mzn6.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F77wem990ywjf3j73mzn6.webp" alt="Waitlist and player eligibility rules in Userplay" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For studios whose communities already live on Discord, we added a &lt;a href="https://userplay.io/integrations/discord/" rel="noopener noreferrer"&gt;Discord integration&lt;/a&gt;. And once we started thinking about the full process of bringing someone into a test, &lt;a href="https://userplay.io/product/playtest-ndas/" rel="noopener noreferrer"&gt;Playtest NDAs&lt;/a&gt; became an obvious piece.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxeiu5fndll9d25tq4cy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxeiu5fndll9d25tq4cy.webp" alt="Playtest NDA workflow in Userplay" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting players into the game was its own problem
&lt;/h2&gt;

&lt;p&gt;Having the right players doesn't mean they're playing yet.&lt;/p&gt;

&lt;p&gt;Different builds, different groups, different keys, different access rules. We saw teams tracking all of this in spreadsheets — who should get which key, who already had one — and it worked, but it was another manual process sitting in the middle of every test.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://userplay.io/product/key-distribution/" rel="noopener noreferrer"&gt;Key Distribution&lt;/a&gt; to handle this. Studios can bring their own keys or import them from Steam and send them to whoever's been approved for a given test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6jg25dt4kiroac823wzb.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6jg25dt4kiroac823wzb.webp" alt="Key distribution dashboard showing keys assigned to players" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The more we built around distribution, the less the product looked like a tool for sending builds and the more it looked like a system for running the whole test.&lt;/p&gt;

&lt;p&gt;We started supporting &lt;a href="https://userplay.io/product/playtesting/" rel="noopener noreferrer"&gt;single-session, multi-session, and longitudinal playtests&lt;/a&gt; instead of treating every test as "send this build to these people."&lt;/p&gt;

&lt;h2&gt;
  
  
  Recording changed how we thought about feedback
&lt;/h2&gt;

&lt;p&gt;This is where things got more interesting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg92ywjlldgav3c09htxb.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg92ywjlldgav3c09htxb.webp" alt="Gameplay recording capturing a playtest session" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'd see teams ask players why they struggled with something and get answers like: "I didn't know what to do." Useful, but thin. What happened right before they got stuck? What did they try? Did they miss something on screen, or did they interpret the mechanic differently than the designer intended?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgeyjm6nxjl0g23dmb5fe.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgeyjm6nxjl0g23dmb5fe.webp" alt="Player feedback alongside recorded gameplay footage" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A recording can answer those questions. &lt;a href="https://userplay.io/product/gameplay-recording/" rel="noopener noreferrer"&gt;Gameplay Recording&lt;/a&gt; captures what's happening during a session without requiring studios to change anything about their games.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdnjienvd38gxbi8zm6p.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdnjienvd38gxbi8zm6p.webp" alt="Gameplay analysis highlighting key moments and transcripts" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But recordings created a new problem: nobody wants to scrub through hours of footage to find the thirty seconds that matter. So we built &lt;a href="https://userplay.io/product/gameplay-analysis/" rel="noopener noreferrer"&gt;Gameplay Analysis&lt;/a&gt; to surface important moments, transcripts, and highlights — a way to get through sessions faster.&lt;/p&gt;

&lt;p&gt;We hadn't planned this as a big feature from day one. It came from using the product ourselves and realizing that collecting more data isn't useful if it just creates more work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting the pieces
&lt;/h2&gt;

&lt;p&gt;At this point we had players, playtests, gameplay recordings, and feedback. But we kept circling the same question: how much do you actually know about the person behind a piece of feedback?&lt;/p&gt;

&lt;p&gt;A player says the tutorial was confusing. But maybe they've played the game ten times. Or maybe it's their first session. Maybe they've hit the same issue three times. Maybe they stopped playing five minutes later. Those details change how you read the feedback.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://userplay.io/product/surveys/" rel="noopener noreferrer"&gt;Surveys&lt;/a&gt; are part of this, but they're not the end of it. We want survey responses to sit alongside what we already know about a player and what happened during their session.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F20nczoshebf9yrbtenpo.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F20nczoshebf9yrbtenpo.webp" alt="Player insights view combining survey responses, session data, and player history" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://userplay.io/product/player-insights/" rel="noopener noreferrer"&gt;Player Insights&lt;/a&gt; is our attempt at that — putting feedback back into the context of the player rather than treating it as an isolated response.&lt;/p&gt;

&lt;p&gt;Who was this player? What did they do? What did they say? What happened during the session? That combination is much closer to what a playtest actually tells you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The work outside the game
&lt;/h2&gt;

&lt;p&gt;A playtest doesn't end when someone closes the game. There's community communication, player follow-ups, recruiting for the next test, sharing what changed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsh9k68b13mknt4u5yff3.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsh9k68b13mknt4u5yff3.webp" alt="Announcements and player communication tools in Userplay" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These tasks kept showing up around every playtest we looked at, so we added things like &lt;a href="https://userplay.io/product/announcements/" rel="noopener noreferrer"&gt;Announcements&lt;/a&gt; and integrations with &lt;a href="https://userplay.io/integrations/mailchimp/" rel="noopener noreferrer"&gt;Mailchimp&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The playtest itself turned out to be only one part of the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we're building now
&lt;/h2&gt;

&lt;p&gt;All of this is how we ended up thinking about Userplay as &lt;strong&gt;TestFlight for PC games&lt;/strong&gt;. Find the players, get them into the right test, see what happened, collect their feedback, understand it in context, and use what you learned to run the next one better.&lt;/p&gt;

&lt;p&gt;Userplay is early. Some of what we're building today came from problems we didn't know we'd have when we started, and every playtest shows us another part of the process that could work better.&lt;/p&gt;

&lt;p&gt;If you're making a PC game and running playtests today, we'd love to hear how you do it — especially the parts that still involve spreadsheets, manual work, or a pile of tools that don't quite talk to each other.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>ai</category>
      <category>testing</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
