Projet super secret (en fait non) : le Super Funcard Maker

Projet super secret (en fait non) : le Super Funcard Maker

Projet super secret (en fait non) : le Super Funcard Maker

Discussion ouverte par Thaledric Le 05/07/2019

Discussion ouverte par Thaledric Le 05/07/2019


Thaledric

Be karful : Ce post est long, mais je vous garantis qu'il vaut le coup. Je vous souhaite une très bonne lecture !
-- Thaledric


Bonjour à tous, chers sectateurs ! Je reviens dans ma section préférée de la secte pour vous faire part d'un grand projet. Pour les nouveaux ou ceux qui ne se souviennent pas de moi, j'avais entrepris il y a quelques années de faire le SMF Funcard Maker 2 auquel vous pouvez accéder depuis le menu du site. Mais je vous avoue que depuis tout ce temps je l'ai laissé à l'abandon.

Mais ça me fendait le coeur de voir cet ouvrage pourtant de plus en plus utilisé (oui oui j'ai les stats !), de voir les tickets s'accumuler dans le bug tracker, et de constater que je n'avais pas la motivation pour reprendre le travail.

Bref, cela fait un long moment qu'une idée me taraude profondément dans mon crâne, et aujourd'hui je me décide à vous la présenter :

= Le Super Funcard Maker =


C'est à dire un nouvel outil pour créer des funcards.
Que dis-je, ce devrait plutôt être l'outil ultime de la création de funcards ! (En en plus on peut le comprimer en SFM, ce qui est dans une réalité alternative l'acronyme de « Secte des funomanciens »)

Le SFM sera une panoplie d'outils destinés aux funcardeurs pour leur faciliter la vie. Ce sera un moyen de générer des funcards et de créer des sets, mais aussi un éventail d'outils avancés pour les graphistes qui pourront l'utiliser de pair avec leur éditeur d'images préféré.

C'est une suite de logiciels qui pourra être utilisé online ou offline, tout comme l'était la toute première version du défunt SMF Funcard Maker.
J'y ajoute une interface en ligne de commande, pour les vrais (et j'envisage aussi une API REST pour les codeurs qui me lisent).

Bref, tout ce qui existait dans tous les funcard makers de l'histoire, mais en mieux. Je veux dire, pour mieux faire, il faudrait directement utiliser l'outil dont disposent les créateurs de chez WotC.

Alors, comme l'idée c'est de faire quelque chose d'ouvert, à la fois pour les funcardeurs et les graphistes, je me dis que le mieux c'est de pouvoir permettra la création de plugins pour ce logiciel, mais aussi et surtout de le faire open-source et sous une licence de logiciels libres.

J'en profite pour faire la transition du siècle vers l'objectif de mon post : je ne pense pas pouvoir réaliser tout ça seul, même après avoir fait un gros travail de conceptualisation, et le développement n'a pas encore commencé. C'est pourquoi j'en appelle à tous les funcardeurs ainsi qu'à tous les développeurs :

Est-ce que le projet vous intéresse suffisamment pour participer à sa création ?


Et même si vous ne développez pas, je vous invite à me faire part de vos attentes vis-à-vis d'un tel logiciel ici dans ce thread, ce qui permettra d'imaginer les fonctionnalités à intégrer au Super Funcard Maker.

Ylloh est déjà sur le coup et encourage le projet, alors si le gourou le dit, c'est que ce doit être une bonne idée ! :D (Bon désolé les gars il aura certainement pas bien de temps de coder, mais sait-on jamais !)

Bien ! Maintenant, j'espère avoir séduit certains d'entre vous avec ce projet. Dans l'encadré ci-dessous, j'ai pris des notes sur la façon dont fonctionnerait le Super Funcard Maker. Là aussi j'aimerais avoir vos avis, et vos conseils. Toutefois, je comprends que le caractère plus technique de cette partie vous paraisse barbant (et il n'est en rien obligatoire pour comprendre la volonté du projet).

Spoiler: Montrer

Super Funcard Maker

