2009/12/30

Enorme bug dans Zelda Spirit Tracks

Pardon pour ce titre un tantinet provoquant , mais j'en croyais pas mes paupières:

Quizz rigolo (et éducatif), quelle est la bonne formule?
  1. Si tu veux allé voir...
  2. Si tu veux aller voir...
  3. Si tu veux allée voir...
Solution: lire le proverbe africain caché dans cet article ou bien sélectionner le texte qui suit: "Si tu veux aller vite, vas-y seul, mais si tu veux aller loin, alors il faut y aller ensemble".

"Nintendo Seal Of Quality" = ???

Par ailleurs (mais ça pourrait être sans rapport avec ce qui précède), la qualité rédactionnelle des textes de Zelda Spirit Tracks m'a parue nettement inférieure à celle des précédents Zelda DS ou GB.
Textes sources faiblards ou traduction française bof bof? Il faudrait l'avis d'un joueur ayant testé une version US (ou autre langue que FR) pour savoir si les textes d'origines sont moins bons que d'hab...

EDIT:
Une autre, pas mal non plus:


Comme quoi, Zelda Spirit Tracks ça fait 2 jeux en un!! (le deuxième étant de trouver les fautes d'orhographe)...

2009/12/10

Right-click shell integration for secureSWF

Many Flash game developpers encrypt their SWFs files in order to protect their actionscript code, and make it difficult (and hopefully impossible) to anyone to crack/hack the game (scoring, locks, site locking, etc..).

There are lots of flash obfuscators, and secureSWF is, as far as I know, the most advanced: it gives a lot of control and offers tons of options. However I generally use the default presets and it works fine.

What attracted my attention is that secureSWF (Standard version) has a command line operating mode that enabled me to implement easily a right-click "Encrypt with secureSWF" item in windows explorer.

What motivated me is that I don't like the process of launching a new program, browsing my directories to find the SWF, think about an export directory, and think about options (although all this can be saved in project files, ... for big projects).

Usually I prefer something fast and simple: before uploading a SWF, I want to right-click on it in windows file explorer, select some "encrypt with secure SWF" menu item! (see screenshot below)

(The language displayed in the following screeshots is French because my XP is installed in only one language, sorry to non-french readers for the inconvenience)

Right-click menu for encrypting SWF files

This can be achieved pretty easily (windows XP), in windows file explorer:
  • click menu "Options",
  • select "File Types" tab,
  • select "SWF" file type,
  • click "Advanced". Another dialog appears:
Managing actions associated to SWF file type
  • click "New". The following dialog appears:
Parameters of the action
  • type "Encrypt with secureSWF" (or any text you want) in 1st field,
  • in the 2nd field, type:
"secureSWF_Folderpath\ssCLI.exe" %1 "."

where secureSWF_Folderpath is the path of your secureSWF directory.
On my computer I've put it in "C:\Program Files\secureSWF\".
If the path is not valid, you should get an error dialog box when clicking "ok".
  • caution: don't forget the "." after %1. As explained in the secureSWF documentation, this must be the output directory. I usually prefer overwriting the SWF I have selected, therefore I choose the current directory ("."). But I've also added a "secureSWF in encrypted/" right-click menuitem which creates a sub-folder named "encrypted" and puts the protected SWF in it. The command line for this is:
"C:\Program Files\secureSWF\ssCLI.exe" %1 "encrypted"
  • click "OK", and close Options.
Voilà! It's done.

Note for advanced secureSWF users: secureSWF apparently uses the Standard preset, but you can toggle on/off various options in the command line syntax (check the doc)

2009/08/26

Distance to a Quadratic bezier curve

Recently, after viewing this illuminating animated GIFs, I realized that finding the closest point on a quadratic Bezier curve to a given point M might be not so difficult ...and very useful for detecting collision between a disk and a quadratic curve.

Quadratic Bezier curves are familiar to flash programmers, because these are the curves they draw with functions like Movieclip.moveTo() and Movieclip.curveTo().

Such Bezier curve is defined by 3 points: P0, P1, P2.
P0 and P1 are the extreme points, and P1 is a middle point determining curvature.

The curve can be parametrized with the formula:
P(t) = (1-t)²P0 + 2t(1-t)P1 +t²P2.
t is a parameter variable walking from 0 to 1. When t = 0, you are at point P0, and when t = 1, u're at P2.Each point of the curve has a corresponding "t".
The above-mentioned animated GIFs greatly help to "geometrically" grasp not only the quadratic curves, but also higher order Bezier curves .

Now, the key step is to get the derivative (back to school!! ) of P(t):
dP/dt(t) = -2(1-t)P0 + 2(1-2t)P1 + 2tP2
which can be rewritten as:
dP/dt(t) = 2(A+Bt)
where A = (P1-P0) and B = (P2-P1-A)
(note: A and B have a geometric signification: they are the diagonals of the parallelogram defined by P0,P1,P2 and a fourth point kind of "opposite" from P1)

The derivative is a vector representing the "speed" at point defined by P(t). It also has the property to be a tangent to the curve at point P(t).

Now let M(x,y) be our point (which can be anywhere) and we want to find out a point P' (defined by t') on Bezier curve that is the closest possible to M.

