Our Blog

Anne Frank January 20th, 2013

Anne Frank

It’s been non-stop here since embarking on our first Unity project 18 months ago. Back in June 2012 we started work on a digitally enhanced version of The Diary of Anne Frank. The brief was to create a rich, immersive iPad version of the diary centred around the text of the original diary with keywords linked to carefully curated related content. The aim was to create a high quality experience, faithful to the original diary and the context in which it was written. The challenge was to create something that both felt modern and had a sense of historical authenticity. The use of Unity3D allows production of rich 3D interactive content with relative ease across different operating systems and devices. We wanted to create an immersive experience incorporating accurate 3D interactive representations of the house where Anne Frank wrote the diary and of the diary itself.

Key Technical Achievements:

  • Creation of a 3D hypertext system to enable individual words (links) in a body of text to be interactive. Required generation of bounding box coordinates for each word in 2D typeset space which were then converted to 3D world space in relation to the 3D modelled page. Required conversion from typeset points to pixels.

  • A bespoke markup language was created to allow raw text to be marked up with different link types to allow for links with differing behaviours.

  • Creation of web based content editor / asset manager. The text was marked up using this editor which allowed words to be marked as links and for assets to be associated with those links. The text editor allowed non-technical content producers to decide where and how content is displayed in the final Unity app.

Lessons learned:

Below are some key takeaways from our experience of developing Anne Frank:

  • Layers of full screen alpha drastically impacts performance and reduces frame-rate (overdraw) kills iPad 1 and drastically reduces frame rate on iPad3.

  • Transparent cutout-shaders that use Alpha testing are very expensive when used on large areas of mobile screens. They should be used with care as alpha testing checks for a given level of transparency per pixel per frame.

  • Standard unity movie textures are very limited, at time of writing they do not support audio / video syncing making them unsuitable for video including speech. Due to time limitations we decided to use full screen playback which hooks into native iOS video playback. Later we investigated various third party movie texture plugins available on the Asset store.

  • Optimising for iPad 1 is time consuming and difficult especially if assets have been produced for retina resolution. In the majority of cases it was decided that the effort required was not worth the gain in terms of numbers of people actively using iPad 1. The main learning we took away from the optimisation work which benefitted our other apps was better management of the creation and destruction of assets on demand to keep the memory footprint down.

  • The iPad 1 work was useful when we were asked to do versions of the app for the Nook tablets.  A lot of the same optimisations were applicable in this case. The Nook also had a 50MB app size limit at this time so we used Unity Asset Bundles to break the content up.

  • At time of writing, JSONFx json reader is the only C# JSON parser that works across mobile devices on the supported Unity .NET framework (2.0).

  • In order to use version control such as Git, it is necessary to enable to the Metafiles mode in Unity Editor settings and to set Asset Serialization to Force text. Serializing assets allows Unity to perform the delta checks between versions on binary files. If using Git, care should be taken when collaborating on scenes as changes to scene files are not automatically merged.