Afin d'obtenir un tel niveau de multiplateforme, je pense utiliser les technologies du web, qui l'ont l'avantage de pouvoir aussi fonctionner en tant que logiciel desktop grâce à Electron. (C'est ce qu'utilise Slack et VS Code notamment). Mais avec une architecture comme celle ci-dessous, il sera tout à fait possible d'utiliser une autre libraire pour créer l'interface graphique.

Composants

Une funcard est un empilement de composants, c'est à dire un élément graphique réutilisable dont on fournit les paramètres.
Exemples : ligne de texte, texte multiligne, image, forme colorée, symboles (manas), etc...

Chaque composant définit les paramètres dont il a besoin et leur définit aussi une valeur par défaut.

Ah oui, petit détail cool, parmi les paramètres de composants, on pourra mettre comme valeur d'autres composants, comme ça il sera possible de composer des composants et ainsi créer des composants complexes.

Le plus important, c'est que chaque composant ait une documentation complète et détaillée.

Il sera défini pour chaque composant une interface graphique pour piloter ses paramètres.

Certains composants seront des composants de layout : leur seule utilité sera de disposer correctement les composants qui le composent, afin de créer des mises en pages complexes.
Exemple: Le titre pourra être comprimé si le coût de mana est trop long

Renderer

Il s'agit de la fonction qui à partir de la liste des composants et de leurs paramètres génèrera l'image.

Le renderer va parcourir tous les composants dans l'ordre et générer à partir de ça un rendu.
J'imagine ça avec l'éventualité d'avoir plusieurs renderers : un pour générer une image (en utilisant Imagemagick, la technologie que j'utilise sur le Funcard Maker 2), un qui peut générer un fichier Photoshop, un qui peut générer une carte interactive, etc... Tout est possible au final.

Bien entendu, cela signifie que chaque renderer doit implémenter une fonction de rendu pour chaque composant qui existe, sinon si une implémentation manque, il faudra émettre un avertissement et afficher à la place un composant générique défini par le renderer (genre "technical difficulties, please stand by" comme à la télé xD).

Il faut aussi que chaque renderer implémente les attributs des composants (c'est comme ça que je vais appeler les paramètres qu'on retrouve dans chaque composant). En revanche la manière de les interpréter va vraiment dépendre du renderer, donc c'est un sujet à traiter au cas par cas.

Un renderer pourra définir des options de rendu qui permettront d'utiliser le renderer de manière alternative, pour y altérer le rendu final.
Exemples : une option pour générer une miniature de 150ko, une autre pour générer chaque composant dans un fichier séparé, etc...

Enfin, le renderer imagemagick sera un peu particulier car il sera utilisé dans l'interface pour générer l'aperçu. D'ailleurs ce sera le seul disponible au début.
(À moins de créer un autre renderer HTML-CSS permettant de générer un aperçu avec un moins bonne fidélité mais plus rapide à exécuter.)

PS : Je prévois d'utiliser Imagemagick, mais je ne suis jamais à l'abri de découvrir une technologie plus performante.

Assets

Ce sont les ressources graphiques utilisées pour générer la carte.
Le renderer aura besoin de ces assets pour faire son travail, et ces assets sont liés à la carte. Mais comme il s'agit de fichiers potentiellement gros, il vaut mieux les lier plutôt que les incorporer directement dans le fichier.

Il faut gérer deux cas d'utilisation : pour le offline, on peut soit utiliser un chemin absolu (`C:\Users\...\illus.png`), soit un chemin relatif à la carte (`./illus.png`). Cela voudra dire qu'une carte sera composée d'un répertoire comprenant la définition des composants de la carte et tous ses assets (et potentiellement ses rendus si on le souhaite).

Si un asset est introuvable au moment du rendu, alors un asset générique et explicite sera chargé à la place, et un message d'avertissement sera émis.

L'autre cas c'est le online. On peut pas demander à l'utilisateur d'uploader ses assets à chaque rendu, ce sera trop long. Il faut alors les stocker en ligne de manière temporaire, comme c'est le cas avec le Funcard Maker 2. Le fichier aura alors le nom que le serveur lui aura donné (qui sera très certainement différent de celui du fichier qu'a uploadé l'utilisateur), et il faut pouvoir lui redemander un fichier manquant en précisant son nom original, si le fichier hébergé vient à expirer.

