{"users":[{"id":458,"username":"sean","name":"Sean Packham","avatar_template":"/user_avatar/forum.heroiclabs.com/sean/{size}/643_2.png","trust_level":4},{"id":1971,"username":"wlucjan","name":"Lucjan Wilczewski","avatar_template":"/user_avatar/forum.heroiclabs.com/wlucjan/{size}/2662_2.png","trust_level":1},{"id":143,"username":"sesposito","name":"Simon Esposito","avatar_template":"/user_avatar/forum.heroiclabs.com/sesposito/{size}/2594_2.png","admin":true,"moderator":true,"trust_level":4},{"id":2409,"username":"Bobit","name":"Bobit","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/b/eada6e/{size}.png","trust_level":1},{"id":136,"username":"jonbonazza","name":"Jon Bonazza","avatar_template":"/user_avatar/forum.heroiclabs.com/jonbonazza/{size}/141_2.png","trust_level":1},{"id":1574,"username":"Mohsen","name":"msn","avatar_template":"/user_avatar/forum.heroiclabs.com/mohsen/{size}/2505_2.png","trust_level":1},{"id":660,"username":"adbourdages","name":"Alain-Daniel Bourdages","avatar_template":"/user_avatar/forum.heroiclabs.com/adbourdages/{size}/944_2.png","trust_level":1},{"id":1198,"username":"devcheetah","name":"T","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/d/eada6e/{size}.png","trust_level":1},{"id":2,"username":"mofirouz","name":"Mo Firouz","avatar_template":"/user_avatar/forum.heroiclabs.com/mofirouz/{size}/1523_2.png","admin":true,"trust_level":4},{"id":1315,"username":"DazyA121","name":"Ruby Clava","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/d/65b543/{size}.png","trust_level":1},{"id":1670,"username":"Mehdikovic","name":"Kovic","avatar_template":"/user_avatar/forum.heroiclabs.com/mehdikovic/{size}/2301_2.png","trust_level":0},{"id":2031,"username":"csc1","name":"csc1","avatar_template":"/user_avatar/forum.heroiclabs.com/csc1/{size}/2750_2.png","trust_level":0},{"id":1790,"username":"AllenPDX","name":"Allen Bagwell","avatar_template":"/user_avatar/forum.heroiclabs.com/allenpdx/{size}/2444_2.png","trust_level":1},{"id":1279,"username":"spartan6nm","name":"Spartan6nm","avatar_template":"/user_avatar/forum.heroiclabs.com/spartan6nm/{size}/1799_2.png","trust_level":1},{"id":1788,"username":"DWoodhouse22","name":"David Woodhouse","avatar_template":"/user_avatar/forum.heroiclabs.com/dwoodhouse22/{size}/2441_2.png","trust_level":1},{"id":2013,"username":"Manuel_Martin","name":"Manuel Martin","avatar_template":"/user_avatar/forum.heroiclabs.com/manuel_martin/{size}/2736_2.png","trust_level":1},{"id":1584,"username":"SirCez","name":"Mehmet","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/s/cdc98d/{size}.png","trust_level":2},{"id":1974,"username":"harishkumar","name":"Datla Harish Kumar","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/h/e68b1a/{size}.png","trust_level":1},{"id":3,"username":"novabyte","name":"Chris Molozian","avatar_template":"/user_avatar/forum.heroiclabs.com/novabyte/{size}/1324_2.png","admin":true,"moderator":true,"trust_level":4},{"id":2009,"username":"1609988","name":"1609988","avatar_template":"/user_avatar/forum.heroiclabs.com/1609988/{size}/2731_2.png","trust_level":1},{"id":978,"username":"dela","name":"dela","avatar_template":"/user_avatar/forum.heroiclabs.com/dela/{size}/1489_2.png","trust_level":2},{"id":452,"username":"tom","name":"Tom Glenn","avatar_template":"/user_avatar/forum.heroiclabs.com/tom/{size}/676_2.png","trust_level":2},{"id":1910,"username":"aDu","name":"ad","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/a/97f17d/{size}.png","trust_level":1},{"id":1734,"username":"MattW","name":"Matt Woomer","avatar_template":"/user_avatar/forum.heroiclabs.com/mattw/{size}/2383_2.png","trust_level":1},{"id":888,"username":"ryanprice","name":"Cryptoz and Zoombies Minting platform","avatar_template":"/user_avatar/forum.heroiclabs.com/ryanprice/{size}/1323_2.png","trust_level":1},{"id":2002,"username":"GunWoo-KOR","name":"PoGunWoo","avatar_template":"/user_avatar/forum.heroiclabs.com/gunwoo-kor/{size}/2725_2.png","trust_level":1},{"id":1904,"username":"Mathijs-Bakker","name":"Mathijs Bakker","avatar_template":"/user_avatar/forum.heroiclabs.com/mathijs-bakker/{size}/2564_2.png","trust_level":1},{"id":1989,"username":"ErfanNikouie","name":"Erfan Nikouie","avatar_template":"/user_avatar/forum.heroiclabs.com/erfannikouie/{size}/2710_2.png","trust_level":1},{"id":1997,"username":"tbtbtb","name":"tb","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/t/df788c/{size}.png","trust_level":1},{"id":1529,"username":"shinaka","name":"JimW","avatar_template":"/user_avatar/forum.heroiclabs.com/shinaka/{size}/2138_2.png","trust_level":0},{"id":918,"username":"Eatos","name":"Eatos","avatar_template":"/user_avatar/forum.heroiclabs.com/eatos/{size}/1656_2.png","trust_level":1}],"primary_groups":[],"flair_groups":[],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/server-framework/29?page=1","per_page":30,"top_tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":28,"name":"typescript","slug":"typescript"},{"id":29,"name":"golang","slug":"golang"},{"id":30,"name":"lua","slug":"lua"},{"id":11,"name":"sdk-unity","slug":"sdk-unity"},{"id":8,"name":"authentication","slug":"authentication"},{"id":1,"name":"getting-started","slug":"getting-started"},{"id":35,"name":"matches","slug":"matches"},{"id":31,"name":"storage","slug":"storage"},{"id":33,"name":"leaderboards","slug":"leaderboards"},{"id":12,"name":"sdk-godot","slug":"sdk-godot"},{"id":13,"name":"sdk-unreal","slug":"sdk-unreal"},{"id":10,"name":"console","slug":"console"},{"id":39,"name":"groups","slug":"groups"},{"id":34,"name":"parties","slug":"parties"},{"id":40,"name":"tournaments","slug":"tournaments"},{"id":32,"name":"chat","slug":"chat"},{"id":38,"name":"users","slug":"users"},{"id":36,"name":"friends","slug":"friends"},{"id":22,"name":"docs","slug":"docs"},{"id":14,"name":"sdk-javascript","slug":"sdk-javascript"}],"topics":[{"fancy_title":"About the Runtime Framework category","id":1850,"title":"About the Runtime Framework category","slug":"about-the-runtime-framework-category","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2021-08-04T14:17:00.984Z","last_posted_at":null,"bumped":true,"bumped_at":"2021-08-05T14:21:22.248Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"Discussions about Nakama’s Server Runtime Framework internals. Topics about how to use the runtime to build your game take place in Game Design.","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":723,"like_count":0,"has_summary":false,"last_poster_username":"sean","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":458,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Group_edges are orphaned when group admin deletes account","id":6550,"title":"Group_edges are orphaned when group admin deletes account","slug":"group-edges-are-orphaned-when-group-admin-deletes-account","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2026-05-14T08:43:19.622Z","last_posted_at":"2026-07-06T15:45:47.532Z","bumped":true,"bumped_at":"2026-07-06T15:45:47.532Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I have encountered an issue, where superadmin could not leave a group he was in with error: failed to leave clan: user is last group superadmin \nIn Nakama console everything looked fine - group had only single member and&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":29,"name":"golang","slug":"golang"},{"id":39,"name":"groups","slug":"groups"}],"tags_descriptions":{},"views":41,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1971,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Does Nakama use 1 thread per match?","id":6576,"title":"Does Nakama use 1 thread per match?","slug":"does-nakama-use-1-thread-per-match","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-06-26T20:51:10.592Z","last_posted_at":"2026-07-06T09:07:41.698Z","bumped":true,"bumped_at":"2026-07-06T09:07:41.698Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Or does it use 1 thread per Docker container?","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":27,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":2409,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to handle private state?","id":6575,"title":"How to handle private state?","slug":"how-to-handle-private-state","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-06-26T20:44:58.613Z","last_posted_at":"2026-07-06T09:04:01.523Z","bumped":true,"bumped_at":"2026-07-06T09:04:01.523Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I have a Godot+Lua authoritative server. There are some backend variables that are specific to a match, but should not be shown to the client. For example, you should not send the positions of other players to a client i&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":20,"like_count":1,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":2409,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to know when an RPC was called with key","id":6574,"title":"How to know when an RPC was called with key","slug":"how-to-know-when-an-rpc-was-called-with-key","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-06-17T22:31:58.581Z","last_posted_at":"2026-06-18T14:56:29.847Z","bumped":true,"bumped_at":"2026-06-18T14:56:29.847Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hello, \nI have some admin RPC handlers in my Golang server plugin that are expected to be called from the Godot editor using rpc_async_with_key. My question is, how can I determined whether the RPC was in fact called usi&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":29,"name":"golang","slug":"golang"}],"tags_descriptions":{},"views":20,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":136,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Session invalidation","id":6565,"title":"Session invalidation","slug":"session-invalidation","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-06-07T06:54:44.534Z","last_posted_at":"2026-06-12T13:20:25.719Z","bumped":true,"bumped_at":"2026-06-12T13:20:25.719Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Imagine an account that is logged in on 3 different devices, and each device has its own refresh token. \nIf the account owner changes their password, or links a new authentication method (for example, Custom Auth), what &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":8,"name":"authentication","slug":"authentication"}],"tags_descriptions":{},"views":23,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1574,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Prometheus errors in the logs after upgrade","id":6561,"title":"Prometheus errors in the logs after upgrade","slug":"prometheus-errors-in-the-logs-after-upgrade","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-05-26T16:31:45.160Z","last_posted_at":"2026-05-28T09:15:47.362Z","bumped":true,"bumped_at":"2026-05-28T09:15:47.362Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This is happening after an upgrade from 3.12 to 3.37. \n{“level”:“error”,“ts”:“2026-05-26T16:24:45.474Z”,“caller”:“server/metrics.go:148”,“msg”:“Error registering Prometheus metric”,“error”:“a previously registered descri&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":31,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":660,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Validate session token in different server env?","id":4198,"title":"Validate session token in different server env?","slug":"validate-session-token-in-different-server-env","posts_count":4,"reply_count":1,"highest_post_number":5,"image_url":null,"created_at":"2023-08-07T14:20:56.771Z","last_posted_at":"2026-04-09T06:01:21.206Z","bumped":true,"bumped_at":"2026-04-09T06:01:21.206Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"For context.  I have a custom built UDP server handling actions for my game.  I am using Nakama for everything else, storage,account management, etc. \nWhat I would like to do, is login with Nakama, pass the token through&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":28,"name":"typescript","slug":"typescript"},{"id":8,"name":"authentication","slug":"authentication"}],"tags_descriptions":{},"views":451,"like_count":2,"has_summary":false,"last_poster_username":"DazyA121","category_id":29,"op_like_count":1,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":1198,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster, Accepted Answer","user_id":2,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1315,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"NotificationSendAll","id":6520,"title":"NotificationSendAll","slug":"notificationsendall","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2026-02-24T16:01:12.358Z","last_posted_at":"2026-04-07T09:27:51.770Z","bumped":true,"bumped_at":"2026-04-07T09:27:51.770Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"When we send a notification to all users and persist it, we currently store one record per user in the database. Is this the correct approach? I don’t think it is. \nFor global notifications such as gift drops, patch upda&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":29,"name":"golang","slug":"golang"}],"tags_descriptions":{},"views":39,"like_count":1,"has_summary":false,"last_poster_username":"DazyA121","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1574,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1315,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Writing a C# Plugin to expand Nakama Server","id":5558,"title":"Writing a C# Plugin to expand Nakama Server","slug":"writing-a-c-plugin-to-expand-nakama-server","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2024-08-15T11:26:56.020Z","last_posted_at":"2026-04-06T03:58:47.591Z","bumped":true,"bumped_at":"2026-04-06T03:58:47.591Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Dear Heroic Labs and Users, \nHello, \nMy name is Kovic, \nand I am curious if we could write a plugin in C# to expand the server features like Lua, JS or Golang do. \nAre there any useful resources or previous attempts to d&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"}],"tags_descriptions":{},"views":217,"like_count":1,"has_summary":false,"last_poster_username":"csc1","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1670,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":2031,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to set up player roles in anon/relay matchmaking","id":6532,"title":"How to set up player roles in anon/relay matchmaking","slug":"how-to-set-up-player-roles-in-anon-relay-matchmaking","posts_count":4,"reply_count":1,"highest_post_number":4,"image_url":null,"created_at":"2026-03-09T20:22:25.563Z","last_posted_at":"2026-04-05T06:09:29.492Z","bumped":true,"bumped_at":"2026-04-05T06:09:29.492Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Our basic scenario: \nTwo-player game, Unity client, relay server, using anonymous authentication. \nWe already have random matchmaking working with random role assignment as well as pre-arranged matches between two player&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":11,"name":"sdk-unity","slug":"sdk-unity"}],"tags_descriptions":{},"views":44,"like_count":0,"has_summary":false,"last_poster_username":"DazyA121","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":1790,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1315,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Matchmaking Stops Suddenly When Too Many Players Try To Find a Match","id":6537,"title":"Matchmaking Stops Suddenly When Too Many Players Try To Find a Match","slug":"matchmaking-stops-suddenly-when-too-many-players-try-to-find-a-match","posts_count":6,"reply_count":3,"highest_post_number":6,"image_url":null,"created_at":"2026-03-24T11:21:09.283Z","last_posted_at":"2026-04-02T09:28:31.249Z","bumped":true,"bumped_at":"2026-04-02T09:28:31.249Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"im using nakama version 3.27.1 \ni have authoritative matches and im using go lang for custom runtime \nwhen my game reaches an amount of load of players trying to find matches nakama matchmaker suddenly stops finding matc&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"}],"tags_descriptions":{},"views":53,"like_count":0,"has_summary":false,"last_poster_username":"spartan6nm","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":1279,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Match id gets always gets a period at the end","id":6539,"title":"Match id gets always gets a period at the end","slug":"match-id-gets-always-gets-a-period-at-the-end","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-03-24T15:59:49.702Z","last_posted_at":"2026-03-30T10:18:20.474Z","bumped":true,"bumped_at":"2026-03-30T10:18:20.474Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I had a quick question regarding the server implementation of match IDs. \nIt appears whenever a match ID is created, it’s using a deterministic UUIDv5 approach, but the UUID string always has a period appended to it. So &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":24,"like_count":1,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":1790,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Google Play Integrity has incompatible dependency","id":6521,"title":"Google Play Integrity has incompatible dependency","slug":"google-play-integrity-has-incompatible-dependency","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-02-24T18:55:47.371Z","last_posted_at":"2026-03-04T19:57:42.358Z","bumped":true,"bumped_at":"2026-03-04T19:57:42.358Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"We want to integrate the google play integrity API into our app and have the verdict processing happening server-side.  I’ve tried adding the go client library to our nakama runtime module but it has a dependency with go&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":31,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1788,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Help with broadcasting a message to all the users (NotificationSendAll or Custom)","id":6510,"title":"Help with broadcasting a message to all the users (NotificationSendAll or Custom)","slug":"help-with-broadcasting-a-message-to-all-the-users-notificationsendall-or-custom","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-02-10T09:39:37.582Z","last_posted_at":"2026-03-04T19:42:38.039Z","bumped":true,"bumped_at":"2026-03-04T19:42:38.039Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hello!, \nI have some custom behaviour for leaderboard with a reset schedule. They reset weekly and I have some custom behaviour to reward the top users. I also need to notify every other user about the week being reset. \n&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":41,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":2013,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Realtime Developer Notification Callback for Purchases","id":6509,"title":"Realtime Developer Notification Callback for Purchases","slug":"realtime-developer-notification-callback-for-purchases","posts_count":3,"reply_count":1,"highest_post_number":3,"image_url":null,"created_at":"2026-02-07T20:02:41.714Z","last_posted_at":"2026-03-04T14:10:03.468Z","bumped":true,"bumped_at":"2026-03-04T14:10:03.468Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"On this page an example in lua is given for implementing a realtime developer notification webhook to handle refunds for purchases. \nOn Nakama v3.36.0 the given code does not work. It results in the following: \nattempt t&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":37,"like_count":0,"has_summary":false,"last_poster_username":"SirCez","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":1584,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Cannot unlink email when user only has Apple ID","id":6505,"title":"Cannot unlink email when user only has Apple ID","slug":"cannot-unlink-email-when-user-only-has-apple-id","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":"https://us1.discourse-cdn.com/flex020/uploads/heroiclabs/optimized/2X/4/4597324cf9bd48cde2248f1975076977e944a6f3_2_1023x500.png","created_at":"2026-01-30T16:46:59.600Z","last_posted_at":"2026-03-04T13:37:45.567Z","bumped":true,"bumped_at":"2026-03-04T13:37:45.567Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"We are unable to unlink email addresses via the Nakama console when a user has only an Apple ID associated.  This only appears to affect the console as calling nk.UnlinkEmail on the server itself works without error. \nIs&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":10,"name":"console","slug":"console"}],"tags_descriptions":{},"views":19,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":1788,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Log aggregation and alerts, Database and Promotheus","id":6519,"title":"Log aggregation and alerts, Database and Promotheus","slug":"log-aggregation-and-alerts-database-and-promotheus","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-02-24T12:52:36.398Z","last_posted_at":"2026-03-04T09:59:56.492Z","bumped":true,"bumped_at":"2026-03-04T09:59:56.492Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"questions about log aggregation and alerts \nAfter going through heroic cloud UI interface, I can see logs being aggregated , but i don’t see an option for alerts and I’m assuming this feature is not supported currently(p&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":25,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1974,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Automated scaling and blue green deployment in heroic cloud","id":6506,"title":"Automated scaling and blue green deployment in heroic cloud","slug":"automated-scaling-and-blue-green-deployment-in-heroic-cloud","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-01-31T14:46:57.612Z","last_posted_at":"2026-02-01T17:25:07.164Z","bumped":true,"bumped_at":"2026-02-01T17:25:07.164Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Questions about scaling and blue green deployment in heroic cloud \nAfter going through heroic cloud UI interface, i didn’t find any interface to make automated scaling possible. \nSo my question is \n\n\nIs it possible to do&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":51,"like_count":1,"has_summary":false,"last_poster_username":"novabyte","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1974,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":3,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Socket closing immediately on creation","id":6504,"title":"Socket closing immediately on creation","slug":"socket-closing-immediately-on-creation","posts_count":4,"reply_count":1,"highest_post_number":4,"image_url":null,"created_at":"2026-01-30T12:09:49.402Z","last_posted_at":"2026-01-30T16:09:41.524Z","bumped":true,"bumped_at":"2026-01-30T16:09:41.524Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Versions: Nakama 3.35.1 \nHi friends, \nWe are opening a socket to receive notifications to the client from the server. As soon as we open this connection it is being terminated immediately and I’m not sure why! \nThe conne&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":42,"like_count":0,"has_summary":false,"last_poster_username":"DWoodhouse22","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster, Accepted Answer","user_id":1788,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to Get Timers in Lua Modules?","id":6501,"title":"How to Get Timers in Lua Modules?","slug":"how-to-get-timers-in-lua-modules","posts_count":7,"reply_count":3,"highest_post_number":7,"image_url":null,"created_at":"2026-01-25T12:46:28.796Z","last_posted_at":"2026-01-30T14:55:07.214Z","bumped":true,"bumped_at":"2026-01-30T14:55:07.214Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I have several questions about Nakama that I’d like to get answers to. (I’ve been developing with Nakama for some time and have accumulated all these questions to ask together.) \n\n\nI’m using Lua to write modules for a tu&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":65,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":2009,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"External API with rate limit / global state","id":3546,"title":"External API with rate limit / global state","slug":"external-api-with-rate-limit-global-state","posts_count":5,"reply_count":2,"highest_post_number":5,"image_url":null,"created_at":"2023-02-23T20:03:21.453Z","last_posted_at":"2026-01-27T11:21:14.732Z","bumped":true,"bumped_at":"2026-01-27T11:21:14.732Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I want to implement some functionality of the Twitch API. i do have it working in my typescript server code with simple http calls. BUT the api does have rate limits, which any client should account for. \nI know that the&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":28,"name":"typescript","slug":"typescript"}],"tags_descriptions":{},"views":434,"like_count":0,"has_summary":false,"last_poster_username":"aDu","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":978,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":452,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1910,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Can Modules Written in Different Languages Communicate with Each Other?","id":6502,"title":"Can Modules Written in Different Languages Communicate with Each Other?","slug":"can-modules-written-in-different-languages-communicate-with-each-other","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-01-26T01:54:22.126Z","last_posted_at":"2026-01-26T16:02:36.316Z","bumped":true,"bumped_at":"2026-01-26T16:02:36.316Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"For example, I want to write modules in a mix of Go and Lua. Suppose I define a method GetInfo() in one of the Go modules. Can I call this Go GetInfo() method in a Lua module and obtain its return value?","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":31,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":2009,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Best practice for linking accounts","id":6259,"title":"Best practice for linking accounts","slug":"best-practice-for-linking-accounts","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2025-06-10T00:16:34.873Z","last_posted_at":"2026-01-15T13:32:53.702Z","bumped":true,"bumped_at":"2026-01-15T13:32:53.702Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hello Heroic Labs, \nI have an existing Google or IOS player account, and I now want to link it to an existing Steam account. The flow is the player initiates the account linking on Steam, gets a 5 digit code, then enters&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":69,"like_count":1,"has_summary":false,"last_poster_username":"ryanprice","category_id":29,"op_like_count":1,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1734,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":888,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Leaderboard rank returns null after upgrade — existing leaderboards not respecting enableRank","id":6495,"title":"Leaderboard rank returns null after upgrade — existing leaderboards not respecting enableRank","slug":"leaderboard-rank-returns-null-after-upgrade-existing-leaderboards-not-respecting-enablerank","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-01-14T10:32:17.132Z","last_posted_at":"2026-01-14T10:48:19.387Z","bumped":true,"bumped_at":"2026-01-14T10:48:19.387Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I am currently using the ListLeaderboardRecordsAroundOwnerAsync function in Unity to retrieve the player’s own rank. After upgrading the Nakama version, the player’s rank started returning null. I found the related bug a&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":33,"name":"leaderboards","slug":"leaderboards"}],"tags_descriptions":{},"views":20,"like_count":1,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":2002,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Best practice for automatically deleting persistent chat data","id":6478,"title":"Best practice for automatically deleting persistent chat data","slug":"best-practice-for-automatically-deleting-persistent-chat-data","posts_count":7,"reply_count":2,"highest_post_number":7,"image_url":null,"created_at":"2026-01-02T09:26:46.268Z","last_posted_at":"2026-01-13T16:23:53.445Z","bumped":true,"bumped_at":"2026-01-13T16:23:53.445Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi all, \nWe’re using Nakama’s persistent chat messages, which are stored in the database. To keep the database clean and prevent unlimited growth, we’re looking for best practices to automatically delete old chat data. \nI&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":32,"name":"chat","slug":"chat"}],"tags_descriptions":{},"views":85,"like_count":0,"has_summary":false,"last_poster_username":"Mathijs-Bakker","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":1904,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Bucketed Leaderboards and Storage Locks","id":6470,"title":"Bucketed Leaderboards and Storage Locks","slug":"bucketed-leaderboards-and-storage-locks","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2025-12-04T20:39:35.172Z","last_posted_at":"2026-01-08T17:07:07.842Z","bumped":true,"bumped_at":"2026-01-08T17:07:07.842Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hello guys. \nI have encountered an issue with the storage system. What I am trying to achieve is consistent bucketed leaderboards. Players should be assigned a bucket when they first play a game. The bucket data for each&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":31,"name":"storage","slug":"storage"},{"id":33,"name":"leaderboards","slug":"leaderboards"}],"tags_descriptions":{},"views":74,"like_count":0,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1989,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Using Account username as a friend-code","id":6482,"title":"Using Account username as a friend-code","slug":"using-account-username-as-a-friend-code","posts_count":5,"reply_count":2,"highest_post_number":5,"image_url":null,"created_at":"2026-01-06T11:46:20.348Z","last_posted_at":"2026-01-06T18:41:32.279Z","bumped":true,"bumped_at":"2026-01-06T18:41:32.279Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi! \nFor our game we want users to add each other as friends, and we also want to avoid any user-generated content which includes setting their own username which others can see (we want to avoid the requirement to profa&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":29,"name":"golang","slug":"golang"}],"tags_descriptions":{},"views":41,"like_count":1,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1788,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Confused about matchmaking user ready state","id":6479,"title":"Confused about matchmaking user ready state","slug":"confused-about-matchmaking-user-ready-state","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-01-02T10:19:55.188Z","last_posted_at":"2026-01-06T15:09:01.789Z","bumped":true,"bumped_at":"2026-01-06T15:09:01.789Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi! \nI have followed this template/tutorial: \n\n\nI’m at the point where players can join a game via matchmaking, but I can’t figure out how many people are supposed to be in a match. In my game, there can be between 2 and&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"server-framework","slug":"server-framework"},{"id":28,"name":"typescript","slug":"typescript"}],"tags_descriptions":{},"views":38,"like_count":1,"has_summary":false,"last_poster_username":"sesposito","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"posters":[{"extras":null,"description":"Original Poster","user_id":1997,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster, Accepted Answer","user_id":143,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Scalability of Authoritative Matches for non-enterprise","id":5163,"title":"Scalability of Authoritative Matches for non-enterprise","slug":"scalability-of-authoritative-matches-for-non-enterprise","posts_count":3,"reply_count":1,"highest_post_number":3,"image_url":null,"created_at":"2024-04-11T23:03:09.585Z","last_posted_at":"2025-12-16T12:11:33.294Z","bumped":true,"bumped_at":"2025-12-16T12:11:33.294Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I’m still researching Nakama, but wanted to verify an assumption: unless using Nakama Enterprise, there’s no way to scale matches across multiple servers (virtual or otherwise) - they’ll all run on the base Nakama instan&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":273,"like_count":1,"has_summary":false,"last_poster_username":"SirCez","category_id":29,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1529,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":918,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1584,"primary_group_id":null,"flair_group_id":null}]}]}}