İlk commit: Stepstead Godot istemci (4.6 Mobile)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jts 2026-07-11 11:31:35 +03:00
commit 6a1706051d
346 changed files with 14415 additions and 0 deletions

View file

@ -0,0 +1,75 @@
# Stepstead — iOS Pedometer Plugin (CMPedometer)
Godot 4 iOS plugin. `Pedometer` singleton'ı, `autoload/pedometer.gd` ile aynı
sözleşmeyi sağlar: `is_available / start / stop / get_step_count`.
**Kaynak dosyalar:**
- `pedometer.h`, `pedometer.mm` — singleton + CMPedometer mantığı
- `pedometer_module.h`, `pedometer_module.mm` — init/deinit (singleton kaydı)
- `pedometer.gdip` — plugin config (CoreMotion.framework + NSMotionUsageDescription)
> ⚠️ CMPedometer **iOS Simulator'da çalışmaz** (`is_available()` = false).
> Gerçek cihaz gerekir → **iPhone 13 ile test.**
---
## Derleme — godot-ios-plugins harness (Mac, önerilen)
**Gereksinim:** Mac + Xcode + command line tools + SCons (`brew install scons`).
```bash
# 1. Resmi iOS plugin harness'ını klonla
git clone https://github.com/godotengine/godot-ios-plugins.git
cd godot-ios-plugins
# 2. Godot 4.6 başlık dosyalarını üret (godot kaynağını çeker)
./scripts/generate_headers.sh 4.6.0.stable # repo README'sindeki sürüm formatı
# 3. Bu plugin'i plugins/ altına kopyala
cp -r /path/Stepstead/native/pedometer-ios plugins/pedometer
# 4. Derle (arm64, release) — çıktı bin/pedometer.*.a
scons target=template_release arch=arm64 plugin=pedometer version=4.6
scons target=template_debug arch=arm64 plugin=pedometer version=4.6
```
> SCons komutunun tam imzası harness sürümüne göre değişebilir; repo
> README'sini esas al. Çatı `plugins/pedometer/` altındaki tüm `.mm`
> dosyalarını otomatik derler.
---
## Godot projesine ekleme
1. Çıktıları projeye koy:
```
res://ios/plugins/pedometer/pedometer.a
res://ios/plugins/pedometer/pedometer.gdip
```
(`.gdip` zaten bu klasörde — `.a` ile birlikte kopyala.)
2. Godot: **Project > Export > iOS** preset'inde **Plugins** sekmesinde
`Pedometer` işaretli olmalı.
3. `.gdip` `NSMotionUsageDescription`'ı otomatik Info.plist'e ekler.
(Apple izni: ilk `start()` çağrısında sistem motion izni sorar.)
---
## iPhone 13'e yükleme (gerçek test)
1. Godot'ta iOS export → Xcode projesi üretir.
2. Xcode'da aç → **Signing & Capabilities**'da Apple ID (ücretsiz hesap olur,
7 günlük provisioning) ile imzala.
3. iPhone 13'ü kabloyla bağla → Xcode'da hedef cihaz seç → **Run**.
4. Oyunda login → `Pedometer.start()` (world.gd otomatik çağırır) →
sistem "Motion & Fitness" izni sorar → izin ver.
5. Telefonu cebe at, yürü → adım bakiyesi 30 sn'de bir `/world/sync-steps`
ile artar (sunucu anti-cheat tavanı 250/dk uygular).
---
## İleride (enhancement)
`startPedometerUpdatesFromDate:` uygulama açıkken sayar. Arka planda/kapalıyken
atılan adımları toparlamak için `queryPedometerDataFromDate:toDate:withHandler:`
ile son sync zamanından şu ana kadarki geçmişi çekmek gerekir (iOS 7 günlük
adım geçmişi tutar). MVP'de yok — `get_step_count` sadece oturum sayımı.