Ah, y'a un troisième cas, c'est celui où l'asset en question fait partie du SFM (les différents fonds officiels, les manas, etc, seront directement inclus dans le logiciel). Dans ce cas la référence vers ce fichier sera fait à partir d'un mot clé défini par le logiciel (et documentés).

Templates

Les templates sont des cartes pré-configurées : une série de composants avec des paramètres et des assets. Le format de fichier et de répertoire décrivant un template sera identique à celui d'une carte.

Les paramètres de la carte viendront se fusionner à ceux définis dans le template, puis dans ceux par défaut de chaque composant, pour donner au final les données qui seront envoyées au renderer.

Pour pouvoir effectuer ce travail de fusion, le template définit pour chacun de ses composants un identifiant unique au sein de cette carte.
Les paramètres de la carte définira alors le template comme son parent et utilisera l'identifiant de chaque composant comme repère pour savoir où fusionner chaque composant.

Cela veut dire que n'importe quelle carte peut devenir un template ! Le SFM permettra donc de sauvegarder une carte en tant que template pour être réutilisé par la suite.

Cela veut aussi dire qu'il sera aussi possible de chaîner les templates, en créant un template à partir d'un autre qui a été créé à partir d'un autre, etc... Il faudra juste faire attention à prévenir des boucles de chaînage (pas compliqué).

Il faut toutefois prévoir un système de z-index permettant d'insérer des composants entre deux autres grâce à un des attributs du composant.
(Je fais la distinction entre les attributs qui ont une fonction quelque soit le composant, et les paramètres, que chaque composant définit individuellement).

Note : je ne prévois pas que l'interface permette de faire ça, mais en théorie il sera possible pour un carte de définir de nouveaux composants qui ne figurent pas dans le template.

Attention : le système de template décrit ci-dessus a un défaut : la carte ne pourra pas être ouverte dans le SFM si le template n'est pas présent. Et si le template d'origine a subi des modifications, elles seront répercutées sur la carte. Pour se prémunir de ce problème, il faudrait pouvoir enregistrer la carte avec une copie de toute la chaine de template. Cela peut constituer un type d'export de données permettant d'obtenir une carte avec tous ses assets et toutes ses définitions. Cela serait aussi pratique pour les graphistes souhaitant utiliser certains éléments de carte indépendamment sur un autre logiciel, sans passer par un rendu.

Si le coeur vous en dit, on pourra prévoir une interface graphique pour créer des templates. Mais bon ce sera un peu compliqué et selon moi c'est clairement pas la priorité, car les créateurs de templates représentent à mon avis une toute petite partie du public, et ils auront les compétences nécessaires pour écrire directement le fichier, sans avoir à recourir à une interface graphique.
Cela dit dans un premier temps, on peut proposer aux créateurs de templates un éditeur de texte pour rédiger le template et qui proposera une aperçu en temps-réel pour que tout ça soit moins fastidieux.

Set

