Seperti demo Beyond the Dark, salah satu keputusan awal kami adalah untuk memiliki sebanyak mungkin gameplay dan cerita yang diceritakan secara diegetik di dalam dunia itu sendiri. Ini bisa menjadi proses yang sulit ketika Anda ingin menyeimbangkan antara mengkomunikasikan kemajuan kepada pemain melalui antarmuka pengguna sambil juga membuat mereka merasa seolah-olah mereka benar-benar berada di dalam dunia yang telah Anda bangun. Untuk memenuhi tujuan ini untuk permainan kami, kami membagi cara kami mengkomunikasikan informasi kepada pemain menjadi empat teknik:
- Isyarat visual - Objek, gambar, atau pengaturan aset yang secara pasif memperkuat cerita atau memberikan petunjuk kepada pemain ketika itu masuk akal untuk dunia.
- Lore - Ketika seorang pemain mengklik/mengusap item tertentu di rumah, informasi cerita penting ditampilkan di seluruh layar. Narasi ini hanya terlihat oleh pemain yang mengklik/mengusap objek tersebut. Nada selalu bersifat informasional dalam nada dan frasa.
- Awan pikiran - Ketika seorang pemain mengklik/mengusap item tertentu di rumah, dialog teks "reaksi" ditampilkan dekat objek. Narasi ini hanya terlihat oleh pemain yang mengklik/mengusap objek tersebut. Nada selalu dalam sudut pandang orang pertama dan observasional.
- Pengumuman - Ketika seorang pemain mengklik/mengusap item yang rusak di rumah, dialog orang ketiga ditampilkan di layar setiap pemain sekaligus. Narasi ini kadang-kadang mengalihkan semua pemain ke keadaan rusak dari ruangan yang mereka masuki.
Dalam bagian ini, kami akan menunjukkan bagaimana kami menggunakan teknik-teknik ini dan fitur-fitur spesifik untuk membenamkan pemain ke dalam narasi kami sambil tetap mendorong eksplorasi, mengkomunikasikan kemajuan, dan menjaga gameplay baik intim bagi pemain individu maupun adil dalam permainan multipemain.



Isyarat visual
Isyarat visual adalah alat penting untuk baik memperkuat narasi dan memberi tahu pemain apa yang perlu mereka ketahui tentang tujuan mereka tanpa menggunakan kata-kata. Dengan menggunakan pengaturan aset, seperti papan tulis, patung, dan wallpaper, kami dapat secara pasif memberikan kedalaman informasi tentang karakter utama Duvall Drive, serta panduan tentang cara menyelesaikan teka-teki tanpa harus menyertakan elemen UI yang mengganggu. Kami memulai proses ini dengan terlebih dahulu mencari tahu apa yang ingin kami komunikasikan kepada pemain, lalu bagaimana itu akan masuk akal untuk dikomunikasikan dalam dunia permainan kami. Misalnya, kami ingin pemain memahami seberapa terobsesinya kakek dalam misinya untuk menentang kematian, jadi kami meninggalkan kamarnya dalam keadaan berantakan dengan banyak penelitiannya dan beberapa dinding dengan pemikiran yang dicorat-coret.


Aturan pertama kami adalah bahwa jika kami ingin menggunakan isyarat visual untuk mengajarkan pemain sesuatu, itu harus memiliki alasan untuk ada bahkan jika pemain tidak hadir. Jika kami menempatkan tanda raksasa dengan instruksi jelas tentang apa yang harus dilakukan untuk sebuah teka-teki, ini akan tampak tidak pada tempatnya di dalam rumah. Namun, jika kami menetapkan seorang kakek yang terobsesi dengan menggambar di segala sesuatu, termasuk dinding kamarnya, jauh lebih masuk akal untuk memiliki papan tulis dengan rencananya yang dicorat-coret untuk diikuti pemain.

Aturan kedua kami adalah bahwa kami tidak selalu perlu memberi tahu pemain apa yang harus dilakukan atau bagaimana menyelesaikan teka-teki karena mereka cerdas terhadap lingkungan mereka. Misalnya, kadang-kadang kabel listrik yang jatuh di kolam air sudah cukup sebagai isyarat visual untuk mengkomunikasikan bahwa pemain berada dalam bahaya tersengat listrik jika mereka terus bergerak ke arah itu.

Lore
Selain menggunakan isyarat visual untuk secara pasif membimbing pemain, kami juga memilih untuk menampilkan informasi cerita penting tentang keluarga di seluruh layar sebagai pendahulu untuk memulai teka-teki ruangan setiap kali seorang pemain mengklik atau mengusap item tertentu di rumah. Untuk membimbing pemain ke objek yang perlu mereka pilih agar lore ditampilkan, kami menggunakan efek visual sorotan baru untuk membuat objek tertentu menonjol dari sekitarnya. Efek ini memungkinkan Anda untuk menggaris bawahi dan/atau menutupi objek dengan warna tertentu yang sesuai dengan bentuk objek itu sendiri, dan memilih apakah objek lain dapat menyembunyikan sorotan jika mereka lebih dekat ke kamera.




Awalnya kami menggunakan Highlight untuk setiap objek yang dapat berinteraksi dengan pemain, tetapi kebisingan visualnya sangat mengganggu dan pemain tidak akan jelas tahu apa yang harus diinteraksikan untuk membaca lore. Kami memutuskan untuk hanya menggunakannya untuk menyoroti item yang rusak atau berbahaya, dan umpan balik visual ini memungkinkan pemain untuk dengan mudah mendorong cerita ke depan.

