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 le_silmarillion . Évalué à 2.
[^] # Re: Dépend du type de jeu.
Posté par Uld (site web personnel) . Évalué à 2.
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 M . Évalué à 3.
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 Uld (site web personnel) . Évalué à 2.
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 Fnor . Évalué à 10.
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 doublehp (site web personnel) . Évalué à 0.
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 M . Évalué à 3.
# plusieurs solutions
Posté par Calim' Héros (site web personnel) . Évalué à 10.
- 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 Mais qui suis-je ? :) . Évalué à 1.
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 M . Évalué à 5.
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 Mais qui suis-je ? :) . Évalué à 1.
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 Calim' Héros (site web personnel) . Évalué à 4.
## 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 Uld (site web personnel) . Évalué à 2.
[^] # Re: Chez les Specialiste
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Chez les Specialiste
Posté par nojhan (site web personnel, Mastodon) . Évalué à 7.
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 Nicolas Boulay (site web personnel) . Évalué à 5.
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 Snark_Boojum . Évalué à 5.
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 ploum (site web personnel, Mastodon) . Évalué à 3.
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 lorill (site web personnel) . Évalué à 3.
nan mais faut arreter le crack, la
[^] # Re: Nethack
Posté par LeMagicien Garcimore . Évalué à 2.
# Un sujet passionnant
Posté par GuieA_7 (site web personnel) . Évalué à 3.
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 M . Évalué à 2.
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 GuieA_7 (site web personnel) . Évalué à 2.
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 nojhan (site web personnel, Mastodon) . Évalué à 3.
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 Uld (site web personnel) . Évalué à 3.
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 Éric (site web personnel) . Évalué à 4.
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.