Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
Complete TapTap SDK + Dirichlet Ad SDK integration plugin for Godot 4.x Android. Features: one-tap login, anti-addiction compliance, cloud save, leaderboard, friends list, rewarded video ads. Includes GDScript autoload wrappers with automatic mock mode fallback for non-Android platforms (editor/PC testing). Kotlin source code included.
Godot TapTap Android Plugin
TapTap SDK + Dirichlet Ad SDK integration plugin for Godot 4.x Android.
Features
- TapTap Login - One-tap login with TapTap account
- Anti-addiction (Compliance) - Age verification and play time limits
- Cloud Save - Save/load game data to TapTap cloud
- Leaderboard - Submit and query leaderboard scores
- Friends - Get TapTap friends list
- Rewarded Video Ads - Dirichlet Ad SDK 4.2.5.0 integration
- Mock Mode - Automatic fallback for non-Android platforms (editor testing)
Requirements
- Godot 4.6+
- Android minSdk 24+
- TapTap Developer Account (Client ID, Client Token)
- Dirichlet Ad Developer Account (Media ID, Media Key, Space ID)
Quick Start
1. Install Plugin
Copy the addons/taptap_android/ folder into your Godot project's addons/ directory.
2. Enable Plugin
In Godot Editor: Project β Project Settings β Plugins β Enable "TapTap Android"
3. Add Autoloads
In Project β Project Settings β Autoload, add:
| Name | Path |
|---|---|
| TapTapManager | res://addons/taptap_android/scripts/tap_tap_manager.gd |
| AdManager | res://addons/taptap_android/scripts/ad_manager.gd |
4. Configure AdApplication (Required for Ads)
Copy
addons/taptap_android/android_build_template/AdApplication.javato your Android build template:android/build/src/main/java/com/godot/game/AdApplication.javaIn your main script (before any ad calls), configure the AdApplication:
# Call this early, before AdManager.init_ad() AdApplication.configure(media_id, media_key, "Your App Name", tap_client_id)Modify
android/build/src/main/AndroidManifest.xml:<application android:name=".AdApplication" ...>
5. Initialize SDK
func _ready():
# Wait for TapTapManager to be ready
TapTapManager.sdk_initialized.connect(_on_sdk_initialized)
TapTapManager.login_success.connect(_on_login_success)
TapTapManager.anti_addiction_callback.connect(_on_anti_addiction)
# Initialize TapTap SDK
TapTapManager.init_sdk("your_client_id", "your_client_token", "")
func _on_sdk_initialized():
print("TapTap SDK initialized")
# Initialize anti-addiction
TapTapManager.init_anti_addiction("your_client_id")
# Initialize cloud save
TapTapManager.init_cloud_save()
# Initialize leaderboard
TapTapManager.init_leaderboard()
# Initialize friends
TapTapManager.init_friends()
# Configure and initialize Ad SDK
AdManager.configure("your_media_id", "your_media_key", "your_tap_client_id")
AdManager.init_ad()
func _on_login_success(user_info: Dictionary):
print("Logged in: ", user_info)
# Check anti-addiction after login
TapTapManager.check_anti_addiction()
func _on_anti_addiction(code: String, message: String):
match code:
"500":
print("Login success / No restriction")
"1030":
print("Game time expired, should exit")
_:
print("Anti-addiction code=%s msg=%s" % [code, message])
6. Rewarded Video Ads
func show_rewarded_ad():
if AdManager.is_loading():
print("Ad is loading, please wait")
return
AdManager.rewarded_complete.connect(_on_ad_reward)
AdManager.rewarded_close.connect(_on_ad_close)
AdManager.rewarded_load_failed.connect(_on_ad_failed)
AdManager.load_rewarded_video("your_space_id")
func _on_ad_reward(reward_info: String):
print("Ad reward: ", reward_info)
# Grant reward to player
func _on_ad_close():
print("Ad closed")
func _on_ad_failed(reason: String):
print("Ad failed: ", reason)
7. Cloud Save
func save_game():
var save_data = JSON.stringify({"level": 5, "coins": 100})
TapTapManager.save_to_cloud(save_data, "Level 5 - 100 coins")
func load_game():
TapTapManager.cloud_save_list.connect(_on_save_list)
TapTapManager.load_cloud_save_list()
func _on_save_list(archives_json: String):
var json = JSON.new()
if json.parse(archives_json) == OK:
var archives = json.data.get("archives", [])
if archives.size() > 0:
TapTapManager.load_cloud_save_data(
archives[0]["archiveId"],
archives[0]["fileId"]
)
API Reference
TapTapManager (Autoload)
| Method | Description |
|---|---|
init_sdk(client_id, client_token, server_url) |
Initialize TapTap SDK |
login() |
Start TapTap login flow |
logout() |
Logout from TapTap |
is_logged_in() -> bool |
Check if user is logged in |
get_user_info() -> Dictionary |
Get current user info |
init_anti_addiction(client_id) |
Initialize anti-addiction module |
check_anti_addiction() |
Start compliance check |
exit_anti_addiction() |
Exit anti-addiction |
init_cloud_save() |
Initialize cloud save module |
save_to_cloud(data, summary) |
Save data to cloud |
load_cloud_save_list() |
Load cloud save list |
load_cloud_save_data(archive_id, file_id) |
Load cloud save data |
delete_cloud_save(archive_id) |
Delete cloud save |
init_leaderboard() |
Initialize leaderboard module |
submit_leaderboard_score(id, score) |
Submit score |
load_leaderboard_scores(id, collection, page) |
Load scores |
init_friends() |
Initialize friends module |
get_friends_list(next_page_token) |
Get friends list |
is_mock_mode() -> bool |
Check if running in mock mode |
AdManager (Autoload)
| Method | Description |
|---|---|
configure(media_id, media_key, tap_client_id) |
Configure ad parameters |
init_ad() |
Initialize Ad SDK |
request_permissions() |
Request device permissions |
is_initialized() -> bool |
Check if Ad SDK is initialized |
is_loading() -> bool |
Check if ad is loading |
load_rewarded_video(space_id) |
Load and auto-show rewarded video |
show_rewarded_video(reward_type) |
Show loaded rewarded video |
Important Notes
Ad SDK Initialization
Dirichlet Ad SDK MUST be initialized in Application.onCreate(). The AdApplication.java template handles this. Without it, you will get error code 100001 (ad material not found).
Privacy Controller
All privacy controller methods (isCanUseLocation, isCanUsePhoneState, etc.) return true by default. This is required for the SDK to obtain device information for ad targeting. Adjust if needed for your privacy policy.
Mock Mode
On non-Android platforms (editor, PC, etc.), both TapTapManager and AdManager automatically enter mock mode. Mock mode simulates successful responses with delays, allowing you to test your game logic without a real device.
Godot has_method() / has_signal() Pitfall
@UsedByGodot annotated methods and getPluginSignals() registered signals may return false for has_method()/has_signal(). Always call/connect them directly instead of checking first.
Signal Parameter Types
Godot emitSignal does not support Java primitive types (int, boolean, float). All signal parameters must use String type.
@UsedByGodot Default Parameters
Kotlin default parameters are NOT supported by Godot's JNI bridge. All parameters are treated as required.
Building the AAR from Source
If you need to modify the Kotlin plugin code:
- Install Android Studio with Kotlin 2.1.0 support
- Copy
godot-lib.4.6.3.stable.template_release.aartoandroid_plugin_source/app/src/main/libs/ - Run:
cd android_plugin_source ./gradlew assembleRelease - Copy
app/build/outputs/aar/app-release.aartoaddons/taptap_android/android/taptap_plugin.aar
Directory Structure
godot-taptap-android/
βββ addons/taptap_android/ # Godot plugin (copy to your project)
β βββ plugin.cfg # Editor plugin config
β βββ plugin.gd # Editor plugin script
β βββ android/ # Android plugin files
β β βββ TapTapPlugin.gdap # TapTap plugin descriptor
β β βββ AdPlugin.gdap # Ad plugin descriptor
β β βββ taptap_plugin.aar # Compiled plugin AAR
β β βββ dirichlet_ad_4.2.5.0.aar # Dirichlet Ad SDK
β βββ scripts/ # GDScript autoloads
β β βββ tap_tap_manager.gd # TapTap SDK wrapper
β β βββ ad_manager.gd # Ad SDK wrapper
β βββ android_build_template/ # Files to copy to android/build/
β βββ AdApplication.java # Ad SDK Application template
β βββ AndroidManifest.xml.patch # Manifest modification guide
βββ android_plugin_source/ # Kotlin source code for the AAR
β βββ app/
β β βββ build.gradle
β β βββ src/main/java/com/godot/taptap/
β β βββ taptap/TapTapPlugin.kt
β β βββ ad/AdPlugin.kt
β βββ build.gradle
β βββ settings.gradle
β βββ gradle.properties
βββ examples/ # Example code
SDK Versions
| SDK | Version |
|---|---|
| TapTap SDK | 4.10.2 |
| Dirichlet Ad SDK | 4.2.5.0 |
| Kotlin | 2.1.0 |
| Godot | 4.6+ |
License
MIT
Complete TapTap SDK + Dirichlet Ad SDK integration plugin for Godot 4.x Android. Features: one-tap login, anti-addiction compliance, cloud save, leaderboard, friends list, rewarded video ads. Includes GDScript autoload wrappers with automatic mock mode fallback for non-Android platforms (editor/PC testing). Kotlin source code included.
Reviews
Quick Information
Complete TapTap SDK + Dirichlet Ad SDK integration plugin for Godot 4.x Android. Features: one-tap login, anti-addiction compliance, cloud save, leaderboard, friends list, rewarded video ads. Includes GDScript autoload wrappers with automatic mock mode fallback for non-Android platforms (editor/PC testing). Kotlin source code included.