Journal Soya 3D version 3 arrive... (en images !)

24
23
juil.
2014

Soya est un moteur 3D pour Python. La première version de Soya a été utilisée dans plusieurs jeux et notamment Slune, Balazar et Balazar Brother. Plusieurs tentatives de seconde version n’ont pas donné grand chose, principalement faute de temps… Et aujourd’hui, voici venir la version 3 dont les sources sont disponibles sur Bitbucket !

Les nouveautés les plus marquantes sont les suivantes :

  • Support de Python 3.4 et Blender 2.70
  • Vertex shaders et pixel shaders : Soya divise les shaders en pas moins de 20 ‘mini-shaders’, ce qui permet de modifier une partie spécifique du rendu sans avoir à s’occuper du reste; de plus Soya accepte une syntaxe pythonique pour l’écriture de ces shaders !
  • Meilleurs performances : le processus de rendu a été entièrement réécrit, en utilisant les ‘vertex buffer object’ (VBO)
  • Antialiasing plein écran (Fullscreen antialiasing)
  • Licence GPL v3

Parmi les fonctionnalités habituelles de Soya, on retrouve : l'import automatique des modèles réalisés dans Blender, le rendu de terrain, le cellshading (réimplémenté avec des shaders), les calculs de changements de repère automatique, la régulation automatique du FPS…

Voici un exemple de mini-shader permettant de déformer un modèle 3D avec des “vagues” verticales. La déformation se fait dans le système de coordonnées de la caméra, c’est donc un “camera-space deform mini shader” selon la terminologie de Soya. La déformation dépend du paramètre temps (self.time) qui est mis à jour automatiquement par Soya.

wavy_mini_shader = soya.MiniShader("wavy", """
uniform float self.time
def void cameraspace_deform_mini_shader():
  current_vertex.x = current_vertex.x + 0.2 * sin(0.2 * self.time + 3 * current_vertex.y)
""")

my_body.add_mini_shader(wavy_mini_shader())

Mini-shader 'wavy'

Ces mini-shaders permettent de réécrire une étape bien spécifique du rendu, Soya se chargeant ensuite de les rassembler pour créer les vertex et pixel shaders, ainsi que de les compléter avec les morceaux manquants si nécessaires (En effet, OpenGL ne permet normalement pas de réécrire qu’une partie du processus de rendu – soit vous n’y touchez pas, soit vous réécrivez tout !). La série de tutoriels “mini-shader-*” dans les sources de Soya proposent d’autres exemples.

Les sources de la version de développement de Soya 3 sont disponibles sur Bitbucket ici pour ceux qui veulent tester : https://bitbucket.org/jibalamy/soya3

Le site oueb de Soya : http://www.lesfleursdunormal.fr/static/informatique/soya3d/index_fr.html

Et pour finir, une image d’un projet secret de jeu utilisant Soya 3 :

Projet secret...!

