IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

[HTML5] Expérimentations 2D/3D avec JavaScript


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut [HTML5] Expérimentations 2D/3D avec JavaScript
    Bonjour,

    Je teste un peu le javascript-html5 pour voir si ça serait intéressant de tenter de faire des jeux avec.

    Je bute sur un premier problème, le gros problème des performances cpu, parce que les browser c'est un peu optimisé à la truelle et donc pas vraiment conçu pour faire des jeux vidéo...

    Voilà un résumé de mes premières expérimentations, pas vraiment concluantes...

    - expérimentation 1: gros pixel en canvas 2d stretché. Résultat catastrophique, le stretching software met le processeur à genoux.

    - expérimentation 2: faire tourner 12 triangles webgl. performances vaguement acceptables sur chrome (mais ça reste du cpu-killer par rapport aux plugins unity ou flash), par contre sur iexplorer/firefox c'est la méga catastrophe ils boulent un max de gpu alors rendu émulé tellement lent que ça me pompe 100% du cpu pour ramer à 30 fps.

    Là je suis très démotivé pour poursuivre les expérimentations plus loin... j'ai l'impression de revenir au quickbasic avec le fullscreen et la vsync en moins...

    Bon apparemment je suis pas du tout parti dans la bonne direction... il doit bien exister des techniques pour optimiser du javascript-html5 mais j'ai pas trouvé.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  2. #2
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Je viens de trouver une possibilité de piste d'optimisation pour la 2d...
    il semblerait que le stretching est plus rapide quand il est fait avec drawImage() qu'en laissant le navigateur le faire tout seul.
    je dis ça, mais il faut que je fasse des tests plus précis
    nous devons inventer la langue de feu pour crâmer la langue de bois

  3. #3
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Bon puisque je suis en train de tester je remonte (ça peut intéresser) la qualité du retracage sur windows 7:

    - chrome: vsync sur les deux modes
    - iexplorer: vsync en mode aero, saccade régulière en non-aero
    - firefox: saccades immondes sur les deux modes (est-ce que ça vient de firebug ? chai pas...) que j'arrive parfois à annuler en tripotant avec la souris et là donc c'est fluide, bref j'ai rien compris à leur bazar

    Bon mais évidemment là je test sur un pc... sur un mobile de toutes façons ça va ramer car je n'ai toujours pas trouvé comment accélérer le traçage.
    A priori si on est logique c'est pas possible, puisque si je fais un stretch ça nous fait un tracé supplémentaire donc ça sert strictmeent à rien d'optimiser d'un côté le blitting en basse résolution si c'est pour reperdre du cpu en fin de pipeline avec un tracé stretché...

    Bon donc conclusion des tests, à la date actuelle:
    - html5 commence à être approximativement prêt pour les jeux 2d sur desktop, sur mobile tant pis
    - html5 n'est pas prêt pour les jeux 3d
    nous devons inventer la langue de feu pour crâmer la langue de bois

  4. #4
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Faut peut être plutôt creuser par là :
    http://arstechnica.com/gaming/2013/0...n-the-browser/
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  5. #5
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Déjà testé, ça m'a crashé la machine.

    Du coup ils ont remplacé leur demo par ça: https://www.unrealengine.com/html5/

    Techniquement c'est déjà beaucoup mieux, ça se contente de me crasher le navigateur.


    Sinon à part ça la version flash de la citadel marche très bien.

    Bref c'est ce que je dis, html5 est pas prêt de remplacer les plugins. Si actuellement 99% des jeux browser pro sont faits avec flash/unity, c'est qu'il y'a une raison.

    Tout ce que j'arriverais à faire pour l'instant avec l'html5 c'est un pacman. La question est de savoir si ça vaut le coup, c'est peut-être plus intelligent de faire d'abord un pacman natif avec sdl qui puisse donner des version mobile propres, et puis pour l'option browser je verrais plutôt du cross compile crossbridge que emscripten.

    Si je fais ça en javascript ça sera de toutes façons trop lent pour les mobiles, le seul intérêt qu'on pourrait entrevoir dans le javascript c'est que c'est théoriquement plus facile à programmer que du c++, mais en fait c'est même pas vrai vu que pour retrouver les effets d'animation de palette en canvas 2d va falloir me casser la tête à trouver des bricolages tordus alors qu'en c++ je suis libre de colorier chaque pixel comme je veux, donc, je sais pas encore si je vais faire joujou avec le javascript, je suis pas sûr que ça vaille le coup.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  6. #6
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Etonnant j'avais pu tester la démo à sa sortie.
    Normalement la version 5.0 de unity qui devrait arriver dans moins d'un an aura un export web en html 5 ( donc plus besoin de plug in ).
    D'ailleurs il y a un test disponible là et sous chrome ça fonctionne plutôt pas mal : http://blogs.unity3d.com/2014/04/29/...hing-in-unity/

    C'est donc que techniquement il doit y avoir moyen de faire tourner tout ça rapidement.
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  7. #7
    Membre confirmé Avatar de Fusoy
    Homme Profil pro
    Pas astronaute
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Pas astronaute

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 634
    Points
    634
    Par défaut
    Le logiciel Construct 2 arrive a faire des bons résultats en HTML 5. Tu peux peut-être leur demander les grandes lignes de leur techniques d'optimisations.
    Jouez gratuitement à Eburnean que j'ai fait avec mes petites mimines : Suivez le développement!

  8. #8
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Pas mal construct 2 le résultat est intéressant... c'est de la 2d et ça fonctionne pas trop mal.

    si je me lance dans un moteur javascript ça devrait être de la 2d
    nous devons inventer la langue de feu pour crâmer la langue de bois

  9. #9
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Bon alors finalement j'ai refait des tests de stretch car bosser en basse résolution peut être utile pour plein de choses (par exemple alléger des opérations de blitting compliquées).

    Bon donc, le stretching css est un cpu-killer il ne faut surtout pas l'utiliser. Il faut passer par un context.drawImage(canvasresolutionpourrie,1024,768) à la place.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  10. #10
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Bon donc, fin des tests,
    La solution la plus optimisée c'est de faire un tracé simple à echelle 1, un arrière-plan et quelques sprites.
    Stretcher une basse résolution n'a d'intérêt que pour des routines de tracé complexes (plein de calques et d'objets, particules, manipulation de pixels, émulation, etc).
    nous devons inventer la langue de feu pour crâmer la langue de bois

  11. #11
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    J'ai repris les tests, maintenant je tripote les compileurs c++ emscripten et cheerp.

    C'est assez rustre ces traducteurs automatiques... ça compile le c+ en assembleur et re-traduction en javascript, ils ont reproduit les jump avec des case break horribles, bon, ça explique pourquoi c'est plus lent que du javascript natif.

    Le problème principal va donc consister à essayer de comprendre quelque chose à cette bouillie illisible pour attraper la fin de pipeline graphique car cet endroit là doit être optimisé.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  12. #12
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Maintenant je tripote les buffers audio... le stream avec trois buffers ça fonctionne pas, y'a apparemment que le buffer statique qui fonctionne. Et puis ça marche pas sur iexplorer, et sur firefox y'a du deprecated. Bon bref la sortie audiobyte directe ça va pas être possible pour l'instant il vaut mieux utiliser bêtement les objets sound.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  13. #13
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Test non concluant sur cheerp. Il n'est pas capable de caster les pointeurs... je retourne sur emscripten.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  14. #14
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Emscripten est mieux, le code est super lisible donc il est facile de le retravailler pour optimiser la sortie de pipeline.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  15. #15
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Aujourd'hui j'ai testé un peu de webgl, en fait il y'a moyen d'obtenir un 30 fps décent sur iexplorer et autres navigateurs avec rendu émulé, si on lui demande pas trop: éviter de tracer plus de 2000 polygones, et résolution du genre 320*240.

    j'ai l'impression de retourner au msdos...
    nous devons inventer la langue de feu pour crâmer la langue de bois

  16. #16
    Membre averti Avatar de yetimothee
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Salut,

    y a moyen d'utiliser les vbo et les techniques "modernes" (shaders etc) d'OpenGL avec webgl ? Si t'as pas essayé ça c'est normal que tu ne puisses pas afficher plus de 2000 polygones (le mode immédiat avec le pipeline fixe c'est complètement obsolète).

    Dès que tu auras finis tes expérimentations, feras-tu un compte rendu un peu plus détaillé des comparaisons ?

    Bon tests !

  17. #17
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Ca n'a rien à voir avec le pipeline d'opengl, là où j'ai des basses perfs c'est sur le rendu émulé (qui rend tout avec le cpu donc et pas avec le gpu), ce qui consomme 99.999 % cpu c'est le fragment shader dès qu'il doit gérer plus d'une texture.

    La bonne façon d'optimiser ça c'est donc les techniques à l'ancienne: baisser la résolution, précalculer le multitexturing, eliminer les faces occluses, etc.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  18. #18
    Membre averti Avatar de yetimothee
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    C'est pas vraiment de l'OpenGL quoi ?

  19. #19
    Inactif  
    Homme Profil pro
    c++ java php javascript
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : c++ java php javascript
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 179
    Points
    179
    Par défaut
    Effectivement, sur windows, sous le capot du webgl en réalité c'est du directx qui tourne.
    nous devons inventer la langue de feu pour crâmer la langue de bois

  20. #20
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2007
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 677
    Points : 2 137
    Points
    2 137
    Par défaut
    Citation Envoyé par jean_kevin_musclor Voir le message
    Aujourd'hui j'ai testé un peu de webgl, en fait il y'a moyen d'obtenir un 30 fps décent sur iexplorer et autres navigateurs avec rendu émulé, si on lui demande pas trop: éviter de tracer plus de 2000 polygones, et résolution du genre 320*240.

    j'ai l'impression de retourner au msdos...
    T’as de meilleures perfs en émulé que si tu passais par le GPU ? C’est un peu étrange comme comportement. T’as testé sur plusieurs machines ?

    Je n’ai jamais touché à webgl mais il m’est déjà arrivé de lancer quelques petites démos par curiosité et ça tournait plutôt pas mal de souvenir (il y avait peut-être de gros cache-misères, j’en sais rien, mais c’était fluide).

    Edit : Du genre cette démo, elle tourne comment chez toi ? Si t’as le framerate d’un powerpoint y’a sans doute un souci de pilote ou que sais-je (j’ai un 60fps solide de mon côté avec une machine plus que modeste).
    Le WIP de The last bastion, mon projet de jeu-vidéo (un TD en 3D)

    Mon portfolio / Ma page fb

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/03/2015, 11h55
  2. Application Android Native avec Javascript, CSS3, HTML5
    Par fanototo dans le forum Android
    Réponses: 2
    Dernier message: 27/05/2014, 11h05
  3. Defilement de la fenetre avec JavaScript
    Par black is beautiful dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/09/2004, 10h21
  4. Lien ASP avec javascript
    Par RATIER dans le forum ASP
    Réponses: 3
    Dernier message: 15/07/2004, 08h54
  5. Réponses: 4
    Dernier message: 27/04/2004, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo