Projet Mist2D
Modérateur : L'équipe
-
- Messages : 78
- Inscription : 03 mars 2012, 15:37
Re: Projet Mist
une autre chose, je ne sais pas ce que tu as choisis pour gérer l'affichage, mais je te conseil vivement d'utiliser openGL ou directX, surtout si tu veux faire de la full HD à 60fps.
Car même pour de la 2D, l'accélération matérielle reste très importante : c'est ce qui fait la (très grosse) différence entre une SNES et une GX4000. Cette dernière à un meilleur CPU, mais aucune accélération graphique sauf pour les sprites : un moindre scrolling demande du travail au CPU.
Si tu veux faire du fullHD, tu as 2 073 600 pixels par frame. A 60 fps, tu dois générer 124 416 000 pixels par seconde. Donc avec un bon processeur à 3ghz, ça te donne une petite trentaine de cycles par pixels. Après, tu peut paralléliser, et augmenter selon le nombre de cœurs. Mais ça va taxer énormément de CPU.
Autre chose que je te conseil : jette un œil à cette vidéo des développeurs de rayman origins.
http://ubi-art.uk.ubi.com/2010/07/07/ho ... framework/
Ils expliquent comment fonctionnent leur moteur.
En fait, ils appliquent à la 2D les procédés d'animation squelettiques qui sont apparus avec la 3D, ce qui leur permet de faire des animations très simplement.
Le rendu est fait sur des polygones, et du coup, ils peuvent facilement faire des déformations sur des parties localisées.
Car même pour de la 2D, l'accélération matérielle reste très importante : c'est ce qui fait la (très grosse) différence entre une SNES et une GX4000. Cette dernière à un meilleur CPU, mais aucune accélération graphique sauf pour les sprites : un moindre scrolling demande du travail au CPU.
Si tu veux faire du fullHD, tu as 2 073 600 pixels par frame. A 60 fps, tu dois générer 124 416 000 pixels par seconde. Donc avec un bon processeur à 3ghz, ça te donne une petite trentaine de cycles par pixels. Après, tu peut paralléliser, et augmenter selon le nombre de cœurs. Mais ça va taxer énormément de CPU.
Autre chose que je te conseil : jette un œil à cette vidéo des développeurs de rayman origins.
http://ubi-art.uk.ubi.com/2010/07/07/ho ... framework/
Ils expliquent comment fonctionnent leur moteur.
En fait, ils appliquent à la 2D les procédés d'animation squelettiques qui sont apparus avec la 3D, ce qui leur permet de faire des animations très simplement.
Le rendu est fait sur des polygones, et du coup, ils peuvent facilement faire des déformations sur des parties localisées.
-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
Merci encore pour toutes ces infos
. Je pense que je vais terminer ce que je suis en train de faire avant de plancher là dessus
.

-
- Messages : 924
- Inscription : 19 juin 2011, 21:36
- Sexe : ♂ Masculin
Re: Projet Mist
Moi, j'aurais une petite question pour toi : pourquoi C++ ?
Est-ce qu'on est à la veille d'une migration vers le langage compilé ? Je veux bien admettre qu'il y a tous les outils pour, que beaucoup de jeux ont été créés avec ce langage et que s'il est bien écrit, le programme peut être porté sur la plupart des machines... mais les rois des supports, ce seront plutôt les navigateurs.
Quelques jeux qu'on voit débarquer (et qui ne fonctionnent pas encore sur tous les navigateurs, j'en conviens) :
http://david.blob.core.windows.net/mode ... index.html
Le jeu dont les dimensions s'adaptent à la taille de la fenêtre... quand la fenêtre augmente ou se réduit, la dimension suit.
http://browserquest.mozilla.org/
Le jeu qui se joue online, tout ça grâce au HTML/JavaScript/CSS...
Est-ce que ce n'est pas plutôt là dessus qu'il faudrait se pencher ? C'est plutôt simple à prendre en main, plutôt simple à programmer et des outils sortent petit à petit. Pour le moment, rien ne ressemble à ce que tu veux faire sur les navigateurs. Alors, retour à le question initiale : simple curiosité, pourquoi C++ finalement ?
Est-ce qu'on est à la veille d'une migration vers le langage compilé ? Je veux bien admettre qu'il y a tous les outils pour, que beaucoup de jeux ont été créés avec ce langage et que s'il est bien écrit, le programme peut être porté sur la plupart des machines... mais les rois des supports, ce seront plutôt les navigateurs.
Quelques jeux qu'on voit débarquer (et qui ne fonctionnent pas encore sur tous les navigateurs, j'en conviens) :
http://david.blob.core.windows.net/mode ... index.html
Le jeu dont les dimensions s'adaptent à la taille de la fenêtre... quand la fenêtre augmente ou se réduit, la dimension suit.
http://browserquest.mozilla.org/
Le jeu qui se joue online, tout ça grâce au HTML/JavaScript/CSS...
Est-ce que ce n'est pas plutôt là dessus qu'il faudrait se pencher ? C'est plutôt simple à prendre en main, plutôt simple à programmer et des outils sortent petit à petit. Pour le moment, rien ne ressemble à ce que tu veux faire sur les navigateurs. Alors, retour à le question initiale : simple curiosité, pourquoi C++ finalement ?
-
- Messages : 78
- Inscription : 03 mars 2012, 15:37
Re: Projet Mist
il y a aussi unity qui se met au web, par contre, il faut installer le plugin (propriétaire). Perso, je suis pas fan, je préfère avoir un navigateur "libre".
Par contre, toryudo, je trouve ça un peu paradoxale d'utiliser le navigateur web pour jouer à des jeux : ce n'est pas fait pour ça.
Comme tu le dit, ce qui est intéressant avec un navigateur, c'est sa portabilité. Finalement, c'est le même argument que java, à la différence que le java c'est du mytho : des programmes tournant très bien sous linux, plantent complètement et son inutilisables sous windows.
Cependant, en dehors de ça, la nature du navigateur n'est pas de faire tourner des jeux. Les performances requises en javascript seront considérables pour avoir un rendu haut de gamme. L'autre moyen est d'utiliser des plugins qui s'intègrent dans le navigateur comme c'est déjà le cas flash, java ou unity. Quoique avec flash et java, on a les mêmes performances dégueulasses. Et puis, je ne vois pas l'intérêt de les intégrer au navigateur si on peut les avoir en standalone.
Je pense que l'avenir est à définir une API commune aux systèmes d'exploitation. Ceux-ci peuvent toujours proposer des fonctionnalités supplémentaires en dehors de cette API, mais pour un certain nombre de fonctionnalités de base qui dépassent le cadre de la console, il faudrait avoir une librairie standard.
Après, je doute fort de la bonne volonté de microsoft sur ce domaine. Apple n'aura pas trop de mal, étant donné qu'ils ont déjà une large part commune avec linux due au noyau BSD.
Par contre, toryudo, je trouve ça un peu paradoxale d'utiliser le navigateur web pour jouer à des jeux : ce n'est pas fait pour ça.
Comme tu le dit, ce qui est intéressant avec un navigateur, c'est sa portabilité. Finalement, c'est le même argument que java, à la différence que le java c'est du mytho : des programmes tournant très bien sous linux, plantent complètement et son inutilisables sous windows.
Cependant, en dehors de ça, la nature du navigateur n'est pas de faire tourner des jeux. Les performances requises en javascript seront considérables pour avoir un rendu haut de gamme. L'autre moyen est d'utiliser des plugins qui s'intègrent dans le navigateur comme c'est déjà le cas flash, java ou unity. Quoique avec flash et java, on a les mêmes performances dégueulasses. Et puis, je ne vois pas l'intérêt de les intégrer au navigateur si on peut les avoir en standalone.
Je pense que l'avenir est à définir une API commune aux systèmes d'exploitation. Ceux-ci peuvent toujours proposer des fonctionnalités supplémentaires en dehors de cette API, mais pour un certain nombre de fonctionnalités de base qui dépassent le cadre de la console, il faudrait avoir une librairie standard.
Après, je doute fort de la bonne volonté de microsoft sur ce domaine. Apple n'aura pas trop de mal, étant donné qu'ils ont déjà une large part commune avec linux due au noyau BSD.
-
- Messages : 924
- Inscription : 19 juin 2011, 21:36
- Sexe : ♂ Masculin
Re: Projet Mist
Pourquoi un navigateur ne serait pas fait pour ça ?
Avant, on avait des Opérateurs téléphoniques, ils n'étaient pas fait pour être des Fournisseurs Accès à Internet.
Les Fournisseurs Accès à Internet n'étaient pas fait pour faire de la télévision.
D'ailleurs, dans un premier temps, internet n'est pas fait pour regarder des vidéos.
Et maintenant, les FAI se mettent à la vidéo à la demande et ils veulent squater le côté jeux vidéos...
Alors, pourquoi pas des navigateurs qui s'optimisent pour les jeux ? Après tout, les navigateurs évoluent sans arrêt... et ils font un peu ce qu'ils veulent.
Avant, on avait des Opérateurs téléphoniques, ils n'étaient pas fait pour être des Fournisseurs Accès à Internet.
Les Fournisseurs Accès à Internet n'étaient pas fait pour faire de la télévision.
D'ailleurs, dans un premier temps, internet n'est pas fait pour regarder des vidéos.
Et maintenant, les FAI se mettent à la vidéo à la demande et ils veulent squater le côté jeux vidéos...
Alors, pourquoi pas des navigateurs qui s'optimisent pour les jeux ? Après tout, les navigateurs évoluent sans arrêt... et ils font un peu ce qu'ils veulent.
-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
Je partage plutôt l'avis d'Alcazar. Je préfère de loin jouer sur une machine conçue spécialement pour le jeu. Mist devrait permettre le développement rapide de jeu "classiques", tels qu'on les connaissait à l'époque de la Snes (même si l'esthétique sera revue à la hausse pour les supports les plus puissants).
Pour ce qui est du langage, j'ai surtout choisi par affinité. Je n'avais pas envie d'aller chercher un langage inconnu, alors que j'ai pas mal d'expérience en C++. Il est a la fois performant et portable (dans une certaine mesure).
J'en profite pour vous dire que j'ai encore un peu de travail avant de pouvoir commencer à préparer les podcasts. Un peu plus conséquent que je ne le pensais, mais ça en vaut vraiment la peine. J'espère avoir fini le code cette semaine, pour pouvoir préparer les vidéos la semaine prochaine
.
Pour ce qui est du langage, j'ai surtout choisi par affinité. Je n'avais pas envie d'aller chercher un langage inconnu, alors que j'ai pas mal d'expérience en C++. Il est a la fois performant et portable (dans une certaine mesure).
J'en profite pour vous dire que j'ai encore un peu de travail avant de pouvoir commencer à préparer les podcasts. Un peu plus conséquent que je ne le pensais, mais ça en vaut vraiment la peine. J'espère avoir fini le code cette semaine, pour pouvoir préparer les vidéos la semaine prochaine

-
- Messages : 78
- Inscription : 03 mars 2012, 15:37
Re: Projet Mist
toryudo, au final, le navigateur va tendre à devenir une sorte d'OS, mis à part qu'il déléguera les couches bas niveau (gestion du hardware, système de fichier, gestion des comptes... etc) au véritable OS.
Finalement, ce sera quelque chose d'assez semblable à ce que fait linux : on a un noyau en ligne de commande qui prends en charge toutes les couches bas niveau, qui peut ensuite démarrer une interface graphique (gnome, KDE, awesome etc...). Finalement, le navigateur va tendre à être une interface graphique.
C'est pour cela que je pense qu'un navigateur web n'est pas fait pour ça.
btw, djidane, j'ai un pote qui m'as passé ce lien hier :
http://www.dev-fr.org/index.php/topic,5267.0.html
ça pourra surement t'intéresser
Finalement, ce sera quelque chose d'assez semblable à ce que fait linux : on a un noyau en ligne de commande qui prends en charge toutes les couches bas niveau, qui peut ensuite démarrer une interface graphique (gnome, KDE, awesome etc...). Finalement, le navigateur va tendre à être une interface graphique.
C'est pour cela que je pense qu'un navigateur web n'est pas fait pour ça.
btw, djidane, j'ai un pote qui m'as passé ce lien hier :
http://www.dev-fr.org/index.php/topic,5267.0.html
ça pourra surement t'intéresser
-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
-
- Messages : 924
- Inscription : 19 juin 2011, 21:36
- Sexe : ♂ Masculin
Re: Projet Mist
Comme ils disent un peu partout, on part vers une tendance "tout online"... Jeux vidéos online (qu'on n'installe même plus), logiciels online, disque dur online...
Je n'ai aucune idée de comment ça pourra marcher, mais le but d'HTML 5, c'est bien de faire des applications ! Pourquoi pas un HTML x avec pour but le jeu ?
Je n'ai aucune idée de comment ça pourra marcher, mais le but d'HTML 5, c'est bien de faire des applications ! Pourquoi pas un HTML x avec pour but le jeu ?
-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
Effectivement, on tend vers le tout online mais personnellement, ça ne me plait pas beaucoup comme approche. Cependant, rien ne m'empêche de créer une version de Mist spécifique par après
.

-
- Messages : 78
- Inscription : 03 mars 2012, 15:37
Re: Projet Mist
Certes, mais lorsqu'un navigateur fait tout : medias, jeux, partage de fichiers etc...
je n'appelle plus ça un navigateur web : j'appelle ça un OS. Après, pourquoi pas un OS basé sur le web.
Après, je suis assez d'accord avec djidane et je n'aime pas non plus cette approche. Car au delà de l'aspect "simplification", la réelle raison se situe au niveau des DRM car les entreprises qui nous fournissent ces services web peuvent en contrôler l'usage que l'on en fait, contrairement à ce qui se fait offline.
Cela permet d'une part la lutte contre le piratage d'une part, mais également de brider les libertés des utilisateurs du fait que le piratage ne puisse plus être l'alternative aux clauses abusives - lisez les clauses de diablo 3, ça fait flipper : blizzard a le droit de fermer ton compte (donc de rendre ton jeu inutilisable, même pour du solo) sans avoir à fournir de justificatif de résiliation du contrat à la justice, et sans te rembourser bien entendu.
D'autre part, on a la surveillance des usages à des fins commerciales. C'est déjà le cas via google-analytics qui surveille la large majorité des sites sur le web, et dans une moindre mesure, de facebook.
Petit hors sujet afin de sensibiliser à la vie privée sur le net:
Je suis fondamentalement contre. Internet doit rester un outil de communication et non de surveillance. Internet doit permettre d'offrir de nouvelles fonctionnalités (jeux en réseau, partage de fichiers, médias, partage de la culture), et non de les restreindre via les DRM.
je n'appelle plus ça un navigateur web : j'appelle ça un OS. Après, pourquoi pas un OS basé sur le web.
Après, je suis assez d'accord avec djidane et je n'aime pas non plus cette approche. Car au delà de l'aspect "simplification", la réelle raison se situe au niveau des DRM car les entreprises qui nous fournissent ces services web peuvent en contrôler l'usage que l'on en fait, contrairement à ce qui se fait offline.
Cela permet d'une part la lutte contre le piratage d'une part, mais également de brider les libertés des utilisateurs du fait que le piratage ne puisse plus être l'alternative aux clauses abusives - lisez les clauses de diablo 3, ça fait flipper : blizzard a le droit de fermer ton compte (donc de rendre ton jeu inutilisable, même pour du solo) sans avoir à fournir de justificatif de résiliation du contrat à la justice, et sans te rembourser bien entendu.
D'autre part, on a la surveillance des usages à des fins commerciales. C'est déjà le cas via google-analytics qui surveille la large majorité des sites sur le web, et dans une moindre mesure, de facebook.
Petit hors sujet afin de sensibiliser à la vie privée sur le net:
Spoiler :
Bref, pour revenir au sujet, je suis contre le "tout" internet. Car finalement, ce qui devait être un outil de partage de la connaissance à été vite détourné afin de desservir les intérêts privés, et de limiter les libertés des utilisateurs sur les logiciels ou medias via les DRM.Je suis fondamentalement contre. Internet doit rester un outil de communication et non de surveillance. Internet doit permettre d'offrir de nouvelles fonctionnalités (jeux en réseau, partage de fichiers, médias, partage de la culture), et non de les restreindre via les DRM.
-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
Rien a ajouté, j'ai appris quelques trucs que je ne savais pas merci Alcazar
.
Pour en revenir à Mist, j'ai (enfin) terminé de coder l'affichage dans les grandes lignes. Je commence donc à préparer la vidéo. Je vais essayer de faire quelque chose de bien meilleure qualité (aussi bien sur le texte, l'organisation de la vidéo ainsi que le support visuel).
Bref, vu que je ne suis pas encore un expert des montages video ni de Photoshop, ça va sans doute me prendre un peu de temps. Le but de Mist, c'est aussi de vous faire découvrir des choses, et ça, je ne peux pas le faire correctement si je ne m'applique pas sur la réalisation des podcasts ^^.
Pas de date donc, mais j'espère avoir fini courant de la semaine prochaine (je vais pouvoir faire une pause sur le codage comme ça, c'est pas plus mal :p).
Pour en revenir à Mist, j'ai (enfin) terminé de coder l'affichage dans les grandes lignes. Je commence donc à préparer la vidéo. Je vais essayer de faire quelque chose de bien meilleure qualité (aussi bien sur le texte, l'organisation de la vidéo ainsi que le support visuel).
Bref, vu que je ne suis pas encore un expert des montages video ni de Photoshop, ça va sans doute me prendre un peu de temps. Le but de Mist, c'est aussi de vous faire découvrir des choses, et ça, je ne peux pas le faire correctement si je ne m'applique pas sur la réalisation des podcasts ^^.
Pas de date donc, mais j'espère avoir fini courant de la semaine prochaine (je vais pouvoir faire une pause sur le codage comme ça, c'est pas plus mal :p).

-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
[Mist] L'affichage (1/3) - Gestion des formats d'écran
Après avoir décrit les différents composants qui seront utilisés par Mist dans l'article précédent, nous allons cette fois-ci nous concentrer plus précisément sur l'affichage. Beaucoup de choses à dire, donc on va faire ça par étape. Aujourd'hui, on s'attaque à la gestion des formats d'écran.
Un des points forts de Mist repose sur sa portabilité. Cela implique que le changement de support doit se faire sans douleur.
Une équipe de développement doit se fixer un format d'écran "type" avec lequel elle va travailler. Or, qui dit support différent dit écran différent, nous obligeant parfois à changer de format par rapport à ce qui avait été prévu au départ. Sur Xbox 360 ou PS3, ça peut aussi bien être du 16:9 que du 4:3, sur PC on peut également ajouter le 16:10, et qui sait, peut-être qu'un autre format plus "exotique" aujourd'hui deviendra le standard de demain dans les années à venir ?

Comment faire passer Chrono Trigger sur un écran 16:9 ?
Comment faire passer Dust: An Elysian Tail sur un écran 4:3 ?
Les constructeurs de télévision ont déjà été confrontés à ce problème lors de la transition 4:3 vers 16:9, une époque durant laquelle seule une poignée de chaînes utilisait le format "écran large" qui est si commun de nos jours. Ils ont donc imaginer diverses techniques pour arriver à adapter tant bien que mal une image 4:3 en 16:9, et le résultat n'est pas toujours des plus esthétique ...
L'approche Letter-Box
Ou "boîte aux lettres". Elle consiste à centrer l'image dans l'écran et de remplir les "trous" avec du noir. Le nom "boîte aux lettres" vient de la ressemblance avec ... une boîte aux lettres (ah bon ?) lorsque l'on adapte une image large sur un écran "moins large" (comme un film sur une télévision 4:3).

Quel gaspillage !
Il s'agit sans doute de ma méthode préférée car la plus fidèle à l'expérience initialement prévue. Sur un grand écran, le gaspillage n'est pas si gênant que ça, mais lorsqu'il est déjà très petit (comme sur une console portable, ou smartphone), gaspiller entre 25% et 50% de la surface de l'écran peut rendre l'expérience peu confortable pour le joueur. Dans ce genre de situation, la première chose qui me viendrait à l'esprit serait "portage baclé". Peut-on faire mieux ?
L'approche Stretched
Où l'image est étirée pour occuper l'intégralité de l'espace.

Mon dieu que c'est moche !
Je crois que tout le monde sera d'accord pour dire que le rendu est tout sauf esthétique. Je préfère encore utiliser des bandes noires plutôt que d'infliger ça au joueur ! Et pourtant, ce mode d'affichage trouvera une utilité dans un prochain article ^^. Il nous reste encore une dernière alternative ...
L'approche Pan & Scan
Il suffit de découper l'image !

Voila, ça rend bien mieux comme ça non ?
Ca parait tellement simple dit comme ça. On utilise tout l'écran, pas de déformation dégueulasse. Problème résolu donc ? Pas tout à fait ^^.
Ce genre d'approche amène un TRES grand nombre de problèmes (oui si c'est en gras souligné, c'est que c'est que l'heure est vraiment grave :p). Je vais illustrer tout ça avec quelques exemples biens choisis ^^.
Un aperçu des défauts du Pan & Scan
L'interface
Les plus fins observateurs l'auront sans doute remarqués: le passage en 4:3 de Dust: An Elysian Tail coupe purement et simplement une partie de l'interface. De manière générale, cela signifie qu'il faut adapter l'interface en fonction de l'écran, aussi bien en terme de taille que de position.

Et voila comment rendre une interface totalement inutilisable :/.
Le saut de l'ange
Voici une situation relativement banale, où le joueur doit sauter au dessus d'un trou.

Ca c'est un vrai trou !
Que se passe-t-il si on passe en 4:3 ?

Je suis Keblo :s.
Le joueur est complètment perdu car il ne voit pas la plate-forme de droite ! Il s'agit ni plus ni moins d'un saut de l'ange (ou à l'aveugle). Le pauvre joueur 4:3 va plutôt penser qu'il est face à un cul-de-sac, et va sans doute errer un moment dans le niveau avant de tenter le grand plongeon (à moins qu'au bout de 2 longues minutes de recherche, il se soit résolu à chercher la solution sur le net :p).
Des solutions ?
Il y a toujours une solution pour peu que l'on y réfléchisse suffisamment ^^. Pour ce qui est de l'interface, le problème est qu'on définit sa position et sa taille en fonction de l'image du jeu et non de l'écran. On peut très facilement les résoudre automatiquement.
Par exemple, il suffit de plaçer la barre de vie en haut à gauche de l'écran (et non de l'image).

