Modern yuvalarda render ve grafik teknolojileri
1. Sembollerin ve kazançların okunabilirliği, 2. Aşırı ısınma olmadan stabil 60 FPS, 3. Kolay paket ve hızlı başlangıç, 4. Sonucun dürüstlüğünden ödün vermeden "vay etkileri" (görsel olan her şey zaten hesaplanan sonucun üstündedir).
Aşağıda teknoloji, boru hattı ve metrikler için bir sistem kılavuzu bulunmaktadır.
1) Render yığını: nelerden oluşur
2D/WebGL/Canvas - PixiJS, Phaser, şirket içi движки (HTML5/WebView).
2. 5D/3D - Birlik (WebGL/mobil), PlayCanvas, Üç. Js.
WebGPU (görünür) - gölgelendiricilerde/işlem sonrası ve bellek kontrolünde büyüme.
Ses/Zaman Çizelgesi - WebAudio/Unity Ses + Animasyon Zaman Çizelgesi (GSAP/Spine/Unity Zaman Çizelgesi).
Varlıklar - sprite atlaslar, SDF/MSDF yazı tipleri, Spine/DragonBones, video/web codec bileşenleri, sıkıştırma dokuları.
Aletler - Spector. js/DevTools/Unity Profiler, atlas paketleyiciler, ASTC/ETC2/BCn kompresörler.
2) Grafik modeller: 2D, 2. 5D ve orta 3D
Saf 2D: Düz tamburlar, katmanlarda UI, filtreler ve maskeler. Hızlı ve öngörülebilir.
2. 5D: perspektif makaraları, paralaks, eğim/yuvarlak, 2D UI üzerinden 3D özellikler En iyi wow/performans oranı.
Tam 3D: bonus/intro sahneleri, şans tekerlekler ", etrafında kamera. Disiplin gerektirir: LOD, malzeme sınırlamaları, basitleştirilmiş laytinґ.
Öneri: yuvada, anahtar okunabilirliği 2D/UI katmandadır; 3D - intro ve nadir setpises için.
3) Gölgelendiriciler ve son efektler (güvenli ve ekonomik)
Tipik gölgelendirici birimleri:- Semboller/kazançlar için Işıma/Anahat (hedef oluşturmak için SDF/bulanıklaştırma).
- Tematik aşamalar için Renk Derecelendirme/HSV Shift (gündüz/gece, bonus).
- Metne müdahale etmemek için arka planda bozulma/ısı dalgası.
- Havai fişekler için ilave parçacıklar (karıştırmada ucuz).
- Davullarda "pencere" için Maskeler/Stencils, overdraw tasarrufu.
İşlem sonrası makul seviye: Alt numune zinciri, Vignette, Kromatik aberasyon (minimum) ile Bloom. Mobilde - LOD ile devre dışı bırakın/basitleştirin.
4) Animasyonlar: Zaman çizelgeleri, sırtlar ve "kazanç duygusu"
Zaman Çizelgesi: Durum makinesi 'Boşta, Spin, Stop, Count, Celebrate, animasyonlar - zamana göre belirlenir, sonuç zaten bilinir.
İskelet animasyonu (Spine/DragonBones): Maskot kahramanları/sembolleri, bellekte ekonomik, klipleri değiştirmek kolay.
Ara doldurma (GSAP/Animator): arayüzün ve kazanma sayaçlarının sayısal animasyonları ("büyüme hissi" için easeOutExpo).
Ses ile senkronizasyon: anahtar anlar (davul stop/combo) - zaman çizelgesindeki işaretleyiciler aracılığıyla ve kare mantığına göre değil.
Hareket erişilebilirliği:'daha az hareket "modu, boyunları/paralaksı kapatma.
5) Dokular, atlaslar ve sıkıştırma
Sprite atlasları: doku anahtarlarını azaltmak için büyük atlaslar (2048-4096); harmanlayarak gruplama.
Sıkıştırma:- ASTC (iOS/modern Android), ETC2 (Android), BCn (masaüstü/WebGL2), geri dönüş WEBP/PNG.
- 3D ve büyük arka planlar için mip düzeylerini kaydedin (parıltıyı azaltır).
- Önceden çoğaltılmış alfa kanalı: doğru karıştırma ve daha az hale.
- MSDF/SDF yazı tipleri: başlıkları/sayıları büyük dokular olmadan anahat/ışıma ile temizleyin.
6) Parçacıklar (GPU dostu)
Atlas + GPU örnekleme (3D) veya butching (2D) içeren reklam panoları.
Katmanlı katkı maddesi/Alfa karışımı; yayıcıların süresini sınırlayın.
İnce dozaj: parçacıklar zaferi "önerir", ancak sembollerle örtüşmez.
Nesneleri GC sivri uçları üretmeyecek şekilde bir araya getirme.
7) Sahne kompozisyonu ve çizim sırası
Слои: Geri> Makaralar> Semboller> FX> UI> Overlay.
Önce opak, sonra yarı saydam.
Tamburlardaki maskeler/stensiller - böylece arka plan "altında" saydam alanlar oluşturulmaz.
Z sırasını temizleyin, gereksiz testler olmaması için 2D'de derinliği devre dışı bırakın.
8) Boru hattı varlıkları ve yükleme
Atlas oluşturma (TexturePacker/Spine Export), otomatik kesme, özet adları ('simgesi. ab12. png ').
Bonus sahnelerinin gecikmeli yüklenmesi ve ağır FX (tembel).
Font formatlama (MSDF), animasyon eğrilerini dışa aktarma.
CDN & cache basting: değişmez varlıklar, manifestoda kısa TTL.
Hızlandırılmış kod çözme için WebCodecs/WebAssembly, ana iş parçacığı dışında (varsa) oluşturma için OffscreenCanvas.
9) Performans: hedefler ve ölçümler
Hedefler: Referans cihazlarda 60 FPS; İlk Oynanabilir <5-10 s web/< 10 s mobil; sabit sıcaklık.
Anahtar SLI'lar:- Çağrıları çiz (daha fazla butching, daha az doku anahtarı).
- Overdraw (ısı haritası - saydam "levhalardan" kaçının).
- GPU zaman/CPU zaman çerçevesi (render ve mantık zamanlaması ayrı ayrı).
- Bellek/VRAM (sivri uçlar, sızıntılar).
- Paket boyutu ve p95 varlık yükü.
- Kekemeler/GC (miktar ve süre).
Araçlar: Spector. Js, Chrome DevTools/Performans, Safari Web Inspector, Xcode/Android GPU Inspector, Unity Profiler/Frame Debugger.
10) "Hava durumunu oluşturan" optimizasyonlar
Butching: malzemeler/atlaslar/harmanlama ile gruplandırılmış; Pixi'de - 'ParticleContainer'/' Geometri' desenleri.
LOD: zayıf cihazlarda ağır gölgelendiricileri/parçacıkları kapatın; Daha düşük çözünürlükte alternatif atlaslar.
Piksel yapışma ve tamsayı konumları - tamburları kaydırırken daha az bulanıklık.
Azaltılmış saydamlık: büyük alfa kalıplarını düzleştirilmiş kafes/maskelerle değiştirin.
Tekrarlanan efektler için target render'ı (RTT) önbelleğe alıyoruz.
Fontları kısaltın: Bir düzine PNG fontu yerine dinamik stillere sahip bir MSDF kümesi.
Yarım çözünürlükte işlem sonrası (çeyrek/yarım res) + ikili lüks.
Sayaç animasyonları: kare kelepçeleri (saniyede en fazla N güncelleme).
Makul fizik:'ağır "simülasyonlar yok - sadece önceden hazırlanmış eğriler.
11) Renk, gama ve okunabilirlik
sRGB/doğrusal oluşturma: doğru renkler ve karıştırma.
UI kontrastı: kazanan numaralar - yüksek kontrast ve gölgeler/anahat.
Renk körü dostu: kritik kombinasyonlardan kaçının (dopcoding formu olmadan kırmızı/yeşil).
Markalı renk derecelendirme - dikkatlice, karakterlerin okunabilirliğini öldürmeyin.
12) Grafiklerin oyun ve ses ile senkronizasyonu
Spin/bonus sonucu animasyondan önce hesaplanır; Grafikler sadece senaryoyu yeniden üretir.
Kreşendo noktaları (davul durağı, mega-win) - zaman çizelgesi işaretleri; Ses ve titreşim onlara bağlıdır.
Süre bütçesi: davul durakları <1. 2–1. 6 s, kazanç sayma - hızlı ve "atlama" olasılığı ile.
13) Grafik kalite testi
Görsel anlık görüntüler (regresyon): semboller, yazı tipleri, konumlandırma.
Cihaz matrisi: bütçe Android (Mali/Adreno), eski iPhone/iPad, masaüstü bilgisayarlar.
Fazla çizilmiş ısı haritaları ve GPU profilleri.
Okunabilirlik için kullanılabilirlik: 3-5 yanıt verenler, farklı köşegenler/parlaklık, parlama koşulları.
Erişilebilirlik:'daha az hareket ", büyük CTA'lar, yüksek kontrast modu.
14) Mini tarifler (hazır şablonlar)
A. pseudo-3D ile davul
Düz karakter şerit + pencere maskesi.
Kolay paralaks ile arka plan (iki doku, farklı hızlar).
Shader pencerenin içindeki kenarları ve ışık gölgesini "yuvarlar".
Animasyon durumlarını zaman çizelgesine göre değiştirme, RNG mantığına göre değil.
B. "büyük kazanç" etkisi
Scale-bounce başlığı (0. 9 → 1. 1 → 1. 0, easeOutElastic).
Havai fişeklerin ilave parçacıkları 0. 8–1. 2 s.
Işıma SDF metin + yarı çözünürlükte yumuşak çiçek.
Atla düğmesi her zaman kullanılabilir.
C. "Ucuz" basamaklı ritim
İşaretleyiciler ile bir kompozit ses; Grafikler sadece "göz kırpıyor".
Sayaç X, MSDF anahattı aracılığıyla adımlarda, karakter anahattında büyür.
Post efektleri zayıf cihazlarda LOD tarafından devre dışı bırakılır.
15) Sık yapılan hatalar ve bunlardan nasıl kaçınılacağı
Büyük şeffaf sprite - vahşi overdraw. Çözüm: "Şeklinde "/maskeler/RTT kesin.
Çok fazla yazı tipi/stil - VRAM patlamaları. Çözüm: Bir MSDF paketi, gölgelendiricideki stiller.
Sıkıştırma/duraklatma olmadan videofonlar - çerçeve damlaları/ısıtma. Çözüm: kısa çevrimler, düşük bit hızı, katlanırken durun.
Kazanma sayısı sırasında rastgele GC. Çözüm: nesne havuzları, ön warm yayıcılar.
Zaman yerine çerçevelere göre zamanlama - senkronize değil. Çözüm: 'deltaTime'/zaman çizelgesine bağlanın.
Çok parlak çiçek - "sabun. "Çözüm: alt örnek zinciri + yoğunluk sınırı.
Herkes için ağır post-efekt. Çözüm: Cihaza göre LOD/bayraklar.
16) Grafik Yayın Kontrol Listesi
Performans
- Referanslarda 60 FPS; zirve çerçevesi
- Koridorda çağrıları çizin; saten/malzeme kasap
- Makaralar ve UI üzerinde "kırmızı'değil Overdraw
- Bütçede bellek/VRAM, sızıntı yok
Varlıklar
- Hash, Sıkıştırma Atlasları: ASTC/ETC2/BCn + fallback
- SDF/MSDF yazı tipleri, proje başına bir set
- Efektlerin/arka plan sahnelerinin LOD sürümleri
Animasyonlar/Zaman Çizelgesi
- Tüm önemli olaylar - işaretleyici ile, mevcut atla
- Ses/titreşim ile senkronize
- Hareket azaltılmış mod etkinleştirildi
Testler
- Görsel anlık görüntüler yeşil
- Cihaz matrisinde GPU/CPU profilleri
- Yükleme sahneleri (çok kazançlı, çok parçacıklı)
Dağıtım
- CDN ısındı, önbellek bazlama çalışıyor
- Tembel yükleme bonusları ve ağır FX
- Paket limitli, İlk Oynanabilir hedef
Yuvalardaki grafikler estetik ve mühendislik dengesidir: duygu için gölgelendiriciler ve efektler, hız için butching ve sıkıştırma, kontrollü drama için zaman çizelgeleri, tüm oyuncular için erişilebilirlik. Takımlar veri odaklı bir görsel tasarladıklarında kazanırlar, beraberlik çağrılarından aşırı çekime kadar her şeyi ölçerler, demetleri hafif tutarlar ve FPS ve okunabilirliği kaybetmeden oyuncuya "vay" verirler. Modern yuvalar böyle doğar: güzel, hızlı ve dürüst.