Cara mencegah "pandangan bawah air" dalam game

19

Dalam banyak gim di mana pemain bisa masuk ke dalam air, sepertinya ketika Anda melihat di mana bagian atas layar ada di udara, dan bagian bawah layar ada di dalam air, hampir seperti air tidak ada dan pemain ... terbang perlahan dengan suara air?

masukkan deskripsi gambar di sini

Apakah ada cara logis untuk menyelesaikan ini? Algoritma? Sepertinya tidak ada solusi yang muncul karena banyak game masih memiliki ini. Saya tidak ingin membuat kesalahan yang sama.

LiquidFeline
sumber
4
Game modern memiliki shader yang berbeda untuk di atas dan di bawah air. Jelas tidak terlihat seperti ini saat ini. Saya percaya Crysis memiliki rendering bawah air yang cukup canggih: youtube.com/watch?v=yXxEZJdFjeM
MartinTeeVarga
9
@ sm4: Saya kira game ini memiliki fitur ini juga. Tetapi masalahnya adalah bahwa kamera tidak berada di bawah air, itu di atas dan Anda dapat melihat di bawah karena hampir terpotong.
Kikaimaru
@ Kikaimaru begitu, saya tidak sepenuhnya mengerti pertanyaan itu. Namun Crysis tampaknya tidak memiliki masalah ini.
MartinTeeVarga
2
Aww, tapi bagaimana lagi aku bisa melihat apakah ada mutiara di dasar sungai? (Elder Scrolls Oblivion): D
Singular1ty
1
Mungkin Anda dapat memeriksa apakah karakter "kepala" berada di bawah air alih-alih kamera dan jangan biarkan kamera masuk ke dalam air kecuali jika karakter tersebut juga di bawah air
Luke B.

Jawaban:

16

Bagaimana kalau tidak mengizinkan situasi ini?

Saya tidak tahu bagaimana Anda membuat game Anda, tetapi jika Anda mendeteksi bahwa sebagian pemandangan di bawah air, Anda dapat memaksa kamera berada di atas air, dan hanya ketika seluruh tampilan berada di bawah air, Anda dapat beralih ke tampilan bawah air.

Tergantung pada bagaimana Anda melakukannya, ini bisa berarti bahwa ada penundaan tambahan dari saat Anda mulai menyelam dan ketika Anda benar-benar melihat pemandangan dari bawah permukaan. Ini sebenarnya mungkin hal yang baik dari perspektif UX, jadi silakan bereksperimen.

Pada catatan yang terpisah namun terkait, saya bertanya-tanya mengapa sebagian besar pemandangan bawah laut menjadi sangat jernih ... Jika Anda pernah menempatkan kepala Anda di bawah air, Anda akan melihat bahwa mata Anda tidak dirancang untuk penglihatan bawah air, dan karenanya semuanya tampak buram. Anda harus mengenakan kacamata untuk benar-benar melihat dengan jelas di bawah air.

Dan selain itu, benda-benda terlihat (dan mendengar) sangat berbeda di bawah air daripada di atas air. Air menyerap cahaya jauh lebih cepat daripada udara, sehingga semakin jauh cahaya bergerak, semakin sedikit cahaya yang sampai di mata Anda. Ini berarti bahwa semakin dalam Anda pergi, hal-hal yang lebih biru terlihat (lampu merah memiliki lebih sedikit energi, dan karena itu diserap lebih mudah daripada cahaya biru). Faktanya, hanya 12 meter di bawah air, darah terlihat hitam, bukan merah.

Saya belum pernah melihat game non-khusus yang bahkan mencoba untuk mendapatkan lingkungan bawah laut dengan benar ...

Piyama Panda
sumber
5
Banyak game mengubah cahaya dan suara di bawah air. Lihat video Crysis yang ditautkan dalam komentar di atas. Saya yakin itu tidak sepenuhnya realistis, tetapi (a) kebanyakan orang tidak memiliki pengalaman langsung dengan lingkungan bawah laut yang dalam dan (b) dalam game yang membuat Anda mengalami underwater, Anda mungkin perlu dapat melihat, memainkan permainan .
Nathan Reed
Saya percaya sebagian besar permainan tidak melakukan ini hanya karena tidak ada yang ingin pergi di bawah air jika mereka tidak melihat apa pun di sana. Atau mungkin semua karakter utama permainan dilatih oleh orang-orang Moken! news.nationalgeographic.com/news/2004/05/...
MartinTeeVarga
1
Dalam pengembangan game, solusi "dokter, sakit ketika saya melakukan ini" biasanya adalah yang optimal.
Trevor Powell
1
@TrevorPowell: Saya membaca komentar Anda belasan kali dan saya masih tidak mengerti maksud Anda. Mungkin Anda ingin menguraikan?
Panda Pajama
2
Permintaan maaf! Ini referensi ke lelucon lama vaudeville . Lelucon itu seperti ini: Pasien: "Dokter, sakit ketika saya melakukan ini!". Dokter: "Jangan lakukan itu!" Saya hanya bermaksud mengatakan bahwa dalam permainan, sering kali cara paling sederhana untuk menyelesaikan masalah adalah menghentikan permainan agar tidak memasuki kondisi di mana masalah itu harus diselesaikan. (mis: cara termudah untuk memperbaiki "gambar terlihat salah ketika bidang klip dekat memotong permukaan air" adalah "jangan biarkan pesawat klip dekat memotong permukaan air")
Trevor Powell
7

