way to allocate more than 1000 achievement points? - facebook

Is there a way to request or allocate more than 1000 achievement points for your application?
The issue here is that I am developing a game and plan to have regular content pack expansions. Along with those expansions, I want to include new achievements relating to whatever new content is included.
My initial plan was to simply reduce the value for each achievement, say 1pt for easy, 3 for medium, 5 for difficult and just keep utilizing the 1000 point pool as slowly as I could. Obviously, this wouldn't solve the problem, but it'd be a decent compromise.
However, after reading the description of how the achievements work at https://developers.facebook.com/docs/achievements/ I'd rather not hamstring my application by utilizing point values that will not be distributed.
So, does anyone know of a way to overcome this limitation?

Based on the documentation I've read (which includes the URL you provided) you can not exceed 1000 points allocated to any given player. So there is no reason why you can't launch new content packs with new achievements, it's just that you won't be able to allocate any of them to any players (or won't get any distribution within Facebook if you do) for any players who have already achieved their lifetime maximum of 1000 points with your app. If you design your gameplay mechanics so that you essentially have to achieve every previous achievement to reach the latest one, then it means that eventually, additional content packs you publish won't be publishable to facebook via the Achievements API.
So, to your first question, no there is no way to request or allocate more than 1000 achievement points for your application for a given user.
To your second question, make sure you've read the achievements section of this page:
https://developers.facebook.com/docs/guides/games/growth/
Here they talk about how much distribution you get for the number of points you allocate to each achievement. If the goal is to maximize your distribution, then you need to design your game around achievements that put at least a 100 point value on your game's most notable achievements. If you choose 5 of these because you plan to have five content pack expansions, and you want your app to continue to push notifications for your players who have played all five, you need to consider allocating a maximum of 500 points to the other tiers of achievement distribution tiers.
So ultimately, this is a task that balances the achievements you have in the game with the amount of distribution you want to get in Facebook, and that each player in the game has a LTV associated with this API that once you hit 1000 represents little value to you to promote via the Achievements API beyond that point.
If you design your game such that achievements aren't linear, and if people can play the latest content packs without completing the previous ones, then newer players can publish new achievements that older players who have already achieved 1000 points worth won't be able to.
EDIT: Also consider this blog post, which indicates that Facebook seems to want to have all the achievements defined up-front to show the "you've accomplished 1 of n accomplishments so far" kind of progress:
http://devgotchas.grgventures.com/node/9

Related

Where should i store score variable?

I'm working on my multiplayer game. The game is about pvp, you can shoot your friends and all stuff like that. I decided to make a score widget, which would show who is better. You might have seen something similar to what I'm talking about in fps games like csgo, valorant, overwatch, etc. Everyone should see the score.
I tried storing variables on servers character pawn. But pawn can be destroyed and score rollbacks to 0:0.
For replicated data that is persistent to respawn, you have two main options with the built-in game framework:
Create your own subclass of AGameState and the replicated data you want in it. There is one Game state and it is replicated on all clients. See what the official wiki (bottom of the page) says about GameState. You can store game-related data in it as total kill count in team deathmatches or team capture points in domination matches.
Create your own subclass of APlayerState and the replicated data you want in it. There is one Player state per player and it is replicated on all clients. See the official API of APlayerState. You can store each players' kill count in it for example or the number of objective a player captured. Make sure data is fed from the server and replicated to clients and not the other way around.
Unreal Engine comes with a powerful Game Framework, make sure to get familiar with it.

How to count individual scores in game with multiple players?

I am running program that takes interactions from viewers of my live and uses their profile pictures as textures on primitive cubes that spawn after they interact (such as sending likes). I have gotten as far as recieving the usernames of those interacting with my live, and I am now trying to create a score board to keep track of the amount of primitive cubes each user spawns by interacting. I am curious if it is possible to track peoples individual score by filtering through their usernames.
As an example, say "Adam.01" interacts 2 times with the live. I will recieve his username and profile picture on Unity and my script creates 2 primitive cubes with his profile picture on them. My goal is for every cube that spawns, a score keeper specifically under "Adam.01"'s username will add 2 to his "total score" as he now has 2 primitive cubes.
Sorry if I'm struggling to explain what my goal is, its kinda a wacky idea but Im having fun with my stream and trying to stay creative. Thanks!

Architecture: Creating a time filterable leaderboard system with mongoose

This question is more of a architecture based one.
I have a website which has 3 PVP (player vs player) games. Each game has it's own mongoDB collection
and it's documents have properties such as timestamp, amount won (points) and players involved.
I want to create a leaderboard system that retrieves data from all these 3 games, and shows who has won the most in a top 10 kind of style. This system will be accessed most likely through a HTTP end point. And I'd also like this leaderboard to be filterable by time: top 10 from the last week/month/year/all time
Problems:
As the user database has grown and more games have been created, Computing the table each time the end point is hit takes longer and longer. Page load times take a super long.
Initial Idea
Technologies
Mongoose, Express, Nuxt(Vue), Socket.io
I would suggest some sort of caching scheme. Two basic method I would consider:
Create a service that automatically tabulates the leaderboard and caches it or saves it to another mongo object. Clients are then served the cached version. This option is nice as it creates a historical record which could make for fun features in the future.
Cache the response in your express service and update it only on some frequency. As explained here: https://medium.com/the-node-js-collection/simple-server-side-cache-for-express-js-with-node-js-45ff296ca0f0 The risk with this method is if you have concurrent requests when the leaderboard is being generated it could hit your mongo server hard.
Without knowing all the details, I would go with the first option as it is immune to concurrent requests and could be extended in the future with some sort of historical leaderboard feature.
As for filtering, I'd recommend using the tables in vue-bootstrap. Data is easily represented in tables and sorting is built-in.

Can cloud firestore realistically be used for syncing a game between players?

I'm looking at using cloud firestore to sync a multiplayer web game between players. However, this game involves continuous motion, like a player dragging a piece from one place to another. This would involve a stream of writes as its position changes. Given that the free plan is 20k free writes per day, and 20k writes can be done by a dozen players in a few minutes in this case, I worry that the cost would rapidly spiral out of control.
Is it impossible to do this sort of thing with firestore? I'm basically talking about a continuous websocket connection keeping the game data synced between players.
The limits of Firestore are well-documented. You haven't really said what hard limits you're concerned about exceeding. The only thing you've indicated is limits regarding the perpetual free tier, which can be easily exceeded by simply paying for the product based on your usage.
If you're not willing to pay for the service based on your needs, then you should probably look for another service. If you are willing to pay, then you need to do the math to figure out what your specific needs are, and if they can be met by the documented limits.
In the absence of more specific information about what you're trying to achieve, there's not much else that can be said.

Cant apply for next level rate limit Facebook marketing api

I have to create script to create adsets and ads for a facebook campaign and I have to do it for a lot of items. For now, i can create every needed entity but there is a big problem, the rate limit. I reach it pretty quick (I can create like 15 items before getting a rate limit exception) and this is very limitating, creating eveything by hand is actually much faster... I want to apply to the next level of rate limitation but I can't. One of my coworker contacted someone from facebook and we were told we did not make any API call using my app ID. Since I am able to create a campaigns, adsets, ads... and we can see those in power editor I don't understand what is going on.
What my dashboard looks like
We will need to be able to create everything using the API really soon so, after some research, I try asking the question here. Did I miss something when creating my app ?
You probably want to go through the official request to promote your app from a Basic level to a Standard level. The level for your app determines how heavily it is rate limited. Details here: https://developers.facebook.com/docs/marketing-api/access
It sounds as if you have not make your official request in app dashboard. It's possible we evaluated your number of API calls before you reached the threshold, or the data we are able to see on your API calls was from an earlier time period when you did not consistently reach the boundary.
You could also be hitting rate limits due to your error rates.
You can apply here, and if needed, reapply: https://www.facebook.com/business/standardadsapi?attachment_canonical_url=https%3A%2F%2Fwww.facebook.com%2Fbusiness%2Fstandardadsapi