Like the Beyond the Dark demo, one of our earliest decisions was to have as much of the gameplay and story told diegetically within the world itself. Bu, hem kullanıcı arayüzü aracılığıyla oyuncuya ilerlemeyi iletmek istediğinizde hem de onları inşa ettiğiniz dünyanın içinde gerçekten var olduklarını hissettirmek istediğinizde zor bir süreç olabilir. Deneyimimiz için bu hedeflere ulaşmak amacıyla, oyunculara bilgi iletme yöntemimizi dört tekniğe ayırdık:
- Görsel ipuçları - Hikayeyi pasif bir şekilde pekiştiren veya oyuncuya dünya açısından mantıklı olduğunda ipuçları veren nesneler, görüntüler veya varlık düzenlemeleri.
- Efsane - Bir oyuncu evdeki belirli nesnelere tıkladığında, önemli hikaye bilgileri tüm ekranda görüntülenir. Bu anlatı, sadece nesneye tıklayan/ dokunan oyuncuya görünür. Tonu her zaman bilgi verici bir ton ve ifade içindedir.
- Düşünce baloncukları - Bir oyuncu evdeki belirli nesnelere tıkladığında, bir metin diyalog "tepkisi" nesnenin yakınında görünür. Bu anlatı, sadece nesneye tıklayan/ dokunan oyuncuya görünür. Tonu her zaman birinci şahıs ve gözlemleyici bir şekilde.
- Duyurular - Bir oyuncu evdeki bozulmuş bir nesneye tıkladığında, üçüncü şahıs diyalogu her oyuncunun ekranında aynı anda görüntülenir. Bu anlatı, bazen tüm oyuncuları bulundukları odanın bozulmuş durumuna geçirir.
Bu bölümde, bu teknikleri ve belirli özellikleri kullanarak oyuncuları anlatımıza nasıl dâhil ettiğimizi, keşif teşvik etmeyi, ilerlemeyi iletişim kurmayı ve oyun deneyimini hem bireysel oyuncuya yakın hem de çok oyunculu bir deneyimde adil tutmayı göstermeyi amaçlıyoruz.



Görsel ipuçları
Görsel ipucu, hem anlatıyı pekiştirmek hem de oyunculara hedeflerini kelime kullanmadan ne yapmaları gerektiğini söylemek için önemli bir araçtır. Tahta, heykeller ve duvar kağıdı gibi varlıkların düzenlemesiyle, Duvall Drive'ın ana karakterleri hakkında pasif bir şekilde derin bilgi sağladık. Ayrıca, saldırgan UI unsurları içermeden bulmacaları tamamlama konusunda rehberlik ettik. Bu sürece önce oyuncuya ne iletmek istediğimizi düşündük, ardından bu bilgiyi deneyim dünyasında nasıl iletebileceğimizi belirledik. Örneğin, oyuncuların büyükbabanın ölümden kaçınma misyonuna olan takıntısını anlamasını istedik, bu yüzden odasını dağınık bıraktık ve araştırmalarının çoğunu ve notlarını yazdığı birkaç duvarı bıraktık.


İlk kuralımız, oyunculara bir şey öğretmek için bir görsel ipucu kullanmak istiyorsak, oyuncular yokken bile bir nedeni olmalıdır. Eğer bir bulmaca için ne yapacağına dair net talimatların olduğu büyük bir tabela koyarsak, bu evde yerinden çıkmış gibi görünür. Ancak, her şeyi çizmeye takıntılı bir büyükbaba belirttiğimizde, oyuncunun takip etmesi için kalkmış bir planın yer aldığı bir yazı tahtası bırakmak çok daha mantıklı hale gelir.

İkinci kuralımız, oyunculara ne yapacaklarını ya da bulmacaları nasıl çözeceklerini her zaman anlatmamız gerekmediğidir, çünkü çevrelerine duyarlılardır. Örneğin, bazen bir su birikintisinde yatan bir elektrik kablosu, oyuncuların o yönde devam etmeleri durumunda elektrik çarpma tehlikesiyle karşı karşıya kalacaklarını iletmek için yeterli bir görsel ipucu olabilir.

Efsane
Görsel ipuçlarını oyuncuları pasif bir şekilde yönlendirmek için kullanmanın yanı sıra, oyuncuların evdeki belirli nesnelere tıkladıklarında odanın bulmacasına başlamak için önemli hikaye bilgilere tüm ekranda görüntülemek üzere, efsane bilgilerini sergilemeyi de tercih ettik. Oyuncuları efsane bilgisi görüntülenmesi için seçmeleri gereken nesnelere yönlendirmek için, belirli nesnelerin çevresinden çıkmasını sağlamak için yeni vurgu görsel efektini kullandık. Bu efekt, belirli bir renkle nesneleri çevrelemek ve/veya örtmek, ayrıca diğer nesnelerin kameraya daha yakın olmaları durumunda vurgunun gizlenip gizlenmeyeceğini seçmek için kullanılabilir.




Başlangıçta, bir oyuncunun etkileşimde bulunabileceği her nesne için Highlight kullandık, ancak görsel gürültü bunaltıcıydı ve oyuncular neyle etkileşime geçeceklerini net bir şekilde bilemiyordu. Sadece bozulmuş veya tehlikeli olan nesneleri vurgulamak için kullanmaya karar verdik ve bu görsel geri bildirim, oyuncuların hikayeyi ileriye taşımalarını kolaylaştırdı.

