Sürükleyici hikaye

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Karanlığın Ötesinde demo gibi, en erken kararlarımızdan biri, oyun ve hikayenin dünyanın kendisi içinde düşündürülerek ölmesine mümkün olduğunca çok izin vermekti.Bu, oyuncuya kullanıcı arayüzü aracılığıyla iletişim ilerlemesini dengelemek istediğinizde zor bir süreç olabilir, ayrıca onları gerçekten inşa ettiğiniz dünyanın içindeymiş gibi hissettirirken.Deneyimimiz için bu hedeflere ulaşmak için, bilgileri oyunculara iletişim yolunu dört tekniğe indirdik:

  1. Görsel işaretler - Pasif olarak hikayeyi güçlendiren nesneler, görüntüler veya dünya için mantıklı olduğunda oyuncuya ipucu veren varlıklar
  2. Lore - Bir oyuncu evde belirli öğelere tıkladığında/dokunduğunda, önemli hikaye bilgileri tüm ekranda görüntülenir .Bu hikaye sadece nesneye tıklayan/dokunan oyuncuya görünür.Ton hep ton ve ifade açısından bilgilendirici olur.
  3. Düşünce balonları - Bir oyuncu evde belirli öğelere tıkladığında/dokunduğunda, bir metin diyaloğu "reaksiyonu" görüntülenir nesneye yakın .Bu hikaye sadece nesneye tıklayan/dokunan oyuncuya görünür.Ton daima ilk kişi ve gözlemci olur.
  4. Duyurular - Bir oyuncu evde bozuk bir öğeye tıkladığında/dokunduğunda, üçüncü kişi diyaloğu aynı anda her oyuncunun ekranında görüntülenir .Bu hikaye bazen tüm oyuncuları bulundukları odanın bozulmuş durumuna geçirir.

Bu bölümde, bu teknikleri ve özel özellikleri nasıl kullandığımızı göstererek oyuncuları hikayemize dahil ederek araştırmayı teşvik ediyor, ilerlemeyi iletiyor ve oyun oynayışını hem bireysel oyuncuya hem de çok oyunculu bir deneyimde adil bir şekilde tutuyoruz.

Karakterin iç düşüncelerinin ekran üzerinde duyurulması.
>

Belirli nesneleri seçtiğinizde görünen bir düşünce balonu veya nesneye özel diyalog.
>

Görsel işaretler

Görsel bir işaret, hem hikayeyi güçlendirmek hem de oyunculara hedeflerini bilmeleri gerekenler hakkında bilgi vermek için önemli bir araçtır kelime kullanmadan .Duvall Sürücüsü'nün ana karakterleri hakkında bilgi derinliği sağlayan bir malzeme düzeni (örneğin, tahta panolar, heykeller ve duvar kağıtları) kullanarak, istilacı UI öğeleri içermek zorunda olmadan bulmacaları nasıl bitireceğimize dair rehberlik verebildik.Bu süreci ilk önce oyuncuya iletmek istediğimiz şeyi bulmakla başlattık, ardından bunu deneyimimizin dünyasında nasıl ileteceğimizi bulmakla.Örneğin, oyuncuların büyükbabalarının ölüme meydan okuma görevinde ne kadar saplantılı olduğunu anlamasını istedik, bu yüzden odasını araştırmalarının çoğu ve karışık düşünceleriyle birkaç duvarla terk ettik.

Büyükbabanın odası boyunca yazılar, büyükbabanın zorunlu doğasını iletiyor.
Çok sayıda heykel ve referans fotoğraf, kızın bir sanatçı olduğunu gösterir.

İlk kuralımız, oyunculara bir şey öğretmek için görsel bir ipucu kullanmak istiyorsak, oyuncular mevcut olmasa bile var olmak için bir sebebe sahip olması gerektiğiydi.Bir bulmaca için ne yapılacağına dair net talimatlarla büyük bir işaret koyarsak, bunlar evin dışında görünecektir.Ancak, eğer her şeyin çizilmesiyle tüketilen bir büyükbaba kurduysak, oyuncunun takip etmesi gereken bir plan tahtasına sahip olmak çok daha inandırıcıdır.

