Skip to content

Commit

Permalink
Merge pull request #44 from TaloDev/develop
Browse files Browse the repository at this point in the history
Release 0.13.0
  • Loading branch information
tudddorrr authored Nov 14, 2024
2 parents b42ba80 + be95c12 commit 8faf833
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 20 deletions.
60 changes: 42 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,48 @@
# Talo Godot Plugin
# Talo Godot Plugin: self-hostable game dev tools

Build games faster and make better decisions with the [Talo](https://trytalo.com) Godot Plugin.
Talo is a collection of tools and APIs designed to make game development easier and to help you make better data-driven decisions.

## Features
- ⚡️ [Event tracking](https://trytalo.com/events)
- 👥 [Player management](https://trytalo.com/players) (including cross-session data, groups and identity management)
- 🎮 [Godot plugin](https://trytalo.com/godot)
- 🗃️ Data exports
- 🕹️ [Leaderboards](https://trytalo.com/leaderboards)
- 💾 [Game saves](https://trytalo.com/saves)
- 📊 [Game stats](https://trytalo.com/stats) (global and per-player)
- ⚙️ [Live config](https://trytalo.com/live-config) (update your game config from the web, no releases required)
- 🔧 [Steamworks integration](https://trytalo.com/steamworks-integration)
- 💬 [Game feedback](https://trytalo.com/feedback)
- 🛡️ [Continuity](https://trytalo.com/continuity) (keeping your data in-sync even when your players are offline)
From essentials like player management, stats and leaderboards to advanced APIs for game saves, event tracking and player authentication.

## Docs
The Talo Godot Plugin is a lightweight wrapper around the [REST API](https://docs.trytalo.com/docs/http/authentication). It also includes handy utilities and a collection of ready-to-use samples.

Our docs are [available here](https://docs.trytalo.com).
## Get the plugin

## Discord
- [Godot Asset Library](https://godotengine.org/asset-library/asset/2936)
- [GitHub releases](https://github.com/TaloDev/godot/releases)
- [itch.io](https://sleepystudios.itch.io/talo-godot)

For help and support, [join our Discord](https://discord.gg/2RWwxXVY3v).
## Talo's key features

- 👥 [Player management](https://trytalo.com/players): Persist player data across sessions, create segments and handle authentication.
- ⚡️ [Event tracking](https://trytalo.com/events): Track in-game player actions individually and globally.
- 🕹️ [Leaderboards](https://trytalo.com/leaderboards): Highly customisable leaderboards that can sync with Steamworks.
- 💾 [Game saves](https://trytalo.com/saves): A simple and flexible way to load/save game state; also works offline.
- 📊 [Game stats](https://trytalo.com/stats): Track global or per-player stats across your game; also syncs with Steamworks.
- ⚙️ [Live config](https://trytalo.com/live-config): Update game settings from the web with zero downtime.
- 🔧 [Steamworks integration](https://trytalo.com/steamworks-integration): Hook into Steamworks for authentication and ownership checks.
- 💬 [Game feedback](https://trytalo.com/feedback): Collect and manage feedback from your players.
- 🛡️ [Continuity](https://trytalo.com/continuity): Keep your data in-sync even when your players are offline.

## Samples included with the plugin

- 🔒 Authentication: a registration/login/account management flow, showing how to create player accounts and authenticate them.
- 🎮 Playground: a text-based playground allowing you to test identifying, events, stats and leaderboards.
- 🕹️ Leaderboards: a basic leaderboard UI, allowing you to add and update entries.
- 💾 Stateful buttons: showing how to save and load game state.

## Documentation

Check out the [full Talo docs](https://docs.trytalo.com) for setup instructions, detailed API docs/examples and configuration options.

## Self-hosting your own Talo instance

Talo is designed to be easily self-hosted. Take a look at our [self-hosting guide](https://docs.trytalo.com/docs/selfhosting/overview) and the [GitHub repo](https://github.com/TaloDev/hosting) for examples on how to get started.

## Join our community

Have questions, want to share feedback or show off your game? [Join us on Discord](https://trytalo.com/discord) to connect with other developers and get help from the Talo team.

---

Find all the details about Talo on our [website](https://trytalo.com)!
6 changes: 6 additions & 0 deletions addons/talo/entities/player_alias.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ var id: int
var service: String
var identifier: String
var player: TaloPlayer
var last_seen_at: String
var created_at: String
var updated_at: String

func _init(data: Dictionary):
id = data.id
service = data.service
identifier = data.identifier
player = TaloPlayer.new(data.player)
last_seen_at = data.lastSeenAt
created_at = data.createdAt
updated_at = data.updatedAt
2 changes: 1 addition & 1 deletion addons/talo/plugin.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
name="Talo Game Services"
description="Talo (https://trytalo.com) is an open-source game backend with services designed to help you build games faster. You can currently:\n\n- Identify and authenticate players\n- Store persistent data across players\n- Track events (levelling up, finding loot, etc)\n- Display high scores with leaderboards\n- Store and load player saves\n- Load game config options and flags from the cloud\n- Get feedback directly from your players"
author="trytalo"
version="0.12.0"
version="0.13.0"
script="talo_autoload.gd"
2 changes: 2 additions & 0 deletions addons/talo/samples/authentication/scripts/change_email.gd
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ func _on_submit_pressed() -> void:
validation_label.text = "Current password is incorrect"
TaloAuthError.ErrorCode.NEW_EMAIL_MATCHES_CURRENT_EMAIL:
validation_label.text = "New email must be different from the current email"
TaloAuthError.ErrorCode.INVALID_EMAIL:
validation_label.text = "Invalid email address"
_:
validation_label.text = Talo.player_auth.last_error.get_string()
else:
Expand Down
2 changes: 2 additions & 0 deletions addons/talo/samples/authentication/scripts/register.gd
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ func _on_submit_button_pressed() -> void:
match Talo.player_auth.last_error.get_code():
TaloAuthError.ErrorCode.IDENTIFIER_TAKEN:
validation_label.text = "Username is already taken"
TaloAuthError.ErrorCode.INVALID_EMAIL:
validation_label.text = "Invalid email address"
_:
validation_label.text = Talo.player_auth.last_error.get_string()

Expand Down
4 changes: 3 additions & 1 deletion addons/talo/utils/talo_auth_error.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ enum ErrorCode {
INVALID_SESSION,
NEW_PASSWORD_MATCHES_CURRENT_PASSWORD,
NEW_EMAIL_MATCHES_CURRENT_EMAIL,
PASSWORD_RESET_CODE_INVALID
PASSWORD_RESET_CODE_INVALID,
VERIFICATION_EMAIL_REQUIRED,
INVALID_EMAIL
}

var _error_string = ""
Expand Down

0 comments on commit 8faf833

Please sign in to comment.