<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.diamonddev.co.uk/blog</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt-5hgdh-j6ctp-5pfcn-wysnd</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/19577b53-b052-4dce-bc79-bf7db8c139de/red+shell.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 8 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt-ragbc</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt-5hgdh-j6ctp-5pfcn</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/d2ea28cf-95d3-46fc-b97e-d609e44e17ec/bullet.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 6 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt-5hgdh-j6ctp-5pfcn-444tc</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/215159f6-eab0-4a29-b1a2-29e00f3b50f3/cloud.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 5 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt-5hgdh-j6ctp-8kh9s</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/d7e606fb-7d5e-4877-b75e-beed6a9e9311/fake+box.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 4 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/a02a7761-2f1d-47ee-89b3-08ad2fe31a97/star.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 4 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/7d0e4bc0-adc0-468f-a39b-76d5870f4814/giant+mushroom.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 4 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/9a8f48b5-df31-4b16-91f8-8e2c290c8cb7/3+shells.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 4 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/17fa27f9-d701-43a0-8101-ed25edf16828/golden+mushroom.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 4 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt-5hgdh-j6ctp</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/d19dacdf-a346-43d5-8983-2bca44fabd51/bomb.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 3 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/6f97a188-61bc-4791-8ce6-de6d85270045/3+banana.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 3 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/eec44402-7c35-47c3-af62-7d1ab2870672/mushrooms.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 3 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt-5hgdh</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/32b0da33-5ba0-4a5a-af07-e7ecfb5940e6/banana.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 2 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/9ad418d1-174a-4ca0-b6ce-b9ddbefed437/green+shell.gif</image:loc>
      <image:title>Blog - Mario Kart Item Post 2 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2-dngkt</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz-betl2</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1-mmlzz</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/mario-kart-collision-post-1</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment-waftt-zp2yx-hhnzk-8wjjp-2n9nd-kr93r-gtcgw</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment-waftt-zp2yx-hhnzk-8wjjp-2n9nd-kr93r</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment-waftt-zp2yx-hhnzk-8wjjp-2n9nd</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment-waftt-zp2yx-hhnzk-8wjjp</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment-waftt-zp2yx-hhnzk</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment-waftt-zp2yx</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment-waftt</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/blog/ex-machina-assignment</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/pagecv</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2025-02-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/242d80e6-c864-4434-9d27-353727591e8d/main+profile.png</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/53d28425-8627-45b2-b161-3a27adfde195/Dev+Profile.jpg</image:loc>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/adf</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2025-02-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/fb24eede-ab8f-49fc-9d13-949e1af08d68/badges_menu_final%5B1%5D.PNG</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/2a8b22c3-d4f6-4c0f-ad61-01a917e21136/lobby_with_qr_code%5B1%5D.png</image:loc>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <lastmod>2025-03-18</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/light-field-renderer</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/a6e4814a-f323-4ba8-b1b1-ee1654fdd7b6/totalImage.png</image:loc>
      <image:title>Projects - Light Field Renderer - Masters Disseration - Overview</image:title>
      <image:caption>For my masters dissertation, I created a Light Field renderer. A light field consists of a multi-dimensional function that returns a light value for any point inside a real or virtual scene. My dissertation achieves this by ray-tracing from multiple cameras which produce multiple views of the same scene. These views can be attached together to produce a viewable, interactable light field. However, my dissertation is more focused on the efficiency of the rendering process. To increase the light field renderer’s efficiency only a smaller set of pixels are ray-traced from. These known pixels are then used to reconstruct the rest of the light field using one of two techniques: filtering and reprojection. The reconstruction method improves the light field renderer’s efficiency due to only a smaller subset of pixels needing to be fully sampled which is an expensive process</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/bd24bae9-5bf6-497d-9d8a-f3674848a1f2/Off+lf+1.png</image:loc>
      <image:title>Projects - Light Field Renderer - Masters Disseration - Sparse Light Field Sampling</image:title>
      <image:caption>To determine which pixels to ray-trace from the Sobol sequence is used. The Sobol sequence is a type of quasirandom or low-discrepancy sequence which means that the points in the sequence will also cover a specific space uniformly. Using this sequence the light field renderer produces a set of images from the camera’s views. These images can be seen to only have some pixels coloured in as dictated by the Sobol sequence.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/0db35071-b876-49cb-a9fb-5a6b0928c82f/0.5+F.png</image:loc>
      <image:title>Projects - Light Field Renderer - Masters Disseration - Filtering reconstruction</image:title>
      <image:caption>Once the light field has been sparsely sampled the remaining missing pixels are reconstructed. The filtering method entails finding a missing pixel and determining its colour value using a cross-bilateral filter. This filter uses nearby multiple values from known nearby pixels such as its index and the position of its respective ray’s intersection against the missing pixels values to determine weights. These weights are then applied used to get a weighted average of the colour of the missing pixel. For this process to work the missing pixel is still somewhat sampled initially just to find the values needed for the cross-bilateral filter but not its colour. This produces complete but soft-looking images. This softness reduces as the number of pixels being sampled increases.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/1aacf334-e4e2-4ec2-a31b-276b4167a2db/0.5+R.png</image:loc>
      <image:title>Projects - Light Field Renderer - Masters Disseration - Reprojection reconstruction</image:title>
      <image:caption>The other method of reconstruction is reprojection. This works by taking a known pixel and reprojecting rays back towards cameras from the point of the original ray’s intersection. This is done to find missing pixels which colour can then be set to the initial known pixel’s colour. Once all the known pixels have been through this reprojection process there is a high chance that not all the missing pixels have been found and set. Because of this the light field renderer goes through all the missing pixels and ray-traces them in the same way that was done in the initial step. This produces much sharper images than the filtering which to the human eye no different to the original but still do however have slight differences in colour.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/deity-become-one</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/70505f3b-a6f1-4f99-abcb-e903a5a83c8a/deity2.png</image:loc>
      <image:title>Projects - Deity: Become One - Overview</image:title>
      <image:caption>This game is inspired by the themes of playing god and manipulation shown within the film Ex Machina. In the game, you play as a square in a synthwave world completing platforming puzzles by changing the properties of yourself and the environment like you are a god. These include: Double Jump Dashing Changing height and width Changing the direction of gravity in the world The game was built inside of the Awsome Sauce Game Engine (ASGE); a C++, OpenGL framework written by our course leader. It provided a simple rendering engine that allowed sprites to be loaded in and rendered as well as a primitive text renderer.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/17a0ce61-88a8-4d9c-805e-e6bb9185d6e4/deity3.png</image:loc>
      <image:title>Projects - Deity: Become One - My Contribution</image:title>
      <image:caption>My contribution to this game was building the physics engine. This physics engine built from scratch included the usual features such as gravity and collisions. However, it also included a momentum-based movement system which allowed for a surface’s friction level to affect the player’s movement. This allowed us to create slippery ice-like platforms which are fairly common in the platforming genre. Instead of using an inheritance-based system, the whole game including the physics engine was built of a component-based system. This entailed having an abstract component class that all components were inherited from. These components could then attach to a generic game object class using polymorphism. This included a physics object component which when attached would cause the game object to obey the laws of the physics engine such as the player game object.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/d8a39310-f5cd-47ef-893f-2ae0c22bed2f/deity4.png</image:loc>
      <image:title>Projects - Deity: Become One - Features</image:title>
      <image:caption>Due to the component-based system the game was built upon it gave way for multiple features to be implemented. These include: Multiple types of bosses A basic walking enemy Moving Platforms. Momentum based movement Icy/Slippery Platforms</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/9ec1885e-b8a0-4adb-8b91-d3aca689cb20/deity5.png</image:loc>
      <image:title>Projects - Deity: Become One - Gamemodes</image:title>
      <image:caption>The other core aspect of this game was the level editor. This level editor allowed for the creation and customisation of levels as well as the enemies and hazards within the level. This gave way to two different game modes: A story mode where players progress through 14 levels evading bosses and gaining their powers. (The abilities mentioned above) A custom level builder and player. Players could create their own puzzles and then proceed to play them. This also came in useful for creating the story levels.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/vestaboard</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-18</lastmod>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/ai-party-game</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/f5f18f93-3d89-494d-9ab7-b9e3a44b443e/ai+game+1.PNG</image:loc>
      <image:title>Projects - AI party game - Overview</image:title>
      <image:caption>A party game where each player has to complete a sentence provided to them such as: “Last weekend I went…”. Alongside each player’s response, an AI trained on text generation also completes the prompt. Each pair of player and AI responses are shown together and the other players have to decide which response they believe is the AI’s. Points are rewarded for successfully guessing the AI and for successfully fooling other players into thinking they’re the AI. This game was designed to be a type of turning test to see how humanly believable the AI can be. It was also a study into people’s perception of modern AI’s intelligence. The whole game was set up so that different AI’s can be used as well as the rules and the game being editable and flexible. The discoveries found whilst playing this game lead to some interesting conclusions.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/2cddad8c-7112-40e0-8f48-b85a1d9d1191/ai+game+4.PNG</image:loc>
      <image:title>Projects - AI party game - AI APIs</image:title>
      <image:caption>The creation of the game did not involve the creation and training of text generation AIs. Instead premade and trained AI’s were used and accessed using web requests to an API. The AIs used were Inferkit and DeepAI, both AI models based upon GPT-2.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/d55c784d-b968-405a-95c9-1c09ef091ce2/ai+game+2.PNG</image:loc>
      <image:title>Projects - AI party game - My Contribution</image:title>
      <image:caption>My contribution towards this game was primarily the design and creation of the game itself. The whole game was made in the unity UI system and I implemented all of the menus as well as the core loop of the game itself. I also added animations and juice the elements of the game where I saw was necesarry.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/f14c0d6a-ab86-4ab0-aea4-f369b0e85a22/ai+game+3.PNG</image:loc>
      <image:title>Projects - AI party game - Results</image:title>
      <image:caption>Interesting results were produced whilst playing this game. At the start of a game with unfamiliar players, the Turing test aspect of the game worked quite well. Players would normally write simple, one to two-word responses and would then be surprised to see the quality and quantity of the AI’s responses. However, as the game went on players understood how the AI liked to respond and would attempt to imitate it with their own responses in order to fool the other players. This reduced the Turing test aspect of the game because the AI was no longer being tested against regular humans but instead ones trying to be like the AI. However, for the sake of also trying to keep the game fun this imitation practice was not punished. Future work of this game could be to switch the rules to a more proper Turing test approach by using the rules management system that was also developed.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/element-rpg</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/74b6a2a7-eccd-43be-9f3c-361dc0030e5d/Cryo+clip.gif</image:loc>
      <image:title>Projects - Element RPG - Overview</image:title>
      <image:caption>Element RPG is an online co-op RPG where players crawl through a dungeon and use weapons and spells to fight monsters. Due to the scope of the game, we only created a vertical slice demonstrating the mechanics of some of the weapons, spells and enemies but with the underlying systems to create more.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/c9af37f1-94e5-47aa-b2b5-18ab7c5dcc3f/fire+skill+tree.png</image:loc>
      <image:title>Projects - Element RPG - My Contribution</image:title>
      <image:caption>Most of the work on this project was on a skill tree system. Players would manage and unlock the elemental spells they could use in skill trees. One tree for each element. To make the creation process of the skill trees easier I created a skill tree editor inside Unity using the Unity GUI system. The editor allowed our group to create and manage skill trees with specific icons and text for spells as well as which spells unlocked the next. All this information would be saved into a JSON file which would be read into the game to modify the in-game skill trees’ layouts. I also did other bits of UI work these included: The main and pause menus of the game The player’s spell bar showing off their current spells and cooldowns The health bar and targeting system of the both the players and enemies</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/infiltraitors</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/bd67e8f2-4172-4a98-82f3-bbe1fa20a7a4/infiltraitors+1.png</image:loc>
      <image:title>Projects - Infiltraitors - Overview</image:title>
      <image:caption>Playwest game made for the University IT services. The purpose of the game is to demonstrate how hackers could steal data from a player’s computer. This is done by letting the player be the hacker and infiltrate building to steal data using a variety of techniques.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/929ec517-f606-45b7-aa1c-4a97133d813b/infiltraitors+2.png</image:loc>
      <image:title>Projects - Infiltraitors - Initial Design</image:title>
      <image:caption>As I was one of the game’s leads on the project I helped come up with the initial design of the game. I came up with the stealth hacker game concept where the player can use a variety of hacks to damage electronic devices within a level. I also helped come up with the idea of a prep phase to the game where the player can look at a level with CCTV cameras and identify the vulnerabilities in the level.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/02f4c59b-1375-40ad-a1b3-49df2f3bf12f/prep+phase.png</image:loc>
      <image:title>Projects - Infiltraitors - CCTV/Prep Phase</image:title>
      <image:caption>This prep phase was the first bit of the game I implemented. Initially, it was planned for the player to select their hacker items such as USB sticks to use within the upcoming level. With this in mind, I made the prep phase have an old CRT monitor for the player to look at the CCTV camera footage through and a shelf containing the player’s current hacker items. However, the idea of having a shelf with the player’s hacker items was scrapped early in the game’s development. So I removed the shelf from the prep phase. Then when the assets came in from the artist I changed the monitor and the UI controls to the ones provided. I also set up a scanning system whereby a player pressing the spacebar would highlight the vulnerabilities currently being shown on the monitor, and a UI box would appear informing the player about them. To show the CCTV camera’s footage on the monitor, I set up camera prefabs around the scene with their render textures used on the monitor’s screen. I also created a shader in shader graph that distorted the monitor’s screen to give it the appearance of an old CRT monitor. I then from playtest feedback, made a minimap to show which room the CCTV camera the player was currently looking through was in. I did this using two cameras, one that only rendered the floor and one that only rendered the walls. Then I took their render textures and combined them in a shader setting the walls to be one colour and the floor to be another.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/69f06c4d-1130-4120-a8a8-31de4bcac9d2/character+creator.png</image:loc>
      <image:title>Projects - Infiltraitors - Character Creator</image:title>
      <image:caption>Another early part of the game I made was the character creator. We wanted to allow players to make their own custom characters from the start, so a scene where they could do so was necessary. I made an initial character creator from temporary assets until I replaced them with the ones the artist made. The player’s character customisation is saved into a JSON file. I also made another shader in shadergraph; this one transformed the player’s model into a grid of green lines, an idea I took from Little Mac from the game Punch-Out. This version of the model was displayed whenever the player randomised their character’s design in the creator.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/b9a5700b-239f-4ee4-9875-6b5ae451bcf0/level+select.png</image:loc>
      <image:title>Projects - Infiltraitors - Level Select</image:title>
      <image:caption>The final visual aspect of the game I created was the level selection. Originally this was similar to the prep phase where the player would see one monitor and could change which camera they were looking at to change the level. However, once the artist's assets came in, it was decided this should be changed to be a bank of monitors within the van that the player begins the game in. Each unlocked level is shown on one of the monitor's screens via CCTV camera footage the same as it is shown in the prep phase. Locked level's monitors only show static. As a tiny bit of juice to the level select, I animated the smoke coming out of a cigarette in the level select using a shader.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/d2fbedd1-d265-442a-8598-74d1a69fc7b7/infiltraitors+3.png</image:loc>
      <image:title>Projects - Infiltraitors - Backend Systems</image:title>
      <image:caption>The other work I contributed to this game was all backend systems work. This included reworking the game's scene and state management system to be more streamlined and less all over the place. I also set up player data to be saved during the game to show to ITS. This data included information like time played, computers hacked, and USB sticks picked up. Towards the end of the project, one of the lead developers left, which led to me overseeing the game's Web-GL builds and collecting and organising the previously mentioned player data.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/softbody-sim</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-14</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/2d19213d-56ed-42a6-8fa8-9cf15b36ccfd/network.gif</image:loc>
      <image:title>Projects - Softbody Simulation - Undergrad Dissertation - Overview</image:title>
      <image:caption>This is my dissertation project and entailed creating a soft body system on top of the Vulkan API. The project has a framework in Vulkan in which multiple models loaded in from a .OBJ file can be rendered, manipulated and textured using an image file. The soft body system on top of this framework uses the mass-spring system where a model is represented by a network of masses connected together by weightless springs. During build time this network is generated from a model by creating an internal grid structure of masses (the image on the left) as well as masses at each of the model’s vertices. Each mass is then connected to the n nearest other masses by springs. The soft body behaviour was achieved using a series of equations to simulate the different forces applied to the model this included: gravity, a spring force (an adaption of Hooke’s Law), and damping force to keep the system stable. For the soft body collisions, an initial broad phase collision was performed using a dynamic axis-aligned bounding box (AABB) intersection test. Then a narrow phase test was performed by finding the intersecting triangles of the two models. These triangles are stored inside a bounding volume hierarchy for optimisation.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/ray-tracer</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/9c0b0adc-2b86-4ddf-8c1a-b17f095ab3a2/raytracer1.png</image:loc>
      <image:title>Projects - Ray-tracer - Overview</image:title>
      <image:caption>CPU based ray-tracer. It uses SFML to create a window to render onto. This entails firing rays out of a camera, through a pixel, and into a virtual scene. These rays are tested for intersections against objects within the scene. This is done by the ray traversing through the objects bounding volume hierarchy (BVH) to greatly increase the ray-tracer’s performance. The respective pixel’s colour is then set to the colour of the object at the intersection position. This colour is also affected by lighting and shadows that are computed.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/697c10b9-cf20-476c-926a-6fedd78ac352/raytracer4.png</image:loc>
      <image:title>Projects - Ray-tracer - Colours</image:title>
      <image:caption>The colour of an object at an intersection position is determined when a ray intersects with an object’s triangle. The intersection calculation produces the barrycentric coordinates of the intersection which can be used to determine texture coordiantes to find the colour of the object’s texture at that point.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/2f20ea6e-7c57-4561-8db2-fa997883c3e3/raytracer7.png</image:loc>
      <image:title>Projects - Ray-tracer - Shadows and Lighting</image:title>
      <image:caption>To compute shadows secondary rays known as shadow rays would be fired out from the intersection position of normal rays. These shadow rays would be aimed towards the light source in the scene and would be checked for intersections with other objects. If an intersection occurs then the light source is occluded from the original object at the point of intersection and therefore should be in shadow. The ray-tracer also uses these shadow rays as part of its two different types of lighting: point lighting and area lighting. Point lighting is a light source at a specific point in the scene and changes the colour of objects based upon its colour and intensity as well as its distance away from the object in question. Area lighting is a light source covering a defined area. It uses multiple point lights within the area to determine average lighting values. Point lighting provides hard, distinct shadows whereas area lighting produces softer shadows.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/4e01b001-0ce2-4452-a0d9-830f8fb7a8e6/raytracer10.png</image:loc>
      <image:title>Projects - Ray-tracer - Threading</image:title>
      <image:caption>The ray-tracer uses threads to further increase its performance. The pixels in the camera’s screen are split into blocks. Each thread in a pool of threads is then provided with a block of pixels to render. Once a thread has fully rendered a block they are provided with another until all the pixel blocks have been rendered.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/face-autoencoder</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-21</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/a555588b-1cb8-4ba4-a8c9-52faa0a32924/facesunity.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning - Overview</image:title>
      <image:caption>This is a deep learning auto encoder created in python using the Tensorflow and Keras libaraies. The autoencoder read in 2000 pictures of faces to be trained an then tested on. Once trained, it was able to be given a new face and recreate it. This recreation was then evaluated for it’s accuracy which was then used to update the autoencoder’s neural network. The output face the autoencoder produced have be put into a demo in unity as the faces of npc’s.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/3dcfec78-95a8-43d3-bb4c-0a15ccb902bb/faces1.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/8c771027-ef79-4841-8895-82acffa52350/faces2.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/594515af-5694-4adb-91fe-e59fac857901/faces3.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/0b9b881e-854e-4f95-a625-69094a463895/faces4.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/85d5a2a3-3f74-4cb9-81a6-a7c4e682d5fd/faces5.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/8a5bc603-fabe-48d1-a7bf-401f1290f75c/faces6.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/1d8bd94f-0216-4b20-abbe-70823b804a02/faces7.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/1f8b6a3c-b01a-4b45-ba08-628f369bfc7d/faces0.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/e5e9e014-8734-45fa-9fe8-92ec97823771/faces8.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/c9ab3805-b092-41c8-b7c1-ecae5dab2977/faces9.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/1c4aff37-0ce1-4e0e-abab-c7d0314fcc0f/faces10.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/02eb3701-ab89-403f-a227-92bc8ce3494a/faces11.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/a5364042-b278-429f-88c5-82c4075604c9/faces12.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/93e9b6c9-ea0c-497f-8945-8d272b45e131/faces13.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/52d9020c-583b-4c97-b3ea-7fbdff0ec1b6/faces14.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/d5743490-54e8-402e-9452-081dd688116e/faces15.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/4fb02833-8902-4d2a-a079-8e6007c278ec/faces16.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/34deb4fa-abb1-4128-be15-caddcc30d8d3/faces17.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/e5a114d6-bf42-4745-a0a7-5207573daea7/faces18.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/8b76eaf4-f519-4cc1-a4ec-6c0a829c2f64/faces19.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/0dba8605-257c-43c5-b6e6-03634a853b53/faces20.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/67468a2d-8c3f-4274-bce7-ba392977d5c3/faces21.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/95b7f39a-5c89-4f55-9265-b8fb8445c611/faces22.png</image:loc>
      <image:title>Projects - Face autoencoder - deep learning</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/dx11-plant-editor</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/a5054ada-c889-403d-b3a1-0088802e9c8b/plantdemo.gif</image:loc>
      <image:title>Projects - DirectX11 Plant Editor - Overview</image:title>
      <image:caption>This project entailed initialising the main components of directX11 and creating a render pipeline including shaders. From this, a plant generator was made that allowed a user to create and manipulate a plant model (stem and flower). This generator allows a user to manipulate the flower in multiple ways: Rotate stem segmentsts Rotate the flower Change the scale of the flower Open and close the flower</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/fbd09f16-1a42-4de4-90ca-e196f5ca7a6b/p4.png</image:loc>
      <image:title>Projects - DirectX11 Plant Editor - Plant stem</image:title>
      <image:caption>The stem of the plant was created using out of segments. Each segment is comprised of vertices in a cross shape. These segments are then attached together using the model’s incidies. The stem’s segments can then be iteratively moved and rotated in three dimensions. This can lead to some strangely shaped stems.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/firestar</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/1b4eaaad-a334-4e33-8796-a996145b6d66/firestar1.PNG</image:loc>
      <image:title>Projects - Firestar - Internship Project - Overview</image:title>
      <image:caption>The main project at CR games I worked on was Firestar. This involved revamping one of their older games and learn the procedures that take to implement a slot machine game</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/8f17ac34-a867-4ec0-a0a5-247b8d142688/firestar2.PNG</image:loc>
      <image:title>Projects - Firestar - Internship Project - Finding three in a row</image:title>
      <image:caption>The game already had the majority of the code implemented and my first task was to write the system to find three symbols in a row in different configurations. To do this I assigned each symbol a value from an enumerator and iterated through each configuration (stored as an array of 3 indexes) to find three symbols in a row. After I wrote this I was then shown a faster implementation involving binary masks however it was only faster when the check was put in which was if the first two symbols weren’t the same then don’t check the third one.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/3b31330a-1163-453b-b585-90e225b9e402/firestar3.PNG</image:loc>
      <image:title>Projects - Firestar - Internship Project - Nudges</image:title>
      <image:caption>Once the three in the row was done I had to implement a nudges system. This system entailed finding if once there was a three in a row close to the final position once a spin was done. If there was then the reels needed to be moved (nudged) by the player to get the three in the row. This system involved taking my minimax implementation from connect 4 and repurposing it so that it performed a depth-first search in finding the nearest three in a row. Was this was done I was then informed to automate the nudges instead of the user nudging it themselves.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.diamonddev.co.uk/projects/dx12-mario-kart</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/eedbbf5d-c8f8-4950-848b-544c7695b908/MarioKartGameplay.gif</image:loc>
      <image:title>Projects - DirectX12 Mario Kart - Overview</image:title>
      <image:caption>This project was to create a game engine framework capable of producing and running a game similar to Mario Kart using DirectX12. Our group created the “ThiCC engine” (Toolkit, pHysics, Input, Camera, Collision) which by the end of a few months of development was capable of creating a game very similar to Mario Kart.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/eca7cdac-3576-495a-b52f-38df2ce1cde7/mktoolkit1.png</image:loc>
      <image:title>Projects - DirectX12 Mario Kart - About the Engine</image:title>
      <image:caption>Because this project was focused on building a game engine over making an actual game itself, our group created all our systems with reusability in mind. We created a number of systems for physics, audio, asset management, and more - all of which are non-specific to the Mario Kart game and could allow the engine to be easily repurposed for another title. The core of the engine’s backend was the “ThICC Toolkit” which provided easy access to the different features of an engine through a GUI. Its functionalities included asset importing (models, sounds, images), configuration customisation (fonts, keybinds, cameras) as well as configurations for in-game systems (item system).</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/e3fc02b5-af76-446f-b25c-0ea9ae443cf6/MarioKartMenu.gif</image:loc>
      <image:title>Projects - DirectX12 Mario Kart - Levels</image:title>
      <image:caption>Levels are created through Blender which uses a bespoke python plugin that reads the level’s model into a. ThICC (binary) file holds a binary representation of each triangle. The plugin also reads in the placements of lap waypoints, item boxes, cinematic camera positions around the level into another. ThICC file. These files are then handled by the toolkit in organising the levels which are then passed to the engine itself to be run.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/61e19e2f44f8dd3b789b7da7/8db945af-cc22-4ae9-b611-a494c21cfc22/MarioKart4.png</image:loc>
      <image:title>Projects - DirectX12 Mario Kart - My Contribution</image:title>
      <image:caption>My first work was on the collisions between objects in the scene: the players, items and item boxes. I created a system that would find the furthest vertices on a mesh and create an axis-aligned bounding box (AABB) from them. These AABBs would then be tested for intersections and the appropriate responses would occur. When players hit an item or an item box the item or item box would disappear and the player would get hit or get an item respectfully. If two players intersected then a momentum-based collision response would occur based upon the players’ speeds and movement directions. My other work on this project was the creation of all the items in the game. I used the underlying model and animation systems being created to create all the items from Mario Kart Wii as well as their respective behaviour. I also set up a pooling system where all the items in the game would be created at the start and then taken from the item pools when necessary. This was needed because of the delay caused when loading in a model into the game.</image:caption>
    </image:image>
  </url>
</urlset>

