Skip to Content

[Projet] Mist2D

Dernière contribution

31 posts / 0 nouveau(x)
Portrait de djidane535
Hors ligne
A rejoint: 4 septembre 2011
Contributions: 195
[Projet] Mist2D

[MAJ] 05-01-2014

Bonjour à tous ^^.

Je vais vous présenter mon projet personnel Mist2D. Je vous renvoie sur mon topic de présentation si vous voulez en savoir plus sur moi: http://www.hedg.fr/forum/viewtopic.php?f=10&t=1669

[Mist2D] - Présentation

Qu'est-ce que Mist2D ?
Mist2D est une "console virtuelle" qui accueillera des jeux dédiés exclusivement en 2D. Envie de jouer sur votre smartphone ou votre PC ? Pas de soucis ! Il vous suffit d'installer Mist2D sur la machine de votre choix et d'y transférer vos jeux.

Lorsqu'une équipe souhaite réaliser un jeu, celle-ci doit nécessairement cibler une ou plusieurs machines. Le développement est alors freiné par la nécessité de devoir gérer plusieurs machines, avec parfois différents types de contrôles, des écrans aux caractéristiques variées (résolution, format, 3D stéréoscopique, ...).

Avec Mist2D, rien de tout cela ! L'équipe réalisera son jeu pour une "console virtuelle" et c'est Mist2D qui adaptera automatiquement celui-ci en fonction de la machine sur laquelle les joueurs souhaitent jouer.

Le fonctionnement sera relativement similaire à celui d'un émulateur. Vous installez votre émulateur sur votre PC (= Mist2D) et vous lui donner une rom (= le jeu). Si vous voulez jouer au même jeu sur votre smartphone, vous installerez un autre émulateur mais vous lui donnerez exactement le même jeu !

De plus, Mist2D permettra de conserver sa ludothèque de jeu, même si de nouvelles machines sortent. Une fois Mist2D porté sur une nouvelle machine, tous les jeux développés précédemment le seront eux aussi ! Si dans 10 ans un nouveau système d'exploitation sort, vous pourrez jouer aux premiers jeux Mist2D dès que celui-ci aura été porté sur ce nouvel OS !

En plus de proposer une telle flexibilité, Mist2D sera son propre kit de développement. N'importe qui pourra développer un jeu Mist2D. La librairie sera 100% orientée pour le développement de jeux 2D, et comportera un grand nombre fonctionnalités telles que le scrolling, la parallaxe, l'animation & déformation de sprites, le son 3D, la 3D stéréoscopique.

Vous aurez également un système "original" permettant de structurer de manière simple et efficace les "méchaniques" de jeu. Un programmeur averti sera capable de réaliser un prototype de n'importe quel type de jeu en 1 semaine. De cette manière, la majeure partie du temps de développement pourra être consacré aux autres disciplines (la création des ressources graphiques/sonores + le game design).

Le prix
Les version PC (Windows/Mac) de Mist2D seront gratuites. Les autres seront payantes à un prix qui n'est pas encore fixé (mais qui devrait être relativement bas).

Fiche technique
Mist est un projet codé en C++, indépendamment des outils propres à un support spécifique. Cela permettra au projet d'être porté aisément sur tout support supportant le C++. Il n'est pas à exclure que je change de langage pour m'adapter à un support qui me tiendrait vraiment à coeur et ne supportant pas le C++ (ou pour lequel il y aurait une forte demande).

Les développeurs écriront leurs jeux en Lua, un langage interprété assez proche du C, mais suffisamment flexible que pour permettre l'utilisation des concepts basiques de l'orienté-objet (classe & héritage). J'ai également inclus du code Lua permettant de structurer efficacement un jeu. Ce système sera décrit en détail dans les tutoriaux qui accompagneront la sortie de Mist2D. A terme,

Une version Windows/Mac sera disponible gratuitement au lancement de Mist2D. Je prévois de déployer Mist2D sur un maximum de machines, en m'attaquant en priorité aux Smartphones et Tablettes (IOS & Android). S'il y a possibilité, j'aimerais également porter Mist2D sur des consoles de jeux, mais puisqu'il s'agit d'un modèle assez particulier, je ne peux pas affirmer à coup sûr que ce sera possible.

Je pense qu'il me faudra environ 1 mois pour porter Mist2D sur un nouveau support.

Planning
En ce moment, je travaille sur un prototype de Shoot em up pour m'assurer qu'il ne manque pas de fonctionnalité "indispensable" à Mist2D. J'aimerais cependant inclure des fonctionnalités de zoom/rotation pour les sprites ainsi qu'une gestion de HUD (notamment pour les textes), mais celles-ci ne seront sans doute pas présente dans cette première version.

Je travaillerais ensuite sur l'interface de Mist2D. Celle-ci devrait être assez proche de celles que l'on retrouve pour les émulateurs (dans sa version PC en tout cas). Son but est de simplifier la configuration de Mist2D, et d'offrir quelques outils graphiques sommaires pour faciliter le debuggage pour les développeurs.

Une fois tout ceci terminé, je travaillerais sur le site internet dédié à Mist2D, qui permettra à tout un chacun de télécharger Mist2D, de suivre les différentes mises à jour, d'accèder à la documentation et aux tutoriaux, ainsi que de me faire part directement de vos attentes/retours (aussi bien du côté des joueurs que du côté des développeurs).

  • Janvier: Protoype Shoot em up
  • Fevrier/Mars: Interface Mist2D
  • Avril-Mai-Juin: Site officiel

Si ce planning idéal est respecté, Mist2D 1.0 devrait être disponible le 1/07/2014 en même temps que le site (soit 2 ans de développement).

Edité par djidane535 le 05/01/2014 - 20:23
Portrait de djidane535
Hors ligne
A rejoint: 4 septembre 2011
Contributions: 195
Re: [Projet] Mist

Post Réservé

Edité par djidane535 le 04/01/2013 - 20:16
Grand Bec :V
Klonoa
Portrait de lecorbak
Hors ligne
A rejoint: 15 novembre 2011
Contributions: 8246
Re: [Projet] Mist

salut à toi.
ton outil m'intéresserait bien vu que je compte développer des jeux et actuellement, j'essaie de développer un shoot'em up.
cela dit, je suis actuellement sur le framework de 'crosoft, donc je pense qu'il sera trop tard pour moi pour utiliser ton outil pour développer mon jeu actuel.
en plus de cela, j'ai perdu la foi face aux projets amateurs, donc...
mais il n'est pas exclu que pour un futur jeu, je puisse utiliser ton outil si celui-ci est fini et bien codé.
en tout cas, cela m'intéresse quand même de suivre ton projet.

Edité par lecorbak le 12/08/2012 - 21:54
Portrait de Harro
Hors ligne
A rejoint: 1 septembre 2011
Contributions: 5159
Re: [Projet] Mist

Eh bien je dois dire que la présentation m'a bien plu, l'objectif que tu désire atteindre me plait bien. Le mélange de gameplay est une idée que j'ai toujours voulu voir, y'a eu Nier qui m'a bien plus à ce niveau par exemple.
Je vais suivre ça de très près moi ;)

Bon je vois que apparemment tu compte faire une table des matières, dans ce cas tu aurais du prévoir des post reservés, là c'est trop tard, donc si tu veux recommencé, fais le maintenant, je supprimerai ce topic là c'est pas grave.

Portrait de lehooperien
Hors ligne
A rejoint: 30 juin 2012
Contributions: 1706
Re: [Projet] Mist

Moi aussi, j'ai voulu créer un jeu vidéo avec un ami, mais c'est en pause, et tu va mieux réussir, car tu as plus d'ambition que moi, d'après ce que je vois. Bonne chance pour le projet!

L'amour est compliqué à trouver, mais il est facile de le perdre...
J'ai 13 ans!

Portrait de djidane535
Hors ligne
A rejoint: 4 septembre 2011
Contributions: 195
Re: [Projet] Mist

Merci ^^.

Pour les posts réservés, mon soucis c'est que je n'ai absolument aucune idée du nombre de posts qu'il me faudra, je préfère faire des liens dans le premier post. Et comme ça, tout le monde sait dès que j'ai quelque chose de nouveau à montrer. Mais merci de me l'avoir proposé ;).