P(t') will meet the condition:

MP.dP/dt = 0
(where "." is the dot product of 2 vectors)
that is, MP will be orthogonal to the tangent at P.
Rewritting this condition yields:
(M - (1-t)²P0 + 2t(1-t)P1 +t²P2).(A+Bt) = 0

...After a (boring ) calculus you get a third degree equation (ouch!! ):
at3 + bt² + ct + d = 0,
where a = B², b = 3A.B, c = 2A²+M'.B, d = M'.A, (and M' = P0-M)

If we can solve this equation, we get 3 possible solutions for t !!
How to solve a third degree equation is explained here (in french).
Now we have a maximum of 3 solutions t0, t1, t2 and find the one fitting in [0,1] and minimizing dist(M, P(t)) is easy !!

Here is a demo:

Drag the circled dots
P0 and P2 are the blue points, P1 is green , M is red.
T
he yellow dot is the closest point, the orange dot indicates the normal to M.

After this, I realized that Andre Michelle had already posted a ball collision detection on his blog a long time ago. But the source wasn't available (at least I didn't work for nothing )...

The source code (AS2, FLA CS3 + Bezier.as).
Translating it into as3 should be no problem .

[UPDATE 2012/08/06] I fixed the issue pointed by makc3d. Now the end points are included as a possible solution, which is more consistent. I added a flad "onCurve" indicating if the closest point is on the curve itself (true), or one of the end points (false). The "oriented distance" is negative when the point is on the right of the path formed by [P0,P1,P2]. For backward compatibility, I kept this info in the variable "orientedDist", but it loses its meaning when the closest point is not on the curve.

2009/08/20

"Contour following" !!

"Contour following" is fashionable these days !!
ScoreLight is a musical device using a "tactile" laser trying to follow the contours of the shapes it lightens.
This video speaks for itself:


"There is no camera nor projector: a laser spot explores the shape as a pick-up head would search for sound over the surface of a vinyl record - with the significant difference that the groove is generated by the contours of the drawing itself", says the ScoreLight project page.

StickyLight, a previous version, also explored some possibilities of "contour following":
http://www.todayandtomorrow.net/2009/08/03/sticky-light-scorelight/
I like the way these tiny luminous globules move on the surface of purely graphic shapes... so sensual ... Although deterministic, they seem almost alive. It also conduce interesting reflections about perception: quoting StickLight project page, "By moving on the drawing, the light spot attracts the attention of the viewer. It actually forces our sight to follow the dynamic path taken by the light".

Another "contour following" behavior recently appeared in "Spider: The Secret of Bryce Manor", an iPhone game. As a regular spider, you stick to walls and objects (and thus "follow contours"), but the game seems to focus more on jumping, capturing insects, and web weaving.


There is no official page about this game, but Tiger Style studio gave interviews for PocketGamer and TouchArcade.

"Contour following" will also occur in my Microbe game , currently in production (more info on "Microbe" project" soon !!).
Some years ago, I made a Flash prototype for testing a contour following algorithm on boolean shapes:

(click near a shape to stick the robot. Blue and White shapes can be drag&dropped)

Although "Microbe" game will not necessarily use the same algorithm (aah.. these good ol' 2002 actionscript 1 ), "sticking" will be a core mechanic of the gameplay!

If you know other "contour following" (2D) applications, don't hesitate to add a comment !

(Thx to Lolo and Magicfred for sending ScoreLight and Spider URLS)

2009/08/15

Goswf integration in your blog

Test:


Yess, it works !!!

In 2008, I released Goswf, a light-weight viewer for displaying Go games on websites (forums, blogs, etc., ...).

Goswf can now be displayed in vertical format, which is much more suitable for blogs.
I've also simplified color management for more esthetic integration in hosting websites.

Check this tutorial for integrating in your blog.

[EDIT: this method only works with a Blogger blog (example here). If you use a different blog system, you have to host goswf.swf and SGF files either on this system, either on your own server. In the example above, goswf and the SGF file are located on my server at www.gludion.com]

2009/07/27

More sphere mapping

Not so different from a previous post, but... some new designs, and different ways to visualize the result (ie flat/transparent/lines):



Click on the left orange buttons to see different designs.

You can use the text editor to define your disks.
[xA = x angle, yA = y angle, op = cone aperture, col = color]
Thanks to Lolo from Globz for the globulos design (10th button) .

2009/01/30

Au fait, bonne année ;)


Héhé, ui ui je sais je suis à la bourre au niveau du délai .. (mais bon on est encore en janvier, na! )

2009/01/26

The Art of Game Design: A Book of Lenses

Bon je sors ma plume la plus affutée car il s'est passé en 2008 un évènement qui intéressera tous les Game Designers, ou ceux qui voudraient le devenir, ou encore ceux qui croient ne pas l'être mais le sont quand même, etc...

"The Art of Game Design: A Book of Lenses", par Jesse Schell, a été publié en 2008 (chez Elsevier/Morgan Kaufman), et c'est vraiment un excellent livre, si ce n'est le meilleur, sur le sujet.

Il faut dire qu'au premier abord j'étais plutôt méfiant, peut-être à cause du très douloureux "Rules of Play" (Zimmerman, Salem), un pensum, objet purement académique, qui au final noie le peu qu'il a à dire. Ou encore, autre extrème, à cause d'autres publications (ou ressources internet), victimes d'un tropisme consistant à assimiler -consciemment ou non- le game design à la conception de first-person-shooter-à-fort-taux-de-narration-et-réalisme: tout se passe comme si on voulait former nos jeunes esprits à devenir de "bons soldats" opérationnels pour rejoindre l'armée de production industrielle: "soit un bon level designer, mon fils (c'est à dire: veux-tu bien me faire des map3d qui tiennent la route et que je pourrais intégrer dans mon prochain FPS, mon fils), soit un bon scriptwriter, soit un bon programmeur, soit un bon texture designer, etc.. et contribue à reproduire le système, merci."

Bref, c'est pas comme ça qu'un nouveau Tetris, ou de nouveaux jeux innovants vont voir le jour, moi j'vous dis !!

Mais... ma méfiance allait de pair avec une grande espérance (car malgré tout mon pessimisme est souvent talonné par un grand optimisme):

  • Je voulais un livre qui décrive l'activité de designer de jeux en général, et non pas un sous-genre particulier (ex: FPS industriel).
  • Je voulais un livre qui rende compte de l'ensemble des aspects entrant dans la composition des jeux (graphisme, contrôles, point de vue du joueur, etc..)
  • Je voulais un livre avec des concepts et conseils pertinents, utilisables dans la pratique de designer solo ou en équipe.
  • Je voulais un livre crédible, par exemple illustré par des exemples réels.
  • Je voulais un livre traitant de la profondeur dans les jeux (progressivité, courbe d'apprentissage)
  • Je voulais aussi un livre traitant vraiment du level design, mais là il semble que je voulais trop

Le livre de Jesse Schell étant plébiscité par des game designers tels Will Wright (qu'on ne présente plus) ou Kyle Gabler (World of Goo), ça a éveillé ma curiosité, et après l'avoir lu -avec délice- je peux dire qu'il comble "presque" toutes ces attentes (nul n'est parfait, mais c'est déjà beaucoup mieux que ses prédécesseurs).

Le seul point un peu décevant reste celui du level design, qui n'est qu'évoqué à l'aide d'une pirouette, sous prétexte que le sujet est latent dans tout le livre ... Tss tss, c'est dommage, car par ailleurs le livre est très complet et peut prétendre à l'exhausitivité.

Mais ça fait quand même 5/6 sur l'échelle de mes attentes
Les 5 premiers points sont très bien traités, et contribueront -je l'espère- aux progrès et à l'efficacité du lecteur !

Par ailleurs, le livre surprend très agréablement: il très bien écrit, avec beaucoup de subtilité et d'humour.
L'auteur attire notre attention sur des manières de de voir et d'observer le jeu extrèmement fines qui, par extension, peuvent affecter (ou plutot bénéficier à) votre manière de voir le monde. On touche alors parfois à la philosophie...

Même les "évidences" y sont présentées de manière originale, ce qui rend le livre stimulant du début à la fin.
L'évidence la plus redoutable est celle qui consiste à définir ce qu'est un "jeu": dans tout livre sur le sujet, il y a une partie consacrée à la définition des termes qui est essentiellement descriptive et analytique. Là ou Jesse Schell fait très fort, c'est que non seulement il s'en sort très bien sur les incontournables ("jeu", "fun", etc..), mais la démarche (que je qualifierais d'observation attentive et analytique) est étendue à tous les autres aspects du jeu.
En effet, le thème qui accompagne tout le livre est celui des "Loupes" (la traduction du titre pourrait être "Un livre de Loupes"): chaque concept important est synthétisée par une "Fiche" (une "loupe") qui est une manière de voir le jeu, un angle de vue. Cet aspect "observationnel" des loupes n'est pas neutre, il est aussi "prescriptif" puisque chaque Loupe offre des suggestions pour améliorer le jeu.

(Note: Il est possible d'acheter séparément ces Loupes sous forme de mini-cartes, ce que je n'ai pas (encore) fait à cause du prix un peu élevé de l'ensemble (livre 50$ + cartes 30$ = 80$))

Soyons un peu critique:
Bien que le livre ne succombe pas aux sirènes de la "logique Hollywood" (qu'on pourrait résumer en primat accordé au "réalisme-bluff-narration-acteurs-stars" sur le "gameplay-fun"), je trouve qu'il n'échappe pas toutefois pas complètement à une forme d'école ou de style "américain". Je m'explique.

En décrivant les différents composants d'un jeu que sont l'univers et l'histoire, un danger invisible est de suggérer que tout jeu doit avoir une histoire, un univers ce qui exerce une forme de pression sur l'activité du game designer. En fait selon moi, l'articulation entre l'univers et le gameplay est un vrai débat, et il peut exister des cas (comme par exemple les puzzles games) ou le choix (ou non-choix) d'un univers gagne à être fait assez tard dans le processus de design. J'ai le sentiment que dans le style "japonais" par exemple, le game design (jeu + contrôles/interface) est abordé d'abord en tant que tel pendant plus longtemps indépendamment de l'univers. Même si par la suite le travail sur l'univers est remarquablement bien fait, et plutot utilisé séduire le public et rendre le jeu accessible, tout en renforcant le gameplay et en l'alimentant de nouvelles pistes de gameplay.

Difficile de généraliser.. et difficile de comparer sans une vraie méthodologie, tant les données sur la genèse des jeux japonais sont difficiles à trouver en langue occidentale (heureusement que la géniale équipe de Pixn'Love est là pour y remédier). Peut-être est-ce lié au fait que les japonais ont inventé énormément de jeux innovants dans les gameplays comme dans les univers (parfois complètement déjantés)? Peut-être cet étrange arrière -goût est laissé dans le livre de Jesse Schell par les nombreux exemples issus du monde de Disney (chez qui l'auteur a été directeur créatif)?...
Je ne sais pas. Mais maintenant j'aimerais bien lire un livre sur le game design écrit par un japonais (de chez Nintendo, de préférence ;))...

Heureusement, avec le kit des "Loupes" de Jesse Schell, très souple et modulable à volonté, chacun est libre d'adopter le style qu'il préfère!...et de compléter par de nouvelles cartes?...

Conclusion:
A lire absolument, (en attendant mieux )

Le livre: The Art of Game Design: A Book of Lenses"
Les Loupes (cartes): "The Art of Game Design a Deck of Lenses" (non dispo sur amazon.fr)

Complément: Autres livres utiles:
"Game Design Workshop" (T.Fullerton, C.Swain, S.Hoffman - CMP Books 2004)
"Game Design: secret of the sages" (M.Saltzman - BradyGames 2000)