Et voilà le travail :p.
Quant au problème du saut de l'ange, l'industrie du cinéma y a déjà été confronté. Nombre de films sont projetés dans les formats 1,85:1, et 2,39:1 (merci Wikipédia :p). A titre de comparaison, un écran 16:9 est équivalent à un format 1,77:1. En clair, les écrans des salles obscures sont beaucoup plus larges que nos chères télévisions HD.
Lorsqu'ils doivent mettre en vente un film sur DVD ou Bluray, c'est toujours mieux si le consommateur ne doit pas se taper un affichage letter-box ou stretched. Alors on découpe (c'est plus vendeur). Mais ça peut poser soucis dans certaines scènes, où, par exemple, quelque chose (personnage ou objet) de particulièrement important est mis se trouve à l'extrême gauche/droite de l'image (comme la seconde plate-forme pour le problème du saut de l'ange).
Pour que ce "quelque chose" soit visible par le spectateur, ils ont eu la bonne idée de procéder à un recadrage. L'idée, c'est de ne pas plaçer la "fenêtre" au centre de l'image, mais en fonction de la situation.
Du coup, on se rend immédiatement compte qu'avec un cadrage adapté, le problème du saut de l'ange peut être résolu très facilement.

Tout devient clair !
Ils ont été encore plus loin: cette "fenêtre" peut être déplaçée dynamiquement, passant progressivement d'une position à l'autre ! En effet, si l'objet important se déplaçe, il faut accompagner son mouvement pour ne pas qu'il sorte du cadre.
Le problème de cette approche, c'est qu'il faut paramètrer tout ça "à la main". Dans un film où on connait précisément le déplaçement de la caméra, et les formats d'écran utilisés par les cinéphile, on peut en général utiliser le Pan & Scan, bien que cela demande un certain travail post-production.
Mais pour ce qui est de la création d'un jeu, c'est une toute autre histoire. Certains cas problématiques ne pourraient pas être résolus proprement. Il faudra alors revoir la structure du niveau pour que ça rentre dans le cadre pour les formats d'écran "type". Si on reprend le cas du saut de l'ange par exemple, si le cadre est trop étroit, on ne pourra pas y faire rentrer Yoshi et la plate-forme se trouvant à l'extrémité droite.
Réaliser cela automatiquement n'est pas impossible si on s'autorise à 'dézoomer', mais je crains que le résultat ne soit beaucoup moins "propre" qu'un recadrage au cas par cas (au point de gêner le joueur, en rendant son personnage beaucoup trop petit, ou en enchaînant des 'zoom'/'dézoom' intempestifs). Bref, on ne fait pas de miracle ^^.
J'ai malgré tout intégré ce mode d'affichage pour plusieurs raisons. Dans la pratique, on ne devrait pas devoir recourir à un découpage brutal, la plupart des écrans étant en 16:9 (ou en 16:10) de nos jours. De plus, les problèmes ne surviennent qu'en de très rares cas. Et dans le fond, c'est le mode d'affichage le plus confortable pour l'utilisateur.
Il n'empêche que le plus simple reste le mode Letter-box qui garanti la même visibilité pour tous, et épargne ainsi bons nombre de tracas aux développeurs et testeurs :p.
Je vous invite à visionner la vidéo résumé pour voir tourner Mist
. Quand je vous disais qu'il y avait un tas de choses à dire (et dire que ce n'est que le premier article sur l'affichage ^^).
Vidéo résumé
Après avoir décrit les différents composants qui seront utilisés par Mist dans l'article précédent, nous allons cette fois-ci nous concentrer plus précisément sur l'affichage. Beaucoup de choses à dire, donc on va faire ça par étape. Aujourd'hui, on s'attaque à la gestion des formats d'écran.
Un des points forts de Mist repose sur sa portabilité. Cela implique que le changement de support doit se faire sans douleur.
Une équipe de développement doit se fixer un format d'écran "type" avec lequel elle va travailler. Or, qui dit support différent dit écran différent, nous obligeant parfois à changer de format par rapport à ce qui avait été prévu au départ. Sur Xbox 360 ou PS3, ça peut aussi bien être du 16:9 que du 4:3, sur PC on peut également ajouter le 16:10, et qui sait, peut-être qu'un autre format plus "exotique" aujourd'hui deviendra le standard de demain dans les années à venir ?

