Thea: The Awakening Releases on XBox one and PS4

We are proud to announce that after considerable effort we are ready to release Thea: The Awakening on PS4 and XBox One. We’ve spent a lot of time converting the controls from the PC version into something that can be played easily with a pad and no cursor in sight.

Got a PS4 Pro? Thea runs beautifully crisp in full 4k at 60fps.

Available from 31st May, we hope you enjoy this unique strategy game.

How to animate the render order of objects in the new Unity3D 4.6 uGUI

I want to animate a GUI element behind something during part of the animation and in front of it for the rest. The render order of GUI items is the order they appear in the hierarchy window, so how do we change that in an animation?

I could not find a built in way to do this so resorted to writing a script, (Please let me know if you know a built in way). In script you can use the Transform.SetSiblingIndex() function to set the child index of a transform.

using UnityEngine;
using System.Collections;

[ExecuteInEditMode]
public class UtilsAnimateHierarchyOrder : MonoBehaviour {

    public float siblingOrder;
    void Awake ()
    {
        siblingOrder = transform.GetSiblingIndex();
    }

    void OnValidate()
    {
        siblingOrder = Mathf.Round(siblingOrder);
        if (siblingOrder != transform.GetSiblingIndex())
        {
            transform.SetSiblingIndex((int)siblingOrder);
            siblingOrder = transform.GetSiblingIndex();
        }
    }

    void OnDidApplyAnimationProperties ()
    {
        OnValidate();
    }
}

The script makes use of a couple of useful functions. OnValidate() gets called whenever unity modifies the serialized fields in your class, except for some reason when the animation system changes a value. When this occurs a currently undocumented function is called OnDidApplyAnimationProperties(), the internals of the new GUI make use of this call, so hopefully when it goes open source we this function will gain documentation.

Also essential in making the above script work when creating an animation is the following tag:

[ExecuteInEditMode]

which does exactly what it says on the tin.

I hope this is useful for someone out there, note that if you want to animate multiple transforms then the order in which you SetSiblingIndex is important, as such the above approach is unlikely to work but may be a good starting point. In my scenario I only needed to edit the relative position of one item so the above sufficed.

Fixing a Macbook that’s got slower over time.

The following article details how, under load, my MacBook (Pro Retina Mid 2012 2.6GHz Intel i7 with 16Gb) was less than 1/4 of the speed it used to be and how I fixed it.

Over the last few months I started to notice that things were becoming less responsive in my dev environment, that’s an understatement, it was beginning to crawl. Something needed to be done or I needed a new machine!

Continue reading

High Resolution Cropped Facebook Profile Images

When writing our original Facebook integration we searched high and low to try to work out how to get the square profile image at a resolution higher than 50×50 pixels to no avail. The only options we could find were to get the picture, from which your profile picture is taken, at a higher resolution. The problem with this is that it’s not always square and often the user may have setup their profile image to be a cropped area of it.

Well today I was fed up with looking at low resolution images so searched again and managed to find a solution. Using the graph api you can request facebookid/profile?fields=pic_crop

eg http://graph.facebook.com/tactilefusion/profile?fields=pic_crop returns:

{
   "data": [
      {
         "pic_crop": {
            "uri": "http://profile.ak.fbcdn.net/hprofile-ak-prn1/t1/p320x320/10992_567316339955054_1439725697_n.jpg",
            "width": 320,
            "height": 320,
            "left": 0,
            "top": 0,
            "right": 1,
            "bottom": 1
         },
         "id": "447312341955455"
      }
   ]
}

Note that the left, top, right, bottom fields will always be the above they are there for backwards compatibility as it now always returns a cropped image.

So at last we have full res profile images in our new games in production:

Leaderboard