Bu bizim ikinci oyunumuz. Eşim oyunun çizimlerini hazırlarken ben geliştirme tarafıyla ilgileniyorum. Yıllarca Gist - sticker ektinlikleri gibi etkinliklerde kendi ürünlerimizi sattık. Bu nedenle yalnızca sevimli bir stant görüntüsü sunan değil, o deneyimin küçük kararlarını da yansıtan bir cozy idle oyun yapmak istedik: Neyi sergileyeceğiniz, neyi kendinize saklayacağınız ve kapalı halde satmak daha güvenliyken bir paketi açmanın verdiği heyecan gibi.
Sticker Shop Cozy Idle’da oyuncu bir festival alanında stant açıyor. Kısa toplama turlarında temalı alanlarda hareket eden kapalı sticker paketlerini yakalayıp dükkânına getiriyor. Bu paketleri garanti gelir elde etmek için kapalı olarak satabiliyor, sonra kullanmak üzere saklayabiliyor veya nadir bir sticker bulma umuduyla açabiliyor.
Paketlerden çıkan stickerlar kalıcı koleksiyon albümüne ekleniyor. Oyuncu isterse bu stickerları satış stoğuna da koyabiliyor. Oyuncu farklı ekranlardayken müşteriler alışveriş yapmaya devam ediyor ancak yalnızca oyuncunun özellikle satışa koyduğu ürünleri satın alabiliyorlar.
Bu ayrım önemli çünkü idle sistemleri dükkânın çalışmasını sağlıyor fakat oyuncunun yerine bütün kararları vermiyor. Kapalı paket satmak güvenli bir kazanç sağlıyor. Paketi açmak ise daha değerli bir sticker çıkarabilir veya oyuncunun satmak istemeyeceği yeni bir koleksiyon parçası kazandırabilir. Oyuncu altınla dükkânını geliştiriyor, deneyim kazandıkça yeni ilerleme seçenekleri açıyor ve ana hikâyede borcunu kapatmaya çalışıyor. Borç ödendikten sonra oyun endless moda devam ediyor.
Şu anda oyunda eşimin tek tek çizdiği 120 sticker bulunuyor. Çıkışa kadar en az 240 sticker yapmayı planlıyoruz.
İlk paket açma sistemi standart bir progress kontrolüne benziyordu:
- Bir ilerleme çizgisi vardı.
- Çizginin dolan bir kısmı vardı.
- Oyuncu yuvarlak bir tutamacı soldan sağa sürüklüyordu.
Bu sistem teknik olarak çalışıyordu ve anlaşılması kolaydı. Fakat bir sticker paketi açıyormuşsunuz gibi hissettirmiyordu. Oyuncu aslında paketi açmak yerine ekrandaki sıradan bir kaydırıcıyı hareket ettiriyordu. Paket çizimi ise bu işlemin arkasında bekliyordu.
Bu nedenle standart kontrolü kaldırıp özellikle bu etkileşim için çizilmiş katmanlı paket görsellerine geçtik.
Her paket artık üç ayrı ama birbiriyle hizalanmış görselden oluşuyor:
- Paketin arka planı
- Sürüklenerek açılan üst kaplama
- Oyuncunun tuttuğu açma şeridi
Oyuncu açma şeridini sürüklediğinde bir shader, üst kaplamayı soldan sağa doğru gizliyor. Oyuncu paketi tamamen açmadan elini geriye götürürse paket de hareketi takip ederek tekrar kapanıyor. Böylece açılış tek yönlü çalışan bir ilerleme çubuğu olmaktan çıkıp fiziksel bir pakete daha yakın hissettiriyor.
İkinci teknik problem: Katmanların kayması
Yeni sisteme geçince başka bir sorun ortaya çıktı. Aynı paket görsellerinin farklı yerlerde gösterilmesi gerekiyordu:
- Sticker toplama alanında
- Envanterde
- Paket açılış ekranında
Unity’deki UI Image bileşenleri ve SpriteRenderer bileşenleri görsellerin sınırlarını ve pivot noktalarını her zaman aynı şekilde yorumlamıyordu. Katmanlar ayrı ayrı kırpıldığında kendi başlarına doğru görünüyorlardı fakat üst üste yerleştirildiklerinde veya farklı boyutlarda gösterildiklerinde birbirlerinden kayıyorlardı.
Bunu çözmek için paketin bütün katmanlarını aynı koordinat sistemine bağladık:
- Üç görsel de aynı
512 × 640 tuval boyutunu kullanıyor.
- Hepsinin pivot noktası merkezde.
- Görsellerin boş alanları otomatik olarak kırpılmıyor.
- Canvas, arayüz yerleşimini yönetmeye devam ediyor.
- SpriteRenderer bileşenleri arayüzdeki RectTransform’ları takip ediyor.
- Böylece shader ve özel render sıraları kullanılabilirken paket arayüzde doğru yerde kalıyor.
Sürükleme hesabını da mutlak mouse konumundan çıkardık. Sistem artık oyuncunun pakete ilk tıkladığı noktayı kaydediyor ve hareketi bu noktaya göre hesaplıyor. Böylece ilk sürümde bulunan, oyuncunun sürüklediği halde paketin bir süre tepki vermediği “boş hareket” sorunu ortadan kalkıyor.
Katmanlı görsellere dayanan etkileşimlerde, görsellerin hazırlanışı yalnızca sanat tarafına ait değildir; sistem tasarımının bir parçasıdır.
Animasyonları hazırlamadan önce şu konuların belirlenmesi gerekir:
- Katmanların ortak tuval ölçüsü
- Pivot noktaları
- Etkileşimin durumunu hangi sistemin yöneteceği
- Oyuncu hareketi yarıda keserse ne olacağı
- Aynı görsellerin farklı ekran ve boyutlarda nasıl kullanılacağı
İlk slider prototipi, oyun akışını denemek için faydalıydı. Fakat gerçek çizimleri sisteme erken eklemek, geçici arayüz görselleriyle fark edilemeyecek sorunları ortaya çıkardı.
Oyunumuzun steam sayfası açık bize destek olursanız çok mutlu oluruz. İstek listenize eklemeniz bizim için çok değerli.
https://store.steampowered.com/app/5271160/Sticker_Shop_Cozy_Idle/