Comment faire passer Chrono Trigger sur un écran 16:9 ?
Comment faire passer Dust: An Elysian Tail sur un écran 4:3 ?
L'approche Letter-Box
Ou "boîte aux lettres". Elle consiste à centrer l'image dans l'écran et de remplir les "trous" avec du noir. Le nom "boîte aux lettres" vient de la ressemblance avec ... une boîte aux lettres (ah bon ?) lorsque l'on adapte une image large sur un écran "moins large" (comme un film sur une télévision 4:3).

Quel gaspillage !
L'approche Stretched
Où l'image est étirée pour occuper l'intégralité de l'espace.

Mon dieu que c'est moche !
L'approche Pan & Scan
Il suffit de découper l'image !

Voila, ça rend bien mieux comme ça non ?
Ce genre d'approche amène un TRES grand nombre de problèmes (oui si c'est en gras souligné, c'est que c'est que l'heure est vraiment grave :p). Je vais illustrer tout ça avec quelques exemples biens choisis ^^.
Un aperçu des défauts du Pan & Scan
L'interface
Les plus fins observateurs l'auront sans doute remarqués: le passage en 4:3 de Dust: An Elysian Tail coupe purement et simplement une partie de l'interface. De manière générale, cela signifie qu'il faut adapter l'interface en fonction de l'écran, aussi bien en terme de taille que de position.

