Juin 262016
 

Preparation

We will use this file named texfile.tex as the .tex to convert:

\documentclass[12pt]{article}
\pagenumbering{gobble}% Remove page numbers (and reset to 1)
\begin{document}
My first \TeX~document.
$s_n = (Ta)_n = \displaystyle\sum_{k=0}^\infty T_{nk} a_k$
\end{document}

Result file

PNG demonstration

PNG demonstration

Generating PNG images

Packages you need:

  • texlive (or any other TeX program, I guess)
  • dvipng

Step by step

  1. In the Terminal, go to the directory containing the .tex file.
  2. Execute this:
    $ latex texfile.tex
    • Output:
      This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian) (preloaded format=latex)
       restricted \write18 enabled.
      entering extended mode
      (./texfile.tex
      LaTeX2e <2014/05/01>
      Babel <3.9l> and hyphenation patterns for 2 languages loaded.
      (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
      Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
      (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo)) (./texfile.aux
      ) [1] (./texfile.aux) )
      Output written on texfile.dvi (1 page, 584 bytes).
      Transcript written on texfile.log.
      
  3. Convert to PNG at 150dpi (to get a larger image than default):
    $ dvipng texfile.dvi -D 150 -o texfile.png
    • Output:
      This is dvipng 1.14 Copyright 2002-2010 Jan-Ake Larsson
      [1] 
  4. Remove the border white spaces of the page and add some borders using imagemagick:
    $ convert texfile.png -trim -bordercolor white -border 5x5 texfile_trimmed.png
  5. Your file is ready as texfile_trimmed.png.

Script

I have made a little script to automatize the conversion, with auto-remove of intermediary files:

if latex $1
then
	BASENAME=${1%%.*}
	echo Base name is: $BASENAME
	dvipng $BASENAME.dvi -D 150 -o $BASENAME.png
	OUTPUT_FILENAME="${BASENAME}_trimmed.png"
	echo Output file name is: $OUTPUT_FILENAME
	convert $BASENAME.png -trim -bordercolor white -border 5x5 $OUTPUT_FILENAME
	if test $# = 2
	then
		if test $2 != "-keeptempfiles"
		then
			rm ${BASENAME}.{aux,dvi,log,png}
		fi
	else
		rm ${BASENAME}.{aux,dvi,log,png}
	fi
fi
exit 0
Usage
  1. Save the above script as tex2png, anywhere you want, usually near your .tex files for convenience.
  2. Make it executable: $ chmod +x tex2png.
  3. Syntax: tex2png filename [-keeptempfiles].
    • Example: $ tex2png texfile.tex.
    • Alternatively, you can omit the .tex extension: $ tex2png texfile but I would not recommend it.
    • If you want to keep the intermediary files (dvi, log, etc.), add the -keeptempfiles argument at the end: $ tex2png texfile.tex -keeptempfiles.
  4. The final image is named texfile_trimmed.png

Generating SVG images

Packages you need:

  • texlive

Step by step

  1. In the Terminal, go to the directory containing the .tex file.
  2. Execute this:
    $ latex texfile.tex
    • Output:
      This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian) (preloaded format=latex)
       restricted \write18 enabled.
      entering extended mode
      (./texfile.tex
      LaTeX2e <2014/05/01>
      Babel <3.9l> and hyphenation patterns for 2 languages loaded.
      (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
      Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
      (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo)) (./texfile.aux
      ) [1] (./texfile.aux) )
      Output written on texfile.dvi (1 page, 584 bytes).
      Transcript written on texfile.log.
      
  3. Convert to a SVG image with a 1.5 scale factor:
    $ dvisvgm texfile.dvi -TS1.5 --no-fonts
  4. Your file is ready as texfile.svg.

Remarks

There is no padding in the SVG method. I have not found yet a method to add a little padding around the figure.

Also, the --no-fonts is necessary to prevent rendering issues about SVG fonts, especially with Firefox and the default SVG viewer of Debian. So the generated formula will not be selectable as a text, but at least, it will render correctly on every device with SVG support.

