{"id":21715,"date":"2018-05-25T15:16:00","date_gmt":"2018-05-25T15:16:00","guid":{"rendered":"http:\/\/www.gamasutra.com\/view\/news\/318804"},"modified":"2018-05-25T15:16:00","modified_gmt":"2018-05-25T15:16:00","slug":"blog-translating-a-game-from-unity-to-bitsy","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2018\/05\/25\/blog-translating-a-game-from-unity-to-bitsy\/","title":{"rendered":"Blog: Translating a game from Unity to Bitsy"},"content":{"rendered":"<p><strong><em><small>The following blog post, unless otherwise noted, was written by a member of Gamasutra\u2019s community.<br \/>The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.<\/small><\/em><\/strong><\/p>\n<hr\/>\n<p><a href=\"https:\/\/pippinbarr.github.io\/b-r-1\/\"><em>b r 1<\/em><\/a>\u00a0is an attempt to translate a game from one game engine\/environment into another. In this case, it is a translation of my own game\u00a0<a href=\"http:\/\/www.pippinbarr.com\/2016\/05\/19\/v-r-1\/\"><em>v r 1<\/em><\/a>\u00a0from\u00a0<a href=\"https:\/\/unity3d.com\/\">Unity<\/a>\u00a0into\u00a0<a href=\"https:\/\/ledoux.itch.io\/bitsy\">Bitsy<\/a>.<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/05\/blog-translating-a-game-from-unity-to-bitsy.png\"\/><\/p>\n<p>Translations of one form or another are a generative approach to game design and development for me,\u00a0<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/wiki\/Blog-Posts#2018-05-07----new-project-v-r-4\">something I\u2019ve written about before<\/a>. Translating between engines specifically feels like an opportunity to think about the underlying building blocks of videogames by employing the semi-scientific experimental idea of maintaining the\u00a0<em>design<\/em>\u00a0constant while treating the engine\/environment as the controlled variable.\u00a0<em>b r 1<\/em>\u00a0helps me to ask and explore what the differences between Bitsy and Unity and to look at what Bitsy is like as an engine.<\/p>\n<p>To briefly recap the source material,\u00a0<em>v r 1<\/em>\u00a0was a game I made as an approach to reproducing\/thinking-about the work of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Gregor_Schneider\">Gregor Schneider<\/a>\u00a0in a virtual\/digital space. Schneider\u2019s masterpiece\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Gregor_Schneider#The_%22Haus_u_r%22\">The Haus u r\u00a0<\/a>is a house that he obsessively makes, demakes, and remakes. Within the house there is a room he calls\u00a0<em>u r 1<\/em>\u00a0which he has reproduced multiple times in different contexts, including in\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Gregor_Schneider#%22Totes_Haus_u_r%22_in_Venice\">Totes haus u r<\/a>\u00a0at the Venice Biennale. It is this room that I tried to recreate in\u00a0<em>v r 1<\/em>\u00a0and then to manipulate in different ways to explore hopefully related ideas about reproduction, craft, and space. In\u00a0<em>v r 1<\/em>\u00a0the player encounters a version of Schneider\u2019s\u00a0<em>u r 1<\/em>\u00a0over and over again in different formats facilitated by the Unity game engine, whether it simply has the light turned off or whether it has been broken into its constituent pieces and left on the ground.<\/p>\n<p>For the remainder of this essay, I want to write about what I found out when I remade\u00a0<em>v r 1<\/em>\u00a0in Bitsy, focusing on what was revealed about Bitsy as a game engine as well as more general design and development ideas. My objective isn\u2019t to go over these things exhaustively, but just to note what I find interesting. Much fuller documentation and obsessive thinking can be found in the project\u2019s\u00a0<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commits\/master\">commit<\/a> <a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commits\/master\">history<\/a>and\u00a0<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/wiki\">process documentation wiki<\/a>.<\/p>\n<h2 id=\"vision-versus-concept\">Vision versus concept<\/h2>\n<p>Bitsy is a 2D game engine, Unity is a 3D game engine. One of the most immediate decisions to make revolved around the basic question of how to represent the room in the Bitsy form. The initial decision was a bird\u2019s-eye view, since this is the most formal way of translating, but it felt flat and uninteresting to look at (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/c37bd366c11b31d4931b1bf1efb792a122438a5a\">c37bd36<\/a>). I went with a kind of false 2.5D approach, with inaccurate perspectival effects, in order to try to capture the\u00a0<em>feeling<\/em>\u00a0of\u00a0<em>v r 1<\/em>\u00a0(<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/84047e7e11e22edac6e0d690816e6bb49110fec8\">84047e7<\/a>). Even though it was less straightforward, it felt important to be able to evoke the Unity version of the game visually to maintain some connection between the very distinct engines. Further, having perspective was the only way to make the window and radiator in\u00a0<em>v r 1<\/em>\/<em>u r 1<\/em>\u00a0visible in the Bitsy context: seen from the top, they are simply part of the wall. This kind of translation project creates specific tensions of this kind, a need to reconcile a new technology or design framework with pre-existing requirements. These tensions are valuable because they force us to ask both about the technology\/framework at hand (the materials of production)\u00a0<em>and<\/em>\u00a0the source design\/concept we are attempting to translate.<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/05\/blog-translating-a-game-from-unity-to-bitsy-1.png\"\/><\/p>\n<h2 id=\"what-is-that\">\u201cWhat is that?\u201d<\/h2>\n<p>Bitsy uses a tile-based representation of the world. A single \u2018room\u2019 (or scene) is 16&#215;16 tiles and each tiles is 8&#215;8 pixels. This limitation, especially at the tile level, is hugely restrictive on what can be represented, or at least how that can be done. Given that the avatar in Bitsy is one tile in size, a scale is effectively set for the rest of the world, not dissimilar to Unity\u2019s unit grid in relation to the avatar height in that system. The obvious outcome of this is the challenge of re-representing 3D objects and forms from\u00a0<em>v r 1<\/em>\u00a0in Bitsy\u2019s low-resolution, and the risk that they will become unintelligible through that translation (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/wiki\/Design-Journal#thursday-10-may-2018-1357\">Thursday, 10 May 2018, 13:57<\/a>). This situation is partially resolved through careful use of the restricted pixels, partially through creating some multi-tile objects where scale permits (such as the bed), and partially through the additional Bitsy affordance of dialog boxes. The dialog boxes allow for descriptive (or other) texts to be attached to specific objects in a scene, meaning that texts can further clarify the low-resolution image and creating a cooperation of text\/image that can approximate the high resolution detail of Unity (See commit\u00a0<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/8066d3b7266f976c7e3ef12bfe6012c24aa451be\">8066d3b<\/a>\u00a0and\u00a0<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/wiki\/Design-Journal#saturday-19-may-2018-1444\">Saturday, 19 May 2018, 14:44<\/a>\u00a0and\u00a0<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/wiki\/Design-Journal#sunday-20-may-2018-1807\">Sunday, 20 May 2018, 18:07<\/a>).<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/05\/blog-translating-a-game-from-unity-to-bitsy-2.png\"\/><\/p>\n<h2 id=\"i-am-not-a-camera\">I am not a camera<\/h2>\n<p>A drastic change from\u00a0<em>v r 1<\/em>\u00a0to\u00a0<em>b r 1<\/em>\u00a0is the use of a third person \u2018camera\u2019. Where\u00a0<em>v r<\/em> <em>1<\/em>used a first-person character controller, allowing the player to be \u2018immersed\u2019 in the world and adopt a (relatively) naturalistic view based on perspective, proximity, etc., Bitsy lends itself to a third-person view in which the entire scene is visible at all times and the avatar moves around it with tile-based movements. This leads to different understandings of \u2018visibility\u2019 in\u00a0<em>b r 1<\/em>. In\u00a0<em>v r 1<\/em>, for instance, if you stand outside the window and look into the room you can see the bed, tube, and trunk, but not the radiator because it is recessed beneath the window (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/757f18a60d7d8e285a51731d03121979a125eb0d\">757f18a<\/a>). We end up with a \u201ctotal information\u201d view of the scene in which you can see into a room before you even enter it, a strange perceptual trick that is actually fairly common in many games, but raises the question \u201cwho am I?\u201d This is complicated even further in a scenario such as the \u201cdoor down\u201d room, in which the character cannot enter the room, nor look through the window, yet can see everything inside it (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/8066d3b7266f976c7e3ef12bfe6012c24aa451be\">8066d3b<\/a>). The fact that the \u2018camera\u2019 is situated high above the world being experience further complicates matters and ultimately necessitated odd decisions around how to represent walls and objects\u2019 spatial relationship to those walls (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/dd47dd89c2d255ca6da3e9f32657dfcfad6b9478\">dd47dd8<\/a>).<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/05\/blog-translating-a-game-from-unity-to-bitsy-3.png\"\/><\/p>\n<h2 id=\"me-and-gregor-schneider\">Me and Gregor Schneider<\/h2>\n<p>At its heart,\u00a0<em>v r 1<\/em>\u00a0was about grappling with how to work with Unity in ways that might stay somewhat true to Gregor Schneider\u2019s practice. Schneider\u2019s work is very much focused on obsessive crafting and duplication of space, and so\u00a0<em>v r 1<\/em>\u00a0changed this idea to reconfiguration of space (as duplication is all too easy in digital spaces). As such,\u00a0<em>b r 1<\/em>\u00a0has to be situated in relation to Schneider\u2019s work too. At many points in its development, I was pleased to find quirks of Bitsy that seemed \u201cmore authentic\u201d, such as the fact sprites are unique in Bitsy, meaning I had to create, for instance, a\u00a0<em>new<\/em>\u00a0radiator every time I needed one for a new room, a very Schneider-esque activity (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/984beb95121b726e3e70b419252fb8cdb518996a\">984beb9<\/a>). I became sufficiently interested in this idea that I even began to worry whether my underlying process was \u201chonest\u201d enough if I duplicated not the original radiator but a different copy (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/0e084ae588f2a234d1f80de0e834fa1af11417a2\">0e084ae<\/a>). Ultimately, working in the new game environment felt like a continuation of the\u00a0<em>v r 1<\/em>\u00a0project to reimagine his process in this new digital context. \u201cHis work is about spatiality and the seen and unseen and spatial composition. \u2026 He struggles with imperfect materials to make things identical, perfect, I\u2019m struggling with a perfect materials to make things legible, humanised, real.\u201d (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/wiki\/Design-Journal#thursday-10-may-2018-1357\">Thursday, 10 May 2018, 13:57<\/a>).<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/05\/blog-translating-a-game-from-unity-to-bitsy.png\"\/><\/p>\n<h2 id=\"a-frozen-world\">A frozen world<\/h2>\n<p>Another major contrast between the Unity and Bitsy versions of this work is the presence of\u00a0<em>physics<\/em>\u00a0in Unity but not in Bitsy (beyond basic collisions that prevent movement through solid objects). This is relevant to the above meditation on Schneider\u2019s work especially because of its highly\u00a0<em>physical<\/em>\u00a0nature. In\u00a0<em>v r 1<\/em>\u00a0I relied on the physics engine to create appropriate configurations of objects when the room was rotated in various ways, with the bed etc. falling realistically and settling. In Bitsy this kind of physics had to be simulated in drawings and dialogs in order to create facsimiles of the\u00a0<em>v r 1<\/em>\u00a0tableaux (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/ad168b3edfce1911952e601c35443451751f5795\">ad168b3<\/a>). Another approach to this idea of physics was, in fact, to have the\u00a0<em>player<\/em>\u00a0act as the simulation, as with the scene in which the player falls through the floor, enacting their falling by moving the avatar downward on the screen (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/9c69163370cad301d527d5021a3bc659a1d51c12\">9c69163<\/a>). In the end, I wonder whether the extremely\u00a0<em>static<\/em>\u00a0nature of the Bitsy world is actually more true to Schneider\u2019s creations which, after all, you are only meant to view and never touch, and which tend to represent timeless, endless scenarios that repeat their minimalist scenes indefinitely.<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/05\/blog-translating-a-game-from-unity-to-bitsy-4.png\"\/><\/p>\n<h2 id=\"going-with-the-grain\">Going with the grain<\/h2>\n<p>To end on a point of Sch\u00f6nian joyfulness about the conversation with materials, working with Bitsy did have these moments of feeling like I was in synch with the software. This was especially true when creating versions of the\u00a0<em>v r 1<\/em>\u00a0spaces could be reimagined in terms of the \u201cBitsy reality\u201d. The \u2018organised\u2019 scene is an example of that (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/b56a96ce9d2dd8758d0d26eb15e1f88159d372bc\">b56a96c<\/a>). In Unity the elements of the 3D models are arranges by height in a line, in Bitsy the corresponding scene is arranged in a grid, tile by tile in a way that\u2019s visually pleasing and makes sense as a translation of that idea. Similarly the scene in which the room is collapsed into pieces on the ground as if it has fallen down in Bitsy is represented with the tiles that make up the room being jumbled but still taking up the same space on the screen (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/ad168b3edfce1911952e601c35443451751f5795\">ad168b3<\/a>). This idea of \u201cgoing with the grain\u201d (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/4b7e96f8651b832a1b469d1b12979d0e8cdaaea5\">4b7e96f<\/a>) was a recurring feeling with the work, from choosing to represent the title in a dialog box, to using the dialog system to describe what is seen through windows (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/19d7a75ddf5f3d6e4346b819cd8d4c36328ba813\">19d7a75<\/a>), to selecting the order of rooms by hand since Bitsy is not predisposed to random generation (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/commit\/9c69163370cad301d527d5021a3bc659a1d51c12\">9c69163<\/a>). Perhaps most emblematic of this process was toward the end of the project where I needed to replace a set of three scenes from\u00a0<em>v r 1<\/em>\u00a0that simply made no sense in Bitsy (generally these relied very specifically on having a real third dimension, such as one room leaning on the other. Needing three new rooms to feel fulfilled, I ended up turning to Bitsy-specific affordance to manipulate the space: a new colourful palette, animated tiles, and an \u2018items\u2019 based room in which you can pick up the objects (<a href=\"https:\/\/github.com\/pippinbarr\/b-r-1\/wiki\/Design-Journal#saturday-19-may-2018-1658\">Saturday, 19 May 2018, 16:58<\/a>).<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.sickgaming.net\/blog\/wp-content\/uploads\/2018\/05\/blog-translating-a-game-from-unity-to-bitsy-5.png\"\/><\/p>\n<h2 id=\"the-end\">The end<\/h2>\n<p>In the end,\u00a0<em>b r 1<\/em>\u00a0served both as an intriguing reengagement with\u00a0<em>v r 1<\/em>\u00a0and Schneider\u2019s work, and a way of thinking closely about the representational and experiential properties of both Unity and Bitsy as creative tools. I have every intention of carrying this particular project forward with presumably\u00a0<em>b r 2<\/em>\u00a0and\u00a0<em>b r<\/em> <em>3<\/em>and all the struggle and learning that will entail.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The following blog post, unless otherwise noted, was written by a member of Gamasutra\u2019s community.The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company. b r 1\u00a0is an attempt to translate a game from one game engine\/environment into another. In this case, it is a translation of my [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":21716,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-21715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/21715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=21715"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/21715\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/21716"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=21715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=21715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=21715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}