Portrait de djidane535
Hors ligne
A rejoint: 4 septembre 2011
Contributions: 195
Re: [Projet] Mist


Merci à tous.

Je suis vraiment très impatient de terminer Mist pour tout vous dire (mais je suis très minutieux, donc ça va encore prendre pas mal de temps, le projet n'en est qu'à ses débuts ^^).

Je prend tout le temps des notes sur des post-it quand des idées me viennent, et j'ai vraiment hâte de les expérimenter et de vous les soumettre pour voir ce que vous en penser, si elles pourront intégrer le Projet Reality, ... Je commence d'ailleurs à manquer de place pour ajouter des post-it, va falloir que je trouve autre chose pour classer mes idées xD.

Je vais essayer de faire 1 article + 1 vidéo résumé à chaque fois que j'aurais fait des avancées. Je ne montrerais jamais de code source parce que ce n'est pas passionnant (ni à présenter, ni à regarder :p), mais sachez que derrière chaque vidéo, il y a du code derrière ^^.

La prochaine MAJ est déjà terminée, j'essaierai de la mettre ici demain soir ou après-demain.

Voila voila ^^.

Portrait de Alnes
Hors ligne
A rejoint: 1 septembre 2011
Contributions: 1351
Re: [Projet] Mist

Ca peut-être intéressant en espérant pour toi que ça se termine un jour. C'est généralement le problème de ce genre de projet dont la durée de développement est très longue.

En tout cas ça me semble plutôt intéressant !

Donc si j'ai bien compris ça sera un genre de bibliothèque/framework pour les programmeurs ?

Tu comptes développer jusqu'à quel niveau ? C'est à dire est qu'il y aura une flexibilité assez grande pour pas que tous les jeux développés avec ton moteur se ressemblent ?

Et sinon tu utilises une bibliothèque graphique en particulier ? Ou peut-être que tu créés ta propre bibliothèque graphique ? x) De même pour le son, les entrées-sorties en gros pour tout ce qui est très bas niveau tu comptes utiliser quoi comme bibliothèque ?

En tout cas bonne chance parce que c'est loin d'être de tout repos ! (Enfin tu dois le savoir à mon avis !)

Portrait de djidane535
Hors ligne
A rejoint: 4 septembre 2011
Contributions: 195
Re: [Projet] Mist


C'est exactement ça. L'idée c'est d'avoir des outils adaptés parfaitement au jeu vidéo.

Je le développe dans une optique de multi-support, donc ça ne dépendra d'aucune librairie en particulier. Biensur j'en utiliser une pour avoir une première version (SDL pour la version PC) mais je code Mist de telle sorte qu'on puisse aisément en changer en fonction des besoins (si je vois que DirectX marche beaucoup mieux que SDL pour Windows, je pourrais passer sur DirectX sans devoir refaire tout le moteur à partir de 0).

Et oui je sais que ce genre de projet n'est pas souvent couronné de succès (à cause des longs temps de développement notamment :/). En espérant que je tienne bon jusqu'au bout :D.

Portrait de djidane535
Hors ligne
A rejoint: 4 septembre 2011
Contributions: 195
Re: [Projet] Mist

_
[Mist] Le support

_

Qu'est-ce qu'un support de jeu vidéo ?

_

En effet, le support à considérablement évolué au fil des années, prenant sans cesse de nouvelles formes. D'ailleurs, bon nombre de support cohabitent ensemble aujourd'hui: console de salon, consoles portables et smartphones. Avant de pouvoir créer un moteur de jeu "multi-support", il est donc naturel de se demander ce qui les relie tous, ce qu'ils ont en commun.

_

Je distingue 3 composants essentiels: le contrôleur, l'affichage et les hauts-parleurs.

_
_

Le contrôleur

Je suis certain que rien qu'en employant ce terme, nombre d'entre-vous n'auront pas la même image en tête. Certains vont penser au gamepad de leur console fétiche, d'autres au combo clavier/souris, et je ne serais pas surpris d'apprendre que certains auront pensé à leur cher smartphone ou tablette (voir même à Kinect, pour les plus masochistes d'entre-nous ^^).

