88 lines
3.3 KiB
Markdown
88 lines
3.3 KiB
Markdown
# Stepstead — Pedometer Native Eklentiler
|
||
|
||
Adım sayar soyutlaması `autoload/pedometer.gd` içinde. Native plugin yoksa
|
||
otomatik **simülasyon** moduna düşer (editör/masaüstü test). Gerçek cihazda
|
||
adım okumak için aşağıdaki native eklentiler derlenip projeye eklenmeli.
|
||
|
||
GDScript ↔ native sözleşmesi (her iki platform aynı):
|
||
|
||
| Metot | Dönüş | Açıklama |
|
||
|---------------------|-------|--------------------------------------------|
|
||
| `is_available()` | bool | Cihazda adım sayar sensörü var mı |
|
||
| `start()` | void | Dinlemeyi başlat |
|
||
| `stop()` | void | Dinlemeyi durdur |
|
||
| `get_step_count()` | int | Açılıştan beri kümülatif adım |
|
||
|
||
Singleton adları: Android = `StepCounter`, iOS = `Pedometer`.
|
||
|
||
---
|
||
|
||
## Android (`stepcounter-android/`) — Mac'te derleme
|
||
|
||
**Gereksinim:** Mac + Android Studio (Android SDK API 34 + JDK 17) + Godot 4.6.
|
||
|
||
Gradle projesi hazır: `settings.gradle`, `build.gradle`, `gradle.properties`,
|
||
wrapper config (`gradle/wrapper/gradle-wrapper.properties` → Gradle 8.5).
|
||
Eksik tek şey wrapper binary'si ve godot-lib — aşağıda.
|
||
|
||
### 1. Android Build Template'i kur (godot-lib.aar için)
|
||
Godot editöründe projeyi aç → **Project > Install Android Build Template**.
|
||
Bu, proje köküne `android/build/` oluşturur. Godot kütüphanesini bul:
|
||
```bash
|
||
find android/build -iname "godot-lib*.aar"
|
||
# örn: android/build/libs/release/godot-lib.template_release.aar
|
||
```
|
||
Bu AAR'ı plugin libs/ içine kopyala:
|
||
```bash
|
||
mkdir -p native/stepcounter-android/libs
|
||
cp android/build/libs/release/godot-lib.*.aar native/stepcounter-android/libs/
|
||
```
|
||
|
||
### 2. SDK yolunu bildir
|
||
```bash
|
||
cd native/stepcounter-android
|
||
echo "sdk.dir=$HOME/Library/Android/sdk" > local.properties
|
||
```
|
||
|
||
### 3. Gradle wrapper'ı üret + derle
|
||
Android Studio'da klasörü açarsan wrapper'ı otomatik üretir. CLI ile:
|
||
```bash
|
||
# Homebrew gradle ile tek seferlik wrapper üret (sonra ./gradlew yeter)
|
||
brew install gradle # yoksa
|
||
gradle wrapper --gradle-version 8.5
|
||
./gradlew assembleRelease
|
||
```
|
||
|
||
### 4. AAR'ı projeye koy + etkinleştir
|
||
```bash
|
||
cp build/outputs/aar/stepcounter-release.aar \
|
||
../../addons/stepcounter/stepcounter-release.aar
|
||
```
|
||
Godot: **Project > Project Settings > Plugins > StepCounter = Enable**.
|
||
Android export'unda **Use Gradle Build** açık olmalı.
|
||
|
||
İzin: `ACTIVITY_RECOGNITION` (Android 10+). Export plugin manifest'e ekler,
|
||
`pedometer.gd` çalışma zamanında `OS.request_permission(...)` ile ister.
|
||
|
||
> Not: `libs/`, `local.properties`, `.gradle/`, `build/` ve wrapper jar'ı
|
||
> repoya girmez (bkz `.gitignore`).
|
||
|
||
---
|
||
|
||
## iOS (`pedometer-ios/`) — yazıldı
|
||
|
||
`CMPedometer` (CoreMotion) Objective-C++ plugin. Singleton `Pedometer`,
|
||
aynı 4 metot. Kaynak + `.gdip` config + build/iPhone yükleme adımları:
|
||
**`pedometer-ios/README.md`**.
|
||
|
||
> CMPedometer iOS Simulator'da çalışmaz → iPhone 13 ile gerçek cihaz testi.
|
||
> Derleme godot-ios-plugins harness (scons) ile, Xcode'da imzalı yüklenir.
|
||
|
||
---
|
||
|
||
## Test (native plugin olmadan)
|
||
|
||
Editör/masaüstünde HUD'daki **+100** butonu `Pedometer.sim_add(100)` çağırır,
|
||
ardından `/world/sync-steps` ile sunucuya gider. Sunucu dakika-başı tavan
|
||
(anti-cheat) uygular; aşan adımlar reddedilir ve `step_log`'a `accepted=false`
|
||
olarak yazılır.
|