<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Chris Godber</title>
    <description>The latest articles on Forem by Chris Godber (@drnoir).</description>
    <link>https://forem.com/drnoir</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F275820%2F8db5003e-d1eb-4b62-b20d-cec1237fdefe.jpeg</url>
      <title>Forem: Chris Godber</title>
      <link>https://forem.com/drnoir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/drnoir"/>
    <language>en</language>
    <item>
      <title>Vlog series on my JSK13Games 
webXR entry </title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Sun, 05 Sep 2021 18:11:56 +0000</pubDate>
      <link>https://forem.com/drnoir/vlog-series-on-my-jsk13games-webxr-entry-2jeb</link>
      <guid>https://forem.com/drnoir/vlog-series-on-my-jsk13games-webxr-entry-2jeb</guid>
      <description>&lt;p&gt;Js13kGames is a JavaScript coding competition for HTML5 Game Developers. The fun part of the compo is the file size limit set to 13 kilobytes.&lt;/p&gt;

&lt;p&gt;Website - &lt;a href="https://js13kgames.com/"&gt;https://js13kgames.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following is my webseries on developing my idea for project called Superposition for the WebXR category. Its still a wip but almost finished. Its an Interesting challenge which forces you to think creatively. I'll also do a follow up vid once I've submitted and finished the project. &lt;/p&gt;

&lt;h2&gt;
  
  
  Initial prototyping and idea generation
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/elZN3jQEGSU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Making idea more concrete / finishing initial prototype / implementation of core game mechanic
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/YzvSx_8s8hM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  VR Testing and thinking of VR more
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/qbAtQukKh-w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The project (still WIP) can be viewed here &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/drnoir"&gt;
        drnoir
      &lt;/a&gt; / &lt;a href="https://github.com/drnoir/Superposition"&gt;
        Superposition
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Game for js13kgames code completion 
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>webxr</category>
      <category>html</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Covid Data Visualisation App Three JS - [Code Overview]</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Wed, 28 Jul 2021 15:24:43 +0000</pubDate>
      <link>https://forem.com/drnoir/covid-data-visualisation-app-three-js-code-overview-52a0</link>
      <guid>https://forem.com/drnoir/covid-data-visualisation-app-three-js-code-overview-52a0</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ZQ3vgnMgbUQ"&gt;
&lt;/iframe&gt;
&lt;br&gt;
3D visualisation tool showing daily cases for covid in England - uses threejs-starter-kit and gov.uk api&lt;/p&gt;

&lt;p&gt;Try it out &lt;br&gt;
&lt;a href="https://drnoir.github.io/3D-Covid-Visualisaton/"&gt;https://drnoir.github.io/3D-Covid-Visualisaton/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source &lt;br&gt;
&lt;a href="https://github.com/drnoir/3D-Covid-Visualisaton"&gt;https://github.com/drnoir/3D-Covid-Visualisaton&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building a 3D library with playcanvas</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Mon, 10 May 2021 10:56:02 +0000</pubDate>
      <link>https://forem.com/drnoir/building-a-3d-library-with-playcanvas-3hdd</link>
      <guid>https://forem.com/drnoir/building-a-3d-library-with-playcanvas-3hdd</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/wgY27SAqMVY"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/4M0z_v82skU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I walk you through methods to create a prototype 3D virtual gallery using the Playcanvas engine which you could build on and utilise in a number of different ways. Hopefully this gives you some foundations if you want to create a virtual library or similar project. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>gamedev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Meaning in Programming</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Mon, 12 Apr 2021 19:05:26 +0000</pubDate>
      <link>https://forem.com/drnoir/meaning-in-programming-j28</link>
      <guid>https://forem.com/drnoir/meaning-in-programming-j28</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ZKvnY2wFDtQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Lets talk about ways in which we can find meaning in our work as programmers.&lt;/p&gt;

</description>
      <category>programming</category>
    </item>
    <item>
      <title>3D Mood Board Prototype - [Code Overview]</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Mon, 12 Apr 2021 19:03:37 +0000</pubDate>
      <link>https://forem.com/drnoir/3d-mood-board-prototype-code-overview-271j</link>
      <guid>https://forem.com/drnoir/3d-mood-board-prototype-code-overview-271j</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/HBGwisNYoa0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;A Prototype 3D mood board tool made with React and React-Three-Fiber&lt;/p&gt;

