Sujets-libres.fr

Informatique, logiciels libres, internet, humeurs et… le reste !

Le collectionneur professionnel de jeux anciens

Rédigé par -Fred- Aucun commentaire
Aujourd'hui, j'ai envie de parler d'une catégorie à part de collectionneurs : les collectionneurs professionnels.

Pour moi, un collectionneur au sens large cherche à enrichir sa collection avec de nouvelles pièces. Sa collection prendra une certaine valeur si les objets qui la compose sont rares et/ou en bon état. J'ai toujours pensé qu'un collectionneur de jeux vidéos (anciens par exemple) collectionnait pour jouer ou rejouer à des jeux et qu'il pouvait se séparer de ceux qu'il n'aimait plus par exemple.

Un commerçant, c'est quelqu'un qui vend un objet ou un service. Dans le cas des jeux vidéos, c'est une personne (pas nécessairement passionnée même si ça aide) qui vend des jeux neuf ou d'occasion. Son stock n'est pas tout à fait une collection et les jeux qui le compose changent régulièrement. Les titres qui composent son stock ont peut être moins d'importance que pour le collectionneur qui recherchera des titres bien précis. En soit et de mon point de vue, rien de choquant, c'est fait pour ça.

J'ai toujours vu ces deux catégories comme distinctes mais je me suis peut être trompé car les collectionneurs que j'appelle professionnels sont peut être le chaînon manquant entre les deux catégories précédentes.

***

J'ai récemment échangé ma megadrive contre une master system 2 (il me reste ma megadrive 2). Je suis content de l'échange et j'ai pu voir en plus une collection importante chez la personne avec qui j'ai fait l'échange. Au bas mot, cela représente une centaine de consoles diverses et des jeux partout. Ce collectionneur fonctionne avec le bon coin et a régulièrement une quinzaine d'annonces en même temps (essentiellement pour proposer des échanges). C'est par ce biais que j'ai moi même contacté ce collectionneur.

Bref, je me suis dit qu'il cherchait réellement cette console, même s'il en avait déjà une en vitrine exactement identique (pourquoi pas après tout). Quel ne fut pas mon étonnement lorsque j'ai retrouvé la console que je lui avait échangée, à son tour sur le bon coin dès le lendemain. Il n'y a probablement pas joué du tout après que l'on ai vérifié ensemble qu'elle fonctionnait. La console que j'ai eu en échange devait elle même n'avoir fait que transiter par ce collectionneur.

En soit, ce n'est pas choquant de construire sa collection comme cela mais pour autant, ce n'est pas vraiment ce à quoi je m'attendais. Même si ça ne me regarde pas après tout, je m'attendais à une rencontre avec un collectionneur ayant un réel intérêt pour l'objet que je lui échangeait, et non uniquement pour sa valeur marchande ou pour un échange ultérieur. Après coup, de ce point de vue ça aura été une petite déception pour moi.

***