İkinci kuralımız, oyunculara ne yapmaları veya bulmacaları nasıl çözeceklerini sürekli söylememiz gerekmediğiydi, çünkü onlar çevrelerine göz attılar.Örneğin, bazen bir su havuzundaki bir düşen güç hattı, oyuncuların bu yönde hareket etmeye devam ederlerse elektriklenme tehlikesiyle iletişim kurmak için görsel bir işaret yeterlidir.

Bilgi

Oyuncuları pasif olarak yönlendirmek için görsel ipuçları kullanmanın yanı sıra, oda bulmacısını başlatmak için aile hakkında önemli hikaye bilgilerini tüm ekranda göstermeyi de seçtik herhangi bir oyuncunun evdeki belirli öğelere tıkladığında veya dokunduğunda. Oyuncuları, bilginin görüntülenmesi için seçmeleri gereken nesnelere yönlendirmek için, yeni vurgu görsel efekti belirli nesneleri çevrelerinden ayırt etmek için kullandık.Bu etki, nesnenin kendi şekline uyan belirli bir renkle hatları çizmenizi ve/veya nesneleri seçmenizi sağlar ve diğer nesnelerin vurguyu gizleyip gizleyemeyeceğini seçin, eğer kameraya daha yakınsalarsa.

Başlangıçta, bir oyuncunun etkileşime girebileceği her nesne için Highlight kullandık, ancak görsel gürültü eziciydi ve oyuncular bilgiyi okumak için hangi ile etkileşime geçeceklerini açıkça bilmezlerdi.Sadece bozulmuş veya tehlikeli olan öğeleri vurgulamak için kullanmaya karar verdik ve bu görsel geri bildirim, oyuncuların hikayeyi kolayca ilerletmesine izin verdi.

Eğlenceli gerçek: Başlangıçta tıklayabileceğiniz her şey hakkında bilgi vardı! Bu yardımcı olmadı çünkü oyuncular hangi bilginin önemli olduğundan ve hangisinin sadece lezzet için olduğundan emin değildi.Sonunda bilgiyi çoğunlukla kaldırdık ve geri kalanını oyuncunun hayal gücüne bırakmak için görsel ipuçları kullandık.

Oyuncu lore ile nesneye tıkladıktan sonra, ekranın üzerinde bilgileri görüntülemenin bir yoluna ihtiyacımız vardı.Ekran arayüzümüzdeki çocukların boyutlandırma ve yeniden boyutlandırmasını kontrol etmek için bir çocuk ScreenGui ile bir Frame kullanarak bir üstbilgi oluşturmaya karar verdik TextLabels ve ImageLabels .TextLabels ve ImageLabels özelliklerinin konumlarını ve ölçeklerini ayarladık, böylece görsel olarak bir araya oturacak ve deneye erişen farklı cihaz oyuncuları için ölçeklenecek.

TextLabels ve ImageLabels görsel elemanlarının, renkleri, transparanlıkları, boyutları ve düzenleri dahil olmak üzere ilgili metin ve görüntülerin görsel öğelerini etkiler.Özellikle TextLabels için, metinin düzenini ve görsel stilini kontrol etmek için TextLabel.TextScaled ve TextLabel.RichText özelliklerini ayarlayabilirsiniz.TextLabel.TextScaled bütün ebeveyn UI öğesinin alanını doldurmak için metni ölçeklendirmenize izin verir ve TextLabel.RichText basit işaretleme etiketlerini kullanarak kalın, italik, renk veya hatta farklı yazı tiplerinde bölümleri biçimlendirmenize izin verir.

Oyuncuların PC, konsol ve mobil cihazlar dahil çeşitli cihazlardan bu deneyime erişeceğini ve deneyimle etkileşim kurmak için ekrana tıklayıp dokunmaları gerektiğini biliyorduk.Ekranda hikayeden uzaklaşmak için bir düzine düğme istemedik, bu yüzden oyuncuların içeriği kapatmak ve oynanışoynamaya geri dönmek için hikaye üzerindeki herhangi bir yere tıklayıp dokunmasını sağlayacak şekilde tüm ekranın boyutunda görünmez bir geri düğme yaptık.

Düşünce balonları

