HTML5 oyun fizik simülasyonu için Web çalışanları?


12

Bu soru ile ilgili biraz .

Fikir mümkün olduğunca aynı fizik davranışını garanti etmektir. Bir web çalışanında sabit zamanlı adım fiziği çalıştırmak mümkün müdür? Kullanıcı arayüzü kendisini farklı / değişken yenileme hızıyla güncelleyecektir.

Henüz böyle biri denedi mi?


Bir web çalışanı kullanarak ne kazanmayı düşünüyorsunuz? Şimdiye kadar cevabım olurdu, işe yarayacaktı, ama neden rahatsız oluyorsun?
aaaaaaaaaaaa

Yanıtlar:


3

Bu deneyi buldum . Bir web çalışanı üzerinde Box2d fizik çalıştırır. Vincent Scheib'in yorumlarında bahsedilen sorunların nasıl ele alındığını detaylı olarak henüz kontrol etmedim.


İyi deney. Bu tür projeleri de takip ediyorum. Ne yazık ki, çoğu hala Java / C ile bağlantılıdır. OP'nin bunu tarayıcıda doğal olarak (eklenti yok) çekmenin bir yolunu aradığına inanıyorum.
Kevin Peno

2
Aynı şey hakkında bir google adam hakkında makale: t.co/AuhPptB
sorenbs

2

Bu ancak, işe yarayabilir WebWorkerizleyin s gözlemci desen , documentbir işçinin gelen / 'e (işçiyi sahibi olan html sayfası) sadece dinleyebilir ve ileti gönderebilir. Bundan birkaç seçenek var sanırım. Her durumda, bilgileri optimize etmek için kullanıcı aracısının en uygun FPS'sini belirlemek için bir yol bulmanız gerekeceğini düşünüyorum. Sonra ikisinden birini yapabilirsiniz:

  • Çalışanlara bu zaman aralıklarında mesaj göndermelerini söyleyin
    • Dezavantaj (lar): documentgerçekleştiğinde yanıtın hazır olacağını varsaymalısınız .
  • documentZaman aralığındaki fizik isteyen işçiye bir mesaj göndermesini söyleyin x, daha sonra işçi bundan kısa bir süre sonra (umarım) bir yanıt gönderir.
    • Dezavantaj (lar): tüm mesajlar ve yanıtlar asenkron olduğundan, istek ve çalışanın yanıtı arasında gecikmeler olabilir. Bu durumda , beklemediğinizde dinlemenizi onmessageönlemek için etkinliği iptal etmeniz documentde gerekir.

Eminim kaçırdığım başka şeyler ya da iletişimi idare etmenin yolları vardır. Konuyla ilgili başka cevaplar da bekliyorum!


1
a) Performans konusunda dikkat! AnlamaFrame'i düşünün ve çalışanınıza bir `` canlı kal '' sinyali verin, böylece sekme arka plana yerleştirilirse (belki de çok uzun süre) CPU'yu
yakmazsınız

b) IIRC İşçiden gelen tüm mesajlar ana iş parçacığında alınacak, sıraya girecektir. 5 güncellemeniz varsa, ancak yalnızca en son sürümlere ihtiyacınız varsa, ana iş parçanız üzerinde ne gibi bir etkisi olacağını düşünün. Dahası geldiğini de söyleyemezsin.
Vincent Scheib

c) Tüm mesajlar verilerin kopyalarını oluşturur. İleti dizileri arasında ne kadar çok veri göndermek zorunda kalırsanız, veri kopyalama ve çöp toplama işi o kadar fazla olur. Yani, burada bir kazanç sadece yüksek bir hesaplama / mesaj veri oranı varsa olacaktır.
Vincent Scheib

@Vincent, B ile ilgili olarak) bu yüzden ya documenther zaman makul bir fps bularak hazır olmanız gerektiğini söyledim ya da işçinin isteyene kadar hiçbir şey yapmadığı seçenek 2'ye gidin document.
Kevin Peno

2

Physijs bir web çalışanı kullanır. Ammojs fiziğini Three.js nesneleriyle birleştirir ve gerektiğinde günceller. Hem sabit hem de akışkan zaman adımlarını içeriyor, inanıyorum

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.