jeudi 10 avril 2008

A bas les enchères!

Je reproduis un post que j'ai écrit sur le forum de jeuxonline.info.


- Le commerce de la main à la main nécessite soit d'avoir un système d'affichage de ses prix pour des marchands qui "campent" (à la Guild Wars), ou de submerger le chat avec ses prix (à la Project Entropia). Dans les deux cas, c'est une zone où l'on ne vient que pour commercer, parce que tout autre occupation devient assommante. Pourquoi donc ne pas fournir des outils qui institutionnalisent ce système, le rendant plus simple à utiliser?
- Toujours dans Project Entropia, on découvre que les joueurs, en plus des annoncent de vente, font aussi des annonces d'achat, ce qui n'est pas possible dans un système d'enchères. Ceci est tout bêtement une criée, ou un "pit" (voir http://en.wikipedia.org/wiki/Open_outcry, en anglais seulement malheureusement). Pourquoi donc ne pas s'inspirer des systèmes d'échanges électroniques qui ont remplacé ces "criées"? Voilà ce que cela donne:

Dans le marché du métal, joueur 1 veut acheter 10 unités à 17€ l'une. C'est son ordre, qu'il rentre dans le système. Tous les joueurs qui regardent le marché du métal dans la zone voient apparaître:




AchatVente
10 @ 17€


Un peu plus tard, d'autres joueurs ajoutent leurs ordres. J2 veut vendre ses unités à 20€, J3 veut acheter ses unités à 18 €.




AchatVente
10 @ 18€30 @ 20€
10 @ 17€


J4 veut absolument vendre ses 15 unités de métal à n'importe quel prix, il ajoute donc un ordre pour 15 unités à 1 €. Le système apparie les prix, créant donc un échange pour 10 unités à 18 € entre J2 et J4, et 5 unités à 17 € entre J1 et J4 (la priorité est aux "meilleurs" prix, c'est à dire les achats les plus hauts, ou les ventes les plus basses). Les marchandises sont échangés, et le système ressemble alors à cela:




AchatVente
5 @ 17€30 @ 20€
Dernier échange à 17 €


Avec ce système, les acheteurs et les vendeurs sont sur un pied d'égalité. Dans des marchés très liquides (avec beaucoup d'échanges), il est possible de commercer très efficacement.

Peut-être est-ce justement parce que la plupart des MMOs ont des systèmes de commerce trop peu liquide qu'ils n'implémentent pas ce système. En tous cas, mon jeu utilisera cela, et on verra bien si c'est utilisable!


L'on me fait très justement remarquer qu'Eve Online utilise un système similaire, ce qui n'est pas étonnant au vu de la richesse de son économie et des nombreux articles écrits à ce sujet. Il va falloir que je ressuscite mon compte à l'essai.

2 commentaires:

Kokuma a dit…

Si je comprend bien, les ordres d'achat sont de type "x unités à au plus y€", et les ordres de vente de type "x unités à au moins y€".

Dans ce système, il me semble que les acheteurs sont perdants. En effets, que J3 remporte les 10 premères unité de J4 me semble le plus logique (c'est le plus offrant), mais il aurait pu les obtenir pour 17€ (ou 17.1€, peu importe), ou même moins s'il s'était accordé avec J1 pour les acheter à, par exemple, 2€ et J1 les 5 dernières à seulement 1€.

Voici plusieurs variantes auquelles je pense :
_ Système tel qu'il est décrit : avantage clair aux vendeurs

_ Vente en priorité au plus offrants mais à valeur du dernier pouvant acheter. Dans notre exemple : J3 achète les 10 premières à 17€ puis J1 achète le reste à 17€ également. Si un J5 souhaitait en acheter pour 16€, il n'a rien, mais le prix d'achat reste 17€. Ce système avantage toujours les vendeurs, mais les acheteurs peuvent faire quelques économies.

_ Légère variante du précédent système, on majore les premières vente pour garder le fait que les offres sont différentes. J3 paye 17.1€ alors que J1 ne paye que 17€. Comme précédemment, avantage aux vendeurs.

_ Vente en priorité au plus offrants (normal), mais à valeur de vente (plus éventuelle majoration). Ceci donne J3 achète les 10 premières unités à 1€ (ou 1.1€) puis J1 les 5 dernières à 1€. Ce système avantage alors largement les acheteurs.

_ Vente toujours en priorité au plus offrant, mais en moyennant les offres. J3 achète les 10 premières à (18+1)/2 = 9.5€, puis J1 les 5 dernières à (17+1)/2 = 9€. Ce système me semble à peu près équitable, mais je ne sais pas ce qu'il donnerait dans un vrai marché fluide (en plus, moyenner, c'est du temps de calcul).

Qu'en penses-tu ? Y a-t-il d'autre variantes interressantes ?

Amicalement,
Kokuma

M87 a dit…

Mhh, plutôt qu'avantager les vendeurs, je pense que c'est plutôt un déséquilibre entre ceux qui mettent leurs prix, et ceux qui croisent le marché pour les prendre: celui qui annonce son prix, que ce soit à l'achat ou à la vente, est garanti que la transaction se fera effectivement à ce niveau.

Certaines variantes que tu décris ont été utilisées, et j'en rajouterai d'ailleurs une dernière: l'interdiction de "croiser".

Dans ce cas, un marché où le spread (la plus haute offre d'achat et la plus basse offre de vente) est par exemple à 15 € / 16 €, un acheteur ne peut pas mettre de prix strictement supérieur à 16, et un vendeur ne peut pas mettre de prix strictement inférieur à 15. Par exemple:

Achat / Vente
J1: 10 @ 15 / J3: 5 @ 16
J2: 5 @ 14

Si J4 met un ordre de vente de 5 @ 15, il va vendre 5 unités à J1, et le marché sera:

Achat / Vente
J1: 5 @ 15 / J3: 5 @ 16
J2: 5 @ 14 / ___

Si J4 met un ordre de vente de 15 @ 15, il va vendre 10 unités à J1, et réintroduire 5 unités à la vente:

Achat / Vente
J2: 5 @ 14 / J4: 5 @ 15
___ / J3: 5 @ 16

Ainsi, puisque rien ne croise, J4 est garanti de faire l'échange au meilleur prix, et ceux qui sont "dans la profondeur", comme J2, doivent faire un effort supplémentaire (proposer un meilleur prix), ou attendre que le marché au dessus d'eux ai été échangé, pour pouvoir commencer à commercer.

Peut-être devrais-je faire une petite application rapide qui implémente certaines des solutions d'échanges, pour pouvoir beta-tester auprès des joueurs.