Un set de cartes est simplement un ensemble de cartes avec des propriétés communes. On pourra définir pour un set des paramètres pour les composants (qui viendront s'intégrer juste entre les paramètres de la carte et les paramètres du template), des assets et des templates.

Le SFM fournira un ensemble de fonctionnalités permettant le traitement par lots afin de gérer d'un coup toutes les cartes d'un set.

Cartes Recto-Verso

Perso, j'ai tendance à voir les cartes multifaces comme un funset où l'on fait un rendu de chaque carte les unes à côté des autres sur la même image...
Me trompe-je ???

Une carte recto-verso peut être vue comme un template de set, c'est à dire un set préconfiguré avec deux cartes ayant un template de carte différent.

Bon, si on considère une carte multiface comme un mini-set, ça veut dire qu'en faisant un set de cartes dont certaines sont multifaces, on a un set de sets. Si certains d'entre vous adorent l'imbrication, je pense que là vous êtes servis.

Command Line Interface

J'en avais parlé un peu plus haut, mais l'avantage d'une telle architecture est que l'implémentation du renderer, de la gestion des templates et des paramètres des composants ne dépend pas de l'interface.
On peut donc concevoir plusieurs interfaces utilisateur indépendantes pour piloter ces éléments et générer des funcards.

J'ai déjà parlé de deux d'entre elles : une interface Web online (hébergée sur un serveur) et une interface Web desktop (qui fonctionnera en local sur l'ordinateur). Mais j'avais aussi parlé d'une interface en ligne de commande au début. Ah, et pour faire fonctionner les applis web, il faudra un serveur, et je pensais faire un serveur Node.js proposant une API REST qui sera utilisée en ligne comme en local, mais qu'on peut aussi exposer à des interfaces tierces.

En bref, des outils ouverts à toutes les possibilités !

Plugins

Comment rendre cela plus ouvert encore ? En proposant simplement d'étendre les fonctionnalités du SFM via des plugins !

Un plugin pourra définir de nouveaux composants (avec leur fonction de rendu avec le renderer principal et leur interface), ou de nouveaux renderers (il faudra implémenter tous les composants existants).

Un tel système aura très certainement des problèmes du genre : « J'ai un plugin avec un renderer pour Photoshop, mais il ne gère pas mon autre plugin qui ajoute tel composant »
Mais hélas je crois qu'on ne peut rien faire contre ça avec une telle architecture, car les différents renderers seront fatalement incompatibles entre eux.

Pour contourner ce problème, il faudrait utiliser le renderer imagemagick par défaut si le renderer n'implémente pas le composant, et que chaque nouveau renderer soit capable de gérer un composant qui a été rendu comme une image png. C'est possible, mais cela reste une rustine et ça casse un peu l'intérêt de la chose. (Mais bon, on aura une belle image à la fin quoi qu'il arrive, c'est peut-être ça le plus important.)

Le problème de la compatibilité des plugins est selon moi LE casse-tête de ce projet, ça est le fait de pouvoir charger des plugins dynamiquement lors du runtime, alors que ces plugins peuvent nécessiter de nouvelles technologies qui fonctionnent en dehors d'Electron.
(Là je parle aux vrai qui savent comment tout ça fonctionne.)

Sinon dans le doute, si on n'arrive pas à charger les plugins dynamiquement, cette architecture reste modulaire par essence, ce qui sera toujours un meilleur confort de développement.

Modules

Pour illustrer tout le découpage modulaire du Super Funcard Maker, je propose de former plusieurs repositories :

- sfm-core gèrera la façon dont se composent les sets, templates et composants avec la fusion des paramètres, l'import et l'export, ... Enfin toutes les opérations qu'on retrouvera à l'identique quelque soit le type de carte ou de set créé. Il définira aussi un ensemble de composants génériques.

- sfm-renderer-imagemagick sera le renderer principal, et il implémentera tous les composants définis dans sfm-core. Si j'ai choisi de placer le renderer des composants génériques dans un module séparé, c'est parce que les interfaces graphiques n'auront aucune raison de contenir un renderer, allégeant ainsi le code de ces interfaces.

- sfm-mtg-plugin sera le plugin dédié aux composants et aux templates de Magic the Gathering. En quelque sorte, sans lui le Super Funcard Maker ne propose aucun contenu directement utilisable.

- sfm-server sera le serveur Node.js hébergeant l'API REST qui pilote le renderer et le noyau.

- sfm-frontend sera l'interface Web multiplateforme générique du Super Funcard maker. Elle utilisera sfm-server pour piloter les fonctionnalités du noyau et du renderer, et contiendra les définition d'interface de chaque composant.

- sfm-dektop sera le paquetage Electron qui contient sfm-front et sfm-server, avec une couche permettant d'intégrer l'interface à un environnement desktop.

- sfm-online sera une web-app conçue à partir de sfm-front, faite pour fonctionner sur navigateur internet.

- sfm-cli sera l'interface en ligne de commande permettant de piloter le noyau et le renderer.

Chacun de ces repositories sera aussi un module js distribué via NPM.

Le plugin Magic the Gathering

Ça c'est LA star du SFM ! Sans ce plugin fourni dans le Super Funcard Maker, il n'y a théoriquement aucun template disponible.

En plus des templates, ce plugin va définir de nombreux composants propres aux cartes Magic. Mais le plus important c'est certainement le composant Mana, qui permettra de générer des mana personnalisés avec des chiffres, des lettres ou des images. Bien entendu tous les manas officiels seront pré-configurés avec des sniplets (ces "{u}{r}{u/w}" très connus des funcardeurs) qui seront transformés automatiquement s'ils sont détectés dans du texte.

Pour faire cette détection, nous allons simplement faire en sorte que le composant Texte réagisse à la présence des caractères "{}" qui serviront à insérer du contenu graphique. L'intérieur des accolades sera une définition de composant, soit à un sniplet à quoi correspondra une définition de composant. Les sniplets seront définis dans les templates.

Pour le tout le reste, je pense que des composants génériques feront parfaitement l'affaire.

Voilà

Bah globalement là c'est fini je crois, j'ai quand même déjà bien parlé ^^

Bon, voilà pour l'essentiel des idées fonctionnelles et techniques. J'ai écrit tout ça dans le but de vous donner envie de participer au projet, soit en tant que développeur (franchement ce serait super cool), soit en tant que testeur (cool aussi, on en aura besoin). Même si pour le moment, rien n'est développé, donc il n'y a rien à tester.


Voilà ! J'espère que lire ceci vous met plein d'étoiles dans les yeux et que cela vous motive !

Alors qui est chaud ???


descendant ascendant


Réponse(s)


4769 points

Deiv - Seigneur SMF - Le 05/07/2019

Personnellement mon outil principal de funcard restera toujours photoshop mais je dis un grand oui à ton projet et suis opérationnel pour t'aider à sa réalisation !

1366 points

Thaledric - Sorcier - Le 05/07/2019

@Deiv, je suis aussi dans ce ton cas (même si ça fait un bail que j'ai pas funcardé), j'ai quasiment toujours fait mes cartes avec un logiciel d'images, et parfois je me contentais d'utiliser le Fcm2, ne serait-ce que pour générer mon fond de carte.
C'est pour ça que j'ai aussi pensé cet outil comme un potentiel gain de temps pour les funcardeurs comme nous : l'intérêt sera d'utiliser les traitement par lots et l'héritage des templates pour ne pas avoir à recréer les cartes depuis le début et de pouvoir exporter facilement tout un set dans différents formats.

L'idéal serait aussi d'implémenter un renderer pour Photoshop qui pourrait directement créer des fichiers PSD modifiables à souhait par la suite. Mais c'est une plus grande entreprise. (Photoshop dispose d'une API en Javascript pour faire des scripts, donc il y a certainement moyen de créer des PSD procéduralement !)

619 points

Simm_T - Visionnaire - Le 06/07/2019

Ce projet m'envoute sincèrement. Cependant, je crois pas que je puisse être extrêment utile puisque je ne code pas et le graphisme ce n'est pas du tout ma force. En fait je voudrais commenter pour dire :

1. Que j'étais un grand utilisateur de SMF FCM2 et que cela me plairait beaucoup si un logiciel de cette trempe pouvait remplacer MSE (Que j'utilise maintenant en passant). Si tu n'as pas MSE je te conseille de le Downloader sur leur site internet car il pourait t-être très utile pous te trouver des idées, comparer, anlayser, etc. (C'est sur leur nouveau site le 2)

