Getting to your first 100 players
How to share your game and get your first 100 players
By RUN.team · July 28, 2026

So you've made a game, you've launched it - now what?
Time to get some people playing it.
Its an easy to trap to think once you've launched you're done and players will just arrive to play it, but sharing and promoting your game is the difference between games that get played and games that don't.
Step one:
Share your game with your fellow creators in the discord https://discord.gg/rundotcreators - your first players are often your peers!
Then share your game more widely - Getting your indie game noticed on social media isn't just about running ads—it's about making content that actually stops people from scrolling past. Here’s what actually works:
Cut the Fluff: Skip the dark fade-ins and studio logos. Put your coolest mechanic, a weird physics glitch, or the most chaotic 2 seconds of gameplay right in frame #1.
Authentic, frequent, short-form video: TikTok, Reels, and Shorts don't care about your polished cinematic trailer. They want raw, 15-second gameplay clips. Post them daily, keep them fast, and don't overthink the editing.
Use the "X meets Y" pitch: Give people a quick mental anchor. Captioning a clip with "Imagine Stardew Valley, but with firearms" gets people interested ten times faster than a paragraph explaining your lore.
Show the messy dev process: Bizarre bugs, failed art concepts, and "how it started vs. how it's going" clips do surprisingly well. People love watching a game get built in real time.
Give them ONE thing to do: Don't throw five links at them. End your best clips with a clear, simple push: "Play now on RUN". Make it easy to follow through. This is a great spot to use your short and sweet RUN vanity links: w.run/creator/gamename
Step two:
RUN also has some handy tools that make it easy to promote your game built into the SDK-
How In-Game Sharing Works on RUN: The Player & SDK Path
While the CLI or Studio helps you deploy builds, real viral growth happens inside your game.
Using the RundotGameAPI.social.* SDK, you can give your players the tools to invite friends, share custom lobby links, pass gameplay parameters, and post clips directly to social media.
Here is how to set up player-to-player sharing on RUN.world.
1. Generating Short Links & Native Share Sheets
When a player wants to invite a friend or share a specific game state (like a custom lobby or boss fight), generate a short link using shareLinkAsync.
Short links look like [https://w.run/s/k7Qp2x9](https://w.run/s/k7Qp2x9), and you can append a cosmetic slug to make them readable (e.g., /boss-level).
JavaScript
const { shareUrl, shareLinkId } = await RundotGameAPI.social.shareLinkAsync({
shareParams: { roomCode: "A9B2", difficulty: "hard" },
metadata: { title: "Join my co-op raid!" },
slug: "boss-level"
});
How the SDK Handles Platform Differences
On Mobile: Invokes the native OS share sheet (iOS/Android share drawers) so players can send the link via SMS, WhatsApp, or any installed app.
On Desktop/Web: Copies the share link directly to the player's clipboard and triggers a native toast notification.
This functionality can be used in lots of creative ways, like gifting items to new players, sharing UGC content they made, and more.
2. In-Game QR Codes
If you want to render a visual QR code directly inside your game UI (great for irl party games or screen-to-screen invites), use the QR helper:
JavaScript
const { qrCode } = await RundotGameAPI.social.createQRCodeAsync({
shareParams: { roomCode: "A9B2" }
});
// Returns a data URL you can assign directly to an <img> src tag
myImageElement.src = qrCode;
3. Reading Inbound Invites (resolveLaunchIntent)
When an invited player clicks a w.run short link, RUN routes them straight into your game. To read the incoming parameters (like roomCode or difficulty), use app.resolveLaunchIntent() when your game initializes.
JavaScript
// ✅ Correct way to handle inbound join parameters:
const launchIntent = await RundotGameAPI.app.resolveLaunchIntent();
if (launchIntent?.shareParams?.roomCode) {
joinLobby(launchIntent.shareParams.roomCode);
}
4. Viral SDK Features (Beta)
This stuff is tucked behind the Beta flag right now, but if you're feeling dangerous give it a whirl (and send us feedback!)
📸 File Sharing (shareFileAsync): Let players export high-score cards, victory screenshots, or gameplay clips.
File Size Cap: Up to 10 MB.
Supported Formats: .mp4, .png, .jpeg, .webp, and .gif.
📊 Click & Referral Tracking: Track incoming viral traffic per share link with addShareClickDataAsync and getShareClicksAsync—perfect for awarding in-game rewards to players who recruit their friends.
💬 Social Post Composer (composeSocialPostAsync): Let players draft native posts to X, Reddit, TikTok, or Instagram without exiting your game experience.
👤 Follow Links: Allow players to easily share direct "Follow Me" links to build their in-game social graph.
SDK Quick Reference
ActionSDK FunctionCreate Short Link & Share Sheet
RundotGameAPI.social.shareLinkAsync()
Generate In-Game QR Data URL
RundotGameAPI.social.createQRCodeAsync()
Read Incoming Invite Params
RundotGameAPI.app.resolveLaunchIntent()
Share Screenshots/Replays (<=10MB)
RundotGameAPI.social.shareFileAsync()
Open Social Composer
RundotGameAPI.social.composeSocialPostAsync()
Game devs can be naturally quiet, but great games demand a crowd.
Don't be afraid to make some noise.