Looking for Japanese players

Quite difficult, I would say. Much more because finding a reliable translation of something you have in mind is quite complicated. It’s already difficult writing all this in English, given that it’s not my mother language! I was looking for a short sentence to write in Twitter, along with a link to the game trailer.

At first I wanted to say My name is Tsuyu, the name of the main character. I found out that

私の名前は …

seems to mean ‘My name is …’ and in this blog I found how to write Tsuyu: 梅雨 Tsuyu means literally ‘plum rain’, the name that is given to the rainy season around June. That’s why we choosed that name for our little hero: he is able to summon rain. So, ideally

私の名前は梅雨

would mean ‘My name is Tsuyu’.

Edit: it seems that it’s not exactly correct, as it sounds like ‘my name Tsuyu’. It should be written like this  私の名前は梅雨です

Anyway and just in case I looked for something easier. I tried ‘It’s raining‘, which @japangaijin confirmed in Twitter that it is written like  this

雨が降っている

Also quite nice, as that’s what happens in the game: it must rain so trees can be brought back to life.

Finally I also found that

もうすぐ梅雨入りだね~

means something like The rainy season is about to begin, which sounds perfect! Assuming that it is correct, of course. If was a friend of mine who loves Japan who told me so, but a confirmation would be great.

Will it reach Japan? I hope so, but it’s already difficult reaching someone outside Spain in English… just imagine trying to write something in such a beautiful but complex language as Japanese!

Tsuyu, our tiny hero.

“Rain, Sand, Stars” is now available in the App Store

It’s been a looong year. We wanted to release this game by June, but many things made it pretty impossible. Mainly that we started offering Art&Software services, which consumed most of our time. But it’s finally in the App Store!

Rain,Sand,Stars
Tsuyu, reforesting the galaxy one planet at a time!

Players control Tsuyu, a non-violent creature who is able to summon rain and bring trees back to life, something pretty useful in a galaxy where all vegetal life has disappeared because of a misterious sandstorm.

In this first adventure Tsuyu will reforest the Yakeraan system, 16 planetoids inhabited by bull-like creatures that will try to gore him out from their planets. But Tsuyu is small, and cute, and even if he could he wouldn’t harm living things. So he will be forced to outrun and jump over Yaks to avoid their thirst-induced rage while reforesting their planetoids!

Rain,Sand,Stars
Well done, Tsuyu!

We tried to create an endearing setting. We hope we have managed to create a game that both children and adults will enjoy. And while the experience can be quite on the short side, the game has been designed to be enriched with new planetoid systems and new creatures. If things go well and people like Rain,Sand,Stars, it will certainly grow in a near future.

Expect a PC/Mac version soon!

 

Redesigning a character

Video game characters should always be something memorable. Or at least, peculiar in some way. They may have personality (Nathan Drake), a unique aspect (Sonic, Samus in her suit), superb dialog lines (Daxter), strange clothes (Voldo AARGH) or weapons (Cloud)… Some designs were even forced by technical constraints (Mario’s hat, moustache and overalls respond to the low amount of available pixels in the Famicon system).

Rain,Sand,Stars is loosely inspired by The Little Prince, so its original main character, Zadkiel, shared his looks.

Nothing was strictly wrong with this character. Well, we had some problems with the 3D model… His face simply seemed wrong, as in a hard facial reconstruction after a particularly disgusting accident involving a big cat with huge claws. Don’t blame his less than 900 polygons…

But that was not the problem. He was too serious, perhaps. The sketch was fabulous, but his 3D version simply didn’t rise to the occasion. So we discarded him.

We HAD to do it. Our designer disappeared for a week and came up with our new hero. His name is a secret, his powers grant life, his cuteness doesn’t fit in his romper. We adore him, we hope you will, too:

Walking on the surface of a planetoid with Quaternions

In Rain, Sand, Stars, all objects inhabit little planetoids a la Mario Galaxy (or much before that, a la The Little Prince). Therefore, at each time step, all dynamic objects must be rotated so they stand upright on the planet surface. In a game like Mario Galaxy, their transform.up should coincide with the normal of the surface they are standing on.

Rain, Sand, Stars is simpler, so this vector always coincides with the opposite to the vector from the object towards the planetoid center (black lines in the picture). Along with this vector we also need the tangent vector to the planetoid surface (red lines) and the object’s forward vector (transform.forward in Unity3D, blue lines in the picture). Yellow lines point from each enemy towards the player, but we don’t need them now. Note that although it’s 3D, objects run in circles.

Computing the tangent is easy but tricky, as it’s direction should be always constant in its local space (say, ‘looking to the right’). Knowing that the cross product of two vectors produces a third vector which is perpendicular to the plane in which the first two lie, we obtain the planet tangent using Vector3.forward, which is (0.0, 0.0, 1.0f), and the towardsPlanetCenter vector.

Vector3 towardsPlanetCenter =
  planet.position - transform.position;
 
Vector3 planetTangent = Vector3.Cross (
  Vector3.forward, 
  towardsPlanetCenter);
Our hero being chased by an infamous cube. Black lines are vectors towards the planetoid's center. Blue lines are object's facing vectors. Red lines are the tangent vector to the planet's surface, computed from Vector3.forward and the vector towards the planetoid center. You may happily ignore yellow lines (they are vectors from each enemy towards the player)

The first rotation, the one that makes objects stand upwards when walking or running, must be applied instantly. The second one rotates objects smoothly towards their desired facing direction, which coincides with the planet’s tangent (or it’s opposite) at the object’s position.

Thanks to Unity3D’s Quaternion methods, FromToRotation and LookRotation, we may achieve this in four lines of code. First, we compute the required rotation so that an object’s transform.up coincides with the opposite of towardsPlanetCenter, and we apply it:

Quaternion standUpRotation = Quaternion.FromToRotation (
  transform.up,
  -towardsPlanetCenter.normalized);
 
transform.rotation =
  standUpRotation * transform.rotation;

Then we compute the rotation that represents the object’s desired facing direction. We use a heading variable, which is either -1.0 or 1.0 depending on user input or AI, to face towards the planet tangent or its opposite. This time, we rotate the object smoothly depending on its turning speed (Zadkiel turns much faster than Yaks):

Quaternion headingRotation = Quaternion.LookRotation(
  planetTangent * heading,
  -towardsPlanetCenter);
 
transform.rotation = Quaternion.Slerp(
  transform.rotation, 
  headingRotation,
  turnSpeed);

And that’s it! Yes, I know, that’s not all. But seriously, it’s more difficult to explain it than to implement it. And you may use something similar for moving objects in true 3D around a planetoid, as Mario does.