2. Je sais que c'est un peu chelou de demander ça alors que l'essentiel des templates et de l'interface n'est même développé, mais ce que je trouve qu'il manque à MSE, c'est une bonne manière de gérer les symboles d'extension. Dès que l'on veut en importer une d'une image trouvée sur le net, le petit programme d'édtition de symbole d'extension de MSE la vectorise et rend certains symboles vraiment dégeux (Essaye khans of tarkir pour comprendre). Je trouverais ça sympa que l'on puisse directement importer les images comme dans le SMF FM2 ou peut-être même mettre une banque des symboles d'extensions (mais c'est plutôt secondaire). Au moins, MSE permettait de créer ses propres symboles de 0 mais c'est tellement limité en comparaison à n'importe quel logiciel de graphisme allant de Inkscape, Photoshop ou Gimp. Sinon, je me proposerais à recueillir ses symboles d'extension.

Finalement : Je suis super enthousiaste car le SMF FM2 était génial, alors j'ai hâte de voir ce nouvel outil de ton cru. Merci !
Aussi, j'aimerais rajouter que les template de Deiv sont magnifiques et me plaisent. Cependant, pour ceux cherchant à réaliser des cartes identiques à celles de WOTC, son template et légèrement différent, il faudrait donc récolter les avis. (Le mien est positif bien sûr). Deiv doit aussi être d'accord, je parle un peu pour lui là...
À la prochaine !