&lt;p&gt;a side project I started to get used to using React-Three-Fiber&lt;br&gt;
&lt;a href="https://github.com/pmndrs/react-three-fiber"&gt;https://github.com/pmndrs/react-three-fiber&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repo for project&lt;br&gt;
&lt;a href="https://github.com/drnoir/3D-Image-Board-Viewer-"&gt;https://github.com/drnoir/3D-Image-Board-Viewer-&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>3D Image Board Viewer / Photo tool prototype</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Thu, 18 Mar 2021 08:04:52 +0000</pubDate>
      <link>https://forem.com/drnoir/3d-image-board-viewer-photo-tool-prototype-4mb8</link>
      <guid>https://forem.com/drnoir/3d-image-board-viewer-photo-tool-prototype-4mb8</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/lisD1jXJ5-8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;An experimental 3D app built with React and React-Three-Fiber for arranging and displaying images on a canvas&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drag images around in 3D into different arrangements&lt;/li&gt;
&lt;li&gt;Take a photo of arrangements and download images&lt;/li&gt;
&lt;li&gt;zoom images - make 3D images bigger to view detail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;App is currently in early development phase&lt;/p&gt;

&lt;h3&gt;
  
  
  Features to develop
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add custom images - currently just placeholders&lt;/li&gt;
&lt;li&gt;enhance UI&lt;/li&gt;
&lt;li&gt;More move features&lt;/li&gt;
&lt;li&gt;Better visuals / backgrounds etc&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Core Libraries and dependencies
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;React-three-fiber&lt;/li&gt;
&lt;li&gt;three&lt;/li&gt;
&lt;li&gt;html-to-image - for capturing canvas&lt;/li&gt;
&lt;li&gt;drei&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source - &lt;a href="https://github.com/drnoir/3D-Image-Board-Viewer-"&gt;https://github.com/drnoir/3D-Image-Board-Viewer-&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Cubegen 3.0 - Javascript / AFrame game</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Sun, 14 Feb 2021 19:56:32 +0000</pubDate>
      <link>https://forem.com/drnoir/cubegen-3-0-javascript-aframe-game-5aim</link>
      <guid>https://forem.com/drnoir/cubegen-3-0-javascript-aframe-game-5aim</guid>
      <description>&lt;p&gt;Experimental A-Frame project / game using AFrame, AFrame physics component / vanilla js to create a fun arcade style game. &lt;br&gt;
I decided to evolve the earlier version of the Cubegen project I started a few weeks ago, adding different difficulty levels, a HUD display and some more effects as well as enhancing the gameplay. I still want to enhance it some more and it's still a prototype, but happy with where it is at more.&lt;/p&gt;

&lt;p&gt;Cubegen3 is a Procedurally generated cube collection game&lt;br&gt;
Collect all the generated energy cubes before the timer runs out and avoid the negative boxes which will damage your health.&lt;/p&gt;

