Bagaimana cara menghasilkan medan seperti Bumi Hangus?


12

Saya seorang pengembang web dan saya ingin mulai menulis game sendiri.

Untuk keakraban, saya telah memilih JavaScript dan canvaselemen untuk saat ini.

Saya ingin menghasilkan beberapa medan seperti itu di Bumi Hangus.

Pembumihangusan

Upaya pertama saya membuat saya sadar bahwa saya tidak bisa hanya mengacak ynilainya; harus ada kewarasan di puncak dan palung.

Saya telah sedikit mencari Google, tetapi saya tidak dapat menemukan sesuatu yang cukup sederhana untuk saya atau saya menggunakan kata kunci yang salah.

Bisakah Anda tunjukkan algoritma seperti apa yang akan saya gunakan untuk menghasilkan sesuatu dalam contoh, mengingat bahwa saya benar-benar baru dalam pemrograman game (sejak membuat Breakout pada tahun 2003 dengan Visual Basic)?

Jawaban:


18

Algoritma perpindahan titik tengah persis seperti yang Anda inginkan.

Tautan itu dapat menghasilkan sesuatu seperti ini:

masukkan deskripsi gambar di sini

Atau suka gambar Anda, tergantung pada parameter apa yang Anda gunakan. Ada sumber C yang tersedia di sini .


Terima kasih untuk ini, saya masih tidak yakin bagaimana menerapkannya dalam JavaScript tetapi mudah-mudahan itu akan menjadi lebih jelas bagi saya ketika saya membaca artikel itu.
alex

Ada sumber C yang baru saja saya edit. Seharusnya tidak terlalu banyak masalah untuk diterapkan :)
The Communist Duck

@ Bebek Komunis Terima kasih, saya sudah mencoba-coba C sebelumnya.
alex


@alex, Anda harus menggunakan semacam rekursi dalam implementasi Anda. Saat ini Anda hanya memiliki satu baris dengan komponen y acak, di mana variasi acak berkurang ke kanan.
Juha Syrjälä

5

Bagaimana dengan menggunakan algoritma perpindahan titik tengah yang mungkin diikuti oleh sedikit pemulusan, misalnya penyaringan low pass untuk menghilangkan paku yang terlalu tajam? Pendekatan ini tidak sama dengan di Bumi Hangus, tetapi harus memberikan hasil yang serupa.

Saya percaya bahwa Bumi Hangus mensimulasikan gravitasi dan tanah yang jatuh. Misalnya Anda tidak dapat memiliki bukit yang terlalu curam karena jika tidak tanah akan jatuh dan membuat lereng yang tidak terlalu curam.


1

Ada pendekatan lain yang bisa Anda gunakan. Anda dapat menambahkan bersama sejumlah gelombang sinus yang dihasilkan secara acak dan kemudian skala hasilnya agar sesuai di layar Anda. Ini sangat mudah dalam prakteknya dan menghasilkan beberapa hasil yang bagus, meskipun lebih halus dan mungkin lebih tiruan dari screenshot contoh Anda.

Anda dapat melihat sumbernya di javascript di sini. Sangat mudah untuk mengutak-atik beberapa parameter untuk mendapatkan berbagai jenis medan.

https://github.com/fmstephe/Tankwars

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.