Et voila comment rendre une interface totalement inutilisable :/.
Le saut de l'ange
Voici une situation relativement banale, où le joueur doit sauter au dessus d'un trou.

Ca c'est un vrai trou !

Je suis Keblo :s.
Des solutions ?
Il y a toujours une solution pour peu que l'on y réfléchisse suffisamment ^^. Pour ce qui est de l'interface, le problème est qu'on définit sa position et sa taille en fonction de l'image du jeu et non de l'écran. On peut très facilement les résoudre automatiquement.
Par exemple, il suffit de plaçer la barre de vie en haut à gauche de l'écran (et non de l'image).

Et voilà le travail :p.
Lorsqu'ils doivent mettre en vente un film sur DVD ou Bluray, c'est toujours mieux si le consommateur ne doit pas se taper un affichage letter-box ou stretched. Alors on découpe (c'est plus vendeur). Mais ça peut poser soucis dans certaines scènes, où, par exemple, quelque chose (personnage ou objet) de particulièrement important est mis se trouve à l'extrême gauche/droite de l'image (comme la seconde plate-forme pour le problème du saut de l'ange).
Pour que ce "quelque chose" soit visible par le spectateur, ils ont eu la bonne idée de procéder à un recadrage. L'idée, c'est de ne pas plaçer la "fenêtre" au centre de l'image, mais en fonction de la situation.
Du coup, on se rend immédiatement compte qu'avec un cadrage adapté, le problème du saut de l'ange peut être résolu très facilement.

