Meilleure réponse
Eh bien, je peux répondre à la question pour Unity .
Il y avait autrefois un écosystème florissant pour les jeux Unity dans le navigateur, en particulier sur Facebook. Le webplayer Unity était assez décent pour que vous obteniez de jolis graphismes et une fréquence dimages fluide (à condition que vous ayez fait beaucoup de cuisson et doptimisation). Jai travaillé une fois sur un jeu sérieux / une simulation qui a été déployé sur le lecteur Web et qui a en quelque sorte repoussé ses limites, donc je savais de quoi il était capable.
Tout a changé lorsque Chrome a décidé de tuer le support NPAPI, sur lequel le lecteur Web est basé. Quest-ce que NPAPI? Les détails complets sont ici – NPAPI – Wikipédia – cependant, pour résumer, cest une méthode de développement de plugins pour les différents navigateurs grand public. Cependant, NPAPI était vieux, sujet à des problèmes de sécurité, et il y avait un appel à utiliser HTML5 / WebGL, etc., donc Chrome a décidé de le supprimer progressivement.
La plus grande différence entre NPAPI et lutilisation de WebGL est que lancien a donné un accès presque illimité aux ressources de la machine locale (voir NPAPI Plugins – Google Chrome pour plus de détails). Pour Unity3D WebGL, il y a deux gros problèmes:
Le premier est quil ny a pas de compilation de code nativement pour HTML5 / WebGL. Unity a résolu ce problème en compilant un projet sous une forme de JavaScript optimisé. Cest grand , en termes de taille de fichier, car la majeure partie du code du moteur Unity doit être là pour que le projet sexécute, et Unity nest en aucun cas léger. Dans le cas dun lecteur Web, la plupart du code du moteur est déjà sur la DLL ou dans le plugin, vous pouvez donc simplement charger les données de la scène elles-mêmes et les exécuter. Cependant, pour le lecteur Web WebGL, le code du moteur doit être à nouveau téléchargé de manière cohérente, et je ne suis pas sûr quil y ait encore eu une solution pour cela.
Pour réduire la taille, le code WebGL a être compressé. Cependant, cela signifie que le code doit être décompressé sur lordinateur du client, après lavoir téléchargé , ce qui rend lexpérience lente et maladroite.
Le problème qui tue est celui de la mémoire. Contrairement à NPAPI, lorsque vous exécutez le lecteur Web WebGL, vous ne pouvez utiliser que la mémoire du navigateur, cest-à-dire franchement hors de votre contrôle. Le joueur peut avoir plus de 100 onglets ouverts, ne laissant pas assez de mémoire pour que votre jeu fonctionne. Ou votre jeu pourrait être trop volumineux pour les limites de mémoire du navigateur, ce qui le ferait planter de manière désagréable, lors du chargement, sans message derreur (cétait le cas il y a 2 ans lorsque je lai essayé).
Vous avez essentiellement se contenter de modèles moins détaillés, de ressources de jeu de moins bonne qualité (son, textures, etc.) pour mettre quelque chose sur lutilisation de WebGL / HTML5. Franky, je doute que WebGL / HTML5 fournisse un jour le niveau de qualité et de fréquence dimages que les anciens plugins NPAPI pourraient, donc je pense que tout lécosystème des jeux Unity basés sur le Web a été anéanti.
Notez que cela concerne principalement les joueurs Unity3D WebGL – il existe dautres moteurs de jeu capables dexécuter des jeux sur WebGL, bien que ceux-ci aient tendance à être basés sur JavaScript et optimisés pour le Web. Unity3D est un énorme moteur, et le Web n’est plus un citoyen de première classe en tant que plate-forme de déploiement.
De toute façon, je n’ai pas été dans la scène Unity depuis deux ans, alors jespère que quelquun me contredira.
Réponse
Il y a un problème de contenu caché ici ainsi quun problème dingénierie sociale, mais je suis va parler de problèmes techniques. Vous pouvez écrire quelques livres sur les deux premiers.
Le TL; DR ici est que vous ne pouvez pas vraiment obtenir la même performance AAA avec le plate-forme Web que vous attendez des programmes natifs. Il existe des solutions de contournement, mais elles sont plus coûteuses à mettre en œuvre pour les développeurs.
1.) Compilation dexécution et traitement des éléments
Contrairement à la méthode standard de production de jeux, un jeu Web doit actuellement compiler son code et accéder à ses ressources associées en temps réel. Historiquement, un jeu aurait des actifs et du code précompilés qui seraient chargés et exécutés à la demande. La pré-compilation de votre jeu vous permet doptimiser votre jeu pour mieux fonctionner dans différentes situations. Une partie de cette personnalisation se produit lorsque vous installez (différences IE, PC / MAC / console) et une partie de cela se produit lorsque vous configurez les options de jeu.
Étant donné que cette optimisation se produit avant lexécution, vous pouvez charger dans le jeu plus rapide (vous savez déjà ce que vous devez faire). Cependant, la compilation au moment de lexécution signifie que vous devez tout comprendre au moment de lexécution plutôt quau préalable. Cela augmente généralement les temps de chargement, entre autres. En théorie, il est possible de mettre en cache les données téléchargées, mais le navigateur (ou un utilisateur malchanceux) peut remplacer ce que vous faites très facilement. Voir # 3.
2.) Maintenance du serveur
Sur un navigateur Web, vous pouvez stocker des fichiers et des ressources à distance, mais cela représente un problème dentretien pour les sociétés de jeux – cela prend du temps et de largent pour assurer la maintenance des services serveur. Ce problème peut être considérablement réduit en installant le jeu une fois sur une machine locale et en fournissant des correctifs périodiquement au lieu de mises à jour en continu constantes. Bande passante = $$$, sans parler des professionnels des technologies de linformation nécessaires pour exploiter les serveurs à une disponibilité maximale.
3.) Surcharge / restrictions du navigateur
Exécuter quoi que ce soit dans un navigateur Web signifie que vous devez travailler non seulement avec le système dexploitation comme exigence du système, mais aussi avec la mémoire supplémentaire et le temps de traitement que le navigateur utilisera. Par exemple, Chrome utilise actuellement ~ 148 Mo juste pour me permettre de répondre à cette question! Ce nest probablement pas mauvais pour les PC ou les Mac, mais cest tueur pour les tablettes.
De plus, la plupart des navigateurs ont des fonctionnalités de sécurité qui limitent la façon dont le navigateur peut interagir avec votre système dexploitation et votre matériel. Cela signifie que certains types dopérations de performance que vous pourriez normalement faire avec un jeu pré-compilé ne sont tout simplement pas possibles dans un navigateur (souvent un accès direct à la mémoire).