Masalah yang Anda maksudkan berkaitan dengan volume tampilan kamera yang memotong bidang air; "efek bawah air" tipikal dilakukan melalui efek pasca-layar penuh, dan tidak akan terlihat benar jika tampilan terpotong seperti ini (hanya akan menjadi masalah yang berlawanan).

Sekalipun Anda benar-benar kesulitan mendeteksi kliping kliping (berpotensi sulit) dan gunting atau klip efek bawah air layar penuh yang jika tidak hanya diterapkan pada adegan bawah air (yang merupakan solusi potensial yang dapat Anda jelajahi), Anda masih akan memiliki masalah pesawat air yang sebenarnya itu sendiri. Transisi masih akan ada artefak visual yang menggelegar. Anda bisa mendeteksi pesawat itu dan mengaburkannya dengan berat; ini mungkin yang terdekat dengan analogi dunia nyata dari apa yang dilihat melalui lensa kamera yang terendam sebagian.

Sebagai alternatif, cegah agar hal ini tidak terjadi sepenuhnya: jangan biarkan kamera pergi di bawah bidang air jika pemain "di atas" air atau di atas bidang air ketika pemain "di bawah" air. Ini hanya akan benar-benar berfungsi jika Anda memiliki mode operasi pemutar diskrit untuk di atas / di bawah air, dan berfungsi dengan baik jika ada tombol fisik atau tindakan lain yang jelas dan jelas yang dapat dilakukan pemain untuk beralih antara "berenang di permukaan" dan "berenang di bawah permukaan."

Alih-alih penekanan tombol eksplisit untuk menyelam, Anda bisa mengartikan gerak maju sementara kamera cukup diturunkan untuk berarti "menyelam." Anda kemudian dapat menggunakan efek grafis (percikan atau apa pun) untuk menyembunyikan transisi kamera melalui bidang air, yang biasanya tidak dapat dilintasi.

Kami menggunakan teknik seperti ini di Guild Wars 2.


sumber
3

Game biasanya menyalakan beberapa jenis efek, terutama kabut biru, ketika kamera di bawah air. Untuk menangani situasi di mana bidang dekat klip melalui permukaan air, Anda dapat mengaktifkan fog shader ketika kamera mendekati permukaan air, tetapi kemudian menambahkan beberapa kode ke shader pixel yang menghitung titik pada bidang dekat sesuai dengan pixel itu, dan mengaktifkan kabut hanya jika titik itu di bawah permukaan air.

Jika kabut dilakukan sebagai postprocess, dengan memberikan pass layar penuh, ini sangat mudah - Anda hanya perlu menghitung posisi ruang-dunia dari setiap simpul layar penuh quad atau segitiga pada pesawat dekat (dengan inversi lihat / proyeksi matriks), dan sisipkan nilai ini ke pixel shader; maka Anda dapat memeriksa komponen vertikal dan melihat apakah itu di atas atau di bawah bidang air.

Untuk poin bonus, Anda dapat menggunakan teknik yang sama untuk menambahkan tekstur setebal beberapa piksel untuk mewakili meniskus di permukaan air, sehingga tidak terlalu mirip garis tajam.

Nathan Reed
sumber
(memiliki masalah jika permukaan air adalah jaring, tetapi masih merupakan jawaban umum yang bagus)
Will
0

Saya punya dua metode; Satu menggunakan shader, yang lain bisa menggunakan GUI. Keduanya akan memulai yang sama:

"Sederhana" - If, Object(Camera) is in 3d Space(Water bounding box/whatever you choose) trigger a shader/GUI.

Shader akan memberi lebih banyak realisme, Anda bisa menerapkan distorsi Like This

Fog Like Com. Boy menyatakan, bisa diterapkan melalui GUI. Buat foto, dengan transparansi sebagian dan gunakan sebagai GUI pada seluruh tampilan kamera. Untuk foto yang Anda berikan, saya akan mencoba warna cokelat.

Ini telah digunakan dalam game horor bernama Drea D Out. Jika pemain mendekati hantu, layar akan berubah berkabut. Meskipun tidak digunakan di bawah air itu memberi efek yang sama :)

Anda selalu dapat memilih kedua metode, atau membuat shader yang akan mengubah warna.

http://media.indiedb.com/images/games/1/21/20833/Demo_update_SS01.png

Taken from : http://sahdan-share.blogspot.com/2013/04/dreadout.html
Mikolaj Marcisz
sumber