Je travaille sur un jeu qui a une logique IA, un mouvement, etc. Est-il logique de calculer la logique de déplacement et d'intelligence artificielle en utilisant Web Workers? Mais comment puis-je faire cela - parce que les travailleurs ont besoin de savoir beaucoup sur le fil principal comme les positions de certains objets pour les collisions, la quantité de balles, etc .. Cela semble impossible parce que le travailleur est complètement séparé du fil principal. pas d'accès quoi que ce soit. Je sais qu'il y a un système postMessage(), mais ça fait si ... euh, c'est douloureux? Par exemple, j'ai un objet rifleman qui représente un fusilier avec un sprite, une position, une santé, etc. Je veux qu'il patrouille. Alors, comment puis-je faire ce code de patrouille sur un travailleur? Il faudrait à peu près tout l'accès à cet objet.Est-il sensé d'utiliser Web Workers pour un jeu?
Répondre
je pense qu'il est logique d'utiliser WebWorkers pour un jeu, mais oui, il signifie que vous devrez garder un objet d'état de jeu qui peut être converti en JSON valide que vous pouvez passer à webworkers. Sur le brightside, vous pouvez également mettre beaucoup de données intrinsèques à l'intérieur de ces web workers.
var gameState = {
sprites: {
{
type: 'rifleman', // damage, accuracy, speed etc set inside appropriate webworker.
owner: 'playerA',
x: 100,
y: 100,
z: 0,
level: 1, // used to fetch modifiers to dmg, acc, speed etc.
},
{
// each sprite it's own state obj.
}
}
}
vous mis en place un Webworker pour les événements de patrouille et possibles (vous pouvez appeler d'autres webworkers l'intérieur d'un Webworker ainsi et les événements de patrouille de processus)
var patrolWorker = new WebWorker('patrolWorker');
patrolWorker.onmessage = function(e){
render(e.data); // your render function, can ALSO be a webworker if you like ;)
}
patrolWorker.postMessage(gameState.sprites);
Il doit être clair maintenant, que l'utilisation WebWorkers est en fait une décision architecturale, si vous voulez les utiliser, cela impliquera beaucoup de refactoring. Sans le refactoring, je doute que ce soit utile pour vous.
Pour le jeu si avec beaucoup d'objets, l'état du jeu que est stocké comme un tableau de nombres peut-être préféré puisque vous évitez les données -> JSON -> chaîne de conversion de données. –
- 1. Web Workers and Canvas
- 2. javascript web workers - comment transmettre des arguments?
- 3. web workers: comment savoir si le navigateur le supporte?
- 4. Jeu animé pour web et iPhone - comment?
- 5. Les Web Workers sont-ils eux-mêmes autorisés à avoir des threads Web Worker?
- 6. Implémenter un jeu pour le web en utilisant PHP/Javascript?
- 7. Jeu mp3 ininterrompu sur un site web?
- 8. Créer un jeu web, quelle technologie utiliser?
- 9. Java: Concurrence pour un jeu
- 10. Comment empêcher HTML5 Web Workers de se verrouiller ainsi répondre correctement aux messages du parent
- 11. Architecture de serveur pour un jeu multijoueur?
- 12. Comment créer un sol pour un jeu?
- 13. Est-il sensé de créer un service RESTful auquel je peux envoyer un fichier binaire?
- 14. Pour renvoyer un jeu de données dans un service Web ou non?
- 15. XNA Jeu dans le site Web ASP.Net
- 16. Intégrer un jeu xna dans une page Web
- 17. Conseils pour créer un jeu simple .net
- 18. Comment utiliser BuffereImage pour un jeu d'échecs
- 19. Recommandations pour développer un jeu iOS
- 20. Une plate-forme de développement de jeu polyvalente mais simple pour un débutant plutôt?
- 21. Est-il sensé d'utiliser des ancres internes pour filtrer la représentation d'une API REST?
- 22. Est-il sensé de distribuer des assemblages pré-NGEN-ed?
- 23. Recommandation pour un moteur de jeu de stratégie pour .NET?
- 24. Comment faire pour redémarrer un niveau dans un jeu iPhone
- 25. Comment faire un RNG sélectif pour un jeu en Python?
- 26. Est-il sensé de fragmenter les partiels statiques du cache
- 27. concevoir un jeu C++
- 28. Graphiques créatifs commons pour le jeu vidéo
- 29. est-il un appareil subversion/jeu d'outils pour l'entreprise
- 30. Iphone sdk - enregistrer le jeu dans un jeu
Je ne suis pas sûr du contexte: Si la question est très spécifique aux jeux, il pourrait être une bonne idée de demander sur http://gamedev.stackexchange.com –