_

Fondamentalement, le rôle d'un contrôleur est de nous permettre d'interagir avec le jeu vidéo. Mais sa nature est très variée. Je déplore très souvent l'approche "naïve" de bons nombre de développeurs sur smartphone, qui développent leur jeu avec pour image du contrôleur un gamepad typé console, qui se retrouve simulé tant bien que mal par un écran tactile.

_

De mon point de vue, la première difficulté sera de formaliser tous les types d'informations que peuvent fournir les contrôleur. Il y a par exemple des boutons à 2-états, qui sont soit pressés, soit non-pressés (comme une croix directionnelle, constituée de 4 boutons à 2-états). Il y a des touches analogiques (comme les gachettes) et les sticks analogiques (simple variante obtenue à l'aide de 2 touches analogiques). Un écran tactile qui indique sur quels pixels de l'écran se trouve un doigt, ...

_

L'autre grand défi est la gestion de la mémoire du contrôleur. Prenons un exemple simple: un bon vieux Mario 2D. Quand nous appuyons sur la touche "saut", Mario se met à sauter. Jusque là, rien de bien compliquer pour le programmeur. Cependant, nous savons tous que nous pouvons "doser" le saut de Mario: plus la pression sur la touche est longue, plus Mario sautera haut (jusqu'à un certain point évidemment :p).

_

Cela se traduit pour le programmeur par l'obligation de mémoriser le nombre de frames (images) pendant lesquelles le joueur à presser cette fameuse touche. Ce n'est pas encore bien compliqué, mais il y a tout un mécanisme à mettre en place derrière: on ne peut pas se contenter de regarder le contrôleur dans ses moindres détails (touches pressées, directions des sticks, ...), mais il faut également tenir compte de ce qui s'est déjà passé.

_

Un autre exemple beaucoup plus complexe: Street Fighter. Lorsque je fais naïvement un quart de cercle avant + poing léger, Ryu va s'exécuter et lancer un magnifique HADOKEN ! Mais pour un programmeur, c'est un vériable casse-tête !

_

Pendant combien de frames le joueur doit-il maintenir la touche bas avant d'aller appuyer sur la touche droite ? Combien de frame pour maintenir les 2 touches ? Combien de frames pour la touche droite seule ? Et le poing léger, le joueur doit appuyer dessus à quel moment ?

_

Que de questions ! Si on est trop strict, la vérification est simple, mais le joueur sera incapable de réaliser le mouvement. Si on ne l'est pas assez, le jeu sera trop maniable, au point que le coup partir sans que le joueur ne comprenne pourquoi.

_
_

L'affichage

