Let's get your dream game done! Tell us about your creative vision and we’ll help you make it come to life.
Tom Kopera
Head of Growth
Multiplayer SDK
Competitive game development with no overhead
Smart Matchmaking
Fairness starts at matchmaking
Verifiable Replays
The best moments, captured
Bot Deployment
Engage with players at all levels
Simulation Analyzer
Pinpoint issues in your game
API Integration
React to your players in real-time
Technology that drives the revolution in competitive gaming
Explore the innovation and cutting edge technologies that power Elympics on the way to independent, decentralized competition
Documentation
Learn how Elymipcs works
Open-Source projects
Bootstrap your project in seconds
Blog
Explore the world of gaming
Development Hub
Earn with Elympics as Certified Developer
Single Player with leaderboards
Compete offline with accumulated prize pools
Game Token Duel
Dueling for Real Rewards in Multiplayer Games
Battle Royale with Prize Pools
Esports-Level Competition Made On-Chain
Players’ Skill Profiles
Creating Digital Profiles Based on Players’ Skillset
Securing On-Chain Esports
Esports-level security in on-chain competitive gaming
Security & fairness
Seamless experience guaranteed
Serverless gameplay hosting
Scale without a slip
In-game Oracle
External source of truth
Proof-of-Game
Gameplay secured by mathematics
Paid Competitive Gaming
Zero-sum games with blockchain tokens
Onboarding Players
Helping the next wave of players move on-chain
Let's see how PlayPad simplifies game creation process
The complexity of integrating Web3 features into games can seem like a daunting challenge without the right tools. From repetitive configurations to manual updates for each project, the entire process is often inefficient and prone to errors made along the way. This state of things, however, can quickly change thanks to PlayPad, a solution designed to offload Web3 integration responsibilities from the game itself, ensuring scalability, streamlined updates, and future-proofing for developers.
This article dives into the benefits of introducing PlayPad, the challenges associated with testing Web3 integration, and how to simulate PlayPad behaviors directly in the Unity Editor for seamless development and testing.
PlayPad is a platform tailored to hosting WebGL builds and managing Web3 features, alleviating developers from handling these integrations within their games separately. Imagine creating a few games and having to manually update each and every one of them separately. This doesn’t sound exciting, right? With PlayPad, developers can streamline game updates, ensure compatibility with new features, and connect their games to broader communities via the Elympics ecosystem.
While PlayPad offers a number of advantages, it comes with a small caveat, testing Web3 integration requires deploying WebGL builds. For developers who are used to quick iteration loops within the Unity Editor, this can slow down the development process.
Using PlayPad to make Web3 integration for your game more efficient is a straightforward process, designed to simplify hosting and improve the flow of the development process. Here’s how you can get started:
Prepare Your Builds
To utilize PlayPad, you need to upload both your client and server builds. For client builds, you can use a provided upload script. This requires an access key (e.g., awesome-game.json), obtainable by contacting the Elympics Developers Discord channel. Once your builds are ready, run the upload.sh script to transfer your files to PlayPad hosting. For best practices, use versioning for builds to avoid caching issues when re-uploading files.
Select Your Hosting Environment
Deployment and Access
Once your game is developed and tested, PlayPad provides a personalized hosting solution. You’ll receive:
To address the challenge of WebGL build dependency for testing, the PlayPad SDK provides tools for simulating PlayPad behaviors directly in the Unity Editor. This allows developers to test features without deploying to the web.
The PlayPadCommunicator script, attached to a prefab of the same name, is the core utility for simulating PlayPad interactions. To use it, ensure you start your game from the lobby scene, as playing directly from a gameplay scene may bypass essential setup processes.
Standalone configurations simulate PlayPad data in the Unity Editor. These configurations are implemented as Scriptable Objects and mimic real PlayPad data flows. Note that changes to these objects during runtime won’t affect the game until it is restarted.
Games communicate with PlayPad using interfaces. In WebGL builds, production implementations handle this communication. In the Unity Editor, however, these interactions are simulated using StandaloneCommunicators.
While the default StandaloneCommunicators are more than sufficient for basic testing, developers can create custom communicators for their specific needs. For that, the developer should derive from CustomStandaloneCommunicators to build tailored implementations and attach them to the PlayPadCommunicator prefab via the Unity Inspector.
The default LeaderboardCommunicator implementation offers limited functionality, such as displaying a single leaderboard entry, without updating between matches. To test a more comprehensive leaderboard UI, you can create a custom communicator:
<pre><code>
using Cysharp.Threading.Tasks;
using ElympicsPlayPad.ExternalCommunicators.Leaderboard;
using ElympicsPlayPad.Leaderboard;
using System;
using System.Threading;
public class FilledLeaderboardCommunicator : CustomStandaloneLeaderboardCommunicatorBase
{
private const int Participants = 6;
private const int PlayersPlacement = 3;
public override UserHighScoreInfo? UserHighScore => _userHighScore;
public override LeaderboardStatusInfo? Leaderboard => _leaderboard;
private LeaderboardStatusInfo? _leaderboard;
private UserHighScoreInfo? _userHighScore;
public override event Action<LeaderboardStatusInfo> LeaderboardUpdated;
public override event Action<UserHighScoreInfo> UserHighScoreUpdated;
public override UniTask<LeaderboardStatusInfo> FetchLeaderboard(CancellationToken ct = default)
{
Placement[] placements = new Placement[Participants];
for (int i = 0; i < Participants; i++)
{
Placement entry;
if (i + 1 == PlayersPlacement)
entry = new Placement
{
UserId = ElympicsLobbyClient.Instance.AuthData.UserId.ToString(),
Nickname = ElympicsLobbyClient.Instance.AuthData.Nickname.ToString(),
Position = i + 1 <= 3 ? i + 1 : 2 * i + 1,
Score = 100 - 5 * i,
ScoredAt = DateTime.UtcNow.ToString("o"),
MatchId = "00000000-0000-0000-0001-000000000000",
TournamentId = "abcdef"
};
else
entry = new Placement
{
UserId = i.ToString(),
Nickname = i.ToString(),
Position = i + 1 <= 3 ? i + 1 : 2 * i + 1,
Score = 100 - 5 * i,
ScoredAt = DateTime.UtcNow.ToString("o"),
MatchId = "00000000-0000-0000-0001-000000000000",
TournamentId = "abcdef"
};
placements[i] = entry;
}
_leaderboard = new LeaderboardStatusInfo()
{
Participants = Participants,
UserPlacement = placements[PlayersPlacement - 1],
Placements = placements
};
return UniTask.FromResult(Leaderboard.Value);
}
public override UniTask<UserHighScoreInfo?> FetchUserHighScore(CancellationToken ct = default)
{
_userHighScore = new UserHighScoreInfo()
{
Points = 200,
ScoredAt = DateTime.Now - TimeSpan.FromDays(7)
};
return UniTask.FromResult(UserHighScore);
}
}
</code></pre>
This custom communicator simulates a fully populated leaderboard, including the results of the current player and non-consecutive placements. It enables developers to test leaderboard UIs without deploying builds.
Beyond leaderboards, developers can extend simulation capabilities to include tournaments, game status, and even PlayPad-provided modals. By deriving from classes like CustomStandaloneTournamentCommunicatorBase or CustomStandaloneGameStatusCommunicatorBase, you can manage dynamic changes during runtime.
For example, you could simulate:
Elympics is actively working to further streamline PlayPad testing within the Unity Editor. Future updates will allow PlayPad to be hosted locally, enabling even more comprehensive and efficient testing workflows.
Simulating PlayPad behaviors in the Unity Editor empowers developers to test Web3 integrations without the repetitive overhead of WebGL builds. With tools like StandaloneConfigs and customizable communicators, you can now replicate real-world scenarios and refine your game more efficiently.
As PlayPad continues to evolve, developers can look forward to even more robust testing capabilities, making sure that their games deliver seamless Web3 experiences while maintaining the creative freedom that defines exceptional game development.