Background

I needed to include some nice looking formulas on my new game design wiki. I am using MediaWiki but the math add-on was not working on my server (web hosting service, not mine). So I decided to create myself the images offline and upload them as regular image files, so that I don’t need to think too much about trying to set the add-on without having all the privileges I could have on a personal server.

Juin 192016
 

Tired

Time spent to get the info: one day. Length of the fix: a few lines. Haha, this is so ridiculous it makes me smile a little.

Okay, so you are:

  1. on fresh Debian Jessie (GNOME 3),
  2. on a laptop,
  3. with an integrated graphics unit,
  4. and it is an Intel CPU. In my case, I have a Core i3 Sandy Bridge CPU with HD Graphics 3000.

The backlight function keys:

  1. are working so you have an on-screen display feedback,
  2. are not changing the effective brightness of your screen,
  3. are changing the values of this file: /sys/class/backlight/acpi_video0/brightness (close and reopen in gedit to see the value changing or check by command line).

You have this folder: /sys/class/backlight/intel_backlight.

Yay! You may have a solution!

  1. Create a file:
    sudo gedit /usr/share/X11/xorg.conf.d/20-intel.conf
  2. Add this in the file:
    Section "Device"
            Identifier "card0"
            Driver "intel"
            Option "Backlight" "intel_backlight"
            BusID "PCI:0:2:0"
    EndSection
  3. Save file.
  4. Close gedit.
  5. Restart the computer.
  6. It should work now!

If this fix does not work on your laptop, I am sorry to hear that but I cannot help you further. Don’t ask the noob. I have just followed guidance on linux threads such as here: link to Ubuntu’s launchpad website. Good luck!

Juin 192016
 

Voilà quelques mois que je n’ai pas donné de nouvelles. 😛

Léger.

En début d’année, j’ai eu l’occasion de travailler (omagad!) dans une société de développement de jeux vidéo qui s’appelle Nvizzio Créations, localisée à Montréal en plein dans le quartier du Centre-Ville sur la rue Sainte-Catherine. J’ai rejoint pendant deux mois et demi l’équipe qui travaille sur RollerCoaster Tycoon World, la suite de l’emblématique licence de jeu de gestion de parc d’attractions de Chris Sawyer ! Autant dire que j’ai eu beaucoup de chance d’avoir été pris car j’ai été contacté au départ pour un poste de développeur Unreal Engine pour le projet ROKH du même studio. Comme je ne connais pas la technologie, il m’a été demandé alors si je voulais rejoindre l’équipe de testeurs de RCTW avec comme possibilité d’évoluer vers un poste de développeur Unity ou peut-être de designer, chose que je ne pouvais refuser évidemment, en l’honneur des centaines d’heures passées sur les premiers jeux de la série.

Capture d'écran des crédits de RollerCoaster Tycoon World

La (moitié de la) team QA dans les crédits de RollerCoaster Tycoon World.

J’ai donc été pris en tant que Testeur QA, dans une équipe majoritairement anglophone. En plus des responsabilités habituelles d’un testeur QA, j’ai testé des fonctionnalités précises du jeu, notamment le système de contenu généré par l’utilisateur qui se base sur le Steam Workshop. Malgré les quelques semaines passées sur le système, je n’avais même pas fini de tester tous les cas de figure tellement il y avait de paramètres. Ces paramètres étaient grossièrement comme celles-ci :

  1. Le PC est-il connecté à internet ?
  2. Suis-je connecté à mon compte Steam ?
  3. Mon compte a-t-il accès au Workshop ?
  4. Que contiennent les dossiers locaux du jeu dans le répertoire :
    • %programfiles(x86)%\Steam\SteamApps\workshop\content\282560\
    • %userprofile%\AppData\LocalLow\Nvizzio Creations\Rollercoaster Tycoon World\
  5. Que contient le fichier X et Y, etc.