(d'autres images ici : http://www.lesfleursdunormal.fr/static/informatique/soya3d/2014_07_21_projet_secret_fr.html)

  • # Licence

    Posté par (page perso) . Évalué à 0.

    Vraiment dommage de choisir GPL comme licence. Pour une bibliothèque / framework la LGPL reste un gros avantage et est bien moins contraignante.

    Beaucoup de personnes vont fuir ton projet si tu garde la GPL, crois moi :-). C'est dommage car en plus il a l'air sympathique.

    l'azerty est ce que subversion est aux SCMs

    • [^] # Re: Licence

      Posté par (page perso) . Évalué à 10.

      Sauf que je trouverais assez moyen que quelqu'un s'approprie mon travail (ce que permettent la GPL et la LGPL) et le rentabilise sans rien me redonner en échange (ce que permet la LGPL mais pas la GPL)… L'exemple type serait qu'un individu réalise son jeu avec mon moteur, en tire un profit, et garde tout pour sa pomme. J'aurai en quelque sorte travailler bénévolement pour cette personne.

      La GPL prévient ce type de problème en obligeant tous ceux qui feront leurs jeux avec Soya à le faire en logiciel libre. A défaut d'avoir de l'argent j'aurai au moins leur code à me mettre sous la dent :)

      Soya est un moteur fait pour faire des jeux libres, qu'on se le dise !

      • [^] # Re: Licence

        Posté par (page perso) . Évalué à 1.

        Sauf que je trouverais assez moyen que quelqu'un s'approprie mon travail (ce que permettent la GPL et la LGPL) et le rentabilise sans rien me redonner en échange (ce que permet la LGPL mais pas la GPL)… L'exemple type serait qu'un individu réalise son jeu avec mon moteur, en tire un profit, et garde tout pour sa pomme. J'aurai en quelque sorte travailler bénévolement pour cette personne.

        Tu as déjà travaillé bénévolement. Ton projet est quasi mort dans l'oeuf (*) en choisissant cette licence : il est déjà difficile de faire de l'argent dans le monde du jeu vidéo, alors si en plus tu dois fournir le jeu sous licence GPL…

        (et je ne parle même pas des applications professionnelles qui pourraient avoir besoin de 3D)

        (*) : je parle en terme de communauté d'utilisateurs

        • [^] # Re: Licence

          Posté par (page perso) . Évalué à 1.

          C'est un problème avec Python ces licences… Avec Perl, tu colles la licence GPL + Perl Artistic et tu upload le tout sur le CPAN comme tout le monde, sans te poser de question ;-)

        • [^] # Re: Licence

          Posté par (page perso) . Évalué à 10.

          L'objectif du projet en soit, ce n'est pas de faire un moteur 3D, mais bien de faire des jeux libres, et en particulier pour les plateformes libres (telle Linux). Par conséquent la GPL n'est pas un obstacle mais bien la garantie de ne pas s'éloigner de cet objectif !

          Être bénévole ne me pose pas de problème. Mais travailler bénévolement pour qu'un autre s'enrichisse, c'est autre chose.

          En matière de communauté d'utilisateur, la première version de Soya avait permis à de nombreux programmeurs de s'initier à la 3D. Ce moteur avait même été utilisé par un enseignant au collège pour faire découvrir la programmation et la 3D à ses élèves…

          Au fait, il faudrait aussi prévenir la communauté Blender, logiciel sous GPL, que son projet de modeleur 3D et de moteur de jeu est mort dans l'oeuf. Sans parler d'un certain noyau…

          • [^] # Re: Licence

            Posté par (page perso) . Évalué à 4.

            Au fait, il faudrait aussi prévenir la communauté Blender, logiciel sous GPL, que son projet de modeleur 3D et de moteur de jeu est mort dans l'oeuf.

            Jusqu'à preuve du contraire, les fichiers produits avec Blender ne sont pas couverts par la GPL. Par contre, pour les jeux, ça pose en effet de gros problèmes (ceux qui sont distribuées avec le player standalone sont couverts par la GPL). Bien sûr il y'a plein de petits jeux amateurs (qui en général ne respecte pas la license au passage, m'enfin), mais peu (aucun ?) gros jeux (c'est sûrement aussi du au fait que globalement la GE est moins "bien" que certaines alternatives propriétaires).

            Sans parler d'un certain noyau…

            Compare des choses comparables :) Le noyal il a été lancé en 90. Je ne pas suis sûr qu'un noyau sous GPL prendrait aujourd'hui (en supposant que des bonnes alternatives existent bien entendu).

            • [^] # Re: Licence

              Posté par (page perso) . Évalué à 9.

              Le noyal il a été lancé en 90. Je ne pas suis sûr qu'un noyau sous GPL prendrait aujourd'hui (en supposant que des bonnes alternatives existent bien entendu).

              C'est sur qu'à force de tout refaire sous licence BSD plutôt que d'améliorer ou de produire sous GPL, on affaibli petit à petit la GPL ;-)

          • [^] # Re: Licence

            Posté par . Évalué à 1.

            C'est la première fois depuis longtemps que je voie une image de jeu libre et que je me dis que c'est joli. Chapeau !

            Concernant la GPL, si tu as la licence de toute le code, tu peux vendre des licences close source, ainsi il paye le développement du soft libre. C'est ainsi qu'à fonctionner Qt, et MySQL. C'est un bon modèle de dev libre, qui ne marche évidement que pour des libraries.

            "La première sécurité est la liberté"

        • [^] # Re: Licence

          Posté par (page perso) . Évalué à 10.

          Hé bien les gens qui ne veulent pas faire de GPL utiliseront un autre outil.

          Je ne vois pas pourquoi vous voulez absolument que ça soit un problème, l'auteur n'a pas la même philosophie du libre que vous, et il préfère que ceux qui utilisent ce qu'il donne à la communauté partagent aussi le fruit de leur travail.

          C'est son choix, peut-être qu'il y aura moins d'utilisateurs, mais si le nombre d'utilisateurs avait été son but premier, il aurait mis en domaine public.

          Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

        • [^] # Re: Licence

          Posté par . Évalué à 1.

          L'obligation que le moteur du jeu soit en GPL est un faite. Mais rien n'oblige que les contenus graphiques et audio le soit aussi. Et c'est bien ces dernières que les éditeurs veulent protéger.

      • [^] # Re: Licence

        Posté par . Évalué à 3.

        Tu réalises que je peux très bien faire un jeu Libre mais pas gratuit?

        Sur Android, ce serait même très simple: il suffit de mettre le jeu sur le store, avec un lien vers les sources. Évidemment, il y aura des gens qui iront compiler les sources eux-mêmes, mais je te parie que personne n'ira remettre le jeu en version gratuite. "J'ai payé avec mon temps et mes compétences". Il y a des cas similaires même sur PC de bureau (de mémoire, un logiciel de layout IC dont le binaire Windows est payant mais le code est dispo sur internet si tu veux le compiler toi-même.

        Alors oui, tu auras le code, mais je m'enrichis quand même et pas toi (en supposant que je ne te reverse rien: oui, je suppose que je suis une raclure égoïste et opportuniste, et je suppose ce que je veux, non?)

        • [^] # Re: Licence

          Posté par (page perso) . Évalué à 1.

          Sauf que la GPL t'oblige à publier ton code. Donc je n'ai pas rien, je "m'enrichi" (intellectuellement parlant) de ton code. Il n'y a pas que l'argent dans la vie !

          • [^] # Re: Licence

            Posté par (page perso) . Évalué à 3.

            NON, la GPL n'oblige pas à publier le code de manière générale. Il oblige à fournir le code (sur demande potentiellement) aux gens à qui tu distribue un "truc" qui contient du code GPL (qui peuvent eux même le diffuser ensuite, je te l'accorde).

            • [^] # Re: Licence

              Posté par (page perso) . Évalué à 9.

              C'est tout à fait vrai, mais le simple fait d'écrire "GPL" fait fuir 90% des charognards.

              http://devnewton.bci.im

        • [^] # Re: Licence

          Posté par (page perso) . Évalué à 5.

          C'est le cas aussi de gcompris

          La version windows complete est payante (9€), mais on peut la compiler

        • [^] # Re: Licence

          Posté par (page perso) . Évalué à 1.

          Tu réalises que je peux très bien faire un jeu Libre mais pas gratuit?

          Avec la GPL c'est complètement contradictoire. Puisque la GPL oblige le partage du code source, tu peux très bien dire (en tant qu'auteur) "je te le vends" puis l'acheteur en fait après ce qu'il a envie (puisque c'est GPL) et donc, le redistribuer gratuitement aux autres.

          l'azerty est ce que subversion est aux SCMs

          • [^] # Re: Licence

            Posté par (page perso) . Évalué à 1.

            C'est pourtant les termes exactes de la GPL.

            Oui il est possible que ça se passe comme ça, mais en moyenne, les gens n'ont pas la connaissance / compétences / moyens de compiler le code source (surtout sur Windows) / mettre en place un système de distribution des sources.

            • [^] # Re: Licence

              Posté par (page perso) . Évalué à 6.

              Tu oublie aussi ceux qui en sont capable mais ne sont pas dérangé par le fait de rémunérer l'auteur.

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: Licence

            Posté par . Évalué à 3.

            Et pourtant j'ai cité un exemple d'une appi de layout IC (mais plus moyen de remettre la main dessus), et visiblement Gcompris fait la même chose:
            Le binaire précompilé pour Win est payant, le code source est toujours aussi Libre.

            Ça n'a rien de contradictoire, comme il t'a été répondu, les gens qui savent compiler pour Win peuvent:
            -décider qu'ils ont autre chose à foutre que de distribuer le binaire, vu que ce sont souvent les utilisateurs finaux et pas forcément des dévs
            -décider de respecter l'auteur qui n'a sciemment pas mis à dispo les binaires gratuitement et le laisser faire son beurre
            -décider qu'ils ont payé en temps et compétence et que si d'autres peuvent l'avoir en tendant la main c'est pas juste (bon, on va dire que c'est moins probable, surtout de la part de quelqu'un qui a compilé lui-même pour pas filer de thune à l'auteur…)

            • [^] # Re: Licence

              Posté par (page perso) . Évalué à 2.

              -décider de respecter l'auteur qui n'a sciemment pas mis à dispo les binaires gratuitement et le laisser faire son beurre

              Il me semble que pour gcompris, ça faisait chier les auteurs de faire et de maintenir le paquet PE32 et c'est pas aussi trivial que cela. La somme modique était plus destiné, de mon point de vu, à faire réfléchir l'acheteur que d'arrondir leur fin de mois.

      • [^] # Re: Licence

        Posté par . Évalué à 0.

        Je comprends ton point de vue mais ce n'est pas une bonne stratégie pour les jeux.

        Ton objectif est surement de diffuser au maximum ta librairie qui a l'air très bien.

        Il y a beaucoup de framework de jeux payant. Les développeurs qui les utilisent payent. C'est la coutume.

        Il vaut mieux une double licence libre et commercial.

        N'hésite pas à vendre quelque chose en plus. Ca va t'aider.

        L'émotion qui vient de "Je ne veux pas qu'on s'approprie mon travail" disparaitra si tu touche un revenu en contrepartie.

        • [^] # Re: Licence

          Posté par (page perso) . Évalué à 2.

          Sauf que j'ai déjà un travail, et je n'ai ni besoin ni envie de gagner de l'argent ainsi… Je fais des jeux pour m'amuser et je ne souhaite pas que cela devienne une contrainte.

          • [^] # Re: Licence

            Posté par . Évalué à 0.

            Oui.

            J'ai vu ton site et j'ai compris après que j'étais à coté de la plaque.

            Comme tu développes un jeu, j'ai cru que tu étais un développeur de jeu indépendant.

            Désolé.

    • [^] # Re: Licence

      Posté par (page perso) . Évalué à 5.

  • # Slune

    Posté par (page perso) . Évalué à 8. Dernière modification le 23/07/14 à 20:40.

    J'avais pas vu passer ce jeu depuis des années, mais juste un petit mot pour vous féliciter du thème (distribuer des médicaments génériques contre le SIDA aux pays les plus touchés en luttant contre les industries pharmaceutiques), et du boulot réalisé bien sûr. Qu'est-ce que ça peut faire plaisir de voir des thèmes comme ça de temps en temps.

    P.-S.: et content de voir que vous êtes toujours actifs !

    • [^] # Re: Slune

      Posté par (page perso) . Évalué à 6.

      Merci, c'est vrai que le thème de Slune était assez audacieux !
      Le meilleur moment, c'était la fameuse remise du prix "Jeux libres" par la ministre de la recherche de l'époque. Avec la consigne de ne pas trop aborder le sujet militant… mais il se trouvait que la ministre en question était médecin et donc intéressé par ce qui concernait les médicaments… :D

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.