Ceci dit, ça ne se passe pas tout le temps comme ça. J'ai eu à échanger des jeux avec un autre collectionneur (sonic 1, sonic 2 et home alone contre flashback sur megadrive). J'ai été très content de l'échange et de la brève discussion avec l'autre collectionneur. C'est sympa de rencontrer des retro gamers qui jouent et qui ne se contentent pas d'amasser pour revendre l'essentiel. La rencontre est aussi l'un des intérêts à faire un échange de main à main (plutôt que de passer par l'envoi postal).

***

Il m'arrive moi même d'acheter des lots de jeux (c'est rare mais ça arrive) mais uniquement lorsqu'au moins une partie du lot m’intéresse pour ma collection et parce que ça fait diminuer le prix total par rapport à un achat à l'unité. Dans le mesure où en achetant un lot je sait déjà ce qui m'intéresse et ce que je ne vais éventuellement pas garder, si je suis ma logique précédente, je suis moi même une sorte de "collectionneur professionnel". Il y a en fait une petite différence entre ce que je fais et ce que fait ce que j'appelle plus haut un collectionneur professionnel : je n'achète que si une partie du lot m'intéresse et je n'achète pas un lot dans le but de m'en séparer intégralement et immédiatement.

Projets en ce mois d'octobre 2013

Rédigé par -Fred- Aucun commentaire
Mes efforts se concentrent actuellement sur mon projet d'actionRPG :

Je suis en ce moment dans une phase de (re)factorisation de mon code. Ce que j'ai produit jusqu'à ce jour fonctionne mais le code en lui même mérite parfois d'être réorganisé ou scindé en fonctions plus "digestes". J'élimine aussi progressivement les petites choses pas forcement très propres qui traînent encore ici et là.

A première vue, cette phase peut sembler rébarbative car on gèle l'ajout de nouvelles fonctions pour se concentrer sur le remaniement de l'existant. Ceci dit, je pense que cela est utile, même si ce projet reste un projet amateur. D'une part, cette phase prépare le terrain pour la suite. Ce temps perdu aujourd'hui sera largement regagné par la suite. D'autre part, je souhaite que le code source soit le plus facile possible à lire si d'aventure un autre développeur vient à le consulter.

Pour ce qui est de mon autre projet en cours (le résolveur de cube), il est actuellement en pause. J'applique la règle de "pas plus d'un projet perso à la fois". J'y reviendrait ultérieurement, lorsque la partie mécanique sera prête (je reparlera de ça plus tard aussi). Bref, je n'ai pas fini d'en parler ici.

Dernier(s) point(s), je suis en train de préparer ma demande de diplôme de licence informatique CNAM (ensemble des UE validées + stage validé par mon entreprise). Cette année, je tente de valider une seule UE (ELE108). Il ne me manque que celle là pour pouvoir valider aussi la licence électronique CNAM (reste des UE déjà validées entre 2001 et 2004). Pour ma suite au CNAM, je pense avancer tranquillement à raison d'une UE par semestre, toujours en informatique ou électronique.
Classé dans : Divers Mots clés : aucun

Bug ICC #2

Rédigé par -Fred- Aucun commentaire
Dans la série "ça plante parfois sans raisons apparentes..." :

Contexte :

Dans le jeu d'Action RPG que je développe, le perso peut collecter différents objets récoltable (cœurs, bombes, etc...).
Ces objets récoltables sont soit directement "posés" sur la carte, soit contenus dans d'autres objet (coffres, jarres, etc...). Certains objets peuvent très bien ne contenir aucun objet récoltable.

Ouvrir un coffre (pour prendre ce cas de contenant) permet au joueur de collecter son contenu et un coffre ouvert doit le rester pour le reste de la partie.
En simplifiant, cela implique que :
- La sauvegarde du joueur (fichier .txt à part) doit permettre à l'application de savoir si le coffre a été ouvert ou non.
- La sauvegarde du joueur (toujours le fichier .txt à part) doit être actualisée lorsqu'un coffre passe de l'état fermé à ouvert.
- L'application doit, en cas de modification, recharger les objets présents sur la carte où se trouve le joueur (les objets présents sur la carte sont stockés dans une list pnjObj et c'est le contenu de cette liste qui est rechargé au besoin)

Symptômes :

Sans raisons apparentes, l'application plantait parfois lorsque je tentais d'ouvrir un coffre fermé (me renvoyant au passage un sympathique "Segmentation fault").

Origine du problème :

C'était assez simple finalement (même si je n'ai pas trouvé directement).
Grossièrement, pour que le joueur puisse ouvrir un coffre, il faut deux conditions :
- Le joueur doit être au contact du coffre.
- Le joueur doit appuyer sur la touche "espace".

La première condition est testée tour à tour sur l'ensemble des objets présents sur la carte (list pnjObj).
S'il y a contact, alors l'appui sur espace permet :
- D'affecter le contenu du coffre au joueur.
- De mettre à jour la sauvegarde du joueur.
- De recharger les objets présents sur la carte (list pnjObj).

En clair, je modifiais une liste alors que j'étais en train de la parcourir.

Solution :

Résolu simplement en rechargeant la liste une fois son parcours terminé.

Mes projets en cours en cette fin août 2013

Rédigé par -Fred- Aucun commentaire
Mon projet de résolveur de cube n'a pas bougé ou presque depuis le début des vacances. Nous arrivons dans la phase où pour avancer, il faut se réunir plus souvent (mon coéquipier et moi). Bref, la rentrée arrive et rien ne presse de toute manière.