Element essentiel de notre support de jeu, l'affichage nous permet de voir ce qui se passe dans l'univers du jeu. D'un support à l'autre, il peut varier énormément (nombre d'écrans, résolution, gestion de la 3D relief, format, ...).

_

J'ai supposé un écran unique, au format 16/9. Je pense en effet que le cas de la DS/3DS est on ne peut plus intéressant, et offre des gameplay plutôt originaux quand ils sont biens exploités. Cependant, gérer deux écrans ne me semble pas simple en terme de conception. Si notre jeu n'en tient pas compte dès le départ, le second écran se contente juste de présenter un menu ou une carte. A l'inverse, en tenir compte rend pratiquement impossible le portage vers un support mono-écran. C'est pour cette raison, c'est-à-dire la difficulté d'atteindre différents supports, que j'ai décidé de l'écarter pour l'instant.

_

La résolution offre aussi son lot de problèmes. Pour plaçer nos éléments sur l'écran, il nous faut des coordonnées, qui sont directement dépendantes de la résolution d'écran ! Ainsi, plaçer un coffre en 1000; 800 aura du sens pour une résolution d'écran HD, mais n'en n'aura pas sur un écran SD. L'astuce utilisée est de passer par un système intermédiaire fictif, depuis lequel nous pourrons passer à la résolution utilisée par le support considéré.

_

Le format d'écran pose lui aussi de sérieux problèmes. 4/3, 16/9, 16/10 sont des formats on ne peut plus commun. S'il n'est pas trop contraignant de passer d'un format 16/9 à un format 16/10, le support d'un format 4/3 reste laborieux lors de la conception du jeu (et non du moteur). Le problème principal réside dans le fait qu'au moins la moitié de la surface n'est pas utilisable, de part le fait qu'elle n'est pas visible dans l'un ou l'autre format. Cela impliquerait pendant la conception de toujours garder à l'esprit les zones "hors champs" et de ne pas s'en servir ! Le format 4/3 étant bien moins courant de nos jours, je préfère me contenter d'un format 16/9 ^^.

_

La 3D relief, bien que très contreversée, sera gérée nativement par Mist. Bien que les techniques diffèrent, certains éléments restent communs: il faut fournir une image différent à chaque oeil. Vous devez surement vous demander ceci:

_


Mais comment fait-on de la 3D relief sur un jeu 2D ?

_

Mon idée est d'obtenir un rendu "à la Paper Mario". Tous les éléments seraient parfaitement plats, fixés sur des "toiles transparentes", chacune plaçées à une profondeur différente. La 3D relief peut se comprendre intuitivement. Lorsque vous regardez un arbre au loin, que vous fermiez l'oeil gauche ou l'oeil droit, vous verrez cet arbre à la même position (ne fermez pas les deux yeux en même temps sinon vous ne verrez rien du tout :p). Si vous vous rapprochez de l'arbre et que vous refaites la même expérience, vous remarquerez que l'arbre sera décallé sur la droite pour votre oeil gauche et sur la gauche pour votre oeil droit. Plus ce décallage est important, plus l'objet est proche (ou sera considéré comme proche par votre cerveau :p). Tout l'astuce va être de reproduire ce phénomène sur les deux images destinées à chaque oeil ^^.

_
_

Les hauts-parleur

Ils nous permettent d'entendre ce qui se passe dans le jeu. Il s'agit d'un élément essentiel dans la manière de rendre immersive une expérience vidéoludique. Ce n'est pas un travail si facile que ça d'un point de vue technique. Je distingue deux approches différentes.

_

Le première consiste à utiliser rendre les sons du point de vue du personnage. Si un bruit provient de derrière, le son doit être émis à l'arrière. Cela peut sembler évident, mais il y a une incohérence assez frappante dans les jeu à la première personne. Si un allié marche derrière votre personnage, il se trouve entre vous et l'écran. Pourtant, vous entendrez les pas venant de derrière vous. Etonnement, cela ne choque absolument personne (et le contraire serait plutôt perturbant). La raison principale étant que nous sommes immergés dans le jeu, nous oublions notre environment pour nous plonger dans celui du jeu.

_

A l'inverse, un jeu de plate-forme 2D va plutôt adopter votre point de vue, à l'extérieur du jeu. C'est ainsi qu'un son survenant devant votre personnage mais à droite de l'écran va être émis à droite.

_

Que l'on choisisse l'une ou l'autre approche, il reste toujours un problème technique:

_


Comment émettre un son venant d'un objet située à X pixels du centre d'un angle de 37.5°, sachant que l'équipement audio du joueur peut être constitué d'1, 2, 5 ou 7 hauts parleurs ?

_

Mais chaque chose en son temps, toutes ces questions trouveront une réponses dans les semaines à venir :). A bientôt pour un autre article sur Mist ;).

_
_

Vidéo résumé


Edité par djidane535 le 15/08/2012 - 16:05
Portrait de djidane535
Hors ligne
A rejoint: 4 septembre 2011
Contributions: 195
Re: [Projet] Mist

Et voila, j'ai terminé de coder la gestion de l'écran. Vu tout ce qu'il y a à dire, je pense que je vais découper ça en plusieurs podcasts pour pas faire une vidéo trop longue ^^.

Je vais aussi essayer d'accompagner les podcasts avec des articles pour ceux qui préfèrent lire ^^.

Citation:

[EDIT]
Petit changement de programme, j'ai eu quelques idées supplémentaires donc j'ai encore un peu de travail avant de commencer à préparer les vidéo ^^.

Edité par djidane535 le 19/08/2012 - 18:30