Et autour de ces paramètres, il fallait tester des cas comme « que se passe-t-il si des fichiers sont manquants après avoir chargé la partie après avoir sauvegardé sur un nouvel emplacement une partie en mode Scénario » ou « que se passe-t-il en cas de conflit de nom entre deux fichiers, l’un en ligne et l’autre en local ». Il faut dire que les rapports de bug se faisaient longs dans une bonne partie des cas et il m’a fallu recourir à un formatage strict — panel, noformat, listes, et cetera pour ceux qui connaissent JIRA — pour les vingt étapes et plus de reproduction. En mettant un peu de couleur et de style, ça devait rendre la lecture plus aisée pour celui qui devait corriger !

Ce fut ma première mission dans l’industrie du jeu vidéo dans une grande équipe, entre trente et cinquante personnes. Je suis plutôt content de cette expérience, même si je suis un peu déçu du résultat, ne partageant pas la même vision du design que celle qui est appliquée dans RollerCoaster Tycoon World. À noter que mon contrat n’a pas été reconduit au delà de la sortie du jeu en Early Access, Nvizzio Créations n’ayant plus eu besoin de mes services. Mon ancien responsable de l’équipe test a été promu game designer. Me concernant, je n’ai pas pris l’initiative de passer le test d’évaluation pour tenter de rentrer dans l’équipe de développement. Je l’aurais probablement réussi sans trop de problèmes, après avoir pris connaissance du pitch, mais je ne me sentais pas suffisamment motivé de rejoindre le développement.

Voilà comment s’est conclue cette expérience dans l’industrie du jeu vidéo. Cela m’a étrangement redonné envie de créer un wiki perso autour du game design. Il est temps que je m’y mette ! J’y reviendrai, mais pour l’instant, passons à autre chose !

Explicatif

Pour les PVTistes non-Canadiens qui font un aller retour Canada>France>Canada, au retour au Canada, il faut remplir la fiche de déclaration (celle qu’on remplit dans l’avion pour gagner du temps) comme si on était un résident du Canada. En fait, l’agente de la douane m’a indiqué qu’en tant que PVTiste avec le visa déjà approuvé, on a un statut de résident temporaire, ce qui fait que les règles sur l’importation s’appliquent de la même manière qu’un résident permanent.

Je pense avoir fait le tour de ce que j’avais à dire, à part que la prochaine fois, je ne serai peut-être plus au Canada…

Mar 192016
 

Faut-il envoyer une autorisation de prélèvement à la banque ?

Non.

Mais j’ai lu quelque part qu’il fallait envoyer le mandat SEPA à la banque avant de payer la Cotisation Foncière des Entreprises ?

Tout nouveau compte bancaire doit donc être déclaré à partir du lien « Gérer mes comptes bancaires » pour pouvoir être utilisé. Les comptes bancaires, qu’ils soient domiciliés en France ou dans l’un des autres pays de la zone SEPA, sont acceptés pour le paiement :

  • d’impôts/taxes sur rôle (ex : CFE, Taxe Foncière …), s’ils répondent à la norme de prélèvement SEPA CORE ;
  • d’impôts/taxes auto-liquidés (ex : TVA, IS, TS, CVAE, TCA, TVS …), s’ils répondent à la norme de prélèvement interentreprises SEPA B2B.

Aucun envoi de mandat n’est nécessaire pour effectuer des paiements CORE.

— Mise en œuvre de la norme SEPA (PDF), impots.gouv.fr

J’ai écrit ce petit article car, ayant mal lu dans la documentation du site des impôts, je pensais qu’il fallait envoyer ce mandat de prélèvement pour enregistrer un nouveau compte bancaire pour payer la CFE alors qu’il n’y avait pas besoin. Du coup, je me suis pris une majoration de 5%, car entre le délai d’envoi du courrier à la banque, le conseiller de la banque qui est malade la semaine, et bien sûr, le fait que je suis au Canada actuellement, c’est difficile de ne pas être en retard. Heureusement, pour les sommes qui étaient en jeu, cela ne représente même pas dix euros de majoration dans mon cas. Bon, en même temps, j’ai été idiot de ne pas avoir su qu’il y avait besoin de payer cette CFE même lorsqu’on ne fait pas de bénéfice en autoentreprise…