J'en ai donc profité pour reprendre mon projet de clone de Zelda 3. Je n'avais pas touché à ce projet depuis début janvier 2013, soit une pause d'environ 6 mois. Preuve que ce n'est pas trop le bordel dedans, j'ai réussi à m'y replonger sans problème. Je n'aurais pas dit cela de ma première version de ce projet. Comme j'ai un peu avancé durant le mois d'Août, je viens de mettre à jour l'archive que je propose au téléchargement sur ma page dédiée. N'hésitez pas à me faire vos remarques dessus.

Migration ADSL OVH (de "no!box" à "adsl pro") et auto-hébergement

Rédigé par -Fred- 1 commentaire
Ce blog est hébergé sur mon serveur, lui même derrière ma ligne ADSL, et ce depuis quelques années. Je n'ai pas toujours eu le même fournisseur d'accès internet mais j'ai toujours conservé jusqu'à présent un abonnement téléphonique France Telecom et je n'ai jamais utilisé la téléphonie inclue dans mes diverses offres ADSL (j'ai toujours eu quelques réticences à confier le téléphone et l'accès internet au même opérateur. de plus, je téléphone très peu).

Note importante : j'utilise le même modem/routeur depuis quelques années et il me convient très bien même si sur le papier, il commence à dater (Netgear DG834G).

Malgré tout, j'ai récemment décidé de faire une demande de dégroupage total afin de m'affranchir du très onéreux abonnement chez France Telecom. Pour cela, j'ai fait évoluer mon offre afin d'en avoir une chez OVH incluant la téléphonie (d'où l'offre ADSL pro du titre).

A ce stade du billet, vous pouvez donc légitimement vous demander pourquoi je raconte tout ça. Et bien c'est très simple : j'ai pour la première fois une obligation technique à utiliser le matériel que me met à disposition mon FAI, car mon matériel ne gère pas la téléphonie. En soit, ce n'est pas réellement un problème car je n'ai pas de besoins bien particuliers.

J'ai donc reçu un Thomson TG789VN et je ne vais pas tourner autour du pot : tout n'est pas à jeter mais je n'aime pas cette "box", essentiellement à cause de sa gestion du LAN.
- le TG789VN détecte difficilement l'adresse IP des machines lorsqu'elles (adresses IP) sont configurées manuellement.
- il n'offre la possibilité de placer une machine en DMZ que s'il a lui même attribué l'IP par DHCP.
- ma connexion au LAN a été instable quelques dizaines de minutes sans raisons particulières et est redevenue stable sans plus d'explications ni manipulations de ma part.

De plus, la connectivité en IPv6 ne semble possible avec ce modem/routeur qu'en le configurant en bridge, mais cela entraîne la perte de sa fonction téléphonie. A oublier avec cette box donc.

J'ai testé ce modem/routeur une semaine et j'y ai passé quelques heures avant d'arriver à la conclusion que je ne voulais pas confier mon réseau à cette box.

***

Heureusement, en cherchant un peu sur le net, j'ai pu trouver une solution à mon problème : http://linuxfr.org/forums/general-general/posts/ovh-modem-en-mode-bridge-et-telephonie#comment-1461686

En résumé, cela consiste à n'utiliser le Thomson TG789VN que pour la téléphonie. J'ai donc replacé mon réseau tel qu'il était avec mon modem/routeur Netgear et j'ai simplement connecté le modem OVH par son port WAN à un port LAN de mon modem/routeur Netgear. Les manipulations décrites dans le lien ci-dessus permettent d'activer et de configurer le port WAN du modem OVH. Ces manipulations sont à faire une fois connecté en telnet sur le modem Thomson d'OVH.

Rappel des commandes :


eth ifadd intf=eth-wan
eth ifconfig intf=eth-wan dest=ethif5 wan=enabled priotag=disabled
eth ifattach intf=eth-wan
ip ifadd intf=ip-wan dest=eth-wan
nat ifconfig intf=ip-wan translation=enabled
ip ifattach intf=ip-wan
dhcp client ifadd intf=ip-wan
dhcp client ifconfig intf=ip-wan metric=20 dnsmetric=20 broadcast=enabled serverroute=disabled followlabel=disabled
dhcp client rqoptions add intf=ip-wan option=default-routers
dhcp client rqoptions add intf=ip-wan option=subnet-mask
dhcp client rqoptions add intf=ip-wan option=domain-name-servers
dhcp client ifattach intf=ip-wan
saveall