&lt;p&gt;The number of cubes is randomly generated according to the difficulty&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controls&lt;/strong&gt;: Keyboard: WASD - Movement Mouse: Click and drag to rotate &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play&lt;/strong&gt;: &lt;a href="https://drnoir.itch.io/cubegen"&gt;https://drnoir.itch.io/cubegen&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video Overview on project&lt;/strong&gt;&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oVRHOYDJLOo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub repo&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/drnoir"&gt;
        drnoir
      &lt;/a&gt; / &lt;a href="https://github.com/drnoir/find-the-boxes-gen"&gt;
        find-the-boxes-gen
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Small experimental game made with AFrame and JS - find all the white boxes amongst the randomly generated boxes  
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
CubeGen&lt;/h1&gt;
&lt;h3&gt;
by Chris Godber&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/drnoir/find-the-boxes-gen/blob/main/bg.jpg?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lE59W5LN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/drnoir/find-the-boxes-gen/raw/main/bg.jpg%3Fraw%3Dtrue" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Game Aim&lt;/h1&gt;
&lt;h2&gt;
Find the white boxes&lt;/h2&gt;
&lt;h3&gt;
Current Version - 3.0&lt;/h3&gt;
&lt;p&gt;Experimental A-Frame project / game using AFrame, AFrame physics component / vanilla js
to create a fun arcade style game.&lt;/p&gt;
&lt;p&gt;Procedurally generated cube collection game
Collect all the generated portal cubes  (the cube you see on the right) before the&lt;br&gt; timer runs out and avoid the negative boxes
which will damage your health.&lt;/p&gt;
&lt;p&gt;The number of cubes is randomly generated according to the difficulty&lt;/p&gt;
&lt;p&gt;Controls: Keyboard: WASD - Movement Mouse: Click and drag to rotate&lt;/p&gt;
&lt;p&gt;Play on Itch.io - &lt;a href="https://drnoir.itch.io/cubegen" rel="nofollow"&gt;https://drnoir.itch.io/cubegen&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/drnoir/find-the-boxes-gen"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>javascript</category>
      <category>gamedev</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Maze Generation in 10 mins with AFrame </title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Fri, 12 Feb 2021 19:31:36 +0000</pubDate>
      <link>https://forem.com/drnoir/maze-generation-in-10-mins-with-aframe-ckm</link>
      <guid>https://forem.com/drnoir/maze-generation-in-10-mins-with-aframe-ckm</guid>
      <description>&lt;p&gt;Quick overview and tutorial on creating a quick maze in A-Frame with the A-frame maze component&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/r7pZZeeU168"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Repo for A-Frame Maze component:
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mitchallen"&gt;
        mitchallen
      &lt;/a&gt; / &lt;a href="https://github.com/mitchallen/aframe-maze-component"&gt;
        aframe-maze-component
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An aframe component for creating VR mazes
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
aframe-maze-component&lt;/h1&gt;
&lt;h2&gt;
A component for building VR mazes&lt;/h2&gt;
&lt;p&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/d159c2eb260e80848ef363e0f3054553976de745cf76faa13f6d742135276c8b/68747470733a2f2f63646e2e7261776769742e636f6d2f6d69746368616c6c656e2f616672616d652d6d617a652d636f6d706f6e656e742f643534316566632f6578616d706c65732f6769662f616672616d652d6d617a652d636c6970312e676966"&gt;&lt;img src="https://camo.githubusercontent.com/d159c2eb260e80848ef363e0f3054553976de745cf76faa13f6d742135276c8b/68747470733a2f2f63646e2e7261776769742e636f6d2f6d69746368616c6c656e2f616672616d652d6d617a652d636f6d706f6e656e742f643534316566632f6578616d706c65732f6769662f616672616d652d6d617a652d636c6970312e676966" width="500"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://travis-ci.org/mitchallen/aframe-maze-component" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/dbd5138365fb843a9da37a97e0c2068dbe7e337735cb12bc3f263beb1829329b/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6d69746368616c6c656e2f616672616d652d6d617a652d636f6d706f6e656e742e7376673f7374796c653d666c61742d737175617265" alt="Version"&gt;
  &lt;/a&gt;
  &lt;a href="https://codecov.io/gh/mitchallen/aframe-maze-component" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/db75694513ab15c6d341b669af1d497c06a7d6cb0092e3961afde271ca02416b/68747470733a2f2f636f6465636f762e696f2f67682f6d69746368616c6c656e2f616672616d652d6d617a652d636f6d706f6e656e742f6272616e63682f6d61737465722f67726170682f62616467652e737667" alt="Coverage Status"&gt;
  &lt;/a&gt;
  &lt;a href="https://npmjs.org/package/aframe-maze-component" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/236e895a46feb5610b1ba92187073e80441d203339567efbe3ec56a933777b7e/687474703a2f2f696d672e736869656c64732e696f2f6e706d2f64742f616672616d652d6d617a652d636f6d706f6e656e742e7376673f7374796c653d666c61742d737175617265" alt="Downloads"&gt;
  &lt;/a&gt;
  &lt;a href="https://npmjs.org/package/aframe-maze-component" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/5f95f1f56a78d2bd1a2f248ad7232b2776940e0148d27c8967fb2d8928053550/687474703a2f2f696d672e736869656c64732e696f2f6e706d2f762f616672616d652d6d617a652d636f6d706f6e656e742e7376673f7374796c653d666c61742d737175617265" alt="Version"&gt;
  &lt;/a&gt;
  &lt;a href="https://npmjs.com/package/aframe-maze-component" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/c7fb8fb6f29d67f9e9fdf7ffdc91f4fb8a547e9631653d670327f4754654baad/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f616672616d652d6d617a652d636f6d706f6e656e742e7376673f7374796c653d666c61742d737175617265" alt="License"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Browser Usage&lt;/h2&gt;

&lt;h3&gt;
Live Example&lt;/h3&gt;

&lt;p&gt;Here are some live examples of the component. The simpler demo is ideal for mobile.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://mitchallen.bitbucket.io" rel="nofollow"&gt;https://mitchallen.bitbucket.io&lt;/a&gt; - best viewed in Chrome&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mitchallen.bitbucket.io/stats.html" rel="nofollow"&gt;https://mitchallen.bitbucket.io/stats.html&lt;/a&gt; - Chrome demo displaying stats&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mitchallen.bitbucket.io/simple.html" rel="nofollow"&gt;https://mitchallen.bitbucket.io/simple.html&lt;/a&gt; - simpler demo for mobile&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
Demo notes&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Lowered or removed birds-eye platform to try to reduce issues with users falling through the floor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For birds-eye demos:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start to move forward until you fall onto the lower platform&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WAIT a second or two - then proceed onto the ground&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Works fine in Chrome on a Mac&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On Windows 10 machine (Lenovo Yoga 710 laptop) can't seem to walk and turn at the same time&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
Physics engine issues&lt;/h4&gt;