Oyuncunun karakterinin oyuncuya fikirleri iletmek için bir yola ihtiyacımız vardı, örneğin ek hikaye tadı vermek veya yapmak zorunda olduklarını güçlendirmek gibi.Çözümümüz, oyuncunun onları seçtiğinde herhangi bir bilgi dışı nesneye yakın düşünce balonlarını veya oyuncunun karakterinden çıkan metin tepkilerini göstermek oldu.Bu hikaye sadece nesneye tıklayan veya dokunan oyuncuya gösterilir ve ton daima ilk kişi ve gözlemci olur.

Dünyanın oyuncunun etkileşimlerine tepki vermesini sağlayan nispeten basit ancak güçlü bir sistem!

Düşünce balonları oluşturmak için, çocuk BillboardGui ile hiç bilinmeyen nesnelere bir TextLabel ebeveyn verdik.Bu, metnin tüm ekranı kaplamasına izin vermeden nesnenin yakınındaki 3B alanda diyaloğu görüntülememize izin verdi.Lore oluşturma sürecimize benzer şekilde, TextLabel.RichText özelliklerini kullanarak metni stilize ettik ve oyuncunun kendi düşüncelerini kesintiye uğratan başka bir öteki dünya varlığı gibi görsel efektler ekledik.Aşağıdaki, aşağıdaki görüntüyü oluşturmak için kullanılan Zengin Metin HTML'sinin bir örneğidir.

"What is…this…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....hunger….void….pull…</i></font></font></stroke>

Resimler yerine TextLabels kullanarak, Roblox tarafından okunabilir metin tutmayı sürdürdük ve bu içeriği otomatik olarak çevirip birçok oyuncuya erişilebilir hale getirebildik! Bu süreç hakkında daha fazla bilgi için otomatik çeviriler bakın.

Duyurular

Oyuncunun karakterinin dünyaya tepki vermesini istiyorken, dünyanın kendisinin de varlıklarına tepki vermesini istedik.Bu hedefe ulaşmak için, her oyuncunun ekranında aynı anda görünen duyuruları veya üçüncü şahıs diyalogları dahil ettik.Lore'ya benzer şekilde, bir çocuk ScreenGui ile ekran arayüzümüzün bir parçası olarak kullanan bir TextLabel kullanarak duyurular oluşturduk.Ayrıca diyalogun rengini, yazı tipini ve boyutunu değiştirmek için TextLabel.RichText özelliğini kullandık, böylece evdeki oyuncularla konuşan farklı "entiteler"i iletmek için.

Sade beyaz metinle duyurular, bir alana genel olan oyuncunun karakter tepkisiydi, hikaye tekniği gibi bir nesne değil.

Mor renkli duyurular, kusurlu bir varlıktan gelen tepkiydi.
>

Sarı metinle duyurulan duyurular, restore edilmiş bir varlıktan gelen tepkiydi.

TextLabel.RichText özelliğini kullanarak ve değişiklikleri yönlendirmek için bazı HTML komutları sağlayarak, orta cümle değişikliği yapmaya izin verdik! Örneğin, aşağıdaki zengin metin işaretlemesi, oyuncu karakterinin tepkisini kirli varlığın düşünceleriyle kesmeye izin verdi:

What is…this…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....hunger….void….pull…</i></font></font></stroke>

Bu tür birçok duyuru vardı, oyuncuların yürüdüğü görünmez parça hacimleri tarafından tetiklendi veya belirli hedefleri tamamladı.Düzinelerce bireysel 'den kaçınmak için, yazılımın daha sonra ekleyeceği tek bir nesneye adını verdik StoryNote klasörümüzde. demo'da ayrı bir senaryo kullandık.Bu nesne tek bir ScreenGui çocuklu bir çocuk TextLabel idi.Kodlamayı kullanarak, istediğimiz herhangi bir cümleyi doğrudan tek TextLabel 'a enjekte edebiliriz, bu da oyuncuya nasıl ve neyi iletmek istediğimizi anladığımız gibi değişiklik yapmayı çok daha kolay hale getirdi!

HikayeNotu, onu senaryo aracılığıyla tetikleyen herhangi bir durum için çağırdığımız bir nesneydi.Aynı senaryolar her bir etkinlik için istediğimiz metin ve biçimlendirmeyi sağladı.
Bu nesneyi çağıran ve metni tanımlayan bir senaryo örneği, her olay için.
TextLabel aslında boştu ve gerektiğinde kullandığımız kodlar sayesinde Zengin Metin aynı nesneye enjekte ettik.