Tout devient clair !
Ils ont été encore plus loin: cette "fenêtre" peut être déplaçée dynamiquement, passant progressivement d'une position à l'autre ! En effet, si l'objet important se déplaçe, il faut accompagner son mouvement pour ne pas qu'il sorte du cadre.
Le problème de cette approche, c'est qu'il faut paramètrer tout ça "à la main". Dans un film où on connait précisément le déplaçement de la caméra, et les formats d'écran utilisés par les cinéphile, on peut en général utiliser le Pan & Scan, bien que cela demande un certain travail post-production.
Mais pour ce qui est de la création d'un jeu, c'est une toute autre histoire. Certains cas problématiques ne pourraient pas être résolus proprement. Il faudra alors revoir la structure du niveau pour que ça rentre dans le cadre pour les formats d'écran "type". Si on reprend le cas du saut de l'ange par exemple, si le cadre est trop étroit, on ne pourra pas y faire rentrer Yoshi et la plate-forme se trouvant à l'extrémité droite.
Réaliser cela automatiquement n'est pas impossible si on s'autorise à 'dézoomer', mais je crains que le résultat ne soit beaucoup moins "propre" qu'un recadrage au cas par cas (au point de gêner le joueur, en rendant son personnage beaucoup trop petit, ou en enchaînant des 'zoom'/'dézoom' intempestifs). Bref, on ne fait pas de miracle ^^.
J'ai malgré tout intégré ce mode d'affichage pour plusieurs raisons. Dans la pratique, on ne devrait pas devoir recourir à un découpage brutal, la plupart des écrans étant en 16:9 (ou en 16:10) de nos jours. De plus, les problèmes ne surviennent qu'en de très rares cas. Et dans le fond, c'est le mode d'affichage le plus confortable pour l'utilisateur.
Il n'empêche que le plus simple reste le mode Letter-box qui garanti la même visibilité pour tous, et épargne ainsi bons nombre de tracas aux développeurs et testeurs :p.
Je vous invite à visionner la vidéo résumé pour voir tourner Mist
Vidéo résumé