&lt;ul&gt;
&lt;li&gt;Having issues with player falling through floor on iOS for complex demos&lt;/li&gt;
&lt;li&gt;Keep it simple on mobile, don't have player drop from high position&lt;/li&gt;
&lt;li&gt;Player can push through or into objects if determined&lt;/li&gt;
&lt;li&gt;If player…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mitchallen/aframe-maze-component"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>webdev</category>
      <category>html</category>
      <category>mixedreality</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Experiments with A-Frame and Javascript Games - Chase the cats and CubeGen. </title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Tue, 09 Feb 2021 19:42:04 +0000</pubDate>
      <link>https://forem.com/drnoir/experiments-with-a-frame-and-javascript-games-chase-the-cats-and-cubegen-5efi</link>
      <guid>https://forem.com/drnoir/experiments-with-a-frame-and-javascript-games-chase-the-cats-and-cubegen-5efi</guid>
      <description>&lt;p&gt;I have been exploring using AFrame and vanilla javascript a lot more in the last week to create simple game like experiences. I like A-Frame ease of use and though I think in some ways it can be hard to make something that feels 'polished' with it, for purely experimental fun little side project like these two it can be nice and simple to try out ideas with it. What promoted these two random games was in fact randomness! So I have been playing a bit with generating elements of a level in games for the last 6 months, mostly on playcanvas projects, and looking more into procedural generation, and wanted to apply this in a simple setting. I started as simple as it can get - generating a random numbers of cubes!&lt;/p&gt;

&lt;h2&gt;
  
  
  CubeGen
&lt;/h2&gt;

&lt;p&gt;CubeGen is a simple game whereby you have to find the white cubes from a randomly generated amount of cubes with a shimmering texture look to them. In the first version of the game I just created it on a typical plane with no walls, and the player had to push through the boxes to find the correct one, but it felt like it lacked a certain dynamic to make it more interesting. &lt;/p&gt;

&lt;p&gt;So after a day or two I decided to really start playing with the A-Frame physics system component some more, figured out how to create a fly cam which worked with collisions etc and put it in zero gravity. I go into it more in the video below but the actual code is fairly simple - Do some DOM manipulation with js combined with utilising A-Frames component system to detect collision event and then a fair amount of for loops to create the 'random' cubes to the game area. There is more info below along with an overview on the original prototype if you are interested.    &lt;/p&gt;

