Journal Licence ouverte, jeu, incompatibilité?

Posté par  (site web personnel) .
Étiquettes : aucune
0
15
juin
2005
Salut!

Depuis quelques temps je suis en train de m'amuser à créer un jeu sur la grande toile intergalactique.
C'est un jeu de réflexion, programmé principalement en php avec support de mysql et un moteur de jeu en python.

Mon soucis actuel se trouve au niveau de la licence utilisée pour mon futur bébé, d'un côté j'aimerai que le jeu soit libre, sources accessible et touti quanti, mais de l'autre côté si n'importe quel joueur a accès au sources, il sera bien plus avantagé que celui qui ne regarde pas comment la machine fonctionne. De plus il aura accès à certaines caractéristiques internes du jeu qui ne doivent normalement pas être connues du joueur.

Dilemme.
Comment le résoudre? Existe t il une solution pour publier mes sources "partiellement" avec des zones de censures?
Je vois vraiment pas comment m'y prendre là...
  • # Dépend du type de jeu.

    Posté par  . Évalué à 2.

    Ton problème dépend principalement du type de jeu que tu développes. Est-ce du coup par coup ou autre ?
    • [^] # Re: Dépend du type de jeu.

      Posté par  (site web personnel) . Évalué à 2.

      C'est du tour par tour.
      Chaque jour les joueurs entrent leur stratégie et à minuit on résoud les actions en passant le tout dans une moulinette python.
      • [^] # Re: Dépend du type de jeu.

        Posté par  . Évalué à 3.

        tu peux detailler un peu le principe de ton jeu, pour le moment j'arrive pas a voir en quoi connaitre le source avatagerait un joueur.

        Dans les jeux de strategie les joueurs sont censes connaitres les regles et donc peuvent donc deduire a l'avance le resultat de leurs actions modulo un peu d'aleatoire (ils peuvent meme utiliser des simulateurs)...
        • [^] # Re: Dépend du type de jeu.

          Posté par  (site web personnel) . Évalué à 2.

          Pour jouer, oui les joueurs appliquent les règles et en déuisent une stratégie (plus ou moins efficace)

          Là ou ca se complique, c'est par exemple le classement des joueurs, qui est une formule qui tient compte de plusieurs paramètres: résultat, assiduité, role play etc..
          Je n'aimerai pas par exemple que la formule soit devinée trop facilement (car je ne me leurre pas elle sera devinée avec l'experience) afin que les joueurs n'essayent pas d'influer sur tel ou tel autre paramètre qui pourraint manquer afin de leur fournir un meilleur classement.
          Autre exemple, prenons le cas de plusieurs type de personnage, admettons un moine et un guerrier, leur manière d'acquérir des points peut être différente, et pas forcément précisée dans les règles... Au joueur de deviner, en jouant, aps en lisant les sources.
          Dernier exemple: l'association d'objet, admettons qu'un joueur puisse récolter au travers de son aventure divers artefacts, et qu'il puisse associer une pierre bleue avec une pierre jaune pour obtenir une pierre verte. Et bien j'aimerai que cette association soit decouverte par l'experience encore une fois, et non pas en lisant les sources. Que le joueur trouve cette combinaison après avoir chuté en essayant d'associer une pierre bleue avec une pierre rouge.

          Bref, les exemples sont divers et variés...
          • [^] # Re: Dépend du type de jeu.

            Posté par  . Évalué à 10.

            Une solution aux problèmes mentionnés ci-dessus pourrait être de considérer ces éléments comme des éléments de configuration et de les mettre par exemple en base de données. A toi de trouver une grammaire qui te permet de les exploiter facilement.

            Le moteur peut alors être ouvert sans dévoiler les paramètrages.
            C'est juste une idée, elle est perfectible :-)

            Bonne chance et tiens-nous au courant de l'avancement de ton projet.
            • [^] # Re: Dépend du type de jeu.

              Posté par  (site web personnel) . Évalué à 0.

              je me disais comme toi que certaines formules pouvaient etre stoquees dans des plugins ...

              hors, la GPL n oblige a etre GPL que les plugins lies statiquement ou dynamiquement ... donc si tu fait un plugin script pour un programme script, cette close que la GPL ne semble pas s appliquer :)

              AMHA

              je confirme que je pense qu il y a moyen de coder le moteur en python public, et de cacher les formules dans des plugins additionnels.

              Afin que la version publique marche quand meme, tu devra ecrire deux version pour chaque plugin: une ver pub, une ver privee.

              si les deux versions de chaque plugin sont ecrits independements ( c est a dire ne sont pas des forks), alors leurs licenses peuvent etre differentes. Je veux dire que les ver priv et pub peuvent meme etre toutes les GPL, mais si le copyright est different, alors tu n est pas obligee de publier les modifications de la version privee ...

              il y a encore plus simple:

              tu ecrit tout ton code sous license fermee, et tu libere individuellement chaque fichier sous une license autre (publique ou GPL) ... comme la version de base reste privee, tu n est meme pas tenue de publier tes mises a jour, tandis que tous ceux qui dl tes sources ouverts en GPL eux y seront astreints :) (fait gaffe pour les backports de patchs ... )

              C est l interret de la double license :)
          • [^] # Re: Dépend du type de jeu.

            Posté par  . Évalué à 3.

            oui, mais qu'est ce qui empeche ces tricheurs d'aller lire des soluces sur le net où toutes les astuces sont expliques au lieu de lire les sources ?
  • # plusieurs solutions

    Posté par  (site web personnel) . Évalué à 10.

    - ne pas publier le jeu (ba oui vue qu'il est pas distribuer y'a pas besoin de fournir les sources :p ) et le mettre en GPL
    - mettre seulement le moteur du jeu en GPL et le distribuer. Deporter les paramètres du jeux dans des fichiers de conf qui eux seront fournit avec des valeurs exemples (et pas celle du jeux)
    - mettre a disposition le moteur mais ne pas mettre les fonctions regulatrices du jeux a disposition. Dans le moteur on a un appelle a une fonction faireAvancerLesJoueurs par exemples et le code de cette fonction n'est pas fournie donc les gens peuvent savoir dans quel ordre le jeux ce deroule mais pas comment resoudreUnCombat se joue. Quelqu'un qui reutilise le moteur devra recoder ces fonctions.
    - Tout mettre a disposition, de toute maniere avec ou sans ca ils finiront bien par savoir/se douter de comment ca marche et a le crier sur tout les forums
  • # Chez les Specialiste

    Posté par  . Évalué à 1.

    Il y a eu un debat sur l'open source sur les forums tour de jeu
    http://www.tourdejeu.net/forum/index.php?showtopic=304&hl=(...)

    Ce qu'il en ressort ( J'ai les defauts en tete je ne vous rapellerait pas les avantages )
    1) Ca permet a certain joueur de savoir des choses qu'il ne devrait pas ( Bref il faut absolument garder un maximum de chose secrete au niveau du comportement du jeux voir meme activer certain comportement tres rare pour faire circuler des rumeurs )
    2) Ca permet a des boulet de sortir un Jeu Clone du tient
    • [^] # Re: Chez les Specialiste

      Posté par  . Évalué à 5.

      Ca permet a des boulet de sortir un Jeu Clone du tient
      Ben si le boulet n'apporte rien a ton jeu et n'est pas capable de le maintenir il va pas faire long feu..

      Pour le 1), ca depend reellement du jeu. Mais je suis sur qu'il y a toujours moyen de pas baser le jeu sur des secrets...
      • [^] # Re: Chez les Specialiste

        Posté par  . Évalué à 1.

        Pour les boulet C'est ce que je voulet dire
        Boulet ==> Clone de jeux de mauvaise qualitee ==> Les joueurs qui ont connus les clones s'enfuie a l'approche de l'original

        pour le 1) Oui certain Jeux peuvent ne pas avoir secret
        Mais un univers a Secret correspond grandement au charme que ce soit pour du JDR ou meme pour du jeux de strategie (surtout si celui ci a une dimension Heroique avec quette d'Artefact etc ... )

        Exemple simple : La magie n'existe pas ( Oui mais pourquoi alors le code source contient de la magie ? )
        Est ce que envoyez une Armee/un Hero Liberez un PNJ vaut il la peine par rapport a ce que PNJ apporte ?

        etc ...
        Bref a moins que le jeux n'aie aucun mistere
        si il est bon d'avoir la partie technique publiee et ouverte il faut que les secrets soit cache discretement afin de laisser des surprises aux joueurs ...
        • [^] # Re: Chez les Specialiste

          Posté par  (site web personnel) . Évalué à 4.

          D'ou comme je le precisais, mettre ce type d'info dans les fichiers de conf, la conf (ou base de donnée) du serveur n'etant pas mise en place :

          ## blabla conf pnj a libérer
          PNJXXX PX 10
          PNJXXY PX 0

          ## blabla activation de modules
          Magie ON
          VolADosDeDragon OFF

          ## blabla conf melange
          PIERRE BLEU + PIERRE ROUGE = Boum PV 5
          PIERRE BLEU + PIERRE VERTE = PIERRE VERTE

          ## blabla conf objet
          PIERRE XXXX : int + 10
          PIERRE YYYY : for + 5

          Et la les valeurs par defaut t'es pas obliger de les lacher.
        • [^] # Re: Chez les Specialiste

          Posté par  (site web personnel) . Évalué à 2.

          Oui mais a ce moment là on fait comment? on ne met que la moitié du code sous license libre et le reste on le garde au chaud?
    • [^] # Re: Chez les Specialiste

      Posté par  (site web personnel, Mastodon) . Évalué à 7.

      Ayant participé à ce débat, je me permet de répondre :)

      1) c'est un argument qui ne touche qu'une toute partie du jeu, dans les cas les plus extrêmes où le but est de retrouver comment joue l'ordinateur (ce que perso je trouve chiant comme principe ;)...

      2) Ça c'est vraiment une fausse idée. Déjà, si quelqu'un veut vraiment faire un clone de ton jeu, rien ne l'empêche de le reprogrammer lui même !

      Le problème du fork viens plus de la façon dont le jeu est géré : si la communauté du jeu est vivante et que les développeurs sont réactifs, il n'y a aucun problèmes, les joueurs restent et il n'y a pas de fork.

      De plus, un code libre permet par exemple à d'autres équipe de faire des choses que l'équipe originale n'aurait pas fait : site dans une autre langue, règles différentes que l'équipe originale ne veut pas implémenter, etc.

      L'argument du fork pourri ne tiens pas, un fork pourri n'attire pas de joueurs !

      En fait, cette peur du fork est surtout la preuve que le jeu est fait pour se faire mousser, par pour faire plaisir au joueurs avec le meilleur jeu possible... Les partisants les plus véhéments de cette idée désservent le jeu au profit de leur égo !)
  • # simple...

    Posté par  (site web personnel) . Évalué à 5.

    Si ton jeu est en script, c'est assez facile.

    Tu sépares les fonctions "stratégiques" dans un fichier à part, qui devient ainsi une donnée du programme. Dans un langage de script, tu peux tout à fait imaginer des donnés sous forme de code.

    A toi de fournir, un fichier de donné d'exemple qui n'es pas celui utilisé par toi. Il faut aussi définir une api stable et pas trop merdique.

    Tout comme les graphismes d'un jeu peuvent ne pas être sous GPL, tu peux aussi livrer un jeu dont tu modifies ensuite le paramètrage.

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

  • # Nethack

    Posté par  . Évalué à 5.

    Ses sources sont tout ce qu'il y a de plus libres, on peut donc théoriquement tout savoir.

    Mais ce jeu reste malgré tout très intéressant et passionnant par sa grande richesse!

    Bref, il ne faut pas s'inquiéter.

    Snark
    • [^] # Re: Nethack

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      c'est que je me disais aussi..

      Si t'as envie de jouer à un jeu, tu le fais pour le plaisir. Les "secrets", ils apparaissent tout de suite sur internet.

      Donc faire trop d'effort pour planquer un "secret" ne me semble pas spécialement justifié.

      Au pire, tu mets tous ces paramètres dans un fichier à part (comme dit un peu partout dans les comments) et tu rajoutes des faux commenaires.

      Genre :

      # Active le vol de dragons
      DRAGONS + SELLE = VOL

      mais en fait $DRAGONS correspond à la pierre jaune, $SELLE à la bleue et $VOL à la verte ;-)

      # super top secret
      ONNE + LITPAS = LESSOURCES

      Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Nethack

        Posté par  (site web personnel) . Évalué à 3.

        super pour debuguer les parametres, si tu veux changer les règles \o/

        nan mais faut arreter le crack, la
      • [^] # Re: Nethack

        Posté par  . Évalué à 2.

        c'est un peu naze ton truc. Tu fais comment pour decoder ton fichier sans que les utilisateurs comprennent ton code ? Tu utilise un autre fichier pour les paramètres du code ! Et ce fichier tu rajoute des commentaires bidons. Et pour decoder ce fichier ... [StackOverflow]
  • # Un sujet passionnant

    Posté par  (site web personnel) . Évalué à 3.

    Tout d'abord, je pense que ceux qui affirment qu'un problème de jouabilité peut être amené par une licence se trompent, de même que le fait qu'un programme soit proprio n'apportera rien en plus (à mettre en parallèle avec la sécutité par l'obscurité...).

    Sinon, je pense qu'empêcher la triche dans les jeux est un sujet très interressant. Alors la première règle pour empêcher la triche sur un jeu multijoueur, c'est que tous les paramètres importants du jeu soient calculés au niveau du serveur et pas du client. Le mieux est que le client envoie des ordres de haut niveau (aller ici, jeter un sort), et pas bas niveau (enlever 13 points de vie à l'orc) : ainsi le serveur peut valider les actions (non ton troll ne sait pas lancer de boule de feu) et aussi sauvegarder les données du jeu (les persos ne sont par sur le disque dur des clients).
    Ainsi utiliser un client modifié ne sert à rien, donc qu'il soit libre ou non ne change pas grand chose. Evidemment dans un jeu temps réel à grande échelle ça pose des problèmes de performances (CPU/mémoire du serveur, débit réseau...), mais tu dis que c'est un jeu au tour par tour, alors c'est déjà beaucoup moins problématique.

    Enfin, tu ne veux pas que les paramètres et 'formules magiques de calcul' soient connus : ils n'ont qu'à rester sur le serveur, vu qu'il fait tous les calculs pertinants, dans des fichiers de configuration/scripts. En plus c'est plus propre que d'avoir des valeurs en dur dans le code. Tu peux alors distribuer client et serveur sous licence libre, avec des fichiers de paramétrage par défaut (mais sur ton serveur perso tu auras des valeurs bien à toi ).

    En espérant avoir été utile !
    • [^] # Re: Un sujet passionnant

      Posté par  . Évalué à 2.

      Alors la première règle pour empêcher la triche sur un jeu multijoueur, c'est que tous les paramètres importants du jeu soient calculés au niveau du serveur et pas du client.
      Pas d'accord : qui te garanti que le serveur ne triche pas ?
      La meilleur solution est d'appliquer des principes d'algo distribue ou des consensus sont realise entre les clients : un ou deux clients peuvent essayer de tricher, mais il n'essayeront jamais de tous triche dans le meme sens.
      • [^] # Re: Un sujet passionnant

        Posté par  (site web personnel) . Évalué à 2.

        Oui effectivement je n'ai pas précisé une hypothèse : le serveur est sensé être fiable. Il faut forcément au moins un maillon de confiance. Mais bon si je m'inscrit sur un site de jeu, j'ai un minimum confiance dans celui-ci ! :) ( tout comme les milliers de joueurs de Ev3rqu3st qui ont confiance dans les serveurs ).

        Mais on est d'accord, le cas où le serveur n'est pas 'fiable' est trés intéressant aussi. Ca peut arriver par exemple dans le cas où on distribue le monde sur les machines des clients (si on veut faire un monde vraiment énorme sans avoir les moyens de payer un cluster de serveurs officiels par exemple). Mais là encore, même en répliquant les parties du monde sur plusieurs machines, en faisant des recoupements ..etc, il faut quand même poser un postulat de base : par exemple que la majorité des joueurs sont honnêtes. Tu dis qu'ils ne tricheront pas tous dans le même sens, mais il faut vraiment voir au cas par cas : on peut imaginer une majorité de tricheurs, et qui utilise le même client 'hacké' --> les tricheurs peuvent être vus comme les joueurs honnêtes et vice versa.
  • # Aléatoire

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    Salut Uld, on se lance ? :)

    Pour commencer, à mon avis, un jeu qui se résume à le découverte d'algorithme est déjà peut intéressant... peut être qu'il faudrait commencer par bien réfléchir au concept :)

    Sinon, parmi toutes les solutions déjà évoquées, je rajouterais le coté aléatoire. Par exemple dans la découverte d'objet, la résolution des combats, etc.
    • [^] # Re: Aléatoire

      Posté par  (site web personnel) . Évalué à 3.

      Oui on se lance :)

      Note que le jeu ne sera pas que de la brute et bête découverte d'algo, c'est juste quelques moulinettes que j'aimerai cacher, le reste sera de la reflexion pure et dure.
      Pour faire simple, c'est un jeu de joutes de chevaliers, il faudra réfléchir à quelle tactique employer parmis toutes celles dispo afin de faire le meilleur matchs possible (tout en tenant compte de ce que peux jouer l'adversaire...)
      Donc le côté découverte d'objet, lancé de sorts tout ca, c'était bien pour l'exemple hein, pas d'ca chez moi.

      Pour résumer ce qui s'est dit plus haut, je pense m'orienter vers des pages php qui gère le site (librement distribuées), et les configs cachées stockées en base de données et adaptables par chaque webmaster.
      Le moteur, libre aussi, se chargera de faire un triturage de la base pour faire avancer les tour de jeu.

      A approfondir...
  • # séparation

    Posté par  (site web personnel) . Évalué à 4.

    Je ne connais pas ce que tu veux faire exactement mais en général il y a moyen de séparer le moteur du jeu des règles appliquées.

    Pour prendre un exemple plus pertinent j'ai le jeu Westwood "Alerte rouge" en tête.
    - Le moteur c'est ce qui gère la carte, les déplacement, les attaques, l'interfaces ...
    - Les règles ce sont les barres de vies, les blindages, les vitesses, les coéficients par véhicule et par arme
    Dans Alerte Rouge ces dernières étaient dans un fichier .ini séparé. Ca devient de la donnée plus que du logiciel et c'est en tout cas indépendant.

    Le cas cité est simple, possible que le moteur de ton jeu soit plus intimement lié que ça aux règles. Mais si tu arrives à séparer relativement la sauce tu pourras éventuellement publier ton moteur en enlevant les règles (charge à quelqu'un de recréer les siennes).
    Ceci dit les secrets sont vite éventés à base de statistiques ou à la première faille de l'applicatif. J'espère que connaitre ces informations ne gache pas tout le jeu sinon tu risques d'avoir des problèmes à terme.
    Encore un exemple la dessus : freeciv est public, les règles sont connues. Ca enleve une partie du mystère et gache peut être la phase de découverte et d'expérimentation pour celui qui regarde, mais ça ne rend pas le jeu nul et non avenu si quelqu'un les connait.

Suivre le flux des commentaires

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