<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lowpoly &#8211; Machineboy</title>
	<atom:link href="https://machineboy.com/blog/tag/lowpoly/feed/" rel="self" type="application/rss+xml" />
	<link>https://machineboy.com</link>
	<description>Indie game developer from Norway</description>
	<lastBuildDate>Sat, 05 Sep 2020 15:13:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>
<site xmlns="com-wordpress:feed-additions:1">66024485</site>	<item>
		<title>The art of Embracelet</title>
		<link>https://machineboy.com/blog/the-art-of-embracelet/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 05 Sep 2020 15:04:33 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[embracelet]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[lowpoly]]></category>
		<guid isPermaLink="false">https://machineboy.com/?p=1642</guid>

					<description><![CDATA[A Lowpoly love letter Making a game all by yourself is a journey of testing, failing, making compromises and finding efficient ways to express your ideas. While my previous game had 90&#8217;s looking pixel art, I knew I wanted to go 3D with Embracelet from the start. But 3D is a lot of work. I [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1200" height="675" data-attachment-id="1593" data-permalink="https://machineboy.com/header_1200x675/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/07/header_1200x675.jpg" data-orig-size="1200,675" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="header_1200x675" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/07/header_1200x675.jpg" src="https://machineboy.com/wp-content/uploads/2020/07/header_1200x675.jpg" alt="" class="wp-image-1593" srcset="https://machineboy.com/wp-content/uploads/2020/07/header_1200x675.jpg 1200w, https://machineboy.com/wp-content/uploads/2020/07/header_1200x675-768x432.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<h2 class="wp-block-heading">A Lowpoly love letter</h2>



<p class="wp-block-paragraph">Making a game all by yourself is a journey of testing, failing, making compromises and finding efficient ways to express your ideas. While my previous game had 90&#8217;s looking pixel art, I knew I wanted to go 3D with Embracelet from the start. But 3D is a <strong>lot</strong> of work. </p>



<p class="wp-block-paragraph">I did 3D modelling and animation in college, but that was 20 years ago. You know what they say about riding a bike &#8211; once you learn, you never forget that skill. 3D is nothing like bicycling. <em>It&#8217;s more like if bikes have been replaced by flying hoverboards that you control with your nostrils</em>. Luckily the tools are somewhat easier to use nowadays, and there were tons of tutorials and helpful forums that could get me up to speed.</p>



<p class="wp-block-paragraph">And as a fan of cartoons and graphic design, I knew I wanted to create a game with a lowpoly aesthetic.</p>



<h2 class="wp-block-heading"><strong>The prototype</strong></h2>



<figure class="wp-block-image size-large"><img decoding="async" width="810" height="1080" data-attachment-id="1712" data-permalink="https://machineboy.com/?attachment_id=1712" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork.jpg" data-orig-size="1668,2224" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Untitled_Artwork" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-810x1080.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-810x1080.jpg" alt="" class="wp-image-1712" srcset="https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-810x1080.jpg 810w, https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-540x720.jpg 540w, https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-768x1024.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-1152x1536.jpg 1152w, https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-1536x2048.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork-1440x1920.jpg 1440w, https://machineboy.com/wp-content/uploads/2020/08/Untitled_Artwork.jpg 1668w" sizes="(max-width: 810px) 100vw, 810px" /><figcaption>An early concept art/idea sketch from 2018.</figcaption></figure>



<p class="wp-block-paragraph">The summer of 2018 I was sitting hunched over an underpowered laptop, trying to learn <a href="https://www.blender.org/">Blender </a>and how to import 3D models into <a href="https://unity.com">Unity</a>. Keeping models lowpoly (with few details) made it easier to iterate and change things, while keeping a clean style that is easy to read. Win win!</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1280" height="720" data-attachment-id="1650" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/guy/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/guy.jpg" data-orig-size="1280,720" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="guy" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/guy.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/guy.jpg" alt="" class="wp-image-1650" srcset="https://machineboy.com/wp-content/uploads/2020/08/guy.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/guy-768x432.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px" /><figcaption>This is Guyblend, the first version of Jesper. A nod to Monkey Island who named their main character after the file name guy.brush.</figcaption></figure>



<p class="wp-block-paragraph">After many iterations and tests, I was able to model and rig a passable character and import it into Unity for more testing and learning.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1081" height="1080" data-attachment-id="1656" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/img_1465/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/IMG_1465.jpg" data-orig-size="1125,1124" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="IMG_1465" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/IMG_1465-1081x1080.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/IMG_1465-1081x1080.jpg" alt="" class="wp-image-1656" srcset="https://machineboy.com/wp-content/uploads/2020/08/IMG_1465-1081x1080.jpg 1081w, https://machineboy.com/wp-content/uploads/2020/08/IMG_1465-721x720.jpg 721w, https://machineboy.com/wp-content/uploads/2020/08/IMG_1465-150x150.jpg 150w, https://machineboy.com/wp-content/uploads/2020/08/IMG_1465-768x767.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/IMG_1465.jpg 1125w" sizes="auto, (max-width: 1081px) 100vw, 1081px" /><figcaption>Ohoy there, my parkas-clad friend!</figcaption></figure>



<h2 class="wp-block-heading"><strong>The characters</strong></h2>



<p class="wp-block-paragraph">Embracelet has a lot of characters &#8211; more than 40 different models. They are all modelled by hand, polygon by polygon. Again, keeping things clean and simple was my rule of thumb. The characters should be easy to read and easy for me to animate.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1818" height="1080" data-attachment-id="1660" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/head/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/head.jpg" data-orig-size="2401,1426" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="head" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/head-1818x1080.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/head-1818x1080.jpg" alt="" class="wp-image-1660" srcset="https://machineboy.com/wp-content/uploads/2020/08/head-1818x1080.jpg 1818w, https://machineboy.com/wp-content/uploads/2020/08/head-1212x720.jpg 1212w, https://machineboy.com/wp-content/uploads/2020/08/head-768x456.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/head-1536x912.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/head-2048x1216.jpg 2048w, https://machineboy.com/wp-content/uploads/2020/08/head-1440x855.jpg 1440w" sizes="auto, (max-width: 1818px) 100vw, 1818px" /><figcaption>The main character has around 3000 triangles, which is probably comparable to a toenail in a modern AAA game. </figcaption></figure>



<p class="wp-block-paragraph">Characters are modelled with an automatic Mirror modifier in Blender. This makes it easy to create symmetrical characters and edit the body parts faster.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1695" height="1080" data-attachment-id="1662" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/mirroe/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/mirroe.jpg" data-orig-size="2125,1354" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="mirroe" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/mirroe-1695x1080.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/mirroe-1695x1080.jpg" alt="" class="wp-image-1662" srcset="https://machineboy.com/wp-content/uploads/2020/08/mirroe-1695x1080.jpg 1695w, https://machineboy.com/wp-content/uploads/2020/08/mirroe-1130x720.jpg 1130w, https://machineboy.com/wp-content/uploads/2020/08/mirroe-768x489.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/mirroe-1536x979.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/mirroe-2048x1305.jpg 2048w, https://machineboy.com/wp-content/uploads/2020/08/mirroe-1440x918.jpg 1440w" sizes="auto, (max-width: 1695px) 100vw, 1695px" /></figure>



<p class="wp-block-paragraph">The characters are modelled the old school way of extruding and moving polygons, carefully moving and connecting vertices. This makes it easy to have more detail where body parts need to bend, and to keep the visual style clean.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1701" height="921" data-attachment-id="1663" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/characters-2/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/characters.jpg" data-orig-size="1701,921" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="characters" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/characters.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/characters.jpg" alt="" class="wp-image-1663" srcset="https://machineboy.com/wp-content/uploads/2020/08/characters.jpg 1701w, https://machineboy.com/wp-content/uploads/2020/08/characters-1280x693.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/characters-768x416.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/characters-1536x832.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/characters-1440x780.jpg 1440w" sizes="auto, (max-width: 1701px) 100vw, 1701px" /><figcaption>A handful of characters from Embracelet.</figcaption></figure>



<h2 class="wp-block-heading">The scenery</h2>



<p class="wp-block-paragraph">I wanted the visual style of Embracelet to feel <em>light and airy, stylized and colourful</em>. Like all characters and assets, the scenes you&#8217;ll explore in the game are modelled in Blender. I did not want to buy ready-made assets, as I would have found it hard to keep the overall style coherent. Some games suffer from a visual disconnect when some parts of the game looks lifelike and amazing, while other parts of the game are simple and stylized. Embracelet is far from perfect from an art direction standpoint, but at least I feel the parts that make up the game fit together.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1920" height="1025" data-attachment-id="1664" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/scenery1/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/scenery1-scaled.jpg" data-orig-size="2560,1367" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="scenery1" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/scenery1-1920x1025.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/scenery1-1920x1025.jpg" alt="" class="wp-image-1664" srcset="https://machineboy.com/wp-content/uploads/2020/08/scenery1-1920x1025.jpg 1920w, https://machineboy.com/wp-content/uploads/2020/08/scenery1-1280x683.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/scenery1-768x410.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/scenery1-1536x820.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/scenery1-2048x1093.jpg 2048w, https://machineboy.com/wp-content/uploads/2020/08/scenery1-1440x769.jpg 1440w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption>The church grounds as modelled in Blender.</figcaption></figure>



<p class="wp-block-paragraph">I knew I would not have the resources to add textures to the world of Embracelet. Instead I chose an almost flat colour style, where each polygon is visible and the colour is baked into each vertex of the 3D model. I painted the colors using the Vertex Paint mode in Blender, which was super fast compared to UV-mapping everything.</p>



<p class="wp-block-paragraph">The scenery reacts to light and shadow, which I found more interesting than a completely flat style. It also has <em>Screen Space Ambient Occlusion</em>, which is a fancy term for making cracks and corners darker.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1920" height="1059" data-attachment-id="1665" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/scenery2/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/scenery2.jpg" data-orig-size="1944,1072" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="scenery2" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/scenery2-1920x1059.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/scenery2-1920x1059.jpg" alt="" class="wp-image-1665" srcset="https://machineboy.com/wp-content/uploads/2020/08/scenery2-1920x1059.jpg 1920w, https://machineboy.com/wp-content/uploads/2020/08/scenery2-1280x706.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/scenery2-768x424.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/scenery2-1536x847.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/scenery2-1440x794.jpg 1440w, https://machineboy.com/wp-content/uploads/2020/08/scenery2.jpg 1944w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption>The church grounds inside the game, with particle grass, shadows, skybox and colour.</figcaption></figure>



<h2 class="wp-block-heading">The shaders</h2>



<p class="wp-block-paragraph">Shaders are small computer programs that runs inside the game that decides how the models are rendered. I used Amplify Shader to create most of the shaders in Embracelet. <em>Technical jargon warning!</em></p>



<p class="wp-block-paragraph">The scenery gets its color from the vertex data, baked into the .fbx models. In addition, to create some life and randomness to the flat graphics, there is a big, transparent sphere with a waving, handpainted water colour texture overlaid the whole scene.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1200" height="673" data-attachment-id="1668" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/ezgif-com-gif-maker/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/ezgif.com-gif-maker.gif" data-orig-size="1200,673" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ezgif.com-gif-maker" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/ezgif.com-gif-maker.gif" src="https://machineboy.com/wp-content/uploads/2020/08/ezgif.com-gif-maker.gif" alt="" class="wp-image-1668"/><figcaption>Before and after the painted textured gets overlayed.</figcaption></figure>



<p class="wp-block-paragraph">The characters are actually UV-mapped instead of vertex shaded. They share an incredibly small texture:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="46" height="44" data-attachment-id="1669" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/palette16/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/palette16.png" data-orig-size="46,44" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="palette16" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/palette16.png" src="https://machineboy.com/wp-content/uploads/2020/08/palette16.png" alt="" class="wp-image-1669"/><figcaption>This is the texture for all the characters in the game!</figcaption></figure></div>



<p class="wp-block-paragraph">The folks (and animals) of Embracelet are supposed to stand out from the background. I decided to remove shadows from their shader so they pop and read better. Also, flat-styled characters are cool! They also have a very small fresnel rim light to make them ever-so-slightly more three dimensional. When limiting the character to these colours, the art style became more coherent.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1354" height="802" data-attachment-id="1670" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/shadows/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/shadows.jpg" data-orig-size="1354,802" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="shadows" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/shadows.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/shadows.jpg" alt="" class="wp-image-1670" srcset="https://machineboy.com/wp-content/uploads/2020/08/shadows.jpg 1354w, https://machineboy.com/wp-content/uploads/2020/08/shadows-1216x720.jpg 1216w, https://machineboy.com/wp-content/uploads/2020/08/shadows-768x455.jpg 768w" sizes="auto, (max-width: 1354px) 100vw, 1354px" /><figcaption>The unlit character shader doesn&#8217;t react to&#8230; uh, light by default. Some custom code is triggered when entering dark areas.</figcaption></figure>



<p class="wp-block-paragraph">I also made a custom shadow node for the character shader, so that it&#8217;s possible to control their general brightness from a script.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1920" height="875" data-attachment-id="1671" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/nodes/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/nodes.jpg" data-orig-size="2364,1077" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="nodes" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/nodes-1920x875.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/nodes-1920x875.jpg" alt="" class="wp-image-1671" srcset="https://machineboy.com/wp-content/uploads/2020/08/nodes-1920x875.jpg 1920w, https://machineboy.com/wp-content/uploads/2020/08/nodes-1280x583.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/nodes-768x350.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/nodes-1536x700.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/nodes-2048x933.jpg 2048w, https://machineboy.com/wp-content/uploads/2020/08/nodes-1440x656.jpg 1440w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption>This is the shader for the bracelet rings. They are transparent, and bend the background while also displacing their shape a bit with a noise generator.</figcaption></figure>



<h2 class="wp-block-heading">The animation</h2>



<p class="wp-block-paragraph">Rigging, animating and controlling all the characters was one of the biggest workloads when making Embracelet.</p>



<p class="wp-block-paragraph">Characters are rigged with skeletons inside Blender, and each bone is connected to the different body parts with blend weights.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1280" height="720" data-attachment-id="1673" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/bones/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/bones..jpg" data-orig-size="1280,720" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="bones." data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/bones..jpg" src="https://machineboy.com/wp-content/uploads/2020/08/bones..jpg" alt="" class="wp-image-1673" srcset="https://machineboy.com/wp-content/uploads/2020/08/bones..jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/bones.-768x432.jpg 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><figcaption>Hermod and his bones. The floating bones are Inverse Kinematics targets, which can control the angle of the bones &#8211; or having a hand reach out to touch something.</figcaption></figure>



<p class="wp-block-paragraph">The characters have a library of movements, all keyframed the old fashioned way (no motion capture). All the animations are imported into a character controller in Unity, a spiderweb of all the animations that can smoothly change into each other.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1909" height="985" data-attachment-id="1674" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/animations/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/animations.jpg" data-orig-size="1909,985" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="animations" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/animations.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/animations.jpg" alt="" class="wp-image-1674" srcset="https://machineboy.com/wp-content/uploads/2020/08/animations.jpg 1909w, https://machineboy.com/wp-content/uploads/2020/08/animations-1280x660.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/animations-768x396.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/animations-1536x793.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/animations-1440x743.jpg 1440w" sizes="auto, (max-width: 1909px) 100vw, 1909px" /><figcaption>These are all the states and animations for one character. Pretty messy, but it works (most of the time).</figcaption></figure>



<p class="wp-block-paragraph">During the first year of production, I used the Blender files directly inside Unity. This worked great at first, and made it really fast to change and iterate animations and scenes. But as the game and characters grew more complex, it took <em>longer and longer to import updates </em>&#8211; sometimes many minutes just to change a single keyframe. I realised I had to convert <em>each and every object</em> in the project to FBX and reimport them. It was a nerve-wrecking two week nightmare to make sure every object, character and animation were exported properly and worked inside the game. <em>Lesson learned!</em></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="540" height="304" data-attachment-id="1678" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/gruntwalk/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/gruntwalk.gif" data-orig-size="540,304" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="gruntwalk" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/gruntwalk.gif" src="https://machineboy.com/wp-content/uploads/2020/08/gruntwalk.gif" alt="" class="wp-image-1678"/></figure>



<p class="wp-block-paragraph">To animate talking, expressions, blinking and wind I used blend shapes &#8211; basically different keyframes of the 3D model to smoothly move between.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="540" height="304" data-attachment-id="1677" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/gruntface/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/gruntface.gif" data-orig-size="540,304" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="gruntface" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/gruntface.gif" src="https://machineboy.com/wp-content/uploads/2020/08/gruntface.gif" alt="" class="wp-image-1677"/></figure>



<p class="wp-block-paragraph">To simulate wind, I made custom scripts that animated the wind blend shapes by a wind strength value while also affecting the vertex offset on certain shaders &#8211; like grass and trees.</p>



<h2 class="wp-block-heading">Sky and Sea</h2>



<p class="wp-block-paragraph">The first prototype I did with 3D graphics had 3D shapes as clouds, but I could not get them to look as fresh and inviting as I wanted. I needed the sky to look fluffy and warm, so I ended up painting it instead.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1870" height="1036" data-attachment-id="1681" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/clouds/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/clouds.jpg" data-orig-size="1870,1036" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="clouds" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/clouds.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/clouds.jpg" alt="" class="wp-image-1681" srcset="https://machineboy.com/wp-content/uploads/2020/08/clouds.jpg 1870w, https://machineboy.com/wp-content/uploads/2020/08/clouds-1280x709.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/clouds-768x425.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/clouds-1536x851.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/clouds-1440x798.jpg 1440w" sizes="auto, (max-width: 1870px) 100vw, 1870px" /><figcaption>Ever since I saw the water reflections in Beyond Good &amp; Evil, I&#8217;ve wanted to have that effect in my own game.</figcaption></figure>



<p class="wp-block-paragraph">I painted the sky in <a href="https://www.clipstudio.net/en/">Clip Studio Paint</a> as a equirectangular map. Inside Unity it&#8217;s converted to a Sky Cube. It took quite a few iterations to hide and adjust the pinching of the corners.</p>



<p class="wp-block-paragraph">The sea uses one of the only art asset I bought &#8211; I tried making my own water shader but it was too much work to get it looking right. I found the <a href="https://assetstore.unity.com/packages/vfx/shaders/stylized-water-shader-71207">Stylized Water asset</a>, and that was just what I was looking for. Sweet reflections, waves and foam and a clean look, and performance was good too.</p>



<h2 class="wp-block-heading">Speech bubbles</h2>



<p class="wp-block-paragraph">There is no voice acting in Embracelet, and instead the characters talk in speech bubbles. I spent a lot of time working on getting this as good as I could. A pet peeve of mine is slowly animating text&#8230; Don&#8217;t tell me how fast or slow I can read! In Embracelet speech is presented instantly in bubbles over the characters head (most of the time!), and you can spend as much or as little time reading as you like.</p>



<p class="wp-block-paragraph">The font size is big, white on black to make it easy to read. <em>No squinting required!</em></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1920" height="1080" data-attachment-id="1685" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/image_0016041-2/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/image_0016041.jpg" data-orig-size="1920,1080" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image_0016041" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/image_0016041-1920x1080.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/image_0016041-1920x1080.jpg" alt="" class="wp-image-1685" srcset="https://machineboy.com/wp-content/uploads/2020/08/image_0016041.jpg 1920w, https://machineboy.com/wp-content/uploads/2020/08/image_0016041-1280x720.jpg 1280w, https://machineboy.com/wp-content/uploads/2020/08/image_0016041-768x432.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/image_0016041-1536x864.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/image_0016041-1440x810.jpg 1440w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></figure>



<p class="wp-block-paragraph">I implemented the very fun (and slightly beta) <a href="https://assetstore.unity.com/packages/tools/gui/text-animator-for-unity-158707">Text Animator asset</a> to add some liveliness to the text, and a custom PG swearword generator using custom sprites.</p>



<p class="wp-block-paragraph">The font I used is actually my own handwriting, created in the open source <a href="https://fontforge.org/en-US/">Font Forge</a> program.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1440" height="1080" data-attachment-id="1684" data-permalink="https://machineboy.com/blog/the-art-of-embracelet/font/" data-orig-file="https://machineboy.com/wp-content/uploads/2020/08/font-scaled.jpg" data-orig-size="2560,1920" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="font" data-image-description="" data-image-caption="" data-large-file="https://machineboy.com/wp-content/uploads/2020/08/font-1440x1080.jpg" src="https://machineboy.com/wp-content/uploads/2020/08/font-1440x1080.jpg" alt="" class="wp-image-1684" srcset="https://machineboy.com/wp-content/uploads/2020/08/font-1440x1080.jpg 1440w, https://machineboy.com/wp-content/uploads/2020/08/font-960x720.jpg 960w, https://machineboy.com/wp-content/uploads/2020/08/font-768x576.jpg 768w, https://machineboy.com/wp-content/uploads/2020/08/font-1536x1152.jpg 1536w, https://machineboy.com/wp-content/uploads/2020/08/font-2048x1536.jpg 2048w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /><figcaption>The Limones font, created on vacation in a beautiful lemon garden in Andalucia. Maybe I should put it up on GitHub one day?</figcaption></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">When you work on a project for so long, it&#8217;s easy to only see the issues, the cracks, that weird limping animation, the grass that clips through those rocks. But then I remember that even the biggest budget games also sometimes look weird or have immersion-breaking bugs. The lowpoly style of Embracelet is probably not for everyone, but I hope it serves its purpose &#8211; to help you imagine being somewhere else and to let your imagination fill in the missing gaps.</p>



<p class="wp-block-paragraph">Embracelet is coming to <a href="https://store.steampowered.com/app/1311510/Embracelet/">Steam </a>and Nintendo Switch<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> this September. If you like, you can <a href="https://store.steampowered.com/app/1311510/Embracelet/">wishlist the game</a> or follow me on <a href="http://twitter.com/machineboyCom">Twitter</a>.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1260" height="709" src="https://www.youtube.com/embed/zMkykSb_mE0?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1642</post-id>	</item>
	</channel>
</rss>

<!--
Page Caching using Disk: Enhanced 

Served from: machineboy.com @ 2026-08-20 00:29:35 by W3 Total Cache
-->