İçeriğe geç

Oyun Geliştiricisi Hızlı Başlangıç

Bir oyun geliştiricisiyseniz ve kullanıcılarınız için SignalRGB efektlerini entegre etmenin kolay bir yolunu arıyorsanız hızlı başlangıç kılavuzuna hoş geldiniz. Geliştiricilerimiz, efektlerin genellikle bizim amaçlarımız için tasarlanmamış kullanıcı arayüzüyle çalışmasını sağlama konusunda uzmanlaşmıştır. Kullanıcılar renk degradeleri, şeffaf UI, özelleştirilebilir beceri UI’ı, zıplayan veya sallanan HUD öğeleri gibi özellikleri sever; bunların hepsi efekt tetikleme sırasında hesaba katmamız gereken tutarsızlıklardır. Kullanıcı arayüzü ne kadar zorlu olursa oyun ve kullanıcı deneyimi için o kadar az şey yapabiliriz. Sizinle geliştiricilerimiz arasındaki işbirliğiyle bu sorunlar ortadan kaldırılabilir ve oyun entegrasyonları bir üst seviyeye taşınabilir.

SignalRGB’nin API’si, geliştiricilerin görsel bilgileri analiz etmesi için benzersiz ve güçlü araçlar sunar. Basitçe söylemek gerekirse, herhangi bir piksel veya piksel grubundan hassas RGB renk verilerini yakalayabilir ve kararlı değerlerdeki değişiklikleri kullanarak efektleri tetikleyebiliriz. Örneğin bir can çubuğunun azalması, bir menünün açılması veya bir beceri simgesinin doygunluğunun azalması; herhangi bir tutarlı UI öğesi kullanıcının çevre birimlerinde efekt tetiklemek için kullanılabilir.

Bu yöntem dolaylı iletişim olarak kabul edilir ve geliştiricilerimizin her entegrasyonda hesaba kattığı çeşitli zorlukları beraberinde getirir. Aşağıdaki bölümler şu anda teorik olan doğrudan iletişim fikirleri keşfetmektedir (oyun geliştiricileri, bizimle iletişime geçin).

En basit tetikleyicimiz belirli bir renk aralığını kontrol eder ve eşleşirse “evet”, eşleşmezse “hayır” döndürür. Veri açısından buna bit denir ve sekiz bitten oluşan bir grup, 256’ya kadar olası durumu temsil edebilen bir bayt oluşturur.

Pratikte, ekranda sabit piksellerin koordinatlarını sağlarsınız (tüm çözünürlüklerde görünür). Bu pikseller bir araya toplanmış veya dağıtılmış olabilir ve her renkte olabilir; tek şart her pikselin konumunun oyun içinde asla değişmemesi ve etkinleştirme renginin tutarlı kalmasıdır. Bir pikselin rengi etkinleştirme rengiyle eşleştiğinde dizide “1” olarak kaydedilir. Başka bir renk olduğunda ise “0” olarak kaydedilir. Her karede entegrasyon bu ikili diziden elde edilen tam sayıyı hesaplar ve tanımladığınız ilgili durumu sürdürür.

İşte sadece üç piksel kullanan basitleştirilmiş bir örnek; bu altı benzersiz durum üretir. Bu örnekteki UI öğesi, popüler bir oyundaki bir mini haritanın köşesidir.

Ve üç pikselim:

Geçen renk olarak orijinal renkleri seçtim, bu nedenle bu bit düzenlemesi 111’e veya “6”ya eşittir. Hiçbiri geçmez veya 000, “0” olur.

Önce yapılması gereken şey, daha fazla girdi beklerken devam eden her şeyi koruyan oyun içi bir “boşta” durumu oluşturmaktır. Bu, “0” durumu olacak ve aşağıdaki piksel değerleriyle temsil edilebilir:

Her birini geçmeyen rgb(0, 0, 0) olarak ayarladım. Ancak bu kadar büyük farklar kullanıcı tarafından fark edilebilir. Bir sonraki örnekte daha dikkatli olacağız.

Yani oyun içinde olduğumuzu ve temel bir durumu sürdürdüğümüzü varsayalım. Karakteriniz ilk becerisini kullandı ve bu değişikliği bir efekt olarak kaydetmek istiyoruz. “Beceri 1 kullanıldı” için efekt “1” durumu olarak belirlenmiştir ve entegrasyonumuza “1” durumunu ilettiğimizde etkinleşecektir. Bunu yapmak için piksel 1 ve 2’nin (soldan) temel renklerini hafifçe düzenleyerek 001 oluştururum.

Çok önemli görünmeyebilir, ancak piksel 1’in parlaklığı yaklaşık %30 azaltılmıştır ve piksel 2 %50 doygunluk kazanmıştır. Sistemimiz bu değişiklikleri kolayca tespit edebildiğinden, durum güvenilir şekilde “1”e geçecek ve beceri efekti tetiklenecektir. Belirli sürelere sahip beceriler kendi kendine sona erebilir, ancak diyelim ki bu beceri bir tuşa basmayla etkinleşiyor ve başka biriyle bitiyor. Belirsiz bir efekti sürdürmek için “1” durumu onu etkinleştirecek ve “2” durumu daha fazla kullanıcı girdisine göre onu bitirebilecektir. Bazı efektler çok analitik olup geliştiricilerimiz tarafından hâlâ ayrı ayrı ele alınması gerekecektir, ancak geri kalanı için bu sistem güvenilir olmaya adaydır. Ana sınırlama, oyun durumu sırasında sabit olması gereken ve muhtemelen “1” durumu pikselinin çözünürlüğünden daha büyük olması gereken “piksellerin” görünürlüğüdür.