Notes importantes : le réseau du modem d'OVH doit être différent de celui du second routeur. Ainsi, le LAN de mon Netgear est configuré avec 192.168.1.0/24, tandis que le LAN du Thomson est configuré avec 192.168.2.0/24. De plus, l'adresse IP du Thomson est par défaut 192.168.x.254 (selon le réseau qu'il gère et si on a pas déjà modifié son adresse bien entendu).

Mon problème est donc résolu ( :D ). Je n'ai plus obligation d'utiliser le modem d'OVH pour gérer l'ensemble de mon réseau. Je ne l'utilise donc maintenant que pour la téléphonie et l'ensemble fonctionne très bien ainsi.

Pour le reste, je ne vais pas "cracher dans la soupe", l'ADSL d'OVH me convient. La connexion est stable et pour les quelques fois où j'ai eu contacter leur hotline (pour des problèmes administratifs ou techniques), rien à dire si ce n'est que les personnes au bout me semblaient compétentes.

Bug ICC #1

Rédigé par -Fred- Aucun commentaire
ICC, pour ceux qui se posent la question, est l'acronyme de "interface chaise clavier". Cette interface peut faire l'objet de bugs divers et variés. C'est d'ailleurs la plus importante source d'erreur dans le monde informatique. Il m'a donc semblé naturel d'écrire sur ce sujet de temps en temps. Les bugs ICC dont je parlerai sont majoritairement les miens. Les écrire me permettra je l'espère de ne pas les reproduire trop vite...

Pour commencer, voici ce qui m'est arrivé aujourd'hui :
L'application sur laquelle je travaille en ce moment (résolveur de cube) est codée en partie en C++. Ceci dit, dans l'une de mes classes, j'utilise 3 petits tableaux. La solution fera certainement hurler les puristes mais elle fonctionne et répond parfaitement à mon besoin. Les voici avec leur interfaces privées (pour les deux dernier tableaux) :

[...]
private:
[...]
void setFacePince(int numPince, QString face);
QString getFacePince(int numPince);
void initReferenceRotationCube();
QString getReferenceRotationCube(int y, int x);
[...]
int modele[3][3][6]; // [x][y][RBLFUD] ; Modèle représentant le cube et utilisé de trouver l'algo de résolution
QString facePince[2]; // [0] -> pince A ; [1] -> pince B ; valeurs parmi [RBLFUD]
QString referenceRotationCube[6][6]; // Tableau deux dimensions à initialiser au début permettant de mémoriser la liste des faces accessible à une pince si rotation du cube par l'autre pince
[...]

Bon, rien de particulier à priori. L'une de mes fonctions utilise les valeurs du tableau referenceRotationCube une fois qu'il est initialisé.
C'est là que je me suis rendu compte que ça ne fonctionnait pas correctement du tout (sans rentrer dans les détails, je trouve des valeurs que je ne devrais théoriquement pas obtenir). J'ai donc passé la fonction en question au peigne fin pour comprendre ce qui se passait. Je suis arrivé à la conclusion que les valeurs de mon tableau referenceRotationCube n'étaient pas identiques à celles que j'avais prévu lors de l'init du tableau. En fait, seule la valeur referenceRotationCube[0][0] était modifiée. A aucun moment je ne viens modifier cette valeur précise dans l'application.

J'ai perdu trois bonnes heures sur ce problème avant de me rendre compte que mon problème venait en fait de ma fonction "void setFacePince(int numPince, QString face)". Le résolveur de cube dispose de deux pinces que je nomme, par commodité, 1 et 2. Lorsque j'ai utilisé la fonction setFacePince, j'ai continué à repérer mes pinces par les numéros 1 et 2, alors que le tableau facePince[] n'accepte que les valeurs 0 et 1 pour accéder à ce tableau.

Résultat, setFacePince(2, "D") avait pour effet d'écrire la valeur "D" ailleurs que dans le tableau, c'est à dire dans referenceRotationCube[0][0].

Promis, j'essayerai de ne pas le refaire :p .
Fil RSS des articles