Setelah pemain mengklik objek dengan lore, kami perlu cara untuk menampilkan informasi di atas layar. Kami memutuskan untuk membuat overlay dengan menggunakan ScreenGui sebagai wadah UI di layar kami dengan anak Frame untuk mengontrol ukuran dan penyesuaian ulang dari anak-anak TextLabels dan ImageLabels. Kami mengatur posisi dan skala dari properti TextLabels dan ImageLabels sehingga mereka cocok secara visual dan akan skala untuk perangkat berbeda yang digunakan pemain untuk mengakses permainan.

TextLabels dan ImageLabels mempengaruhi elemen visual dari teks dan gambar mereka masing-masing, termasuk warna, transparansi, ukuran, dan pengaturan mereka. Untuk TextLabels secara khusus, Anda dapat menyesuaikan properti TextLabel.TextScaled dan TextLabel.RichText untuk mengontrol tata letak dan gaya visual teks. TextLabel.TextScaled memungkinkan Anda untuk menskalakan teks untuk mengisi seluruh ruang elemen UI induk, dan TextLabel.RichText memungkinkan Anda untuk menggunakan tag markup sederhana untuk menata bagian teks dalam huruf tebal, miring, warna, atau bahkan font yang berbeda.

Kami tahu bahwa pemain akan mengakses permainan ini dari berbagai perangkat, termasuk PC, konsol, dan perangkat seluler, dan mereka perlu dapat mengklik atau mengusap layar untuk berinteraksi dengan permainan. Kami tidak ingin banyak tombol di layar yang mengalihkan perhatian dari narasi, jadi kami membuat tombol kembali yang tidak terlihat sebesar seluruh layar sehingga pemain dapat mengklik atau mengusap di mana saja pada overlay lore untuk menutup konten dan kembali ke gameplay.

Awan pikiran
Kami membutuhkan cara bagi karakter pemain untuk mengkomunikasikan ide kepada pemain, seperti memberikan tambahan rasa narasi atau memperkuat apa yang perlu mereka lakukan. Solusi kami adalah menampilkan awan pikiran, atau reaksi teks dari karakter pemain, dekat objek non-lore setiap kali pemain memilihnya. Narasi ini hanya ditampilkan kepada pemain yang mengklik atau mengusap objek tersebut, dan nada selalu dalam sudut pandang orang pertama dan observasional.

Untuk membuat awan pikiran, kami mengaitkan BillboardGui dengan anak TextLabel ke objek non-lore. Ini memungkinkan kami untuk menampilkan dialog di ruang 3D dekat objek tanpa teks mengambil seluruh layar. Mirip dengan proses kami dalam membuat lore, kami menggunakan properti TextLabel.RichText untuk menata teks dan menambahkan efek visual seperti makhluk lain yang mengganggu pikiran pemain sendiri. Berikut adalah contoh RichText HTML yang digunakan untuk membuat gambar di bawah ini.
"Apa ini…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....lapar….kekosongan….tarik…</i></font></font></stroke>

Dengan menggunakan TextLabels alih-alih gambar, kami menjaga teks tetap dapat dibaca oleh Roblox, dan kami dapat secara otomatis menerjemahkan konten ini dan membuatnya dapat diakses oleh lebih banyak pemain tanpa harus melakukan apa pun! Untuk informasi lebih lanjut tentang proses ini, lihat terjemahan otomatis.
Pengumuman
Sementara kami ingin karakter pemain memiliki reaksi terhadap dunia, kami juga ingin dunia itu sendiri bereaksi terhadap keberadaan mereka. Untuk memenuhi tujuan ini, kami menyertakan pengumuman, atau dialog orang ketiga, yang ditampilkan di layar setiap pemain sekaligus. Mirip dengan lore, kami membuat pengumuman dengan menggunakan ScreenGui sebagai wadah UI di layar kami dengan anak TextLabel. Kami juga menggunakan properti TextLabel.RichText untuk mengubah warna, font, dan ukuran dialog untuk membantu menyampaikan "entitas" yang berbeda berbicara kepada pemain di rumah.



Dengan menggunakan properti TextLabel.RichText dan memberikan beberapa perintah HTML di dalamnya untuk mendorong perubahan, kami juga diizinkan untuk membuat perubahan di tengah kalimat! Misalnya, markup teks kaya berikut memungkinkan kami untuk mengganggu reaksi karakter pemain oleh pikiran entitas yang rusak:
Apa ini…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....lapar….kekosongan….tarik…</i></font></font></stroke>

Kami memiliki beberapa jenis pengumuman ini, baik dipicu oleh volume bagian tak terlihat yang dilalui pemain, atau dengan menyelesaikan tujuan tertentu. Untuk menghindari puluhan ScreenGuis individu, kami menggunakan skrip terpisah dalam demo yang memungkinkan kami untuk memberikan teks yang kemudian akan ditambahkan ke satu objek yang kami sebut StoryNote di folder PlayerGui kami. Objek ini adalah satu ScreenGui dengan anak TextLabel. Dengan menggunakan skrip, kami dapat menyuntikkan frasa apa pun yang kami inginkan langsung ke dalam TextLabel tunggal, yang membuatnya jauh lebih mudah untuk melakukan perubahan saat kami mencari tahu bagaimana dan apa yang ingin kami komunikasikan kepada pemain!


