Ezcha Network for Godot 4
This plugin allows developers to quickly and easily add online multiplayer, lobbies, trophies, leaderboards, cloud saves, and more to their games. These features are all powered by Ezcha Network, a small but growing indie games platform and discussion site. All features and services are provided for free to approved developers.
Links
Features
Here is a list of all the features and services provided by Ezcha Network.
- Hosting
- Web embeds
- Traditional downloads
- Accounts
- Authentication
- Trophies
- Leaderboards
- Multiplayer relay
- Built-in lobby system and list
- Seamlessly integrates with Godot's high-level system
- Cloud saves
- General API (time, captchas, etc)
- Request signing (reduces forgery/cheating)
User Interface
Along with the actual game features/services, the plugin provides a convenient user interface as well. Here the developer can configure their game, view its trophies/leaderboards, and quickly navigate to its developer panel on the site. It also includes useful links to the developer forums and plugin documentation.
Examples
See for yourself how easy it is to integrate Ezcha Network into a game!
Authentication
func do_auth() -> void:
# This must be done before accessing any other features/services.
var success: bool = await Ezcha.client.authenticate()
# Error handling
if (!success):
print("Failed to authenticate user!")
return
# Authentication successful
print("Authenticated as %s!" % [Ezcha.client.user.name])
Trophies
func _on_epic_accomplishment() -> void:
Ezcha.client.grant_trophy("TROPHY_ID_GOES_HERE")
Leaderboards
func _on_level_completed(final_score: int, cheese_consumed: int) -> void:
# Set a score to a fixed value
# (When there is an existing score the new one will only be saved if its an improvement)
Ezcha.client.update_score("LEVEL_SCORE_LEADERBOARD_ID", final_score)
# Add points to a total score
Ezcha.client.update_score("CHEESE_CONSUMED_LEADERBOARD_ID", cheese_consumed, EzchaLeaderboardsAPI.UpdateMode.ADD)
Ezcha Relay
func start_relay_lobby(lobby_name: String, max_players: int) -> void:
# Find the server with lowest ping
# You can get a list using "order_relay_servers" instead
var server: EzchaRelayServer = await Ezcha.client.determine_relay_server()
# Create lobby and prepare high-level multiplayer
var peer: EzchaRelayMultiplayerPeer = EzchaRelayMultiplayerPeer.new()
peer.create_lobby(server, lobby_name, max_players)
multiplayer.multiplayer_peer = peer
# Print join code once lobby is created
peer.lobby_connected.connect(func() -> void:
print("Join code: %s" % [peer.get_join_code()])
)
func resolve_relay_lobby(join_code: String) -> void:
# Find and join a lobby using a unique code
var peer: EzchaRelayMultiplayerPeer = EzchaRelayMultiplayerPeer.new()
peer.resolve_lobby(join_code)
multiplayer.multiplayer_peer = peer
I have also written a comprehensive multiplayer guide which includes a section on how to use Ezcha Relay. You can find it here if interested.
Changelog for version 2.4.2
No changelog provided for this version.
Reviews (3)
I love the Ezcha Network! It's probably the easiest way to handle authentication, datastores, multiplayer, and hosting for your games! It's quick and easy to learn how the plugin works and there's great documentation and tutorials on the site!
This plugin makes publishing a game to Ezcha way easier. It provides a high level abstraction of Ezcha features in GDScript, making it super easy to use features like trophies and authentication in your game because you don’t have to go through the hassle of using the REST apis directly or extracting the authentication token from JavaScript in a browser.
Ezcha.net is probably the best website out there for indie gamedev. This plugin is super easy to use! I implemented some of the multiplayer features in my new wip game, and it works well.
Login to write a review.