&lt;h3&gt;
  
  
  Overviews on CubeGen conception
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/n5fQNj76oFQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Game
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/btK4LscCJTw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Source:
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/drnoir"&gt;
        drnoir
      &lt;/a&gt; / &lt;a href="https://github.com/drnoir/find-the-boxes-gen"&gt;
        find-the-boxes-gen
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Small experimental game made with AFrame and JS - find all the white boxes amongst the randomly generated boxes  
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
CubeGen&lt;/h1&gt;
&lt;h3&gt;
by Chris Godber&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/drnoir/find-the-boxes-gen/blob/main/bg.jpg?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lE59W5LN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/drnoir/find-the-boxes-gen/raw/main/bg.jpg%3Fraw%3Dtrue" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Game Aim&lt;/h1&gt;
&lt;h2&gt;
Find the white boxes&lt;/h2&gt;
&lt;h3&gt;
Current Version - 3.0&lt;/h3&gt;
&lt;p&gt;Experimental A-Frame project / game using AFrame, AFrame physics component / vanilla js
to create a fun arcade style game.&lt;/p&gt;
&lt;p&gt;Procedurally generated cube collection game
Collect all the generated portal cubes  (the cube you see on the right) before the&lt;br&gt; timer runs out and avoid the negative boxes
which will damage your health.&lt;/p&gt;
&lt;p&gt;The number of cubes is randomly generated according to the difficulty&lt;/p&gt;
&lt;p&gt;Controls: Keyboard: WASD - Movement Mouse: Click and drag to rotate&lt;/p&gt;
&lt;p&gt;Play on Itch.io - &lt;a href="https://drnoir.itch.io/cubegen" rel="nofollow"&gt;https://drnoir.itch.io/cubegen&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/drnoir/find-the-boxes-gen"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Play:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://drnoir.itch.io/cubegen"&gt;https://drnoir.itch.io/cubegen&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;After I made CubeGen I wanted to extend the idea a little further and make something a little different so I of course opted for cats! Much of the code and logic was copied from the CodeGen project but the main difference was trying to create random movement for the cats which was sort of implemented but needs some refining and fixing still. There is a more in-depth overview below. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview of Chase the Cats
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/PGsxNnmWOe4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Source:
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/drnoir"&gt;
        drnoir
      &lt;/a&gt; / &lt;a href="https://github.com/drnoir/chasethecats"&gt;
        chasethecats
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Another experiment in creating random generated stuff in A-Fame- catch the cats in a randomly generated enviroment
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Chase the Cats&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/drnoir/chasethecats/blob/main/chasethecats.jpg?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8M9Vhu8X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/drnoir/chasethecats/raw/main/chasethecats.jpg%3Fraw%3Dtrue" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Experiment with A-Frame by Chris Godber&lt;/h2&gt;
&lt;p&gt;Funny little experiment with A-Frame and randomness, building on CubeGen project I wanted to create something a bit more
zany and to experiment somewhat more with environment generation.&lt;/p&gt;
&lt;p&gt;In this project mountains and trees are generated, and a random number of cats (up to 40) which the player then has to catch.&lt;/p&gt;
&lt;p&gt;This was made for fun, feel free to fork, build on it, look at it, poke around etc etc&lt;/p&gt;
&lt;p&gt;Might work on it again sometime but as I said weird little experiment. It could certainly be made more of a 'game'&lt;/p&gt;
&lt;h2&gt;
Controls&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WASD - Move&lt;/li&gt;
&lt;li&gt;Mouse - Look around&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Libraries / Dependencies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A-Frame&lt;/li&gt;
&lt;li&gt;A-Frame Extras&lt;/li&gt;
&lt;li&gt;A-Frame Physics System&lt;/li&gt;
&lt;li&gt;A-Frame Mountains Component&lt;/li&gt;
&lt;li&gt;A-Frame Simple Sun Sky&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Game logic etc is contained in main.js, everything else is just minified js for each dependency&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/drnoir/chasethecats"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>javascript</category>
      <category>gamedev</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>5 Creative Coding JS libraries</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Tue, 03 Nov 2020 09:47:33 +0000</pubDate>
      <link>https://forem.com/drnoir/5-creative-coding-js-libraries-5gp4</link>
      <guid>https://forem.com/drnoir/5-creative-coding-js-libraries-5gp4</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/K6hmgT4ofcs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Exploring 5 creative coding JavaScript libraries &lt;br&gt;
&lt;a href="http://paperjs.org/"&gt;http://paperjs.org/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://threejs.org/"&gt;https://threejs.org/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aframe.io/"&gt;https://aframe.io/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://playcanvas.com/"&gt;https://playcanvas.com/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://p5js.org/"&gt;https://p5js.org/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Basic Setup for a Maze Scene with Physics with A-Frame</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Sat, 17 Oct 2020 12:00:07 +0000</pubDate>
      <link>https://forem.com/drnoir/basic-setup-for-a-maze-scene-with-physics-with-a-frame-4a5l</link>
      <guid>https://forem.com/drnoir/basic-setup-for-a-maze-scene-with-physics-with-a-frame-4a5l</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/WtpUDDhqeQk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Quick video showing how to add basic physics to an A-Frame scene, in this example adding walls and demoing collisions between player and wall. This could be built on to create a larger 3D environment or maze , but gives you a start&lt;/p&gt;

</description>
      <category>webvr</category>
      <category>aframe</category>
      <category>html</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Create a Chart with multiple Dataset switching via state [React + react-chartjs-2 Tutorial]</title>
      <dc:creator>Chris Godber</dc:creator>
      <pubDate>Sat, 17 Oct 2020 11:55:59 +0000</pubDate>
      <link>https://forem.com/drnoir/create-a-chart-with-multiple-dataset-switching-via-state-react-react-chartjs-2-tutorial-1ip4</link>
      <guid>https://forem.com/drnoir/create-a-chart-with-multiple-dataset-switching-via-state-react-react-chartjs-2-tutorial-1ip4</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/svJRmxrPUFw"&gt;
&lt;/iframe&gt;
&lt;br&gt;
SOURCECODE- &lt;a href="https://github.com/drnoir/switchingcharts-demo"&gt;https://github.com/drnoir/switchingcharts-demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tutorial goes over a basic overview of a method to create a chart in a class component in react using react-chartjs-2 and how to update the chart with different data using SetState within that chart based on onClick events within the component - in this example 3 months, 6 months and a year.&lt;/p&gt;

&lt;p&gt;In a real life example you would probably get your data from props, or state but this should provide a good starting point for understanding how to do this.&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactchartjs</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