-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
Salut à tous ^^.
Je vais un peu faire le point concernant le projet. Je me rends compte qu'en plus de me demander énormément de temps, communiquer via des articles/vidéos n'est pas l'idéal (manque d'expérience & cie) et donc moi je perds mon temps et vous, ça ne vous sert à rien :p.
Pour diverses circonstances que je ne vais pas étaler ici, j'ai beaucoup moins de temps à consacrer au projet. Je pense donc qu'il vaut mieux que je consacre le peu de temps de disponible sur le moteur en lui-même.
Je retenterais peut-être l'expérience quand j'aurais atteint la partie plus "gameplay" du moteur.
Donc ne vous en faites pas, le projet ne mourra pas, c'est mon rêve de gosse et je compte pas le laisser tomber ^^.
Je vais un peu faire le point concernant le projet. Je me rends compte qu'en plus de me demander énormément de temps, communiquer via des articles/vidéos n'est pas l'idéal (manque d'expérience & cie) et donc moi je perds mon temps et vous, ça ne vous sert à rien :p.
Pour diverses circonstances que je ne vais pas étaler ici, j'ai beaucoup moins de temps à consacrer au projet. Je pense donc qu'il vaut mieux que je consacre le peu de temps de disponible sur le moteur en lui-même.
Je retenterais peut-être l'expérience quand j'aurais atteint la partie plus "gameplay" du moteur.
Donc ne vous en faites pas, le projet ne mourra pas, c'est mon rêve de gosse et je compte pas le laisser tomber ^^.