Déc 072015
 

Screenshot comparing between with open graph image and without

Comparison between with open graph image and without

Upset.

I have just spent four hours to figure out how to put an image preview for URLs linking to custom web pages which you put on LinkedIn profile pages. You know, those links added as media.

  1. First, you have to add Open Graph meta tags to your website. Just put those meta tags as shown below in the <head> html tag:
    <meta property="og:type" content="website"/>
    <meta property="og:title" content="Page title"/>
    <meta property="og:description" content="This description will be used by LinkedIn crawler."/>
    <meta property="og:url" content="http://example.com/"/>
    <meta property="og:site_name" content="Page site name"/>
    <meta property="og:image" content="http://example.com/openGraph_image.png"/>
    <meta property="og:locale" content="en_us"/>

    Don’t forget to modify content attributes value! I think LinkedIn only needs a few meta tags from what is in the example code but testing how LinkedIn crawls my website is just a pain in the ass.

  2. VERY IMPORTANT: It seems the LinkedIn crawler needs the webpage to have at least one <article> tag to work with. Or else, the crawler will crash and you will get this error message:
    Sorry, there was a problem processing your request. Please try again.
  3. Before adding your link to LinkedIn, check if open graph tags are properly set by following this link and log in: Open Graph Debugger. Facebook should find the Open Graph tags when you put your URL and click « Fetch new scrape information ». If not, check your code.
  4. Then, you can put your link on LinkedIn.

If you want to make changes to your image, you will have to deal with the LinkedIn caching system. This system keeps the Open Graph data and associates it with the URL you provided on LinkedIn. So you will have to workaround this system by adding extra unused query string to use a new URL. For example, if the pointed page can be accessed at http://example.com, you can use those alternatives:

http://example.com/index.html
http://example.com/index.html?a=1
http://example.com/index.html?a=2
http://example.com/index.html?linkedin=wtf etc...

Pretty complex, isn’t it? Okay, it’s time to close my 40 browser tabs and get some sleep now. ^^’

Nov 302015
 

Alors que les premiers flocons peinent à se montrer, voici un petit récapitulatif de mon début de séjour.

Explicatif.

Petite note pour ceux qui viennent avec un PVT, sur le document de déclaration pour la douane à remplir dans l’avion, je n’avais pas rempli tous les champs. Par exemple, ce document vous demandera la nature de votre arrivée : visite, affaires et études. Je n’ai coché aucune de ces cases, n’étant pas sûr que « affaires » voulait dire travailler, et sachant que le PVT permet également de ne pas travailler… Enfin vous voyez le délire quoi wesh.

Une fois débarqué, lorsque je me suis présenté devant l’agent de la douane à l’aéroport, je lui ai présenté les documents, entre autres la lettre d’introduction et le document de déclaration de la douane, et celui-ci m’a demandé la durée du séjour : il faut dire deux ans même si vous ne restez que quelques mois pour commencer. Une fois passé la douane, l’agent vous invitera à passer dans les bureaux de l’immigration (à Montréal Trudeau, c’est juste derrière les kiosques des agents de douane).

Passage très rapide aux bureaux de l’immigration après la douane de Montréal ! Certains me disaient que cela prendrait des heures, mais il n’y avait personne devant moi, la salle était vide et les agents patientaient. Cela a duré moins de cinq minutes ! Étant arrivé le 31 octobre, peut-être que la période était propice pour éviter une longue queue. Quel fou viendrait s’installer au Canada au début de l’hiver ? 😛

Enthousiaste.

Après être arrivé à mon point de chute à Brossard, j’ai entamé les quelques démarches administratives pour commencer à chercher du travail, accompagné de mon frère et d’un ami. J’ai ainsi récupéré le numéro de l’assurance sociale sur un document papier, le NAS, et ouvert un compte en banque à la Banque Nationale.

