JeuWeb - Crée ton jeu par navigateur
Formules d'équilibrage - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Formules d'équilibrage (/showthread.php?tid=7196)

Pages : 1 2


Formules d'équilibrage - rachids - 05-07-2014

Hello,

Je me trouve devant un léger (hum, hum) problème d'équilibrage dans mon jeu.

Les joueurs peuvent fixer le prix de vente de leur pizzas compris entre 1 et 30$.
Chaque ingrédients nécessaire à la production de 10 pizzas à un coût entre 1 et X (dépendant du nombre de produits ainsi que du caractère du produit: du saumon coûtera plus cher que de la tomate).

Si le joueur produit 8 pizzas au lieu de 10 (fautes de clients) il perd les ingrédients restants. Mais autrement même avec cette perte il reste énormément gagnant car s'il fixe son prix de vente a 30$ et qu'il n'a choisi qu'un seul ingrédient, sa marge est énorme.

J'ai bien pris en compte le coût de production de la pizza ainsi que le goût du client vis à vis de la pizza (qui se traduit par une note sur 10) et je requiert votre aide pour trouver une formule qui poussera le client à payer moins cher s'il trouve (1) que le prix de la pizza est exorbitant par rapport à son coût de production et (2) si le client a noté sévèrement la pizza (un 6/10 c'est quand même pas génial).

:hospital:


RE: Formules d'équilibrage - Xenos - 05-07-2014

Le client n'a pas accès au prix de production de la pizza: on ne connait pas la marge que se fait une grande surface sur les produits qu'elle vend (ou en général, la marge d'un commerçant).

Mais considérons que X est la marge normalisée du vendeur (entre 0 et 1, si elle vaut 0, le vendeur fait 0% de marge, si elle vaut 1, ce qui est impossible, 100% du prix de vente est le bénéfice du vendeur, dans ce cas le vendeur a vendu du vent) et Y la note du client (0 pour un client mécontent, 1 pour un client content), alors (exemple de formule):

Code :
Prix = PrixMin + (PrixMax - PrixMin) * ( (1-X)² * Y² )

Si le client est mécontent (Y = 0 car la note est de 0/10), alors le prix qu'il voudra bien payer est le PrixMin (qu'on peut fixer à 0).
Plus la marge est élevée, plus le prix payé est faible.

Si PrixMin = 0 (donc, un client mécontent paye 0):

Code :
Prix = PrixMax * (1-X)² * Y²

On peut changer les carrés par une puissance quelconque (supérieure ou égale à 1): plus la puissance est élevée, plus le client est vite radin.

Donc:
Code :
X = BénéficeDuVendeur / PrixDeVente = 1 - CoutPourLeVendeur / PrixDeVente
Y = NoteDuClient / 10
Prix = PrixMax * (1-X)^n * Y^n
Prix[PrixMax=$30, n=2] = 30*(1-X)²*Y²



RE: Formules d'équilibrage - archANJS - 05-07-2014

Petites idées comme ça aussi (aucune formule, que des idées):
  • Tu pourrais changer la manière dont les prix sont fixés; au lieu de choisir le prix de vente directement, le joueur choisit plutôt une marge de profit et le prix est ajusté en fonction du prix coûtant. Ainsi une pizza demandant beaucoup d'ingrédients ou avec des ingrédients plus luxueux (comme des fruits de mer par exemple) sera forcément plus coûteuse. [C'est une approche plus fidèle à la vraie vie également.] Rien n'empêcherait le joueur de fixer une marge de profit générale, mais de pouvoir modifier les marges indépendamment pour chaque pizza.

  • Tu pourrais également améliorer (ou tout simplement créer) une fonction déterminant la manière dont les clients choisissent leur pizza. Certains facteurs qui pourraient être pris en compte:
    - les spéciaux (pizza du jour/choix du chef, avec des légumes saisonniers par exemple)
    - les ventes (deux pour le prix d'un sur la All-dressed!)
    - l'attrait de la pizza ("Quoi?? Ils ont de la pizza à [insérez ici ingrédient inattendu/spécial/rare]! Trop cool!")
    - le rapport qualité-prix ("Une pizza au fromage? 30$?? Non merci!")
    - et pourquoi pas un principe d'harmonie dans les ingrédients de la pizza (Saumon fumé, fromage à la crème, oignons et câpres? Délicieux! Crabe, chocolat, artichauts et framboise? Pas sûr...).

  • Dans la vie réelle, un client ne peut pas payer moins cher s'il n'aime pas une pizza. Il peut décider de donner moins de pourboire, de se plaindre au chef et pourquoi pas de refuser de payer carrément, mais les prix ne sont pas négociables. De ce fait, tu pourrais implémenter un principe de pourboire, qui serait relatif à la fois à:
    -- La qualité de la pizza mangée
    1. Il peut arriver qu'une pizza soit très demandée, car très bonne selon les clients, mais que la pizza soit manqué/brûlée. On ne sait jamais.
    2. La pizza n'était tout simplement pas mangeable, comme toutes les autres.
    -- La note d'appréciation moyenne des clients. Ainsi, une pizzeria très populaire pourrait se permettre de monter ses prix, mais pas nécessairement une pizzeria louche.

Je vais m'arrêter là pour le moment Tongue

En espérant que ça puisse t'inspirer moindrement.


RE: Formules d'équilibrage - Xenos - 05-07-2014

Pour le premier point, j'ai peut-être pas bien compris, mais qu'est ce qui empêche le vendeur de faire une pizza avec que de la droute, et de dire "je veux 99% de marge"? La pizza lui reviendrait à $1, et serait vendu $100...

Je crois que le "prix client" sert en fait à vérifier si la pizza est achetée par le client (si le prix calculé précédemment est de $10 et que la pizza est vendu $20, le client ne l'achète pas).

Pour le pourboire et le 2e point, cela me semble sympa comme idées (mais le pourboire va dans la poche du serveur, non? pas dans celle du cuisinier/directeur de la pizzeria).


RE: Formules d'équilibrage - rachids - 05-07-2014

@Xenos : Merci pour les formules. J'ai tenté de les appliquer mais j'avoue ne pas saisir (attention hein mon niveau en math est loin d'être parfait ^^)
Donc je suis parti sur ces valeurs pour mon test :

Code :
#Pizza à la tomate (2$)
$puissance = 2;
$coutProduction = 2;
$prixVente = 4;
$noteClient = 10;

$x = 1 - $coutProduction / $prixVente;
$y = $noteClient / 10;

echo '<p>$x = '.$x.'</p>'; # = 0.5
echo '<p>$y = '.$y.'</p>'; # =  1

$c = 1-$x;

$prix = $prixVente * pow($c, $puissance) * pow($y, $puissance);

echo $prix; #1
Je ne suis pas certain de ce qui signifie mon résultat. Un pourcentage du prix de vente que tolère le client ?

@ArchANJS : L'idée des marges me faciliterait la vie c'est clair, mais j'aimerai bien que mes joueurs se creusent un peu la tête pour ajuster leur prix ^^

Pour le choix de la pizza, actuellement c'est totalement aléatoire (le client débarque et choisi sa pizza les yeux fermés puis je compare le score gustatif de la pizza au goût du client). Du coup pour la même recette on peut avoir une superbe note comme un zéro pointé.
L'harmonie des pizzas ça peut être vachement sympa mais j'ai du mal à concevoir techniquement comme l'implémenté (comment savoir que tel ingrédient se marie bien avec tel(s) autre(s))

Pour les pourboires effectivement ça ne peut pas aller dans la caisse du restaurant (qui est déjà bien remplie de toute façon), en revanche ça pourrait jouer sur l'XP obtenue Smile


RE: Formules d'équilibrage - Xenos - 05-07-2014

$prix, le résultat, correspond à
Citation :le client à payer moins cher s'il trouve (1) que le prix de la pizza est exorbitant par rapport à son coût de production et (2) si le client a noté sévèrement la pizza (un 6/10 c'est quand même pas génial).

Donc le résultat peut être considéré comme le prix qu'un client 100% exigeant payerait.
Du coup, tu peux considérer, par exemple, que la pizza sera achetée si ce prix "miracle" est proche du prix de vente demandé.

Code :
$prixMiracle = $prixVente * pow($c, $puissance) * pow($y, $puissance);
if ($prixMiracle > ($pourcentage*$prixVente))
{
// Ok le client achète
}

Simplifié, cela donne:

Code :
$satisfaction = pow($c, $puissance) * pow($y, $puissance);
if ($satisfaction > $satisfactionMini)
{
// Ok le client achète
}

$satisfactionMini est un seuil de satisfaction (0..1) du client à atteindre pour qu'il accepte d'acheter la pizza.
Par exemple, pour $satisfactionMini = 0.5, le client achète s'il est note 10/10 (y=1) et que la marge du vendeur est d'un peu moins de 30% (pizza vendue $15 et qui coute $11 à faire), mais s'il note 8/10 (y=0.8) et que la marge est de 25% (x=0.25, c=0.75) alors il n'achète pas ($satisfaction = 36%), avec $puissance = 2.



// Pizza à la tomate (2$)
$puissance = 2;
$satisfactionMin = 0.5;
$coutProduction = 2;
$prixVente = 4;
$noteClient = 10;

$partDesFrais = $coutProduction / $prixVente; // simplification de $x et $c
$noteNormalisee = $noteClient / 10.0;

echo '<p>Cout de production: '.round($c*100).'%</p>';
echo '<p>Note du client: '.round($y*10).'/10</p>';

$satisfaction = pow($partDesFrais, $puissance) * pow($noteNormalisee, $puissance);

echo '<p>Satisfaction globale: '.round($satisfaction *100).'%</p>';
if ($satisfaction > $satisfactionMin)
echo '<p style="color:green;font-weight:bold;">J\'achète!</p>';
else
echo '<p style="color:red;font-weight:bold;">J\'vais plutôt manger des sushis...</p>';



RE: Formules d'équilibrage - rachids - 06-07-2014

Merci beaucoup Xenos Wink

Je vais tâcher de mettre tout ça en place et voir si mon système sera suffisamment robuste et amusant pour le joueur Smile


RE: Formules d'équilibrage - keke - 07-07-2014

kikoo ... selon les cas, le pourboire peut arriver dans la poche du serveur, mais parfois (je n'ai pas dis souvent), les pourboires sont collectés par tout le personnel, puis équitablement distribués. Il est donc possible que le directeur touche sa com.

Par ailleurs, le prix de la pâte à pizza et des ingrédients est souvent marginal. Ce qui fait le cout de la pizza, c'est la location des locaux, la pub, les frais de gestion (compta, livraison), les frais direct et indirect, les salaires (un directeur peut être salarié) ...
Je pense que la matière première ne dépasse pas les 10% du prix de la pizza.

Par ailleurs, très très généralement en France, les prix des pizza sont fixes. Ce n'est pas le client qui fixe un prix, mais le commerçant qui fait sa carte. Je sais que dans d'autres pays, l'obligation d'afficher les prix n'existe pas encore ... et on peut donc payer à la tête du client.

Ensuite, dans un jeu rigolo que j'avais essayé sur Kongregate, tu avais :
- la bonne réponse à la demande : (j'avais demandé des anchois ! Je voulais que la pizza soit coupée en 4 !)
- la répartition des ingrédients de la pizza (si c'est globalement bien répartit ou tout tassé dans un coin)
- le taux de cuisson idéal (pizza cramée)
- l'attente avant prise en compte de la commande (j'me casse !)
- le délais de livraison (ZZzzzz....)
- la décoration du magasin (joli les posters de filles, mais correspond pas à tous les gouts !)
- la sympathie du vendeur (Ques'ca s'ra !)
- le prix cohérent à ce que souhaite l'acheteur (5 euros ? j'étais prêt à en donner 10 ! Cool )

Voilou pour quelques idées en vrac ^^

kéké
PS : Salty > si tu le souhaites, je te retrouverais le jeu en question.


RE: Formules d'équilibrage - Xenos - 07-07-2014

Si c'est prédictif, la note du client peut être la moyenne de ceux qui ont déjà mangé dans cette pizzeria. Si c'est "post-dictif", le client payera quoi qu'il arrive, et l'algorithme dit juste s'il reviendra ou non dans l'établissement (tout dépend donc du gameplay envisagé).

T'as oublié les taxes dans le prix des pizzas, et les taxes sont des frais incompressibles :p (en tous cas, dans notre pays et en théorie)


RE: Formules d'équilibrage - keke - 07-07-2014

ha oui, les taxes ... si tu penses à la TVA , c'est 5% (ou 21% selon qu'il s'agit de surplace ou emporter) et c'est le client qui paye ^^. Aussi surprenant que cela puisse paraitre, c'est toujours l'utilisateur final qui paye la TVA.

Un nouveau tiroir caisse => TVA pour le commerçant
Un kilo de farine pour la pizza => TVA pour le client

kéké qui n'est pas commerçant, et qui espère pas dire de connerie ...