Oyunlarda yapısal analiz nasıl yapılır (örneğin: köprü inşası, Dig veya Die ve 3D)?


11

Anladığım kadarıyla, tipik bir etkileşimli kafes sistemi, her bileşen tüm sistemi etkilediğinden önemli hesaplamalara ihtiyaç duyacaktır. Bence simülasyonda doğruluk maliyetiyle belirli sayıda yinelemeyi keyfi olarak durdurabilirsiniz, ancak bu oyunların kullandığı yaklaşımın bu olup olmadığını bilmiyorum (köprü kurma oyunları bir kafes sistem örneğidir). Öte yandan, Dig veya Die gibi oyunlar, torku da (inanıyorum) ve sıkıştırmayı dikkate alan oldukça hızlı bir yapısal sisteme sahiptir ve çok hızlıdır ve çok kapsamlı sistemlerde çalışır. Temel hesaplamalar benzer olabilir, ama değilse her iki yaklaşımla da ilgileniyorum.

Bunların nasıl yapıldığını biliyor musunuz? Keyfi bir sınırlamaları var mı veya tamamen farklı bir algoritma kullanıyorlar mı? Ayrıca, ne bulursanız olun 3D sistemlere uygulanabilir, ancak açık değilse ya da belli değilse lütfen en azından 3D için nasıl kullanabileceğinize dair bir ipucu verin çünkü hem 2D hem de 3D için ilgileniyorum oyunlar.

Burada teşekkür etmemem gerektiğini biliyorum ama en azından zaman ayırdığınız için size teşekkür etmemeye haksızlık ettim, umarım bu paragraf kaldırılmaz.

DÜZENLEME: Tahmin edersem, Dig veya Die'un her blok için vektörleri depoladığını ve daha sonra simülasyondaki ekstra doğruluğun sistemin sınırları için anlamsız olduğu noktaya kadar yinelemeli bir algoritma çalıştırdığını söyleyebilirim. sistem yine de çökmeyecek kadar büyük olacaktır), bu nedenle yarı keyfi (uygulamaya dayalı olduğu için) bir dizi yineleme ile sınırlıdır. Ama yanılmış olabilirim.


Kısacası, evet, hız ve kaliteye göre ayarlanabilen bir zaman adımı ve yineleme sayısı ile yaygın olarak yinelemelidir. Büyük bir matris oluşturmak ve tüm kısıtlamaları bir kerede karşılamak da mümkündür, ancak bu bazı durumlarda çok daha zorlayıcı ve pratik veya imkansız olabilir.
Alan Wolfe

Yanıtlar:


5

Ben Dig or Die geliştiricisiyim, bu yüzden oyun fiziği hakkında biraz daha ayrıntı verebilirim

Gerçekten de en önemli nokta performanslardı, oyunda olduğu gibi binlerce fiziksel blok inşa edebilirsiniz ve çok önemli olan simüle etmek için daha karmaşık başka şeylere sahibim (yağmur / su), böylece bina fiziği için çok az CPU zamanı ayırabilirim .

Bu yüzden aslında bir çeşit yaptım ... Bilmiyorum, özel bir kişisel algoritma çok doğru değil, ama oyun için yeterince iyi çalışıyor. Her blok kesişimi için 1 vektör var (böylece her blok, her bir tarafında bir tane olmak üzere 4 vektöre bağlanır). Her blok bir "ağırlığa" sahiptir ve vektörleri çevresine (eşit olarak) "iter", böylece vektörlerin toplam büyüklüğü yüksekliğine eşit olur. Bir blok zemine sabitlendiğinde, içine itilen tüm kuvvetler / ağırlık asla "geri itilmez", bu yüzden doğal olarak yeterli iterasyonla tüm sistem bir denge bulur. Ağırlık / kuvvet, sabitleme noktalarına bir çeşit "akış" sağlayacak ve yapı üzerindeki çok iyi değişiklikleri yönetecektir. Sonucu burada görebilirsiniz (oyun içi "Eyfel Gözlükleri" ile): resim açıklamasını buraya girin

Torklar hakkında, yatay olarak iletilen kuvvetleri çoğaltarak simüle ediyorum. Mükemmel değil ama yatay ve dikey bina arasındaki büyük farkı hissetmek yeterli

Ama dürüst olmak gerekirse sistemimi çok sevmiyorum, bazı durumlarda çok doğru değil; çoğunlukla sıkıştırma ve uzantıyı yönetmediğim için. Muhtemelen daha fazla CPU olmadan benimkinden daha doğru bir simülasyon yapmanın bir yolu var, ancak bu konuda becerilerim (ve zamanım) çok sınırlıydı, bu yüzden elimden geleni yaptım :-)

(PS: tahminler çok iyiydi :-))


4

Şahsen İteratif Gevşeme ile iyi bir başarı elde ettim . Bence blok kümelerinden yapılmış nesnelerle uğraşırken fizik yasalarına oldukça iyi uyuyor. BridgeBuilder serisinin böyle bir yönteme dayalı olduğuna inanıyorum , ancak bunu onaylayacak kaynağım yok.

Yinelemeli Gevşeme, kafes kirişler için yaygın olarak kullanılır , ancak onunla büyük katı nesneleri (beton) başarıyla simüle ettim: bu, eklemleri serbest dönüş yerine yük taşıyan bir kafes.


İlginç olan, gevşemenin statik kafes kirişleri çözmek için bir teknik olmasıdır, bu yüzden doğrudur. Bu bağlamda, bir yapıyı dengeye getiren bir yer değiştirmeyi tekrar tekrar hesaplamak için kullanılır.

Ancak bir oyunun katma değeri (dinamik ortamlarla ilgilendiğimiz yerde, çünkü statik, denge yapıları sıkıcıdır), şimdiye kadar hesaplanan kısıtlamalara dayanarak yapının her bir yineleme arasındaki eklemlerini gerçekten değiştirme şansı buluyoruz. . İki büyük avantaj elde edersiniz:

  • Herhangi bir dış bozulmaya doğru tepki veren dinamik bir yapıya sahipsiniz.
  • Gerginliğini diğer üyelere kaydırarak destekleyici üyeleri kaybetmeye (hızlı planlanmamış sökme düşünün) doğru yanıt veren bir yapıya sahipsiniz. Bir zincir olayında eklemler kırıldıkça stres akışının hareketini izlemek aslında oldukça keyifli
  • Doğrusal olmayan bir simülasyonunuz var! Ne demek istediğimin daha fazla açıklaması:
    Genellikle , statik analiz , yapının başlangıç ​​durumundan çok uzaklaşmadığı küçük deformasyon hipotezini yapar . Bu sınırlar içinde, statik analiz doğrudur, çünkü eklemler aslında çok fazla yer değiştirmemiştir . Ancak, yapı parçalama ağırlığı altında deforme olduğunda, doğrusal olmayan bir simülasyonla sonuna kadar doğru sonuçlar alırsınız, oysa doğrusal bir çözücüden geçersiz bir durum elde edersiniz

Yinelemeli rahatlamanın yerine koyulması oldukça kolaydır, Sayısal Kararlılık . RK4 şemasını büyük beton yapılarla stabilite sağlamak için başarıyla kullandım . Dezavantajı, performans nedeniyle genellikle oldukça küçük bir sertliğe sahip olmasıdır, bu nedenle bazen yumuşak jöle gibi hissedebilir.

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.