Web lavoratori per la simulazione della fisica dei giochi HTML5?


12

Un po 'legato a questa domanda .

L'idea è di garantire lo stesso comportamento fisico il più possibile. Sarebbe possibile eseguire la fisica dei passi a tempo fisso su un lavoratore web? L'interfaccia utente si aggiornerebbe con una frequenza di aggiornamento diversa / variabile.

Qualcuno ha già provato questo?


Cosa pensi di guadagnare usando un web worker? Finora la mia risposta sarebbe: funzionerà, ma perché preoccuparsi?
aaaaaaaaaaaa,

Risposte:


3

Ho trovato questo esperimento . Esegue la fisica Box2d su un lavoratore web. Non ho ancora verificato nel dettaglio come aggirare i problemi menzionati nei commenti di Vincent Scheib.


Buon esperimento. Ho seguito anche questi tipi di progetti. Sfortunatamente, la maggior parte sono ancora legati a Java / C. Credo che OP stia cercando un modo per farlo nativamente nel browser (nessun plug-in).
Kevin Peno,

2
Articolo sullo stesso di un ragazzo di Google: t.co/AuhPptB
sorenbs

2

Questo potrebbe funzionare, comunque WebWorkers seguendo il modello di osservatore , la document(pagina html che possiede il lavoratore) può solo ascoltare e pubblicare messaggi da / verso un lavoratore. Da ciò, immagino che ci siano alcune opzioni. In tutti i casi penso che dovrai trovare un modo per determinare l'FPS ottimale dell'agente utente al fine di ottimizzare le informazioni. Quindi puoi:

  • Di 'ai lavoratori di pubblicare messaggi a questi intervalli di tempo
    • Unico inconveniente (s?): Devi presumere che documentsarà pronto per la risposta quando succede.
  • Di ' documentdi inviare un messaggio al lavoratore che richiede la fisica a intervalli di tempo x, quindi il lavoratore invierà una risposta (si spera) poco dopo.
    • Unico inconveniente: poiché tutti i post e le risposte sono asincroni, potrebbero esserci ritardi tra la richiesta e la risposta del lavoratore. In questo caso dovresti anche annullare l' onmessageevento per impedirti documentdi ascoltare quando non si prevede che lo sia.

Sono sicuro che ci sono altre cose che mi sono perse o modi per gestire anche le comunicazioni. Non vedo l'ora di ricevere altre risposte sull'argomento!


1
a) Attenzione alle prestazioni! Prendi in considerazione requestAnimationFrame e segnala un 'keep alive' al tuo lavoratore da esso, in modo da non bruciare CPU se la scheda è posizionata in background (forse per troppo tempo)
Vincent Scheib

b) IIRC Tutti i messaggi del lavoratore verranno ricevuti sul thread principale, verranno messi in coda. Pensa a quale impatto avrà sul tuo thread principale, se hai 5 aggiornamenti ma hai bisogno solo degli ultimi. Inoltre, non puoi dire che ne avrai di più.
Vincent Scheib,

c) Tutti i messaggi eseguono copie dei dati. Maggiore è il numero di dati da inviare tra i thread, maggiore sarà il lavoro di copia e immondizia dei dati. Quindi, una vittoria qui esisterà solo se c'è un elevato rapporto dati di calcolo / messaggio.
Vincent Scheib,

@Vincent, riguardo a B) ecco perché ho detto che avresti bisogno di essere documentsempre pronto trovando un fps ragionevole o andare con l'opzione 2 in cui il lavoratore non fa nulla fino documenta quando non lo chiede.
Kevin Peno,

2

Physijs utilizza un web worker. Incolla la fisica delle munizioni con gli oggetti Three.js e le aggiorna secondo necessità. Presenta fasi temporali sia fisse che fluide, credo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.