Démonstratif.

D’ailleurs, parlons brièvement de la banque. Comparé au système français, le système canadien semble bien différent. Déjà, il faut bien faire la distinction entre une carte de débit et de crédit. En gros, la carte de débit, délivrée par la banque, est directement reliée à votre compte chèque (votre compte courant). Les opérations réalisées sur le compte chèque sont immédiates. C’est vraiment comme un porte-monnaie. Et puis, la carte de crédit est celle avec laquelle vous allez construire un historique de crédit. Avec cette carte, une VISA ou une MasterCard par exemple, vous allez pouvoir faire des achats en ligne, et surtout payer des factures. En fait, la banque vous met à disposition une certaine somme en dollars canadiens que vous pouvez dépenser tous les mois. Et à la fin du mois, vous recevrez une facture qu’il va falloir payer à la banque. Et là, le but, c’est de renflouer la carte de crédit dans un certain délai, sachant que le dépassement de ce délai vous fera payer des intérêts sur ce qui n’a pas été payé.

Il existe des sites qui en parlent plus en détail. Je vous laisse aux soins des moteurs de recherche si le sujet vous intéresse.

Douteux.

Pour en revenir à mon expérience, heureusement que j’étais accompagné, toujours de mon frère et d’un ami, à l’ouverture du compte bancaire. Déjà, on avait pris un rendez-vous mais il n’y avait pas de rendez-vous inscrit dans leur agenda. Peut-être était-ce une autre succursale de la banque alors ? En tous cas, un agent a été disponible pour nous prendre en charge.

La Banque Nationale dispose d’une offre pour les nouveaux arrivants au Canada. Mais l’agent ne semblait pas au courant de cette offre et il a fallu lui montrer l’existence de cette offre sur le site internet de la banque. Depuis, je ne suis pas sûr qu’il ait bien rempli les champs afin de bénéficier des avantages de cette offre. Surtout après qu’il ait eu du mal avec l’outil d’inscription pendant dix bonnes minutes. Le responsable informatique étant venu à la rescousse, ils ont pu voir qu’il y avait une faute de frappe dans un des champs… *facepalm* Bref, normalement, je ne devrais pas payer certains frais, me permettant d’économiser au moins environ $15 par mois. À noter que les virements Interac pour des personnes autres que moi sont toujours facturés $1 par action, car non soumis à l’offre de bienvenue ; ces virements devenant sans frais à partir d’un certain montant dans votre compte chèque.

Au calme.

Après quelques virées dans Montréal centre et des sorties gastronomiques (aux fast-foods), j’ai eu un premier entretien pour un poste de développeur Unity chez Behaviour Interactive. Après un test Codility que je n’ai pas très bien optimisé et un entretien où mes compétences techniques n’ont pas vraiment brillé, cela n’a pas fonctionné. Tant pis, peut-être pour une prochaine fois !

Petit à petit, je me rends compte que mon expérience professionnelle récente m’empêche d’être bien vu pour les postes que je convoite, notamment dans le design. Après des années en indépendance et sur des jeux qui n’ont pas rencontré le succès, je me demande si ça pèse véritablement sur la qualité de mon profil de candidat. On verra bien dans les semaines à venir si la tendance se confirme.

Mode radin activé.

Finalement, j’ai profité d’une réduction en solde plus une réduction du Black Friday canadien pour obtenir une paire de bottes d’hiver à moindre coût, des Adidas à $75 au lieu de $150.

D’ailleurs, j’ai remarqué que dans ce pays, il y a énormément de soldes. Genre des soldes toute l’année. Du coup, au final, on voit bien que certains produits au prix normal sont vendus bien chers. Faut pas déconner, ça reste du putain de Made in China.

Oct 082015
 

English version lower!

Vous avez vu ce super titre en anglais ? Héhé, je me prépare pour le Canada, c’est dans très bientôt !

