Je ne suis pas friand des logiciels mi-libres avec le code libre mais pas les ressources. À mon sens ça n'a plus beaucoup d'intérêt de n'avoir accès qu'au source, alors si j'en libère un bout je libère le reste avec, pour que les intéressés puissent voir comment le tout est fait, quelle taille ça fait, comment les choses s'assemblent, et décider de créer et diffuser un nouveau produit si ça les chante.
Est-ce une crainte que le jeu soit "volé/repackagé" par d'autres personnes ?
Si c'était libre je ne considérerai pas cela comme du vol. Mais pour une première création, un premier jeu complet, je préfère que les gens nous l'achètent plutôt qu'à quelqu'un d'autre.
Est-ce la crainte que personne ne paye ?
Ça ne rentre pas vraiment en compte. Je pense que quel que soit le procédé de diffusion (libre, fermé, avec ou sans drm), ceux qui ne veulent pas payer trouvent un moyen de ne pas payer.
Dans l'absolu j'aimerais bien tenter la mise en vente d'un jeu libre complet, y compris les ressources graphiques et sonores. Cependant ça ne me semble pas très sage de le faire dès nos premiers pas en tant que pro. C'est beaucoup plus simple pour nous de coller aux pratiques classiques.
Tout est en anglais car je pense que c'est la seule langue internationale. Si on sort un jeu en français, on ne parle pas à grand monde ; et je ne vois pas quel honneur cela fait à la langue. Si on le sort en anglais on parle à tout le monde. Pas seulement aux anglophones de naissance, mais bien à toutes les personnes qui utilisent l'anglais pour aller au delà de leurs frontières.
Éventuellement nous pourrions proposer la page web en français, comme nous l'avions fait pour Plee the Bear. Ça nous demande plus de travail, plus de maintenance, plus de complications. Ce n'est clairement pas une priorité dans le planning de finalisation et de sortie du jeu.
Néanmoins, vous aurez remarqué que les dialogues du jeu sont traduits en français.
C'est très simple. Nous sommes deux individus à avoir produit le code et nous autorisons notre société à l'utiliser sous une licence non libre. Cela n'est possible uniquement parce que nous sommes les seuls auteurs, à quelques patches près. Si quelqu'un d'externe contribuait significativement au code de Plee the Bear, nous n'aurions pas pu utiliser ses contributions.
Il interprète le h comme un indicateur de valeur hexadécimal : 4000 en base 16 correspond à 16384 en base 10. D'où sort cette notation ? Aucune idée, je connais les préfixes 0x, le # et &H mais le suffixe h ne me dit rien.
Justement j'ai du mal à en trouver. Tu as quelques noms ? J'ai bien quelques trucs pour des boutiques complètes, avec gestion du panier etc. mais je n'ai rien vu de plus léger (nous n'avons qu'un produit pour l'instant).
Ensuite je ne sais pas trop comment gérer le lien de téléchargement. Je me dis que je ne pourrais pas empêcher l'utilisateur de filer le lien à quelqu'un d'autre, ou de le mettre quelque part en ligne, alors finalement pourquoi mettre un système compliqué.
J'ai oublié d'indiquer que je cherchais un outil libre aussi. J'aimerais bien regarder comment c'est fait.
J'aime bien Asus aussi, ils gèrent, mais ces nuls n'avaient plus d'écrans mats. Alors j'ai opté pour un Samsung 350V5C-S03FR parce que Samsung me semble fiable, que l'écran est mat et que la carte graphique est une Ati. Je l'utilise avec les pilotes libres sans soucis.
Bref, ici tout va bien, mais je ne l'ai que depuis 2 semaines. Je te dirai dans un an si c'était un bon achat :)
J'ai une installation de Wine dans laquelle j'ai copié tous les outils et les bibliothèques que j'utilisais auparavant sous Windows. Le script lance simplement les outils de compilation. Alors évidemment il a fallu réussir à tout faire fonctionner sous Windows avant.
Ça a été difficile de trouver une combinaison des outils et bibliothèques qui fonctionne bien (un MinGW qui tourne bien, Boost compilé avec, la SDL, un CMake récent). Comme ça plantait souvent, je ne pouvais pas le faire sous Wine sans me demander si la cause du plantage était l'outil ou Wine. Et une fois que les outils ont enfin fonctionné ensemble, il fallait encore que j'indique manuellement à CMake où étaient les bibliothèques.
Ce script se charge de passer les bons paramètres à CMake, puis il lance la compilation, copie les bibliothèques nécessaires dans le dossier des binaires du jeu et termine par la création d'un installateur avec NSIS.
Au sujet des binaires pour Windows, j'arrive enfin à compiler et packager mon jeu avec Wine. Ça a été un peu galère à mettre en place mais maintenant je peux travailler cette version confortablement, dans l'environnement Linux dans lequel je suis à l'aise, plutôt que de devoir redémarrer sous Windows et travailler avec des outils que je connais moins.
Si ça vous intéresse, je peux poster le script et les détails de la configuration de Wine.
Bien sûr que cela existe : Rakarrack. Il y avait un guitariste aux RMLL en 2010 qui avait branché sa guitare sur un eeepc 700 et qui faisais des démos sur les stands. Pour brancher la guitare il suffit d'avoir une entrée ligne et le câble jack du bon diamètre.
Cependant mon expérience perso est un peu laborieuse. J'ai réussi à utiliser Rackarrack et d'autres logiciels en utilisant une Ubuntu Studio et un noyau pour le temps réel. Avec une distribution classique j'ai toujours beaucoup de mal à bien faire fonctionner les logiciels audio ensemble, notamment à cause des conflits Jack/Pulseaudio et de la latence due au traitement du son.
C'est déjà difficile de dessiner la courbe en OpenGL. Sur l'image que j'ai postée plus haut, avec le bandeau noir, je saurais calculer des sommets de quads pour longer la courbe blanche, mais je ne saurais pas les calculer pour la courbe jaune. Le calcul des coordonnées dans la texture ne me semble pas évident non plus, et en plus il faudra que je découpe le bandeau en parties convexes.
On est très loin d'un « basta » avec ça. Autant tenter Blender, mais là encore ça ne serait pas évident de tracer la courbe jaune.
Je reviens sur les illustrations pour m'exprimer. Voici l'exemple :
Le motif à répéter est en haut à droite, il est volontairement plus haut que large pour accentuer l'effet. La courbe contre laquelle le motif est projeté est en blanc.
la répétition de la source dans la destination
qu'est-ce que tu veux dire?
Le motif a une largeur bien inférieure à la longueur de la courbe. Il est donc répété le long de la courbe.
Pour l'autre point, tu proposes dans ta solution d'utiliser l'équation y = f(x) de la courbe pour aller de A' dans B'. Cette transformation ne transforme correctement que les points du haut du motif, c'est à dire ceux qui se retrouveront pile sur la courbe. Les points du bas suivent une autre courbe/équation. Ici cette autre courbe est visible en jaune.
Je disais que les points du bas du résultat, ici vers la courbe jaune, n'ont pas qu'un seul candidat dans l'image source. Cela se voit bien dans le second virage où les points violets se rapprochent. En accentuant la courbure ils se superposeraient. De même, les points du bas du motif n'ont pas qu'une seule projection dans le résultat. Cela est visible dans la partie en haut à gauche de la courbe jaune, où les points violets sont écartés.
En tout cas, merci pour tes commentaires ; je suis content du résultat.
Je ne comprend absolument pas ce que tu veux dire… tu peux me le dire avec des x et des y? :)
En mettant de côté la répétition de la source dans la destination, pour un point (x, 0) dans l'image source, il n'y a qu'un point qui corresponde dans l'image destination. Ce point est pile sur la courbe. Par contre, pour (x, 60) il y a plusieurs points qui correspondent dans la destination, tous à distance 60 de la courbe. Du coup, l'équation qui décrit la projection de la ligne 60 n'est pas la même que celle qui décrit la projection de la ligne 0.
Je pense qu'il y a une difficulté qui n'est pas levée. La courbe n'a pas la même équation sur la projection de la partie haute de la source et sur la projection de la partie basse. En d'autres termes, la transformation de la ligne de pixels en bas de la source ne suit pas l'équation de la courbe. Je ne vois pas dans ta solution comment cela se résout.
Le fait de te répondre précédemment m'a donné quelques idées, et j'obtiens enfin un résultat suffisant :
Je triche toujours sur certains points et du coup l'algo est très lent, mais c'est toujours plus rapide que de dessiner à la main :)
Pour calculer la longueur de la courbe entre l'origine et le point à l'instant t, je somme les distances par un pas de \epsilon = 0.00001. Ça se traîne.
Pour calculer la tangente à l'instant t, je calcule la direction par rapport au point à t - \epsilon et par rapport à t + \epsilon, et je prends la direction moyenne.
Je ne fais pas de mélange de couleurs. Pour chaque point dans la destination je prends le meilleurs point dans la source.
Je ne suis pas très fier de la tête de l'algo mais je suis content du résultat !
La hauteur de mon image est constante, mais ça me semble plus simple que si elle variait, non ?
Pour éclaircir les choses, voici une illustration de ce que je veux.
Je pars de la tige bleu/vert/rouge à gauche et je veux la tordre de manière à ce que le haut suive la courbe bleue, en la répétant éventuellement jusqu'à avoir rejoint les deux bouts de la courbe. Le résultat attendu est en bas.
Mes courbes ont toutes ce genre de forme : soit décroissante, soit croissante. J'ai récupéré l'équation des courbes de Bézier sur Wikipédia. La première difficulté est de calculer le pas d'incrément du paramètre t de l'équation. Je triche déjà en profitant des propriétés de mes courbes pour déterminer t en fonction du x pour lequel je veux le y.
Une fois que j'ai le point (x, y) de ma courbe dans l'image résultat, il faut que je colle un bout de l'image source « sous » le point. C'est la que les difficultés commencent. Il faut déjà que je retrouve l'abscisse correspondant à mon t dans l'image initiale, en calculant la longueur de la courbe entre son origine et le point (x, y).
Il faut aussi que je calcule l'orientation de la courbe pour mon t courant.
Ensuite, si je colle une colonne de pixels de mon image source sous mon point dans la direction orthogonale à la courbe, je vais avoir des trous. Il faut plutôt que je prenne les points sous la courbe et que je retrouve à quel point ils correspondent dans l'image source.
Enfin, les points qui correspondent au bas de l'image source vont avoir tendance à se superposer dans la projection. Il faut que je mélange les couleurs dans le résultat.
Finalement tout ce que j'arrive à produire est un bandeau gris moche.
J'ai essayé avec la transformation par cage de Gimp 2.8 mais je n'arrivais pas à obtenir une belle courbure. L'épaisseur de la tige variait par endroit.
J'ai peut-être une autre piste mettant l'image à déformer dans le presse-papier puis en sélectionnant l'opération « tracer le chemin » sur ma courbe, en utilisant l'outil « Clone » définit sur l'image du presse-papier. Je n'ai pas encore pu essayer ça.
Quitte à me répéter, les sites que tu listes sont orientés vers le libre et je ne pense pas que ce soit le point le plus important. Pour faire un jeu libre il faut faire un jeu (ça prend plusieurs mois) et copier une licence libre dans le dossier du jeu (ça prend une seconde au début du projet). Une fois que la licence est copiée, il vaut mieux, à mon avis, aller se montrer aux joueurs.
Pourquoi aller sur freegamedev.net plutôt que gamedev.net ? J'en apprends plus sur gamedev.net et j'y ai même trouvé des contributeurs pour mon jeu libre. Sur les sites qui tournent autour du libre j'ai plutôt des retours qui me disent « t'as vu ce que font les gens de XXX ? » ou pire, « pourquoi tu ne vas pas sur openfreefreedomartandstuff.org pour trouver tes ressources ? »
Pourquoi aller sur jeuxlibres.net se montrer à un petit groupe de francophones plutôt que sur indiedb, où des joueurs du monde entier essaieront le jeu ? Si vous voulez supporter le jeu libre, ce n'est pas pour les libristes qu'il faut faire des sites, c'est pour les joueurs.
Quand il s'agit d'outils informatiques, de bureautique par exemple, les utilisateurs du libre cherchent des alternatives à des outils fermés. Ce n'est pas aussi vrai pour les jeux, où les utilisateurs cherchent plutôt des nouveaux jeux.
release early, release often : c'est si dur de packager un tar.bz2 (ou tar.lzma) ? Autant l'automatiser quand il y a des améliorations suffisantes le permettant (au pire, tous les 6 mois, mais ça doit bien être faisable une fois tous les 2 mois si le "packaging" et la génération du changelog sont automatiques ?).
Oui c'est dur de packager un tar.xxx et de le diffuser. Les ajustements pour les différentes plates-formes demandent du temps. L'annonce d'une nouvelle version et son résumé demandent du temps. L'upload met du temps à se faire. L'appli mets du temps à compiler. Le public ne veut pas du source, il veut un truc pour son système, alors faire un deb/rpm ou une compilation statique prend aussi du temps.
Il me faut généralement un jour et demi pour finaliser l'archive de mon jeu. Après quoi il faut encore rédiger l'annonce de la nouvelle version et la diffuser.
Donc à mon avis, qui ne vaut que ce qu'il vaut, l'énergie dépensée pour entretenir des sites comme jeuxlibres.net ou jeuxlinux.fr serait mieux investie dans une veille de l'avancement du dev des jeux et la publication des avancées sur des sites de jeux (pas « jeux libres », juste « jeux »). Ça soulagerait les developpeurs, ça augmenterait la visibilité et les retours et donc leur motivation.
Le problème que je vois dans jeuxlibres.net et jeuxlinux.fr, mais aussi happypenguin.org et lgdb.org, c'est qu'ils mettent le focus sur des qualités des jeux qui ne sont pas les plus importantes : c'est libre ou ça tourne sous Linux.
Je ne dis pas que ce ne sont pas des qualités mais ça me semble aussi peu intéressant que de présenter son jeu sur un site sur Java par exemple. Ça ne concerne aucunement ce qui me semble être le plus important, c'est à dire le contenu. En allant sur des sites de jeux indépendant, ce qu'est effectivement Newton Adventure, les échanges et les commentaires tourneront autour du jeu, et le projet avancera.
Ce sont les retours des joueurs qui donnent envie de bosser sur les projets. Et les joueurs de jeux sous Linux, ou de jeux libres, sont avant tout des joueurs. Vu le temps que ça demande de communiquer sur un projet, autant le faire au plus efficace, c'est à dire sur des sites internationaux de jeux. Ça n'empêche pas de discuter de technique ou de liberté sur d'autres sites, mais il vaut mieux le faire s'il reste du temps.
Un type de contributeur que j'aimerais bien avoir et que je n'ai jamais vu serait une personne qui suivrait l'avancée du projet quasiment en permanence. Elle publierait avec un regard externe les avancées, et plutôt d'une manière orientée jeu. Aujourd'hui les nouvelles sont liées à la sortie du logiciel, et la plupart des articles sont carrément proposés par les développeurs. Ça me semblerait plus utile d'avoir un suivi à la semaine ou au mois des nouveautés en cours de développement, et ça aiderait les projets à ne pas sembler morts durant les années qui séparent les sorties.
Comme je te le dis dans le post plus haut, j'ai l'impression de te voir passer par les étapes que j'ai vécue. Alors je te propose un petit retour d'expérience.
Je ne pense pas que j'utiliserai ton système car, sans vouloir t'offenser, j'ai le sentiment que tu es encore un poil naïf. Je n'ai pas l'impression dans tes propos que tu aies bien fait le tour du besoin. Il est certes utile d'avoir un format d'animation, mais il y a bien d'autres questions qui se posent dans la gestion de l'anim et je doute que le format soit primordial. Par exemple, dans le développement de mon jeu, nous sommes passés par ce genre d'étapes (uniquement sur l'aspect graphique, je passe le moteur physique, le son, les inputs, l'interface, l'IA, etc.) :
On veux des images. C'est facile
Puis on veut des animations. Pas de problème, on fait un super format XML, un éditeur, on gère la durée des frames une à une, on gère le nombre de boucles, on gère le début et la fin de la partie à boucler.
Puis finalement on se dit que pour faire les personnages et d'autres trucs complexes, il nous faut plusieurs animations. OK, on fait un super format XML, un éditeur, et on gère un concept d'action de personnage durant laquelle une animation est jouée.
Puis finalement on met plusieurs animations positionnées les unes par rapport aux autres. Et puis pendant qu'on y est on gère l'enchaînement des actions et un système de connexion avec le code du personnage (i.e. la fonction à appeler à un moment ou à un autre d'une action).
Et puis finalement c'est pas au point, le mouvement des anims les unes par rapport aux autres est trop brutal alors on ajoute aussi l'interpolation de mouvement.
Et puis finalement il y a plein d'images à l'écran et on dessine plusieurs fois certains points à l'écran. Alors on fait un super algo qui découpe les sprites à l'affichage pour éviter de dessiner les parties invisibles. Et puis on implémente un algo qui calcule le plus grand rectangle opaque dans chaque sprite pour optimiser l'affichage.
Et au bout d'un moment on se demande : où est le contenu du jeu dans tout ça ? On a un super moteur qui répond à quasiment toutes nos problématiques, modulaire et indépendant de notre jeu, on a quasiment pas de niveaux, et on voit les autres développeurs de jeux qui revivent la même histoire.
Si je n'ai qu'un conseil à te donner, c'est de te concentrer sur le contenu de ton jeu. Attention à ne pas passer trop de temps sur la technique ; c'est très satisfaisant mais ça ne fait pas avancer le jeu. Va au plus simple, capitalise sur le concept, et essaie de te montrer sur des sites de jeux genre indiedb afin d'avoir des retours sur ce qui compte dans les jeux : le contenu.
Je suis un peu ce que tu racontes sur LinuxFR au sujet de Newton Adventure et j'ai l'impression de te voir passer par les mêmes étapes que j'ai vécues en faisant mon jeu.
Pour le coup, je n'ai jamais cherché à répondre à la question de l'optimisation placement des sprites dans les textures, bien qu'elle se pose depuis le début, et j'ai tendance à le faire au cas par cas. Mais si je devais m'y mettre, la première question concernerait une solution pour remplir l'espace restant après avoir posé les sprites d'une anim.
Par exemple, j'ai une animation de 3 sprites en 32x32 et une autre de 5 sprites. Je veux les mettre dans des textures de 64x64. A priori j'aimerais me retrouver avec deux images au final. Est-ce que ton format d'animation et ton optimiseur permettent cela facilement ?
J'ai eu des soucis avec des sprites auxquels j'appliquais une rotation dans le jeu : un bord du sprite voisin avait tendance à apparaître dans la rotation. Pour éviter cela, j'ai ajouté une bande d'un pixel transparent autour de mes sprites. Est-ce que ton outils permet de mettre une marge entre les sprites ? Envisages-tu de le faire ?
La page émergera de l'intérêt de la communauté du jeu vidéo ou du logiciel libre pour le projet, ou de n'importe quel domaine dans lequel Newton Adventure serait un bon représentant. Il y a des critères d'admissibilité.
Et de mon point de vue, personne ne devrait créer ou rédiger un article sur son propre projet. Si le projet n'a pas réveillé chez un contributeur de Wikipédia l'envie de rédiger un article, c'est qu'il n'y a pas encore sa place. Je sais que c'est tentant, pour « compléter » Wikipédia, pour gagner en visibilité, mais ça doit venir d'une personne extérieure au projet.
[^] # Re: Pourquoi ce n'est pas libre ?
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Sortie de Andy's Super Great Park, des sensations dans ton Linux. Évalué à 2.
Je ne suis pas friand des logiciels mi-libres avec le code libre mais pas les ressources. À mon sens ça n'a plus beaucoup d'intérêt de n'avoir accès qu'au source, alors si j'en libère un bout je libère le reste avec, pour que les intéressés puissent voir comment le tout est fait, quelle taille ça fait, comment les choses s'assemblent, et décider de créer et diffuser un nouveau produit si ça les chante.
[^] # Re: Pourquoi ce n'est pas libre ?
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Sortie de Andy's Super Great Park, des sensations dans ton Linux. Évalué à 2.
Si c'était libre je ne considérerai pas cela comme du vol. Mais pour une première création, un premier jeu complet, je préfère que les gens nous l'achètent plutôt qu'à quelqu'un d'autre.
Ça ne rentre pas vraiment en compte. Je pense que quel que soit le procédé de diffusion (libre, fermé, avec ou sans drm), ceux qui ne veulent pas payer trouvent un moyen de ne pas payer.
Dans l'absolu j'aimerais bien tenter la mise en vente d'un jeu libre complet, y compris les ressources graphiques et sonores. Cependant ça ne me semble pas très sage de le faire dès nos premiers pas en tant que pro. C'est beaucoup plus simple pour nous de coller aux pratiques classiques.
[^] # Re: Anglais
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Sortie de Andy's Super Great Park, des sensations dans ton Linux. Évalué à 8.
Tout est en anglais car je pense que c'est la seule langue internationale. Si on sort un jeu en français, on ne parle pas à grand monde ; et je ne vois pas quel honneur cela fait à la langue. Si on le sort en anglais on parle à tout le monde. Pas seulement aux anglophones de naissance, mais bien à toutes les personnes qui utilisent l'anglais pour aller au delà de leurs frontières.
Éventuellement nous pourrions proposer la page web en français, comme nous l'avions fait pour Plee the Bear. Ça nous demande plus de travail, plus de maintenance, plus de complications. Ce n'est clairement pas une priorité dans le planning de finalisation et de sortie du jeu.
Néanmoins, vous aurez remarqué que les dialogues du jeu sont traduits en français.
[^] # Re: comment passez vous de GPL à propriétaire ?
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Sortie de Andy's Super Great Park, des sensations dans ton Linux. Évalué à 6.
C'est très simple. Nous sommes deux individus à avoir produit le code et nous autorisons notre société à l'utiliser sous une licence non libre. Cela n'est possible uniquement parce que nous sommes les seuls auteurs, à quelques patches près. Si quelqu'un d'externe contribuait significativement au code de Plee the Bear, nous n'aurions pas pu utiliser ses contributions.
[^] # Re: Beaucoup d' heures
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Le Bottin des jeux linux : entretien avec le créateur du site. Évalué à 2.
Il interprète le h comme un indicateur de valeur hexadécimal : 4000 en base 16 correspond à 16384 en base 10. D'où sort cette notation ? Aucune idée, je connais les préfixes 0x, le # et &H mais le suffixe h ne me dit rien.
[^] # Re: Paiement en ligne
Posté par Julien Jorge (site web personnel) . En réponse au message Outil de vente dématérialisée. Évalué à 1.
Tout cela m'a l'air pas mal, je vais faire le tour de ces solutions :)
[^] # Re: Paiement en ligne
Posté par Julien Jorge (site web personnel) . En réponse au message Outil de vente dématérialisée. Évalué à 2.
Justement j'ai du mal à en trouver. Tu as quelques noms ? J'ai bien quelques trucs pour des boutiques complètes, avec gestion du panier etc. mais je n'ai rien vu de plus léger (nous n'avons qu'un produit pour l'instant).
Ensuite je ne sais pas trop comment gérer le lien de téléchargement. Je me dis que je ne pourrais pas empêcher l'utilisateur de filer le lien à quelqu'un d'autre, ou de le mettre quelque part en ligne, alors finalement pourquoi mettre un système compliqué.
J'ai oublié d'indiquer que je cherchais un outil libre aussi. J'aimerais bien regarder comment c'est fait.
# Moi
Posté par Julien Jorge (site web personnel) . En réponse au message Nouveau portable (bis). Évalué à 1.
J'aime bien Asus aussi, ils gèrent, mais ces nuls n'avaient plus d'écrans mats. Alors j'ai opté pour un Samsung 350V5C-S03FR parce que Samsung me semble fiable, que l'écran est mat et que la carte graphique est une Ati. Je l'utilise avec les pilotes libres sans soucis.
Bref, ici tout va bien, mais je ne l'ai que depuis 2 semaines. Je te dirai dans un an si c'était un bon achat :)
# Quelles erreurs ?
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Diaspora 0.0.1. Évalué à 4.
Avez-vous des exemples de ces erreurs ? Par simple curiosité.
[^] # Re: Mole invasion
Posté par Julien Jorge (site web personnel) . En réponse au journal Créateurs de jeux, dénoncez vous!. Évalué à 3.
J'ai une installation de Wine dans laquelle j'ai copié tous les outils et les bibliothèques que j'utilisais auparavant sous Windows. Le script lance simplement les outils de compilation. Alors évidemment il a fallu réussir à tout faire fonctionner sous Windows avant.
Ça a été difficile de trouver une combinaison des outils et bibliothèques qui fonctionne bien (un MinGW qui tourne bien, Boost compilé avec, la SDL, un CMake récent). Comme ça plantait souvent, je ne pouvais pas le faire sous Wine sans me demander si la cause du plantage était l'outil ou Wine. Et une fois que les outils ont enfin fonctionné ensemble, il fallait encore que j'indique manuellement à CMake où étaient les bibliothèques.
Ce script se charge de passer les bons paramètres à CMake, puis il lance la compilation, copie les bibliothèques nécessaires dans le dossier des binaires du jeu et termine par la création d'un installateur avec NSIS.
Voici le script :
Je me souviens :)
[^] # Re: Mole invasion
Posté par Julien Jorge (site web personnel) . En réponse au journal Créateurs de jeux, dénoncez vous!. Évalué à 3.
Au sujet des binaires pour Windows, j'arrive enfin à compiler et packager mon jeu avec Wine. Ça a été un peu galère à mettre en place mais maintenant je peux travailler cette version confortablement, dans l'environnement Linux dans lequel je suis à l'aise, plutôt que de devoir redémarrer sous Windows et travailler avec des outils que je connais moins.
Si ça vous intéresse, je peux poster le script et les détails de la configuration de Wine.
[^] # Re: Slime Volley
Posté par Julien Jorge (site web personnel) . En réponse au journal Créateurs de jeux, dénoncez vous!. Évalué à 2.
Slime Volley ! Je connais, c'est vraiment un très beau jeu ;)
# Rackarrack
Posté par Julien Jorge (site web personnel) . En réponse au message Guitare -> PC (ampli virtuel + effets). Évalué à 2.
Bien sûr que cela existe : Rakarrack. Il y avait un guitariste aux RMLL en 2010 qui avait branché sa guitare sur un eeepc 700 et qui faisais des démos sur les stands. Pour brancher la guitare il suffit d'avoir une entrée ligne et le câble jack du bon diamètre.
Cependant mon expérience perso est un peu laborieuse. J'ai réussi à utiliser Rackarrack et d'autres logiciels en utilisant une Ubuntu Studio et un noyau pour le temps réel. Avec une distribution classique j'ai toujours beaucoup de mal à bien faire fonctionner les logiciels audio ensemble, notamment à cause des conflits Jack/Pulseaudio et de la latence due au traitement du son.
En tout cas, quand ça marche c'est très sympa.
[^] # Re: OpenGL
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 1.
C'est déjà difficile de dessiner la courbe en OpenGL. Sur l'image que j'ai postée plus haut, avec le bandeau noir, je saurais calculer des sommets de quads pour longer la courbe blanche, mais je ne saurais pas les calculer pour la courbe jaune. Le calcul des coordonnées dans la texture ne me semble pas évident non plus, et en plus il faudra que je découpe le bandeau en parties convexes.
On est très loin d'un « basta » avec ça. Autant tenter Blender, mais là encore ça ne serait pas évident de tracer la courbe jaune.
[^] # Re: Algo
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 1.
Je reviens sur les illustrations pour m'exprimer. Voici l'exemple :
Le motif à répéter est en haut à droite, il est volontairement plus haut que large pour accentuer l'effet. La courbe contre laquelle le motif est projeté est en blanc.
Le motif a une largeur bien inférieure à la longueur de la courbe. Il est donc répété le long de la courbe.
Pour l'autre point, tu proposes dans ta solution d'utiliser l'équation y = f(x) de la courbe pour aller de A' dans B'. Cette transformation ne transforme correctement que les points du haut du motif, c'est à dire ceux qui se retrouveront pile sur la courbe. Les points du bas suivent une autre courbe/équation. Ici cette autre courbe est visible en jaune.
Je disais que les points du bas du résultat, ici vers la courbe jaune, n'ont pas qu'un seul candidat dans l'image source. Cela se voit bien dans le second virage où les points violets se rapprochent. En accentuant la courbure ils se superposeraient. De même, les points du bas du motif n'ont pas qu'une seule projection dans le résultat. Cela est visible dans la partie en haut à gauche de la courbe jaune, où les points violets sont écartés.
En tout cas, merci pour tes commentaires ; je suis content du résultat.
[^] # Re: Algo
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 1.
En mettant de côté la répétition de la source dans la destination, pour un point (x, 0) dans l'image source, il n'y a qu'un point qui corresponde dans l'image destination. Ce point est pile sur la courbe. Par contre, pour (x, 60) il y a plusieurs points qui correspondent dans la destination, tous à distance 60 de la courbe. Du coup, l'équation qui décrit la projection de la ligne 60 n'est pas la même que celle qui décrit la projection de la ligne 0.
Je ne suis pas sûr d'être clair…
[^] # Re: Algo
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 2.
Je pense qu'il y a une difficulté qui n'est pas levée. La courbe n'a pas la même équation sur la projection de la partie haute de la source et sur la projection de la partie basse. En d'autres termes, la transformation de la ligne de pixels en bas de la source ne suit pas l'équation de la courbe. Je ne vois pas dans ta solution comment cela se résout.
Le fait de te répondre précédemment m'a donné quelques idées, et j'obtiens enfin un résultat suffisant :
Je triche toujours sur certains points et du coup l'algo est très lent, mais c'est toujours plus rapide que de dessiner à la main :)
Pour calculer la longueur de la courbe entre l'origine et le point à l'instant t, je somme les distances par un pas de \epsilon = 0.00001. Ça se traîne.
Pour calculer la tangente à l'instant t, je calcule la direction par rapport au point à t - \epsilon et par rapport à t + \epsilon, et je prends la direction moyenne.
Je ne fais pas de mélange de couleurs. Pour chaque point dans la destination je prends le meilleurs point dans la source.
Je ne suis pas très fier de la tête de l'algo mais je suis content du résultat !
[^] # Re: Algo
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 2.
La hauteur de mon image est constante, mais ça me semble plus simple que si elle variait, non ?
Pour éclaircir les choses, voici une illustration de ce que je veux.
Je pars de la tige bleu/vert/rouge à gauche et je veux la tordre de manière à ce que le haut suive la courbe bleue, en la répétant éventuellement jusqu'à avoir rejoint les deux bouts de la courbe. Le résultat attendu est en bas.
Mes courbes ont toutes ce genre de forme : soit décroissante, soit croissante. J'ai récupéré l'équation des courbes de Bézier sur Wikipédia. La première difficulté est de calculer le pas d'incrément du paramètre t de l'équation. Je triche déjà en profitant des propriétés de mes courbes pour déterminer t en fonction du x pour lequel je veux le y.
Une fois que j'ai le point (x, y) de ma courbe dans l'image résultat, il faut que je colle un bout de l'image source « sous » le point. C'est la que les difficultés commencent. Il faut déjà que je retrouve l'abscisse correspondant à mon t dans l'image initiale, en calculant la longueur de la courbe entre son origine et le point (x, y).
Il faut aussi que je calcule l'orientation de la courbe pour mon t courant.
Ensuite, si je colle une colonne de pixels de mon image source sous mon point dans la direction orthogonale à la courbe, je vais avoir des trous. Il faut plutôt que je prenne les points sous la courbe et que je retrouve à quel point ils correspondent dans l'image source.
Enfin, les points qui correspondent au bas de l'image source vont avoir tendance à se superposer dans la projection. Il faut que je mélange les couleurs dans le résultat.
Finalement tout ce que j'arrive à produire est un bandeau gris moche.
[^] # Re: Déformation par cage
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 1.
Et je confirme que tracer le chemin avec l'outil « clone » ne donne pas un bon résultat. La tige n'est pas inclinée selon la pente de la courbe.
[^] # Re: Déformation par cage
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 2.
J'ai essayé avec la transformation par cage de Gimp 2.8 mais je n'arrivais pas à obtenir une belle courbure. L'épaisseur de la tige variait par endroit.
J'ai peut-être une autre piste mettant l'image à déformer dans le presse-papier puis en sélectionnant l'opération « tracer le chemin » sur ma courbe, en utilisant l'outil « Clone » définit sur l'image du presse-papier. Je n'ai pas encore pu essayer ça.
[^] # Re: Retours d'expérience
Posté par Julien Jorge (site web personnel) . En réponse au journal nanimopt: un optimiseur de nanim. Évalué à 3.
Quitte à me répéter, les sites que tu listes sont orientés vers le libre et je ne pense pas que ce soit le point le plus important. Pour faire un jeu libre il faut faire un jeu (ça prend plusieurs mois) et copier une licence libre dans le dossier du jeu (ça prend une seconde au début du projet). Une fois que la licence est copiée, il vaut mieux, à mon avis, aller se montrer aux joueurs.
Pourquoi aller sur freegamedev.net plutôt que gamedev.net ? J'en apprends plus sur gamedev.net et j'y ai même trouvé des contributeurs pour mon jeu libre. Sur les sites qui tournent autour du libre j'ai plutôt des retours qui me disent « t'as vu ce que font les gens de XXX ? » ou pire, « pourquoi tu ne vas pas sur openfreefreedomartandstuff.org pour trouver tes ressources ? »
Pourquoi aller sur jeuxlibres.net se montrer à un petit groupe de francophones plutôt que sur indiedb, où des joueurs du monde entier essaieront le jeu ? Si vous voulez supporter le jeu libre, ce n'est pas pour les libristes qu'il faut faire des sites, c'est pour les joueurs.
Quand il s'agit d'outils informatiques, de bureautique par exemple, les utilisateurs du libre cherchent des alternatives à des outils fermés. Ce n'est pas aussi vrai pour les jeux, où les utilisateurs cherchent plutôt des nouveaux jeux.
Oui c'est dur de packager un tar.xxx et de le diffuser. Les ajustements pour les différentes plates-formes demandent du temps. L'annonce d'une nouvelle version et son résumé demandent du temps. L'upload met du temps à se faire. L'appli mets du temps à compiler. Le public ne veut pas du source, il veut un truc pour son système, alors faire un deb/rpm ou une compilation statique prend aussi du temps.
Il me faut généralement un jour et demi pour finaliser l'archive de mon jeu. Après quoi il faut encore rédiger l'annonce de la nouvelle version et la diffuser.
Donc à mon avis, qui ne vaut que ce qu'il vaut, l'énergie dépensée pour entretenir des sites comme jeuxlibres.net ou jeuxlinux.fr serait mieux investie dans une veille de l'avancement du dev des jeux et la publication des avancées sur des sites de jeux (pas « jeux libres », juste « jeux »). Ça soulagerait les developpeurs, ça augmenterait la visibilité et les retours et donc leur motivation.
[^] # Re: Retours d'expérience
Posté par Julien Jorge (site web personnel) . En réponse au journal nanimopt: un optimiseur de nanim. Évalué à 6.
Le problème que je vois dans jeuxlibres.net et jeuxlinux.fr, mais aussi happypenguin.org et lgdb.org, c'est qu'ils mettent le focus sur des qualités des jeux qui ne sont pas les plus importantes : c'est libre ou ça tourne sous Linux.
Je ne dis pas que ce ne sont pas des qualités mais ça me semble aussi peu intéressant que de présenter son jeu sur un site sur Java par exemple. Ça ne concerne aucunement ce qui me semble être le plus important, c'est à dire le contenu. En allant sur des sites de jeux indépendant, ce qu'est effectivement Newton Adventure, les échanges et les commentaires tourneront autour du jeu, et le projet avancera.
Ce sont les retours des joueurs qui donnent envie de bosser sur les projets. Et les joueurs de jeux sous Linux, ou de jeux libres, sont avant tout des joueurs. Vu le temps que ça demande de communiquer sur un projet, autant le faire au plus efficace, c'est à dire sur des sites internationaux de jeux. Ça n'empêche pas de discuter de technique ou de liberté sur d'autres sites, mais il vaut mieux le faire s'il reste du temps.
Un type de contributeur que j'aimerais bien avoir et que je n'ai jamais vu serait une personne qui suivrait l'avancée du projet quasiment en permanence. Elle publierait avec un regard externe les avancées, et plutôt d'une manière orientée jeu. Aujourd'hui les nouvelles sont liées à la sortie du logiciel, et la plupart des articles sont carrément proposés par les développeurs. Ça me semblerait plus utile d'avoir un suivi à la semaine ou au mois des nouveautés en cours de développement, et ça aiderait les projets à ne pas sembler morts durant les années qui séparent les sorties.
# Retours d'expérience
Posté par Julien Jorge (site web personnel) . En réponse au journal nanimopt: un optimiseur de nanim. Évalué à 7.
Comme je te le dis dans le post plus haut, j'ai l'impression de te voir passer par les étapes que j'ai vécue. Alors je te propose un petit retour d'expérience.
Je ne pense pas que j'utiliserai ton système car, sans vouloir t'offenser, j'ai le sentiment que tu es encore un poil naïf. Je n'ai pas l'impression dans tes propos que tu aies bien fait le tour du besoin. Il est certes utile d'avoir un format d'animation, mais il y a bien d'autres questions qui se posent dans la gestion de l'anim et je doute que le format soit primordial. Par exemple, dans le développement de mon jeu, nous sommes passés par ce genre d'étapes (uniquement sur l'aspect graphique, je passe le moteur physique, le son, les inputs, l'interface, l'IA, etc.) :
Et au bout d'un moment on se demande : où est le contenu du jeu dans tout ça ? On a un super moteur qui répond à quasiment toutes nos problématiques, modulaire et indépendant de notre jeu, on a quasiment pas de niveaux, et on voit les autres développeurs de jeux qui revivent la même histoire.
Si je n'ai qu'un conseil à te donner, c'est de te concentrer sur le contenu de ton jeu. Attention à ne pas passer trop de temps sur la technique ; c'est très satisfaisant mais ça ne fait pas avancer le jeu. Va au plus simple, capitalise sur le concept, et essaie de te montrer sur des sites de jeux genre indiedb afin d'avoir des retours sur ce qui compte dans les jeux : le contenu.
# Questions techniques
Posté par Julien Jorge (site web personnel) . En réponse au journal nanimopt: un optimiseur de nanim. Évalué à 4.
Je suis un peu ce que tu racontes sur LinuxFR au sujet de Newton Adventure et j'ai l'impression de te voir passer par les mêmes étapes que j'ai vécues en faisant mon jeu.
Pour le coup, je n'ai jamais cherché à répondre à la question de l'optimisation placement des sprites dans les textures, bien qu'elle se pose depuis le début, et j'ai tendance à le faire au cas par cas. Mais si je devais m'y mettre, la première question concernerait une solution pour remplir l'espace restant après avoir posé les sprites d'une anim.
Par exemple, j'ai une animation de 3 sprites en 32x32 et une autre de 5 sprites. Je veux les mettre dans des textures de 64x64. A priori j'aimerais me retrouver avec deux images au final. Est-ce que ton format d'animation et ton optimiseur permettent cela facilement ?
J'ai eu des soucis avec des sprites auxquels j'appliquais une rotation dans le jeu : un bord du sprite voisin avait tendance à apparaître dans la rotation. Pour éviter cela, j'ai ajouté une bande d'un pixel transparent autour de mes sprites. Est-ce que ton outils permet de mettre une marge entre les sprites ? Envisages-tu de le faire ?
[^] # Re: wikipedia
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Newton Adventure 1.2. Évalué à 1.
La page émergera de l'intérêt de la communauté du jeu vidéo ou du logiciel libre pour le projet, ou de n'importe quel domaine dans lequel Newton Adventure serait un bon représentant. Il y a des critères d'admissibilité.
Et de mon point de vue, personne ne devrait créer ou rédiger un article sur son propre projet. Si le projet n'a pas réveillé chez un contributeur de Wikipédia l'envie de rédiger un article, c'est qu'il n'y a pas encore sa place. Je sais que c'est tentant, pour « compléter » Wikipédia, pour gagner en visibilité, mais ça doit venir d'une personne extérieure au projet.