Seperti demo Beyond the Dark, salah satu keputusan awal kami adalah menghadirkan sebanyak mungkin gameplay dan cerita yang diceritakan secara diegetik dalam dunia itu sendiri. Ini bisa menjadi proses yang sulit ketika Anda ingin menyeimbangkan baik mengomunikasikan kemajuan kepada pemain melalui antarmuka pengguna sambil juga membuat mereka merasa seolah-olah mereka benar-benar berada dalam dunia yang telah Anda bangun. Untuk memenuhi tujuan ini dalam pengalaman kami, kami membagi cara kami mengomunikasikan informasi kepada pemain menjadi empat teknik:
- Isyarat visual - Objek, gambar, atau penataan aset yang secara pasif memperkuat cerita atau memberikan petunjuk kepada pemain ketika masuk akal untuk dunia tersebut.
- Lore - Ketika seorang pemain mengklik/menggoyangkan pada item tertentu di rumah, informasi cerita penting ditampilkan di seluruh layar. Narasi ini hanya terlihat oleh pemain yang mengklik/menggoyangkan objek tersebut. Nada selalu bersifat informasional dalam nada dan frasa.
- Gelembung pikiran - Ketika seorang pemain mengklik/menggoyangkan pada item tertentu di rumah, dialog teks "reaksi" ditampilkan dekat objek. Narasi ini hanya terlihat oleh pemain yang mengklik/menggoyangkan objek tersebut. Nada selalu menggunakan sudut pandang orang pertama dan observasional.
- Pengumuman - Ketika seorang pemain mengklik/menggoyangkan pada item yang rusak di rumah, dialog pihak ketiga ditampilkan di layar setiap pemain sekaligus. Narasi ini kadang-kadang membawa semua pemain ke keadaan ruangan yang rusak yang mereka masuki.
Dalam bagian ini, kami akan menunjukkan bagaimana kami menggunakan teknik-teknik ini dan fitur spesifik untuk membawa pemain ke dalam narasi kami sambil tetap mendorong eksplorasi, mengomunikasikan kemajuan, dan menjaga gameplay tetap intim bagi pemain individu serta adil dalam pengalaman 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 kata-kata. Menggunakan penataan 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 invasif. Kami memulai proses ini dengan terlebih dahulu menentukan apa yang ingin kami komunikasikan kepada pemain, lalu bagaimana cara terbaik untuk mengomunikasikannya dalam dunia pengalaman kami. Misalnya, kami ingin pemain memahami betapa terobsesi kakek dalam misinya untuk menentang kematian, jadi kami meninggalkan kamarnya dalam keadaan berantakan dengan banyak penelitiannya dan beberapa dinding yang dipenuhi dengan pikirannya yang disuratkan.


Aturan pertama kami adalah jika kami ingin menggunakan isyarat visual untuk mengajarkan pemain sesuatu, itu harus memiliki alasan untuk ada bahkan jika pemain tidak hadir. Jika kami meletakkan tanda besar dengan instruksi jelas tentang apa yang harus dilakukan untuk teka-teki, maka ini akan terasa tidak pada tempatnya di dalam rumah. Namun, jika kami menetapkan seorang kakek yang terobsesi menggambar di segala sesuatu, termasuk dinding kamarnya, jauh lebih dapat dipercaya untuk memiliki papan tulis dengan rencananya yang ditulis secara sembarangan 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 peka terhadap lingkungan mereka. Misalnya, terkadang sebuah saluran listrik yang jatuh di genangan air sudah cukup sebagai isyarat visual untuk mengomunikasikan bahwa pemain berada dalam bahaya tersetrum jika mereka terus bergerak ke arah itu.

Lore
Selain menggunakan isyarat visual untuk secara pasif memandu pemain, kami juga memilih untuk menampilkan informasi cerita penting tentang keluarga di seluruh layar sebagai pengantar untuk memulai teka-teki ruangan setiap kali seorang pemain mengklik atau menggoyangkan pada item tertentu di rumah. Untuk membimbing pemain ke objek yang perlu mereka pilih agar lore bisa ditampilkan, kami menggunakan efek visual sorotan baru untuk membuat objek tertentu menonjol dari lingkungan sekitarnya. Efek ini memungkinkan Anda untuk menyoroti 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 berlebihan dan pemain tidak akan tahu dengan jelas apa yang harus diinteraksikan untuk membaca lore tersebut. Kami memutuskan untuk hanya menggunakannya untuk menyoroti item yang baik rusak atau berbahaya, dan umpan balik visual ini memungkinkan pemain untuk dengan mudah memajukan cerita.

Setelah pemain mengklik objek dengan lore, kami membutuhkan 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 penskalaan anak-anak TextLabels dan ImageLabels. Kami mengatur posisi dan skala dari properti TextLabels dan ImageLabels sehingga mereka cocok secara visual dan bisa diskala untuk perangkat yang berbeda yang digunakan pemain untuk mengakses pengalaman.

TextLabels dan ImageLabels mempengaruhi elemen visual dari teks dan gambar masing-masing, termasuk warna, transparansi, ukuran, dan penataan. Untuk TextLabels secara spesifik, 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 gaya bagian teks menjadi tebal, miring, warna, atau bahkan font yang berbeda.

Kami tahu bahwa pemain akan mengakses pengalaman ini dari berbagai perangkat, termasuk PC, konsol, dan perangkat seluler, dan mereka harus dapat mengklik atau menggoyang layar untuk berinteraksi dengan pengalaman. 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 menggoyang di mana saja di overlay lore untuk menutup konten dan kembali ke gameplay.

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

Untuk membuat gelembung 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. Serupa dengan proses kami dalam membuat lore, kami menggunakan properti TextLabel.RichText untuk gaya teks dan menambahkan efek visual seperti makhluk dari dunia lain yang mengganggu pikiran pemain sendiri. Berikut adalah contoh HTML RichText yang digunakan untuk membuat gambar berikut.
"Apa ini…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 daripada gambar, kami menjaga teks tetap terbaca oleh Roblox, dan kami dapat secara otomatis menerjemahkan konten ini dan membuatnya dapat diakses oleh lebih banyak pemain tanpa harus melakukan hal apapun! Untuk informasi lebih lanjut tentang proses ini, lihat terjemahan otomatis.
Pengumuman
Meskipun kami ingin karakter pemain memiliki reaksi terhadap dunia, kami juga ingin dunia itu sendiri bereaksi terhadap kehadiran mereka. Untuk memenuhi tujuan ini, kami menyertakan pengumuman, atau dialog pihak ketiga, yang ditampilkan di layar setiap pemain sekaligus. Serupa 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 memicu perubahan, kami juga diperbolehkan untuk melakukan perubahan di tengah kalimat! Misalnya, markup teks kaya berikut memungkinkan kami untuk menginterupsi reaksi karakter pemain dengan pikiran entitas yang rusak:
Apa ini…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 dilewati 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 beri nama StoryNote di folder PlayerGui kami. Objek ini adalah satu ScreenGui dengan anak TextLabel. Dengan menggunakan skrip, kami bisa menyuntikkan frasa apa pun yang kami inginkan langsung ke dalam TextLabel yang tunggal, yang membuatnya jauh lebih mudah untuk melakukan perubahan saat kami mencari tahu bagaimana dan apa yang ingin kami komunikasikan kepada pemain!