4769 points

Deiv - Seigneur SMF - Le 06/07/2019

Si je peux aider à travailler sur les templates du SFM c'est avec plaisir que je referais mes templates pour cet outil. J'attends dès maintenant les ordres de Thaledric pour les templates en général.

Edité 1 fois, dernière édition par Deiv Le 06/07/2019

619 points

Simm_T - Visionnaire - Le 06/07/2019

Sinon, je voulais rajouter que j'ai trouvé une banque de symbols de mana et d'extension : Cliquez ici.
Ce sont des fichiers SVG de bonne qualité je crois.

744 points

jucos - Apôtre - Le 07/07/2019

En voila un projet intéressant ! Dommage que je ne sache pas suffisamment coder pour apporter mon aide

Enfin, bon s'il y a besoin de funcardeur qui connaît Gimp, faites moi signe.

1 points

Aegon BlackFyre - Adorateur - Le 10/07/2019

je ne sais pas ce que je pourrais apporter (outre mon soutien moral) mais si ya besoin de testeur, je suis là !
PS : grand utilisateur de MSE, je suis passé sur paint.net pour faire aussi des sets dans les jeux de carte type dune, Got, ou dicemasters en 'mash-upant' avec d'autres univers

85 points

Swompy Time v2 - Fanatique - Le 29/07/2019

Je me replonge avec délice dans les douces feuilles de calcul excel ;
hors il y a des fonctions intéressantes à ce programme :
1 - créer des pages imprimables
2 - créer des pages à contenu aléatoire
3 - afficher des images

Voyez vous se que je propose ?
*Non !*
Et bien avec un peu de pratique, je pourrai faire un générateur de booster de ce fun set,
qu'il n'y aurait qu'à l'imprimer et le découper (avant de glisser dans des pochettes avec de vrais cartes),
permettant ainsi de rendre draftable cette extension !

Et le truc beau, c'est que je peux en faire deux :
L'un avec l'extension régulière
L'autre avec tout le fourbi de tout les membres de la sectes, les artefacts en plus, etc. ...

Ce qu'il me faut, c'est simplement la banque de toutes les images de cartes.
Après ça déroule (et un peu de temps aussi)


Modérateur
10165 points

Modérateur

Drark Onogard - Sacrifié - Le 29/07/2019

Alors, c'est super et tout... Mais ce n'est pas la bonne page. Là, c'est le projet pharaonique de Thal pour surpasser son SMFFCM2, pas la page du funset de la SMF... Bon, du coup, pour que tu n'aies pas dit cela pour rien, je t'informe que le lien vers l'intégralité des cartes à ce jour créées est ici, mais le set n'est pas encore réellement clos, il doit manquer une carte, et certaines corrections seront sans doute effectuées. Après, comme toujours, il sera plus pratique d'en parler à Deiv directement, puisque c'est lui le Grand Ordonnateur de tout cela.

1 points

djnnaytlevrai - Adorateur - Le 22/04/2020

Salut Thaledric,

Je suis carrément chaud pour t'aider dans ce projet d'envergure
je suis graphiste et je peu t'apporter mon aide !


Le Dark Mogwaï

Retrouvez le Dark Mogwaï et la communauté des Magiciens Fous sur :


My taille-sort is rich.

—Cours d'Esperien, niveau débutants

Proposé par Dark Mogwaï le 19/06/2012

Le sondage du bas d'en bas de la page
Que des petites frappes à Croisetonnerre. Quel·le hors-la-loi aurait dû trainer ses bottes là-bas ?

Résultats (déjà 25 votes)