For makers.
Show how many people played your game this week. Add one line to your game.
Manage your listing
Change your game's description, pictures and links yourself. Sign in with the X account on your listing and we'll match you to your game automatically.
Your gamesYour game ID is the slug in its Oya Jam link, not its title.
HTML
Put this line on the page where your game runs.
<script src="https://oyajam.com/play.js" data-game="your-game" defer></script>Next.js
Import Script from next/script and add this to your game page.
import Script from "next/script";
<Script src="https://oyajam.com/play.js" data-game="your-game" strategy="afterInteractive" />Unity, Godot or another web export
Add this line to your exported index.html, then host the game as usual.
<script src="https://oyajam.com/play.js" data-game="your-game" defer></script>Mobile or desktop app
Send one POST when someone opens the game. No player ID means every call counts.
POST https://oyajam.com/api/play
Content-Type: application/json
{"game":"your-game"}
curl -X POST https://oyajam.com/api/play -H 'Content-Type: application/json' -d '{"game":"your-game"}'Show your plays anywhere
A live picture for your site, itch page or README: your plays this week, and your place when you are in the top 10. Updates every hour and links back to your listing.
Pick your game above to see yours.
Leaderboard, share, badge
One script does the play counter and gives you OyaJam.scores (one best score per player per day, top 20, your player's rank), OyaJam.share (the phone's share sheet, else WhatsApp or X) and OyaJam.badge. Under 5 KB, no dependencies, does nothing when offline.
<script src="https://oyajam.com/oyajam.js" data-game="your-game" defer></script>
<script>
addEventListener("oyajam:ready", () => {
// when a round ends:
OyaJam.scores.submit(score, playerName).then(({ best, rank }) => {
console.log("best", best, "rank", rank);
});
// a leaderboard:
OyaJam.scores.top(10).then((rows) => rows.forEach((r) => console.log(r.rank, r.name, r.score)));
// a share button and your badge:
shareButton.onclick = () => OyaJam.share({ text: "I scored " + score + " in your-game!" });
OyaJam.badge(document.querySelector("#footer"));
});
</script>Names are up to 12 characters and filtered; you can hide any line from your game's edit page. Scores are capped at one best per player per day, so a cheater is one line, not a wall.
Questions
- What counts as a play?
- Someone opening your game counts once per day, Lagos time. Refreshing does not add another play, and bots are ignored. We also count Play taps on Oya Jam and show whichever count is higher, so your number can start before you add the line.
- What do you collect?
- Only a count and a random player ID kept on your game's site. No names, emails or IP addresses.
- Can it break my game?
- The script is tiny, runs after your game loads and does nothing if it cannot reach us.
- How do you know a game is mine?
- We check how you sign in. If your X account matches the handle on your listing, or your email matches the one you sent the game in with, the game is yours straight away. If neither matches, put a short code on your game's page or ask us to check.