Oyuncu efsane ile ilişkilendirilmiş nesneye tıkladığında, bilgileri ekranın üzerinde görüntülemek için bir yol bulmamız gerekiyordu. Bir ScreenGui yaratarak, ekranda UI konteynerimiz olarak kullandık ve içindeki Frame öğesini, çocuklarının TextLabels ve ImageLabels boyutunu ve yeniden boyutlandırmasını kontrol etmek için kullandık. TextLabels ve ImageLabels özelliklerinin konum ve ölçek değerlerini ayarlayarak, görsel olarak bir araya gelecek şekilde yerleştirip, oyuncuların deneyime erişmek için kullandıkları farklı cihazlara göre ölçeklendirmeye karar verdik.

TextLabels ve ImageLabels, kendi metin ve resimlerinin görsel unsurlarını, renklerini, saydamlıklarını, boyutlarını ve düzenlerini etkiler. Özellikle TextLabels için, metnin düzenini ve görsel stilini kontrol etmek üzere TextLabel.TextScaled ve TextLabel.RichText özelliklerini ayarlayabilirsiniz. TextLabel.TextScaled, metni ana UI öğesinin alanını dolduracak şekilde ölçeklendirilmesine izin verir ve TextLabel.RichText, metin bölümlerini kalın, italik, renkli veya hatta farklı yazı tipleriyle stilize etmek için basit işaretleme etiketlerini kullanmanıza olanak tanır.

Oyuncuların bu deneyime çeşitli cihazlardan erişeceklerini, PC, konsol ve mobil cihazlar dahil, bildiğimiz için, ekrana tıklayıp dokunarak etkileşime geçmeleri gerekti. Ekranda anlatıyı dağıtacak birçok buton istemiyorduk, bu yüzden içeriği kapatmak ve oyuna geri dönmek için oyuncuların efsane örtüsüne tıklayabilecekleri veya dokunabilecekleri kadar büyük görünmeyen bir geri düğmesi yaptık.

Düşünce baloncukları
Oyuncunun karakterinin, oyuncuya fikirler iletmesi için bir yolu bulmamız gerekiyordu, bu da ek anlatı tadı vermek veya ne yapmaları gerektiğini pekiştirmek anlamına geliyordu. Çözümümüz, oyuncu seçtiğinde efsane dışındaki nesnelerin yakınında oyuncunun karakterinin metin tepkilerini yani düşünce baloncuklarını görüntülemekti. Bu anlatı sadece nesneye tıklayan veya dokunan oyuncuya görünür ve ton her zaman birinci şahıs ve gözlemleyici bir şekilde olur.

Düşünce baloncukları oluşturmak için, efsane dışındaki nesnelere bir BillboardGui ve onun bir çocuğu olan TextLabel ekledik. Bu, nesne yakınında diyalog göstermemizi sağladı ve metin ekranın tamamını kaplamadı. Efsane oluşturma sürecimizde olduğu gibi, metni stillendirmek ve mevcut düşünceleri kesen farklı bir varlık gibi görsel efektler eklemek için TextLabel.RichText özelliğini kullandık. Aşağıdaki örnekte, görselin altındaki biçimlendirilmiş HTML kullanılmıştır.
"Bu nedir…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....açlık….boşluk….çek…</i></font></font></stroke>

TextLabels yerine görseller kullanarak, metni Roblox tarafından okunabilir kıldık ve bu içeriği otomatik olarak yerelleştirme imkânı sağladık. Böylece, hiçbir şey yapmadan daha fazla oyuncuya erişilebilir hale geldi! Bu süreçle ilgili daha fazla bilgi için otomatik çevirilere bakın.
Duyurular
Oyuncunun karakterinin dünyaya tepkisi olmasını istediğimiz gibi, dünyanın kendisinin de oyuncunun varlığına tepki vermesini istedik. Bu hedefe ulaşmak için, her oyuncunun ekranında aynı anda görüntülenen duyuruları veya üçüncü şahıs diyaloglarını ekledik. Efsaneye benzer şekilde, duyuruları ekranda UI konteynerimiz olarak bir ScreenGui kullanarak ve bir çocuk TextLabel ekleyerek oluşturduk. Ayrıca diyalog rengini, yazı tipini ve boyutunu değiştirmek için TextLabel.RichText özelliğini kullandık, böylece evdeki oyunculara farklı "varlıkların" konuştuğunu iletebiliyoruz.



TextLabel.RichText özelliğini kullanarak ve bazı HTML komutları sağlayarak, cümle ortasında değişiklik yapma imkânı elde ettik! Örneğin, aşağıdaki zengin metin işaretleme, oyuncu karakterinin tepkisini bozulmuş varlığın düşünceleriyle kesmemizi sağladı:
Bu nedir…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....açlık….boşluk….çek…</i></font></font></stroke>

Bu tür duyurularımızdan biri, oyuncuların içine girdiği görünmez parça hacimlerinde veya belirli hedefleri tamamlayarak tetiklendi. Birçok bireysel ScreenGuis kullanmaktan kaçınmak için, bizim için oluşturulan ayrı bir betik, seçtiğimiz metni ekleyerek, adını verdiğimiz StoryNote adlı tek bir nesneye metni ekleme olanağı sundu. Bu nesne, bir çocuk TextLabel içeren tek bir ScreenGui idi. Betik kullanarak, istemciye iletmek istediğimiz ifadeleri tek bir TextLabel'a doğrudan eklememizi sağladı, böylece oyuncuya ne iletmek istediğimizi çözmeye başladıkça değişiklik yapmamız kolaylaştı!