-
- • En ligne •
- Messages : 10006
- Inscription : 20 juin 2011, 02:25
- Sexe : ♂ Masculin
- Localisation : Paris
Re: Projet Mist
J'espère bien ca serait vraiment dommage...
www.hedg.fr : Le site qu'on est bien dedans !
-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
Je m'impose de travailler dessus au moins 1 demi-journée par semaine (le dimanche pour l'instant). Donc du coup c'est beaucoup moins que quand j'ai commencé (je tournais à 5-6 demi-journée/semaine en juillet-aout-septembre pour vous donner un ordre d'idée).
Pour l'instant je peux pas faire plus, mais je devrais pouvoir souffler un peu à partir de Vendredi prochain, ce qui je l'espère me permettra d'augmenter un peu la cadence.
En ce moment, je bosse sur la partie audio. Le son marche déjà mais j'aimerais ajouter une gestion du son en 3D pour le moteur. En gros, ça permettrait avec un casque de vous faire croire qu'un son vient de derrière vous par exemple.
Normalement ça devrait fonctionner dimanche :p.
Après ça, je m'attaquerai à la gestion de la manette. Je compte aller un peu plus loin que ce qui se fait d'habitude pour gérer nativement les combinaisons de touches comme dans les jeux de combats (les quarts de cercle, ...).
Et après, on commencera à attaquer le moteur à proprement parler (mais je détaillerai ça plus tard en temps voulu).
Pour le côté "technique", je fais d'abord une première version uniquement avec SDL. Je compte switcher sur OpenGL par après. Ca sera une sorte de test pour savoir si on peut effectivement changer de librairie facilement (ce qui est le but visé).
Voila voila ^^.
Pour l'instant je peux pas faire plus, mais je devrais pouvoir souffler un peu à partir de Vendredi prochain, ce qui je l'espère me permettra d'augmenter un peu la cadence.
En ce moment, je bosse sur la partie audio. Le son marche déjà mais j'aimerais ajouter une gestion du son en 3D pour le moteur. En gros, ça permettrait avec un casque de vous faire croire qu'un son vient de derrière vous par exemple.
Normalement ça devrait fonctionner dimanche :p.
Après ça, je m'attaquerai à la gestion de la manette. Je compte aller un peu plus loin que ce qui se fait d'habitude pour gérer nativement les combinaisons de touches comme dans les jeux de combats (les quarts de cercle, ...).
Et après, on commencera à attaquer le moteur à proprement parler (mais je détaillerai ça plus tard en temps voulu).
Pour le côté "technique", je fais d'abord une première version uniquement avec SDL. Je compte switcher sur OpenGL par après. Ca sera une sorte de test pour savoir si on peut effectivement changer de librairie facilement (ce qui est le but visé).
Voila voila ^^.

-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
J'ai pris un peu de retard mais le composant audio est terminé. Aujourd'hui je nettoie un peu le code et je m'attaque au contrôleur la semaine prochaine
.

-
- Messages : 636
- Inscription : 31 déc. 2011, 15:31
- Sexe : ♂ Masculin
- Localisation : Tatooine
Re: Projet Mist
Ben ça avance plutôt bien dis donc
Bon courage pour ce projet. Tes idées et explications sont très intéressantes en tout cas.
-
- Messages : 143
- Inscription : 03 nov. 2012, 07:37
Re: Projet Mist
C'est sur très beau projet ^^.
Je pense qu'un jour si je trouve le courage je vais essayer de faire le même projet
.
En tout cas bon courage pour la suite.
Je pense qu'un jour si je trouve le courage je vais essayer de faire le même projet
En tout cas bon courage pour la suite.
-
- Messages : 1975
- Inscription : 31 juil. 2012, 11:54
- Sexe : ♂ Masculin
Re: Projet Mist
Merci pour les encouragements
.
J'ai pas travaillé dessus ce week-end car j'attendais mon adaptateur Snes -> PC. Il est arrivé aujourd'hui donc je vais pouvoir m'y mettre ce week-end.
C'est plus "compliqué" que ça en à l'air pour cette partie, je ne fais pas un simple mapping entre la manette physique et la manette "software".
En programmation, tout fonctionne par envoi de signaux. En général pour une manette, on envoie un signal pour dire "On vient d'appuyer sur le bouton A", et ce n'est qu'après qu'on fait le lien avec l'action de sauter par exemple.
Je veux faire ça un peu différemment. Ma "manette software" va envoyer des signaux de plus "haut niveau", du genre "Le joueur a effectué l'action pour sauter". L'idée, c'est d'avoir en natif un gestionnaire de combinaisons de touche.
Exemple si je controle Ryu dans SSF2, au lieu d'envoyer les signaux "Bas, Bas + Droite, Droite, A" on aura plutôt "Le joueur lance un Hadoken". Ca sera très pratique après, car détecter un Hadoken c'est pas si facile que ça.
Si on regarde ce qui se passe en général, ça donne plutôt: "Bas, Bas, Bas, Bas, Bas + Droite, Bas + Droite, Droite, Droite, Droite + A, Droite + A, A". En clair, il faut être flexible à chaque étape. Si on est pas assez flexible, le joueur n'arrivera pas à sortir son Hadoken. Si on est trop flexible, il le sortira par accident.
Bref, j'aimerais avoir ça en natif sur le moteur, que ce gestionnaire soit dispo pour tous les jeux développer sur Mist.
Voila voila je vous tiens au courant
.
J'ai pas travaillé dessus ce week-end car j'attendais mon adaptateur Snes -> PC. Il est arrivé aujourd'hui donc je vais pouvoir m'y mettre ce week-end.
C'est plus "compliqué" que ça en à l'air pour cette partie, je ne fais pas un simple mapping entre la manette physique et la manette "software".
En programmation, tout fonctionne par envoi de signaux. En général pour une manette, on envoie un signal pour dire "On vient d'appuyer sur le bouton A", et ce n'est qu'après qu'on fait le lien avec l'action de sauter par exemple.
Je veux faire ça un peu différemment. Ma "manette software" va envoyer des signaux de plus "haut niveau", du genre "Le joueur a effectué l'action pour sauter". L'idée, c'est d'avoir en natif un gestionnaire de combinaisons de touche.
Exemple si je controle Ryu dans SSF2, au lieu d'envoyer les signaux "Bas, Bas + Droite, Droite, A" on aura plutôt "Le joueur lance un Hadoken". Ca sera très pratique après, car détecter un Hadoken c'est pas si facile que ça.
Si on regarde ce qui se passe en général, ça donne plutôt: "Bas, Bas, Bas, Bas, Bas + Droite, Bas + Droite, Droite, Droite, Droite + A, Droite + A, A". En clair, il faut être flexible à chaque étape. Si on est pas assez flexible, le joueur n'arrivera pas à sortir son Hadoken. Si on est trop flexible, il le sortira par accident.
Bref, j'aimerais avoir ça en natif sur le moteur, que ce gestionnaire soit dispo pour tous les jeux développer sur Mist.
Voila voila je vous tiens au courant
