A game integrated with OkLetsPlay needs to manage some authentication tokens, handle the pushing or polling of new match data, and report game events to the OkLetsPlay back-end. The following documents describes the integration in depth.
We are a next gen real money esports platform for PC, mobile games and more. Our goal is to provide a seamless experience for players interested in diving further into their passion and winning money by playing games, from casual private matches against friends to competitive tournaments.
Aligned with this vision we aim to provide our game partners with a low cost, no-risk channel for game discovery, user acquisition, revenue, data and increased player retention.
From this point forward, this documentation is intended to explain what it means to integrate a game with OkLetsPlay, explain our terminology and walk interested developers through all the steps in detail.
All games integrated with our platform go through a vetting process and here we outline the minimum requirements for a game to be integrated.
Matches should be consistent, reproducible and skill-based
We're dealing with real money and that means all of our matches should be fair to all parties involved; this means that:
- Game settings should be the same for all players, eg. an endless runner game should generate the same level for all players participating in a specific match.
- Usage of random elements is permitted as long as it's done deterministically so that it can be reproduced by using a shared seed for the match. Tip: use the
match-id
generated by OkLetsPlay to seed your random number generator. - No platform should have an advantage over another, for a game that is multi-platform, eg. a player on PC should not have an advantage over a player on their mobile.
Results validation
We handle the results as they are and the validation of said results is the responsibility of the game; we expect our partners to do everything in their reach to ensure that no cheating is allowed.
Game assets
We ask our game partners to provide us with a few image assets so that we can properly showcase them in our platform. We present a list below of the assets we're currently using, to give partners an idea of what we expect but this list can change in the future.
- 120x120 avatar for the game listing in the sidebar.
- 2200x380 banner to be shown in the game specific page.
- 120x60 tile to be used when creating a match.
- 350x110 tile to be shown in the match and tournament tiles.
- Match: A match, as we refer for the rest of the documentation, means an entity representing the "matching" of two or more teams for a game session.
- Team: A team is a grouping of players, with the allowed sizes configured per game. While a game such as CS:GO can have teams from 1 to 5 players, a lane runner would have single player teams only.
- OkLetsPlay backend: (aka OKLP API) One or more servers OkLetsPlay backend servers that provide authentication and information via HTTP protocol.
- Game backend: (aka Game API) A backend server of integrated game which must communicate with OkLetsPlay backend via HTTP protocol.
- Game client: An application which usually runs in Internet Browser of a player. May communicate via HTTP protocol with OkLetsPlay backend.
- Platform id: Each player has their own OkLetsPlay id and we also provide the means for players to link their account with external platforms such as Steam; this provides a frictionless experience so that if your game relies on Steam ids then we will use that platform id when communicating with your game, but games without their own user system can operate in terms of OkLetsPlay ids.
- Synchronous vs Asynchronous games: We categorize games as synchronous or asynchronous in the context of integration based on how we receive the results for a match; a synchronous game is one that sends the full result of match in a single request, while an asynchronous game is one that sends us partial results with multiple requests. A game can be asynchronous from the players perspective but synchronous from an integration perspective if the game's backend collects all results and sends OkLetsPlay a complete result.
Here in this section we give a brief overview of the main points involved in the process of getting a game integrated into OkLetsPlay.
- Parse the developer configuration: This is a small configuration file containing things such as your client secret, the OkLetsPlay URLs and etc.
- Authentication: We rely on JWTs to secure our communication with games, so a game needs to handle obtaining their token and validating the one it receives from OkLetsPlay(when using the push flow).
- Match discovery: A game needs to be aware of certain events that happen in OkLetsPlay so that it can know about the matches to be played, its configuration and the participating players.
- Result reporting: Once a game has been played, our platform needs to be notified of the results for that match.
Match discovery flows
To accommodate for the particularities of each game's implementation we provide two possible flows for match discovery, it can either be push or poll based, and only one may be used at a time.
- Push: This is the preferred integration flow as it is simpler and more efficient for larger player populations. In this flow, when events happen that concern the game we push that information to the game's backend using its configured webhook URL.
- Poll: This method is not supported yet.
Each game may support a different way of referring to users. When OkLetsPlay provides ids to the game, it does so with ids which the game will know. For games on Steam, for example, the platform id will have a type steam
and the id will be the player's persistent Steam id. Some games have bespoke authentication and distribution mechanisms, so their platform id type will be different.
The platform types currently available are:
If you use another platform and would like to discuss allowing users to link their accounts then please reach out directly to us.
Walk through integration high-level overview and first steps to begin working with OKLP API. Go to Getting Started page.