Je suis tombé sur un bug d’Illustrator CS5 qui me prévient de la rastérisation des dégradés lors de l’export d’un objet, qui contient évidemment un dégradé, dans le format SVG Tiny 1.1+.

Explications

Ce bug intervient lorsqu’un objet avec un dégradé a été tourné avec l’outil de transformation. Pour corriger ce problème, il suffit de repasser tous les objets que vous avez tournés en mode couleur unie puis en dégradé. Et normalement, l’exporteur ne rasterise plus les dégradés !

Here comes the english version!

An english title calls for an english content, eh? 🙂

I have had a bug with the SVG Tiny 1.1+ exporter which says the gradients will be rasterized on export. Tiny 1.1+ is supposed to support gradients, so why does it have happen?

This is a bug which occurs when you rotate with the transformation tool an object which has a gradient fill. To circumvent this bug, you just have to switch the color fill to plain color and return to gradient fill on all your objects you have rotated. And normally, the exporter will not (hopefully) rasterize your gradients anymore!

Sep 092015
 

Ok, je viens de passer quelques heures à me demander pourquoi le positional tracker n’était pas détecté correctement sur mon PC (Windows 7 64). Les symptômes :

  • le tracker fonctionne correctement quand on le branche en USB sur le casque directement via le port qui se trouve sur le dessus,
  • le tracker ne fonctionne plus quand on le branche sur le PC sur un des ports de la carte mère : il est marqué en tant que « Unknown device » dans le gestionnaire de périphériques.

La solution au problème : changer de câble USB. Oui, le câble par défaut a un défaut. Il n’est pas capable d’alimenter en énergie le tracker si on le branche sur un port de carte mère. Je ne sais pas pourquoi il fonctionne quand il est branché sur l’oculus. Cependant, il ne faut pas prendre n’importe quel câble USB en tant que remplacement car celui-ci doit être plus robuste que le câble original. J’ai testé avec deux câbles différents, l’un étant plus fin que l’autre. Le câble fin, qui je pense a été fait pour du USB 1, n’a pas pu délivrer la puissance nécessaire au tracker. Par contre, l’autre bien plus épais et probablement fait pour du USB 2 ou un disque dur externe, est celui qui a permis de brancher le tracker sur le PC directement. C’est pourquoi si vous devez chercher un câble de remplacement sur internet, je vous souhaite bonne chance pour trouver le bon. XD

Juil 242015
 
Capture d'écran de la fenêtre de crash

Plantage de l’éditeur Unity sur la re-sérialisation en texte

Lorsque vous avez un gros projet Unity entre vos mains et que vous décidez de forcer la sérialisation en texte (Project Settings > Editor > Asset Serialization > Mode: Force Text), il se peut que vous rencontriez un problème de mémoire insuffisante qui fait crasher Unity. Lors du processus de « re-serialisation », Unity charge tous vos assets dans la RAM pour recréer les structures de données du format binaire vers le format texte. Puis arrive le moment tant redouté : l’éditeur n’arrive plus à allouer de la mémoire et crashe !

Ceci est dû pour l’une des deux raisons suivantes :

  1. l’incapacité d’Unity à allouer la mémoire nécessaire due à la limitation des applications 32-bit.
  2. si vous êtes sur Unity 5, bien que l’éditeur soit 64-bit, il n’y a pas assez de mémoire sur votre PC.

Quel que soit le cas, pas de panique ! Vos données n’ont pas été corrompues par le crash vu que le travail se faisait uniquement en RAM. Néanmoins, il se peut que vos derniers changements apportés au projet se soient évanouis dans la nature (parfois, il faut fermer l’éditeur proprement pour s’assurer que des changements sont sauvegardés sur le disque).

Comment remédier à ce problème ?

Pour ma part, la recherche de solution et la résolution m’ont pris un peu plus d’une heure. J’ai passé pas mal de temps sur les forums sans trouver de réelle réponse précise qui n’implique pas le devoir de redéfinir des valeurs et des références qui ont disparu lors de la conversion. Mais de mon côté, j’ai pu trouver une méthode qui permet de faire la conversion sans perte de valeurs et de références !

