İçeriğe geç
Bircan Görür
Staja açığım — Bahar 2027
← Tüm çalışmalar

Emberline

Okurun kararlarıyla akışı değişen hikâyeler için kurduğum, çok platformlu bir interaktif hikâye platformu.

Android/iOS hedefli · Yayın hazırlığında

Rol
Bağımsız geliştirici
Durum
Geliştirme ve yayın hazırlığı
Platform
Android · iOS (Flutter)
Odak
Hikâye motoru ve okuma deneyimi
Emberline okuyucu ekranı: tren vagonunda iki karakter ve bir diyalog balonu
Okuyucu
Emberline profil ekranı: okuma metni boyutu, yazı tipi, harf harf gösterim ve müzik ayarları
Okuma ayarları
Temsili görsel · seçimler, koşullar ve sonlar

Fikir

Emberline yalnızca metin gösteren bir okuma uygulaması değil; hikâye düğümleri, durum değişkenleri ve koşullu geçişlerle çalışan bir hikâye motoru.

Hikâyeyi veriye, okuma deneyimini motora ayırdım. Hikâyeler JSON olarak yapılandırılıp uygulamadan bağımsız paketleniyor; uygulama aynı motorla farklı türdeki hikâyeleri oynatabiliyor.

Ne inşa ettim

Ana sistemler

Hikâye motoru

  • JSON tabanlı hikâye yapısı ve düğümler
  • Seçimlere bağlı durum değişkenleri
  • Koşullu geçişler, dallanan anlatı
  • Bölüm ve hikâye bitişi, farklı sonlar
  • Süreli seçim türleri

Reader

  • Okuma arayüzü
  • Karakter ve arka plan gösterimi
  • Diyalog ve seçim sunumu
  • İlerleme ve kayıt yönetimi

Library · Discover

  • Hikâye kütüphanesi ve keşif ekranı
  • Detay sayfaları, bölüm listeleri, kapaklar
  • İndirme ve erişim akışları

Hesap ve kayıt

  • Google ve e-posta ile hesap (Firebase Auth)
  • Misafir kullanım
  • Yerel ilerleme, Firestore senkronizasyonu
  • Yer imleri ve favoriler

Üretim hattı

  • Markdown'dan JSON'a dönüştürme
  • Karakter sprite'ları ve arka planlar
  • Hikâye paketleri, Firebase Storage
  • Dalları ve koşulları kontrol eden doğrulama betikleri

Tasarım

  • "Space UI" adlı özel tasarım yaklaşımı
  • Derin renk paleti, özel navigasyon
  • Atmosferik, türe uygun görseller
  • Duyarlı Flutter arayüzleri

Teknik derinlik

Problem ve yaklaşım

Dallanan hikâyeyi koda gömmeden yönetmek

Seçim tabanlı bir hikâyede her karar yeni bir yol açar. Bu yollar koda gömülürse her hikâye yeni bir geliştirme işine dönüşür.

YaklaşımJSON tabanlı, yeniden kullanılabilir bir hikâye motoru: düğümler, seçimlere bağlı durum değişkenleri, koşullu geçişler ve birden fazla son.

Hikâyelerin bozuk dal olmadan yayına çıkması

Çok sayıda bölüm ve koşul içeren bir hikâyede ulaşılamayan ya da çıkmaza giren bir dal, okur için deneyimi bozar.

YaklaşımPython ile bir üretim hattı: metni Markdown'dan JSON'a dönüştürme, paketleme ve dalları/koşulları kontrol eden doğrulama betikleri.

Okurun ilerlemesini kaybetmemek

Okur misafir olarak başlayabilir, sonra hesap açabilir; ilerlemesi her durumda korunmalı.

YaklaşımYerel ilerleme kaydı, Firebase Authentication ile hesap akışları ve Firestore ile ilgili verinin senkronizasyonu.

Teknoloji yığını

Uygulama

FlutterDartFreezedSharedPreferences

Firebase

AuthenticationFirestoreStorageAnalyticsCrashlytics

Araçlar

Python scriptsFlutter testGit · GitHub

Derinleştiğim konular

Mobil uygulama mimarisi, veri tabanlı içerik yönetimi, kendi yazılım motorumu geliştirmek, kullanıcı deneyimi ve yapay zekâ destekli görsel içerik üretimi.

Galeri

Hikâye görselleri
Bu görseller Emberline'ın yapay zekâ destekli görsel üretim hattıyla hazırlanmış hikâye görselleridir; uygulama ekran görüntüsü değildir.
Hikâye kapağı: çatlamış çöl toprağında, dumanı tüten eski bir buharlı trenin önden görünümü
Kapak
Çatlamış çöl ovasında ilerleyen paslı yolcu vagonları
Arka plan · çöl manzarası
Çölde, su kulesinin yanında tahta bir peron ve treni bekleyen yolcular
Arka plan · peron
Trenin ortak salonu: eski koltuklar, soba ve yuvarlak kapılı ahşap bir vagon iç mekânı
Arka plan · ortak salon
Mühendislik vagonu: göstergeler, borular, bir kasa ve büyük bir güç ünitesi
Arka plan · mühendislik vagonu
Uzun pardösülü ve fötr şapkalı dedektif karakteri
Karakter · dedektif
Yeşil dönem elbisesi ve şallı Celeste karakteri
Karakter · Celeste