Prosedürel olarak üretilen arazide yağışlar + nehrin oluşumu için algoritmalar


52

Son zamanlarda, usule uygun olarak arazi ile yapılabilecekler karşısında büyülenmeye başladım ve dünya kurma ile biraz denemeye başladım. Dünyaları Cüce Kalesi gibi bir şey haline getirerek çeşitli haritaların bir araya getirilmesinden oluşan biyomları yapabilmek istiyorum.

Yani ilk adım yapıldı. Elmas-kare algoritmasını kullanarak bazı güzel hitaghtmaps'ler oluşturdum. Bir sonraki adım, bazı su özellikleri eklemek ve onları gerçekçi bir şekilde yağışla oluşturmak istiyorum. Haritanın en yüksek noktalarından başlamak ve en düşük komşu noktaya inmek, havuz seviyesine inmek ve deniz seviyesine inerken aşındırmak gibi birkaç farklı yaklaşım okudum.

Bununla ilgili belgelendirilmiş algoritmalar var mı veya daha fazla kelepçeli mi?

Herhangi bir tavsiye / düşünce isterim.


Bu makalede açıklanan algoritmanın bit ve parçalarını uyguladım .
kaosTeknisyeni

Yanıtlar:



35

Bu tür bir şeyi deneyimlediğimde (1990'ların sonlarında), su akışı hakkında bilgi edinmek için bazı makaleler ve kitaplar okudum, fakat hangilerine baktığımı kaydetmedim. Kendi işimi yaptım çünkü erozyonla uğraşmak istedim. Nehirlerin kanyon ve sel basması yapmasını istedim. Baraj rezervuarlarının çökeltileri doldurmasını istedim. Nehirlerin kıvrımlı ve oxbow gölleri gibi efektler üretmesini istedim. Sulama ve su saptırma için kanallar istedim. Sellerin taşkın alanlarındaki çiftliklere ve evlere zarar vermesini istedim.

Bu sayfanın Coğrafya bölümünde bazı notlar aldım . Okuması gereken bir Jos Stam kağıdı var. Ne yazık ki notları hiç organize etmedim. Ayrıca maalesef, oyun OS / 2 içindi, bu yüzden kolayca oynaması için çalıştırılabilir bir dosya veremem. Ayrıca maalesef kodum çok kötü, ama bir göz atmak istersen kaynak kodun içindeki water.cpp'yi gör (zip).

Simülasyonumda oynadığım şeyler (hepsi gerçekçi değil):

  • Nehirlerin yakınındaki alanlar nemli toprağa sahiptir; nehirlerden uzak bölgeler kuru toprağa sahiptir. Nem bitki örtüsünü etkiledi. Bitki örtüsü su akışını yavaşlatır.
  • Yağmur zaman zaman her yerde su yaratır. Daha sonra yokuş aşağı akar. Sonra buharlaşır ve zemin tarafından emilir. Yağmur nehir kanallarını açar.
  • Kaynaklar her zaman sadece birkaç yerde su oluşturur. Yaylar nehir kanallarını dolu tutar. Kaya katmanlarını veya yer altı suyu akışını simüle etmedim; Sadece dağlara rastgele yaylar yerleştirdim.
  • Akan su momentumludur. Doğru hatırlıyorsam, bu nehirleri kıvrımlı yapmak için önemliydi.
  • Hızlı hareket eden su çökeltileri alır; Yavaş hareket eden su önündeki çökeltileri biriktirir. Bu nehir vadileri oyuyor.
  • İlk harita oluşturma sırasında su akışını ve erozyonu hızlandırdım; oyun sırasında normal hızda koştu.

Genel olarak, benim deneyimim, bütün bunların oynamak için oldukça eğlenceliydi , ancak çalışması için birçok sezgisel ve ince ayar yapıldı. Nehir oluşumunun tweaking olmadan doğal ve kaçınılmaz olduğunu söyleyebileceğim bir noktaya hiç gelmedim. O kadar eğlenceliydi ki (hem programcı hem de oyuncu olarak) yıllarca harcadım ve oyunun geri kalanını hiç bitmedi. :)


12
Sadece adını söyle, o da gelsin.
MichaelHouse

3
@ Byte56 Stackexcha'nın Candlejack'i gibi ....
DampeS8N

2
Altıgen ızgara makalenizi temel alan bir yazı yazmak için bana ilham verdiniz ve şimdi yine bana ilham veriyorsunuz!
Adam Arold

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.