Ceci est ma page sur le jeu Neopolis, basé sur la géolocalisation et s'inspirant de Monopoly. Il a été créé par Ben Kaltenbaek, Roland Lamidieu et Lucas Odion, et lancé à Lyon en mars 2019 sous le nom Metropolis, avant d'être renommé en Neopolis en juillet 2019.
J'ai participé aux parties suivantes:
2019-03: première bêta, sous le nom Metropolis, exclusivement à Lyon et uniquement pour le système Android. J'ai terminé 15e (sans exploiter de failles). À cette version, le nombre de bâtiments que l'on pouvait posséder était limité à 10 (mais certains joueurs en avaient plus à cause d'un bug), et leur niveau à 30. J'avais réussi à terminer avec 5 bâtiments de niveau maximum (30). C'était essentiellement une partie de test, avec notamment des développeurs qui tentaient de trouver et d'exploiter des failles.
2019-07: partie du H7 (à Lyon). Il s'agissait d'une partie pour les développeurs, mais n'importe qui pouvait jouer en participant au programme bêta de l'application sur Google Play Store. J'ai rejoint la partie alors qu'elle avait commencé plusieurs jours auparavant et j'ai terminé 21e. En plus du renommage en Neopolis, beaucoup de choses ont changé, que ce soit visuellement ou au niveau des règles du jeu.
2019-08: bêta à Lyon (où je participais) et à Marseille. J'ai terminé très largement 1er, avec un score égal à plus de quatre fois celui du 2e. Détails sur cette bêta d'août 2019 ci-dessous.
2019-10: lancement national en France. J'ai encore participé à Lyon, et j'ai terminé 3e. Détails sur cette partie d'octobre 2019 ci-dessous.
2019-11. J'ai encore participé à Lyon, et j'ai terminé 1er, en passant devant 24 heures avant la fin. Détails sur cette partie de novembre 2019 ci-dessous.
2019-12: J'ai encore participé à Lyon, mais j'ai été affecté par un bug majeur pendant les trois dernières semaines, réduisant considérablement mon score. En gros, il s'agissait d'un dépassement de capacité au niveau du serveur, qui n'a pas pu prendre en compte mes revenus (sauf au tout début de la partie); c'était lié à ma stratégie de ne pas récupérer mes revenus tant que je n'en avais pas vraiment besoin (cf détails de cette stratégie plus loin). Vers la fin de la partie, j'étais 16e, alors que j'aurais dû être 2e. Dans une autre ville, un autre joueur a aussi été affecté par ce bug, mais uniquement vers la fin de la partie (qui est cependant importante, car les revenus augmentent avec le temps).
2020-01: Le jeu est maintenant réparti par régions, et j'ai participé en Auvergne-Rhône-Alpes. Mais j'ai arrêté en cours de partie, après avoir revendu mes bâtiments à la banque: trop de bugs, ce qui empêche notamment toute stratégie spécifique, car celle-ci peut se retourner contre soi (cf partie de 2019-12, et il y a aussi eu un problème en ce qui me concerne à celle du 2019-11). Cela enlève tout l'intérêt du jeu qui lui restait. Depuis 2019-07, l'application a aussi un bug gênant, présent sur certains téléphones, ce qui m'obligeait à redémarrer mon téléphone régulièrement, parfois plusieurs fois par jour. Ce bug n'était pas trop gênant à la partie du 2019-08, mais l'est devenu vraiment par la suite, avec l'augmentation d'objets à collecter sur la carte.
J'ai aussi trouvé une explication du bug d'affichage du pourcentage des bénéfices, présent dans les parties de 2019-08 à 2019-11, et corrigé pour la partie de 2019-12. Et une explication du bug d'arrondi des multiplicateurs, présent dans la partie de 2019-12.
Cette première bêta sous le nom Neopolis a été lancée le 31 juillet 2019 à Lyon et à Marseille et s'est terminée le 1er septembre. J'ai participé à Lyon, où il y avait plus de 1000 joueurs (peut-être même plusieurs milliers), et j'ai terminé très largement 1er.
Pour aller ramasser des pièces et des cartes, j'ai fait plus de 250 km à vélo (traces GPS) et aussi pas mal de marche à pied. À cette occasion, j'ai découvert de nouvelles pistes cyclables, en particulier celle très agréable qui longe la voie du tramway T4 (notamment la partie entre la Manufacture des Tabacs et la rue de l'Épargne, juste au nord de l'avenue Berthelot):
J'avais assez bien commencé, en atteignant la première place le 4 août, et ensuite, l'argent gagné m'a permis de racheter de plus en plus de bâtiments aux enchères. J'ai ainsi terminé avec 209 bâtiments! La liste, par ville, puis par ordre de construction ou d'achat aux enchères, tels qu'ils sont nommés dans le jeu:
Lyon: Mamma Mia (avec une faute d'orthographe: il s'agit de Mamamia Pizza, près de chez moi); Starbucks; Paul; Le Fournil des Traditions; Station ENS Lyon [T1]; Kaffee Berlin; Marché Aux Livres; Comptoir de la Bourse; 30 Millions D'amis; Barum; Biocoop Saxe Gambetta; Gibert Joseph; Anticafé; Puzzle café; L'Établi; Lego Store; webup space; Slika; Victoire & Thomas; sanofi pasteur MSD; Le Zagros II; Promocash; Café Bellecour; L'Entrecôte; Le Bouchon Sully; Marché Saint-Louis; Les Raffineuses; Concordia Rhone-Alpes; La Boite Noire; La Commune; Pizza Pino; Vatel; Le Florian; La Poste; AOC; Hippo Café; Mairie du 7ème arrondissement; Patriarche.; Brossette; La Chaise Longue; Architectes; Buddha Bar; Café Français; CGED; Diploid; Grande Pharmacie Lyonnaise; KnpLabs; La Fabrique - France TV; Les Burgers de Papa; Le Tonkin; Monoprix - Grand Bazar de Lyon; Señor Carlos; Supermarché Asie; U Express Lyon-Vendôme; City Suites Lyon Gerland; Graphigro; Le Bivouac; Le Ksar; Odessa Comptoir; Okawali; Picard Lyon Lafayette; Pizzeria Francesco; Starbucks; Super U; U Express; Le Grand Café de la Préfecture; Le Tramway; Yaafa; TOUTANCANON; Au Bonheur Des Chats; Marché Place Guichard; Le Comptoir des Artistes; Pignol Patissier & Restaurant; Luminarium; Bryan's Café; Abylsen St/Ra; Pharmacie Herboristerie Artige; L'Edgar Quinet; Le Saint Maximin; Thai Harmonie; Garage Robert; Dr Samy; Aux Plaisirs des Pains; Cafe l'Essentiel; comme à la maison; La Fourmillière; Les Innocents; Arc en ciel; Boutique Orange; Brandy Melville; HAIR STAR; Imperial Tattoo; Institut Adonis; Le Saint Cochon; Le Transbordeur (+); McDonald's; Merck; Puerto Argentino Restaurant & épicerie; Redskins; Station Musée des Confluences [T1]; Vessiere; Wasabi; Burgundy Lounge; Brasserie Georges; Corep Lyon - Manufacture-Monplaisir; Hippopotamus; Immeuble M+M; Intermarché Express; L'amuse Bouche; Le Ré-Confort; Métro Perrache (A); Orange Lyon; Pizza Hut; Restaurant Bosphore; Restaurant Sainte Sophie; Théâtre des Célestins (+); BOULANGERIE Regis GRAND; Exki; Franck Provost; Voies G/H; Brasserie Paul Bocuse; Can Kebab; Ciné Café; Le Fleuve Bleu; Métro Place Guichard — Bourse du Travail (B); Namasté; Red House; Tandoor&wok; Kargo Kulte; Kiko Store; Les Douceurs De Melisse; Métro Saxe - Gambetta (B)(D); Frite alors!; Casino Supermarché; Ipter; Léon de Lyon; Café Chenavard; Café Rakwé; sur le bout de la langue; Voisin; Technicentre SNCF de Lyon; Supermarché Casino Mermoz; Monceau Fleurs; Brasserie des Brotteaux; Guy and Sons; Le Penjab; Maison Poulaga Charpennes; Nespresso; Brioche Dorée; Café lumière; L'alexandrin; Toké; La Calanque; Le Café de Fourvière; Machine à Café; Patchwork café; Paul; Bangkok royal; Bistrot Comoedia; Class Croute - Part Dieu; Courtepaille; Hippopotamus; Le Bistrot Du Potager; Les Muses de l'Opéra; Oslow; Paul; Bar le Plombar; Kfc; L'art et la baguette; Baronn; La Cuisine De Moliere; Le Morgon; L'Escapade; À Chacun sa Tasse; Bernachon; Bleu Soleil; L'Ambroise; Le Bistrot de Lyon; Le Bouchon des Filles; Le Palais du Sourire; McDonald's; La Grenade; L'Institution; Brasserie Deruelle; engimono; Victoria; Guy & Sons; Mendo; Suchi Toyo; Laverie 123; Anciennes Usines Brossette.
Montpellier: Station Gare Saint-Roch ①②③④; Station Comédie ①②;
Toulouse: Médiathèque José Cabanis; Toulouse - Paris [Tgv 8520]; Métro François Verdier (B); Monument des Combattants de la Haute-Garonne; Station Palais de Justice [T1,T2]; Métro Carmes (B); Métro Palais de Justice (B); Métro Marengo - SNCF (A);
Narbonne: Voie B (Narbonne);
Paris: Sainte-Chapelle; Hôtel de ville de Paris; Centre Pompidou - Musée National d'Art Moderne; Forum des Halles; The Frog & British Library; Métro Cour Saint-Émilion [14]; Cathédrale Notre-Dame de Paris.
Note: un (+) dans la liste ci-dessus indique un bâtiment culturel spécial.
En résumé, plus j'avais d'argent, plus je gagnais d'argent, et plus mon score (correspondant en gros à l'argent gagné) augmentait. Vers la fin de la partie:
Classement final des 100 premiers:
vinc17 (343270518)
Anthony (80491357)
Chouche (60911623)
sanh (44226795)
gg625969 (40853362)
conquerant (40723959)
Dehoussable (39382917)
Juninho (35746446)
Nep (33225079)
mens (32890137)
SunshiN (32080392)
Soif (28889615)
Emm (27157343)
m4arm (26598779)
sebastianfdez (26595302)
DonPatata (24954007)
Mouth (24781289)
Pyrrhus (19997246)
AllStarz69 (19192893)
Carpette (18258107)
Anicky (17050456)
Waen (15469397)
roiLeo (14686397)
RonWood (13689900)
franzp (12228315)
Angelo (12211801)
aub (12020816)
Yelfog (10837681)
kik (10516320)
Biscione (10501755)
maxtav (9569689)
minouxos (9314271)
Darkashara (9017962)
Enly (8295732)
Floris (8136122)
kataco (7363231)
Mickael (7231924)
Picol (7194783)
NEM (6979887)
johanna (6838816)
yohanarchiste (6828264)
juju (6470240)
Mym69 (6305285)
djebou (5717076)
haloxis (5447084)
adi (5216525)
Tamia (5140064)
Gary (5002999)
Derass (4822898)
elastella (4604042)
pioupiou67 (4556417)
Gossbust (4266999)
zaze69 (4256390)
Kleinast (4180107)
KylarThaddeus (4164226)
tade42 (4145366)
Ai07 (4040804)
007 (3999465)
Bab (3979428)
jownoo (3940286)
Davets (3914658)
LMDG (3852421)
Ezeldaa (3776320)
manonti (3716340)
mtj (3547391)
krinscal (3472436)
Dodojudo69 (3386014)
mae (3375049)
delph27 (3332584)
Castalantoine (3316698)
Maimod (3246177)
tyty (3228578)
XvKsl (3215182)
hayuda (3195333)
ElMacho69 (3164135)
Absolutvero (3093936)
Mappy (3060599)
Fif (3022645)
Tom65380 (2991004)
Chris (2892864)
Delfin (2635899)
guilainch (2622872)
dadoume (2606548)
Imperia (2521344)
tzi (2467072)
YoruNoHikage (2371858)
sofaws (2370708)
Touklakos (2328977)
Ididber (2300992)
Prisca (2297896)
Leo (2211128)
HUEXTRAT (2206145)
HelloPomyx (2153620)
Lau (2140799)
Ophelie (2032571)
GrandGaillard (2027945)
Yoc (2003742)
Xav (1981304)
Antoine (1967322)
pbx (1902450)
Il s'agissait du lancement national, dans plusieurs villes de France, avec une limite de 500 joueurs par serveur (dans une même ville, un nouveau serveur est lancé lorsque cette limite est atteinte). J'ai participé à Lyon (serveur principal) et j'ai terminé 3e.
Le principal changement est le nombre beaucoup plus important de pièces et de cartes qu'on pouvait ramasser dans une zone donnée, avec deux conséquences: d'une part, le ramassage (farming) prenait un temps considérable, et d'autre part, les revenus des bâtiments possédés ne comptaient quasiment plus; cela semblait d'ailleurs être le principal reproche fait par les joueurs. J'ai eu nettement moins de plaisir à jouer à cette partie.
Autre changement important: pour pouvoir obtenir un nouveau bâtiment au-delà de la limite initiale, il faut acheter un titre de propriété, dont le coût augmente de manière exponentielle. Il était donc impossible d'obtenir un très grand nombre de bâtiments comme j'avais pu le faire à la bêta d'août. J'ai terminé avec 16 bâtiments (les autres joueurs en avaient tous moins, mais avec des bâtiments de plus haut niveau que les miens).
Dans certaines villes, il y a eu de la triche manifeste, mais apparemment pas à Lyon.
Le premier à Lyon a obtenu son score notamment grâce à de longs trajets en voiture, avec ses enfants qui ramassaient; d'autres joueurs faisaient cela en train. Bref, l'intérêt est très limité. Une suggestion faite par plusieurs joueurs: empêcher ou limiter la collecte en déplacement.
Classement final des 9 premiers:
scetnoly (58.7M)
Totostat (38.2M)
vinc17 (34.2M)
Conquerant (24.8M)
Max (24.6M)
Mallo (24.4M)
Soif (23.9M)
chaloom (22.9M)
JeanGreggy1er (21.2M)
Dans le même temps, à la partie d'octobre 2019 à Paris, il s'est passé quelque chose d'intéressant tout à la fin. Voici un message posté sur Discord (légèrement édité):
Est-ce que vous trouvez ça normal que quelqu'un fasse +11M en 3h?
Je m'explique. Sur le serveur Paris, moi et un autre joueur on a toujours était en mode coude à coude sur la première place. Ce matin en me levant j'avais 4M d'avance sur lui, et là après passage de tour il a 6M de plus que moi. Je trouve ça un peu abusé mais comme je suis biaisée je voudrais votre avis.
La stratégie révélée par le joueur était en fait de ne pas récupérer ses revenus vers la fin, ce qui a surpris tout le monde. Cela fait un manque à gagner temporaire (il est impossible de se servir de cet argent en attente), mais cela permet de cacher le score que l'on devrait avoir, le score correspondant à l'argent gagné (hors vente des bâtiments aux enchères).
Il est possible d'avoir une vague idée des revenus cachés d'un joueur en suivant sa fiche personnelle et l'évolution du score du joueur: on a sa liste de bâtiments avec leur niveau (et un peu plus d'information, difficile à suivre). Mais je pense qu'il est impossible d'obtenir quelque chose de précis. Tout au plus, on peut deviner que le joueur n'a pas récupéré ses revenus, jusqu'à ce que son score fasse un bond.
Nouveautés:
Une nouvelle monnaie à collecter: le Neocash, pour faire des achats dans la boutique (qui n'a actuellement que des avatars).
Une nouvelle carte: Abondance
, qui permet d'augmenter la valeur des pièces récoltées jusqu'à la fin du tour.
Refonte graphique de l'interface.
Baisse des augmentations liées à la zone d'action.
Baisse des multiplicateurs: aux parties d'août et octobre, on gagnait 0.5 par nouveau bâtiment du même type (en théorie, car la mise à jour des multiplicateurs après construction/achats/ventes est buggée depuis août, et en pratique, le nombre de bâtiments pris en compte est souvent très inférieur à ce qu'on possède en réalité); ce gain n'est plus que de 0.1, ce qui est vraiment faible.
Nous faisons le même reproche que sur la partie précédente: le farming prime sur la stratégie, et les meilleurs sont donc ceux qui passent du temps à collecter des pièces et des cartes, et ceci, sans même privilégier la marche ou le vélo, qui sont même des moyens désavantagés par rapport à des déplacements rapides (voiture, train). Voir par exemple ce que dit le joueur qui a terminé premier à Lyon en octobre (extrait du chat):
J'étais deuxième la plupart du temps: du 2019-11-06 au 2019-12-01, sauf 3 jours en milieu de partie, où j'ai dépassé le premier, qui était coincé dans un lieu isolé. Vers la fin, nous avons tous les deux attendu avant de récupérer nos revenus, pour cacher un peu notre progression. Et j'ai profité d'un aller-retour Lyon-Toulon en train pour farmer, ce qui a permis de rattraper mon retard; c'est le moment le plus intéressant, à cause de l'inflation: la valeur des pièces a augmenté, ainsi que le niveau de mes bâtiments. J'ai aussi farmé les deux derniers jours (week-end juste avant la fin de la partie). Entre temps, le premier avait récupéré ses revenus à un moment, suite à une fausse manip
. Résultat: j'ai fini premier avec 24.3M, le deuxième terminant à 24.0M. C'était serré!
Classement final des 9 premiers:
vinc17 (24.3M)
Dcv (24.0M)
CosaNostraLyon (10.9M)
caro (9.0M)
Log4nz (7.8M)
Adi (7.8M)
Tromba (7.6M)
jownoo (7.2M)
Nikyo (6.9M)
À l'aide de certaines cartes, on peut augmenter le revenu de base d'un bâtiment (par tour et par visite) de 10% ou de 50%, et ces augmentations sont cumulables. Le pourcentage des bénéfices est donc un multiple de 10. Cependant, j'ai remarqué que certaines valeurs affichées sur la fiche du bâtiment sont incorrectes: le pourcentage affiché est inférieur de 1% par rapport à la vraie valeur. Au moins les pourcentages 230%, 460% et 510% sont affectés, les valeurs affichées étant respectivement 229%, 459% et 509%:
Note: la première fiche provient de la partie du 2019-08 et les deux autres de la partie du 2019-11.
Une explication peut être la suivante. Je pense que l'application divise le pourcentage par 100, et remultiplie la valeur obtenue par 100, ces deux opérations étant effectuées en virgule flottante, probablement en double précision (format IEEE 754 binary64), qui est le format usuel. Ces deux opérations sont donc arrondies, et le résultat peut donc être sensiblement différent de l'entier de départ. Si ce résultat est converti à l'entier le plus proche, alors on obtient forcément le pourcentage correct (puisque l'erreur d'arrondi est petite par rapport à 0.5). Mais si ce résultat est arrondi en tronquant, qui est généralement la règle de conversion en entier dans les langages de programmation, alors cela pourrait expliquer pourquoi certaines valeurs sont inférieures d'une unité. Le petit programme C suivant affiche, pour chaque cas erroné parmi les bénéfices de 10% à 1600%, l'entier de départ, l'entier calculé par cette méthode, et la valeur flottante avant conversion à un entier.
#include <stdio.h> int main (void) { for (int b = 10; b <= 1600; b += 10) { double d = (b / 100.0) * 100.0; int i = (int) d; if (i != b) printf ("%4d %4d (%.20g)\n", b, i, d); } return 0; }
Lorsqu'on exécute ce programme, on obtient:
230 229 (229.99999999999997158) 410 409 (409.99999999999994316) 460 459 (459.99999999999994316) 510 509 (509.99999999999994316) 820 819 (819.99999999999988631) 870 869 (869.99999999999988631) 920 919 (919.99999999999988631) 970 969 (969.99999999999988631) 1020 1019 (1019.9999999999998863)
Parmi les 4 premiers cas erronés, on retrouve bien les 3 que j'avais remarqués. Noter que je n'ai pas testé tous les pourcentages dans Neopolis (les cartes, il faut aller les chercher…), mais il semble que 230 soit effectivement la plus petite valeur affectée par le bug d'affichage. Je n'avais alors pas encore d'information sur le cas du 410. Le lendemain (2019-11-04), j'ai pu atteindre 410%, et cette valeur est bien affectée par le bug, avec donc 409% affiché:
À la fin du mois, j'ai pu aussi vérifier que les pourcentages 820%, 870%, 920%, 970% et 1020% sont aussi erronés:
En décembre 2019, un nouveau bug lié aux multiplicateurs est apparu. Lorsqu'on possède n bâtiments de même type, les revenus associés sont normalement multipliés par 1 + (n−1)/10. Ainsi, lorsqu'on possède 8 bâtiments de même type, le multiplicateur associé devrait être 1.7, mais ce qui est affiché est 1.7000000000000002
. De même, lorsqu'on possède 15 bâtiments de même type, le multiplicateur associé devrait être 2.4, mais ce qui est affiché est 2.4000000000000004
. Ce sont les deux seules valeurs incorrectement affichées jusqu'à 16 bâtiments de même type. Cf images ci-dessous (j'ai repris la seconde sur Discord: source).
J'ai trouvé que lorsqu'on utilise le code 1 + i * 0.1
où en interne, les calculs sont faits en double précision (format IEEE 754 binary64), on obtient le comportement observé. Attention! i * 0.1
n'est pas équivalent à i / 10
, car dans le premier cas, 0.1 est converti en binaire, avec une erreur d'arrondi (car contrairement à 10, 0.1 n'est pas représentable exactement en base 2 avec une précision finie).
Cela peut être testé avec le programme Java suivant.
public class multiplicateurs { public static void main(String[] args) { for (int i = 0; i <= 15; i++) { double x = 1 + i * 0.1; System.out.println("x = " + x); } } }
On obtient effectivement:
x = 1.0 x = 1.1 x = 1.2 x = 1.3 x = 1.4 x = 1.5 x = 1.6 x = 1.7000000000000002 x = 1.8 x = 1.9 x = 2.0 x = 2.1 x = 2.2 x = 2.3 x = 2.4000000000000004 x = 2.5
Une solution serait d'utiliser le code (10 + i) / 10.0
, car seule la dernière opération (la division) est ici arrondie, ce qui donne donc l'arrondi correct de l'expression mathématique du multiplicateur.
Note: j'avais commencé par écrire un programme de test en langage C en utilisant GNU MPFR (je ne programme pas en Java), mais j'ai découvert à cette occasion un bug dans la fonction mpfr_printf
(et trouvé la cause de ce bug), empêchant de montrer le comportement observé.