JeuWeb - Crée ton jeu par navigateur
Courbe des prix - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Gameplay, gamedesign (https://jeuweb.org/forumdisplay.php?fid=48)
+--- Sujet : Courbe des prix (/showthread.php?tid=7918)

Pages : 1 2


Courbe des prix - whithak - 26-04-2018

J'expérimente actuellement un jeu de production et commerce de ressources, et me suis trouvé face au problème de la définition du prix.
Quel est le prix de base d'une ressource? Entre quelles bornes le prix peut il varier? De quelle manière le prix varie il?

Pour commencer, le prix de base. Il dépend des conditions de production. Mettons qu'une usine produise une unité de ressource par heure, cette unité vaudra 1. Si cette même usine doit consommer une unité de valeur 1 pour produire une autre unité, cette nouvelle unité vaudra 2, ect.
D'autre paramètres comme le cout de contruction de l'usine (investissement initial) peuvent intervenir.

Ensuite, la variation du prix. Il s'effectue en fonction de l'offre et la demande. L'offre est la quantité de cette ressource actuellement disponible. La demande, ce qui sera consommé par la population pendant une unité de temps.

Afin de ne pas avoir une variation de prix trop brusque (10 fois plus cher si 10 fois moins de stock), je suis parti sur l'emploi d'un logarithme de base 2.
Si le stock double, le prix diminue d'une unité.

Les prix ont été bornés de 1 à 10,multiplié par le prix de base.

Pour finir, comme les ressources de constructions sont davantage employés par les joueurs, moins par la population, un correcteur de demande leur a été appliqué

Au final cela donne une formule de type

Prix =10 - log(4 * stock / ( demande*coefCompensationPrix),2), arrondi à 2 chiffres après la virgule
Prix borné entre 1 et 10
Prix final = Prix*Prix de base

De cette manière, si le stock correspond à la demande, le prix sera de 8. S'il est le double de la demande, 7. Ect...

Dernier ajout, si la demande est nulle ou trop faible, elle sera artificiellement accrue à une valeur de base.

Ainsi, voilà un marché général avec des prix définis "honnêtement".

Et vous, avez vous également besoin de formules de prix dans vos jeux? De quelle manière avez vous résolus vos problèmes?


RE: Courbe des prix - @lucard - 26-04-2018

la variation du prix. Il s'effectue en fonction de l'offre et la demande.
→ je dirais que c'est uniquement vrai dans une société Capitaliste, ou le but est de s'enrichir (en faisant payer le prix fort aux acheteurs)

Smile


RE: Courbe des prix - whithak - 26-04-2018

Tu as d'autres exemples à développer?


RE: Courbe des prix - Ter Rowan - 26-04-2018

hello, si ces prix servent au jeu que tu as décris, je ne pense pas que tu doives t'orienter sur un modèle mathématique tentant de simuler la réalité irl. tout dépend du scenario.

Déjà, quel est le game play : où croise-t-on ces prix ? chez des "marchands" pnj ? pour de la vente au joueur, pour de l'achat au joueur ? pour de l'achat / vente entre joueur ?

A quoi sert le stock ? comment est il généré ? comment ferais-tu pour gérer un stock avec 10 joueurs, si d'un coup 1000 joueurs débarquent ? etc...
Vu ton jeu (si c est le bon) je virerais la notion de stock (hormis peut etre un stock quotidien, dépendant du nombre de joueurs, de leur level, etc..)

A mon sens si le prix doit venir du jeu (donc on n'est pas dans une économie de marché libre, éventuellement marché avec des règles mais bon) tu devrais plutôt raisonner en effort pour l'obtenir versus intérêt de la ressource / objet / vaisseau / etc.

L'effort lui même devrait se baser sur une unité de référence du joueur irl :

exemple : il faut que j'attende une heure (ca peut être une "espérance de gain" si tu mets du hasard, certains l'auront au bout de 5min, d'autres 2h...) pour obtenir un platinium en commençant le jeu (level 1). Donc la ressource qui est 2 fois plus intéressante pour le même joueur devrait coûter 2x plus (avec une courbe éventuelle géométrique ou exponentielle, permettant d'intégrer de la rareté, mais c'est plus intéressant à intégrer en solution endgame que pour les bas level)

ensuite si le fait de "leveler" permet d'accéder à de nouvelles ressources, impossibles à récupérer (hors hotel de ventes) pour un level plus faible,

alors tu pilotes la progression par deux axes :
- la ressource du level 1 est plus facile à obtenir au level 2 (mais de moins en moins utile)
- la ressource du level 2 définit un nouveau référentiel

tu devrais alors te retrouver avec (exemple de valeur juste pour illustrer, au pif) :

référence du level 1 = 1 platinium
référence du level 2 = 1.3 platinium
référence du level 3 = 1.7 platinium
référence du level 4 = 2.2 platinium
référence du level 20 = 146 platinium

l'intéret d'une telle démarche te permet justement de gérer les "trucs rares" (aka qui apporte un bonus supérieur à la normale) de manière simple de ton côté

truc rare du level 1 = 5 platinimum ? = prix équivalent a une référence du level 7 ? ==> doit être qualibré pour avoir un intérêt basique au level 5 (équivalent à ce que je trouverais normalement au niveau 5) et limité au niveau 7 (à changer sauf dans de rare cas)

bref ma vision


RE: Courbe des prix - Xenos - 26-04-2018

Il doit y avoir le modèle de l'URSS (je dirai) où les prix sont fixés par le Parti (ou le Gouvernement).

Bref, dans le concept, et centré autour d'un jeu, une ressource de référence est considérée comme "monnaie", et un organisme fait autorité pour dicter combien de monnaie vaut chaque unité de ressource. Le calcul pour définir cette valeur est totalement libre. Il peut d'ailleurs servir à orienter le jeu: si je trouve que, dans un jeu, une ressource est trop "délaissée" par les joueurs, alors je peux (en tant que "Maitre Du Jeu") remonter le prix de cette ressource, pour augmenter son attractivité. De cette manière, on peut orienter un jeu et éviter qu'il ne parte à la dérive.

Car le risque dans une formule pré-établie, c'est que celle-ci soit mathématiquement faillible. Je ne parle pas du cas de ton exemple où la limite quand le stock tend vers 0 par vers -infini (je crois), mais du cas où, mathématiquement, je retrouve chaque formule et je déniche un process qui génère du pognon infini.

Egalement, déterminer à l'avance quel sera le point d'équilibre avec une formule, c'est pas hyper-simple...
Perso, si je devais refaire ECLERD, je fixerai un prix, avec peut-être une légère tendance hausse/baisse, mais je délèguerai beaucoup au MDJ (ie: moi) pour altérer le prix au fil du jeu. Sinon, cela peut finir avec un joueur qui sur-produit à l'infini et empoche du pognon alors que la ressource n'a plus d'intérêt.

T'as peut-être déjà joué à Age Of Empire, ou assimilé: une place de marché donne un prix par ressource. Ce prix est variable et baisse quand des joueurs vendent la ressource. Mais il est "limité": le prix du bois ne descend pas en dessous de 10PO pour 100 unités de bois. Or, si tu joues d'une certaine façon, tu vas produire des quantité de bois énormes, et le fait que la ressource ne vaut "pas grand chose" (mais plus que 0) suffit à générer du pognon en masse.

Pour du AOE2, c'est pas un soucis: l'impact est limité à la partie, et ce que vend un joueur n'impacte pas ce que les autres achètent (ie: si personne ne vend, on a quand même la possibilité d'acheter, et si personne n'achète on peut vendre quand même). Pour un MMO persistant, cela peut vite dégénérer (les prix sur ECLERD v0 n'ont maintenant plus aucun sens).

Je pense donc que t'as 2 options:
• Fixer des prix dans un marché avec un MDJ qui fait "apparaitre/disparaitre" des ressources
• Laisser les joueurs s'échanger les ressources entre eux (là, tu donnes un prix indicatif, que tu réactualise au besoin au fil de la partie, mais c'est vraiment l'accord entre les joueurs pair-à-pair qui prime)

Si tu veux faire un espèce de mix entre les deux (je le vois souvent passer, sous la forme d'un "marché commun où les joueurs vendent à tout moment, au prix que fixe ce marché, et les autres joueurs peuvent acheter à tout moment au prix de ce marché") alors il te faut avant tout une formule qui ne génère pas de richesse (le prix de ce qui est acheté = le prix de ce qui est vendu). Il n'y aura pas véritablement de "formule de variation forcée" comme tu l'as décrite. Les variations émergeront des achats/ventes sur le marché commun.


RE: Courbe des prix - whithak - 27-04-2018

Il y'a beaucoup de matière, je vais formuler une première réponse.

Ter rowan-->
Où croise on ces prix? Sur un marché de ville, pour l'instant unique dans le jeu (à l'avenir plusieurs villes, avec des caractéristiques de production différentes, auront chacune leur marché)
La ville fait office de PNJ, qui achète/vends les ressources à un prix variant donc sur une échelle de 1 à 10.
Le stock est important, car les joueurs produisent eux-même les ressources, et doivent donc veiller à maintenir la ville approvisionnée de manière équilibrée.
Ils en sont récompensés par un gain plus important lorsque la ressource vendue est plus rare.
Hormis satisfaire la ville, les ressources servent également à construire d'autres industries et les améliorer, ainsi qu'à sacrifier aux dieux.

Ton idée de l'espérance de gain se retrouve dans celle de mon prix de base, dépendant de l' "effort" nécessaire à la production de la ressource.
Concernant les niveaux de joueur, pour l'instant le développement se limite à une boucle produire-->vendre-->acheter les matériaux de construction-->construire-->produire plus ect... Pour placer un frein j'ai mis en place un impôt dont l'importance augmente avec le nombre de bâtiments. Par conséquent placer un trop grand nombre de bâtiments place le joueur en situation de dette.

A terme je diversifierai les possibilités de commerce, avec les achat/vente entre joueurs, en ressource nettes ou en flux (x ressources par heure pour y pièces par heure)

-->Xenos

L'emploi d'une formule délimitant la fourchette de prix rapprocherai donc mon modèle du communisme.
L'équivalent de ton "maitre de jeu" pourrait être le maire de village dans mon jeu. Désigné par les autres joueurs, il a des pouvoirs pour le moment limités mais qui pourrait influer sur les prix.
Au début j'avais aussi attribué un stock de pièces à la ville, mais cela entrainait trop facilement des situations de bloquage sans être indispensable aux mécaniques de jeu.

Divers moyens (compétences de joueur, lois de ville, futurs bonus de terrain de ville) facilitent la spécialisation de la production, et donc un meilleur gain. Mais si la production excède trop la demande, le stock augmente et la valeur de la ressource diminue donc. Cela incitera donc la coopération entre joueurs (et plus tard entre villes) pour maintenir une production globale équilibrée

Pour le moment je ne vois pas d'exploit à ma formule. Le seul moyen de bloquage serait qu'un riche joueur monopolise les matériaux de construction pour empêcher les autres de développer leur industrie. Pour parer à cela, peut être ajouter une option pour acheter ex nihilo une ressource à un prix de *20.


RE: Courbe des prix - Xenos - 27-04-2018

Pour moi, à partir du moment où tu fixes un prix plancher/plafond, il y a un potentiel de "génération de valeur infini" (d'autant plus si la ville n'a pas de "stock de monnaie"). Exemple: la ville consomme 1k/heure de bois pour un budget de 1k PO (pièce d'or), fixé. Le bois est donc acheté à 1PO/1bois. Si un joueur produit 100k bois et que la ville en achète l'intégralité (déjà, c'est irréaliste, car cela suppose que la consommation de la ville est extensible à l'infini; ce n'est pas forcément bloquant car un jeu n'a pas besoin d'être 100% réaliste, mais cela veut dire que tu auras forcément des règles et des formules non-100%-réalistes) pour un même budget (1k PO), alors le bois est acheté à 0.01PO/bois (ou 1PO/100bois).

Si tu as fixé un prix plancher (0.1PO minimum par bois) alors la ville achètera ses 100k bois pour 10k PO. En d'autres mots, impossible de respecter un "budget" fixé d'avance. Conséquence de quoi, la ville n'ayant pas de "stock de PO", le joueur vendant masse de bois se fera masse de tunes de manière totalement "illégitime" (ie: sans rapport avec la rareté de la ressource, car la ressource est ici achetée 0.1PO au lieu de 0.01PO donc 10x son prix).

A mon avis, pour une place de marché comme tu le décris, il vaut mieux raisonner en "budget de la ville par ressource", et appliquer alors un ratio aux prix d'achat. Par exemple, la ville a besoin d'1k bois et a 1k PO pour cela, donc elle achètera 1PO/bois dans la limite de 1k bois. Si d'autres joueurs veulent lui vendre des ressources, alors soit il attendront le prochain tour d'achat (et la ville pourrait demander plus de ressources pour le même budget, disons 2k bois/1k PO), soit ils vendront "moins cher", mais la ville "croque" sur son budget de PO futur, et n'achètera pas de bois au prochain tour.
Tu peux aussi, pour pousser les joueurs à "rester", faire un prix évolutif au fil de chaque tour: au début du tour d'achat, la ville achète peu cher (0.1PO/bois), puis plus on approche de la date de fin de tour, plus le prix de la ressource augmente, en fonction du budget de PO restant et en fonction de la quantité de ressources restantes à acheter par la ville.

Bref, dans tous les cas, gaffe aux "plancher/plafonds + budget illimité" car tu vas générer des pièces d'or, et cela déséquilibre facilement un jeu (le tout premier test d'ECLERD était basé là dessus, et certaines ressources ont été produites en quantité astronomiques, genre 10MT/seconde de poisson, vendues au marché international qui avant un prix plancher de 1$/kg (en gros). Du coup, un joueur produisant autant de trucs inutile encaissait des sommes folles venues de nulle part, et le jeu se déséquilibre. Même soucis avec le prix plafond: le charbon avait un coût initial d'extraction prohibitif; mais un prix plafond de 1K$/T et une absence de limite de stock dans le marché international ont fait en sorte que le charbon était bien moins cher à acheter au marché du jeu qu'à produire réellement...

Sans compter que si un joueur achète 100Munités d'une ressource quand elle est à bas prix, puis qu'il attend que cela remonte à peine pour le revendre (effet de plancher) alors le joueur empoche une somme astronomique...?! L'effet "clapet", c'est dangeureux.


RE: Courbe des prix - Thêta Tau Tau - 27-04-2018

Je verrais bien un système qui se base sur le prix moyen de la ressource sur une certaine période.

Genre sur on fait la moyenne du prix de toutes les transactions sur la semaine n. Cette moyenne deviens le prix de base de la semaine n+1. On peut aussi fonctionner avec une fenêtre glissante, mais c'est plus compliqué.

Ensuite on module ce prix de base en fonction des stocks ou autre, avec prix planchers/plafond exprimés en pourcentage du prix de base.

Ça permet au système de s'autoréguler. Par ex si les joueurs font du profit en vendant une ressource au prix plancher, ça veut dire que le prix moyen de cette ressource va baisser, donc le prix plancher aussi. Donc ça va devenir moins rentable, jusqu'à trouver un équilibre.


Ca me réveille mes idées de simulateur d'économie spatiale tout ça Smile


RE: Courbe des prix - Xenos - 27-04-2018

Note que les moyennes glissantes, avec MySQL 8 et ses Window Functions, sont simples à faire Smile Ca peut faire une excuse pour s'y essayer Tongue


RE: Courbe des prix - whithak - 29-04-2018

"Sans compter que si un joueur achète 100Munités d'une ressource quand elle est à bas prix, puis qu'il attend que cela remonte à peine pour le revendre (effet de plancher) alors le joueur empoche une somme astronomique...?! L'effet "clapet", c'est dangeureux."

Pour se prémunir contre ce problème, j'ai introduit une forme de gradation dans la valeur d'achat. Lorsqu'un joueur achète/vends un lot, ce lot est divisé en 100 unités, et le prix de chaque unité est recalculé en fonction de l'évolution du stock.
Par exemple, si un joueur achète 1000 unités à 2 pièces unités, ce sera plutôt quelque chose comme 10 unités à 2/u, 10 unités à 2.01/u ect... Bien sûr le prix total est notifié avant l'achat.

Je vois que vous vous êtes heurtés au même problème que moi, il y'a largement de quoi matière à penser. Je code actuellement une autre partie, mais je devrai fatalement revenir dessus pour améliorer le système.