Je suis trop fort !

Voici donc mon pas à pas :

  1. Déjà, partez d’un projet stable, sans erreur. Corrigez vos bugs avant de convertir les assets en texte.
  2. Archivez votre projet quelque part. Ben oui, c’est important d’archiver avant de faire de opérations dangereuses.
  3. Dans l’éditeur, dans la fenêtre Project, sélectionnez tous vos assets puis exportez-les dans un unitypackage via Export Package…
    • L’export peut prendre plusieurs dizaines de secondes, voire minutes, selon la taille du projet (mon package faisait 750 Mo !)
  4. Mettez votre package pas trop loin, on va s’en resservir souvent pendant le processus.
  5. Supprimez tous vos assets dans Project ! Quand je vous disais d’archiver le projet, ce n’était pas pour rien…
  6. Définissez Project Settings > Editor > Asset Serialization > Mode: Force Text
  7. Double-cliquez sur votre unitypackage depuis l’explorateur et attendez le chargement qui peut prendre du temps.
  8. Désélectionnez tout puis sélectionnez uniquement une partie du package pour l’import.
    • Le but est d’importer petit à petit les assets. À chaque import, Unity va re-sérialiser en texte.
    • Si l’import plante (et donc que Unity crash pour out of memory), c’est parce que vous avez pris trop de fichiers d’un coup. Dans ce cas, réimportez à nouveau en prenant moins d’assets.
    • Vous constaterez très probablement que la console vous signale des erreurs pour classe manquante. Dans ce cas, identifiez un asset ou un groupe d’asset qui contient la classe manquante et importez-le. Très important : lorsque vous avez réglé les problèmes de classes manquantes, il faut réimporter tous les assets à partir desquels l’erreur est apparue dans la console, toujours petit à petit (avec les mêmes sélections), qui sont déjà importés pour recréer les variables et les références qui ont pu se briser.
    • Pour vous aider dans le processus, je vous conseille d’avoir la fenêtre du Gestionnaire des tâches pour voir la taille que prend une sélection d’assets en import pour mieux découper les imports.
  9. Une fois que tout est importé, faites un test. Il ne devrait rien manquer si vous avez tout bien importé / réimporté / réréimporté / …
    • Si vous avez des problèmes de NullPointerException ou des incohérences de comportement dans le test, identifiez l’asset qui lève cette exception ou l’incohérence puis réimportez-le. Ne faites surtout pas la réassignation vous-même, le réimport est censé corriger les problèmes de références manquantes (Missing) et les valeurs qui n’ont pas été bien importées.

Le plus long dans le processus a été, pour moi, d’attendre l’ouverture du unitypackage à chaque import. C’est pourquoi vous devez bien comprendre comment sont rangés vos assets pour bien découper vos imports. Je pense que le mieux est d’importer du plus générique au plus spécifique. Par exemple, importer les scripts des plugins sur lesquels s’appuie votre code, puis petit à petit, importer les prefabs et assets jusqu’à arriver à ceux utilisés dans les scènes. Les scènes doivent d’ailleurs être importés en dernier, il s’agit du bout de la chaîne.

Voilà, j’espère que ça servira à quelqu’un. De mon côté, ça m’a permis de travailler avec Mercurial.

Juin 042015
 

Je viens de passer trente minutes à chercher la solution à un problème empêchant d’ouvrir le navigateur par défaut sur Windows depuis un logiciel C++ via ShellExecuteA(), en l’occurrence, le jeu Esteren : Les Griffes du Seigneur Sorcier dont le kickstarter est toujours en cours au moment où j’écris cet article. 😛

La solution dans mon cas a été de redéfinir le navigateur par défaut, par exemple en passant par Chrome puis en revenant à Firefox. Juste avec cette simple manipulation, le ShellExecuteA() a fonctionné de nouveau. C’est tout !

Et oui, rien à voir avec un bug de votre code, c’est probablement de la faute des autres qui ne font pas bien leur boulot !