<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/assets/styles/feed.xsl" media="screen" ?>


<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title type="text">Journal</title>
  <subtitle type="text">A journal with experiments in progress, scattered notes, and the occasional odd trail of thought.</subtitle>

  <id>https://gary.place/journal/feed.xml</id>
  <link rel="alternate" type="text/html" href="https://gary.place/"/>
  <link rel="self" type="application/atom+xml" href="https://gary.place/journal/feed.xml"/>

  <updated>2026-08-13T00:00:00Z</updated>
  <author>
    <name>KuluGary</name>
    <email>kululu.gary@gmail.com</email>
  </author>
  <generator uri="https://www.11ty.dev/">Eleventy.js</generator>
      <entry>
        <title>The 2026 eclipse</title>
        <link href="https://gary.place/journal/the-2026-eclipse/"/>
        <updated>2026-08-13T00:00:00Z</updated>
        <id>https://gary.place/journal/the-2026-eclipse/</id>
        <summary type="html">
          We saw the solar eclipse from our balcony and we took some photos!
        </summary>
        <content type="html">
          &lt;div class=&quot;gallery&quot;&gt;&lt;a href=&quot;https://gary.place/journal/the-2026-eclipse/assets/photo_2026-08-12_20-58-46.jpg&quot; class=&quot;glightbox grid-item grid-item aspect-video&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-320.avif 320w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-400.avif 400w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-640.avif 640w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-960.avif 960w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-320.webp 320w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-400.webp 400w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-640.webp 640w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-960.webp 960w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;img src=&quot;https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-320.jpeg&quot; alt=&quot;Eclipse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;960&quot; height=&quot;1155&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-320.jpeg 320w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-400.jpeg 400w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-640.jpeg 640w, https://gary.place/journal/the-2026-eclipse/assets/IKe2ngjRBH-960.jpeg 960w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;/picture&gt;
&lt;/a&gt;&lt;a href=&quot;https://gary.place/journal/the-2026-eclipse/assets/photo_2026-08-12_20-58-47.jpg&quot; class=&quot;glightbox grid-item grid-item aspect-video&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-320.avif 320w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-400.avif 400w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-640.avif 640w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-960.avif 960w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-320.webp 320w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-400.webp 400w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-640.webp 640w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-960.webp 960w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;img src=&quot;https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-320.jpeg&quot; alt=&quot;Eclipse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;960&quot; height=&quot;1280&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-320.jpeg 320w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-400.jpeg 400w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-640.jpeg 640w, https://gary.place/journal/the-2026-eclipse/assets/gqPhSCjYwf-960.jpeg 960w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;/picture&gt;
&lt;/a&gt;&lt;a href=&quot;https://gary.place/journal/the-2026-eclipse/assets/photo_2026-08-12_20-59-30.jpg&quot; class=&quot;glightbox grid-item grid-item aspect-video grid-span-2&quot;&gt;
  &lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-320.avif 320w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-400.avif 400w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-640.avif 640w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-960.avif 960w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-1280.avif 1280w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-320.webp 320w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-400.webp 400w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-640.webp 640w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-960.webp 960w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-1280.webp 1280w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;img src=&quot;https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-320.jpeg&quot; alt=&quot;Sunset after the eclipse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;960&quot; srcset=&quot;https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-320.jpeg 320w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-400.jpeg 400w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-640.jpeg 640w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-960.jpeg 960w, https://gary.place/journal/the-2026-eclipse/assets/nvCCiT3s7p-1280.jpeg 1280w&quot; sizes=&quot;(max-width: 700px) calc(100vw - 2rem), 360px&quot; /&gt;&lt;/picture&gt;
&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We got lucky and the eclipse was visible from our apartment&#39;s window, so we were able to take some photos.&lt;/p&gt;

        </content>
      </entry>
      <entry>
        <title>Scrapping HLTB</title>
        <link href="https://gary.place/journal/scrapping-hltb/"/>
        <updated>2024-11-15T00:00:00Z</updated>
        <id>https://gary.place/journal/scrapping-hltb/</id>
        <summary type="html">
          The game tracking platform How Long To Beat doesn&#39;t have a public facing API, so I&#39;ve made a JS script to scrap my public profile for my Now page.
        </summary>
        <content type="html">
          &lt;p&gt;If you had a peek in my &lt;a href=&quot;https://gary.place/now&quot;&gt;Now page&lt;/a&gt;, you may have seen I have a list of games categorized by state of play at the moment. This page is made thanks to a &lt;a href=&quot;https://www.11ty.dev/docs/data-global/&quot;&gt;JSON Data File&lt;/a&gt; I generate by webscrapping my &lt;a href=&quot;https://howlongtobeat.com/user/KuluGary&quot;&gt;public How Long To Beat profile&lt;/a&gt;, and then use it to populate the HTML.&lt;/p&gt;
&lt;p&gt;While I wanted to use an API to access HLTB data, I found a &lt;a href=&quot;https://howlongtobeat.com/forum/thread/807/1&quot;&gt;forum thread&lt;/a&gt; asking for the same, and found out there&#39;s no public API available at the moment. So as a temporary measure, I made a small Node script using &lt;a href=&quot;https://pptr.dev/&quot;&gt;Puppeteer&lt;/a&gt; to scrape the data I need and save it in my files from time to time.&lt;/p&gt;
&lt;p&gt;It&#39;s fairly specific to my use case and it&#39;s not particularly performant or thought out, but if it can be of use to you, here you have it:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gary.place/assets/files/dump-games.js&quot; download=&quot;&quot;&gt;Download the script here.&lt;/a&gt;&lt;/p&gt;

        </content>
      </entry>
      <entry>
        <title>How I deploy to Neocities</title>
        <link href="https://gary.place/journal/how-i-deploy-to-neocities/"/>
        <updated>2024-11-14T00:00:00Z</updated>
        <id>https://gary.place/journal/how-i-deploy-to-neocities/</id>
        <summary type="html">
          Part of my workflow when writing to this site is building the static files and uploading them to Neocities, so I made a sh script to automate it.
        </summary>
        <content type="html">
          &lt;p&gt;This personal site is hosted in &lt;a href=&quot;https://neocities.org/&quot;&gt;Neocities&lt;/a&gt; and built using &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;11ty&lt;/a&gt;. To simplify uploading my static files to Neocities, I wrote a very small shell script that I added to my &lt;code&gt;package.json&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-sh &quot; style=&quot;counter-reset: linenumber 0&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token shebang important&quot;&gt;#! /bin/bash&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-rf&lt;/span&gt; _site
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; run build
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; commit &lt;span class=&quot;token parameter variable&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Updated: &lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;date&lt;/span&gt; +&lt;span class=&quot;token string&quot;&gt;&#39;%Y-%m-%d %H:%M:%S&#39;&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&quot;&lt;/span&gt;
neocities push _site
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A brief explanation of what this script does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deletes the previous &lt;code&gt;_site&lt;/code&gt; folder, where the static files live, to re-generate it.&lt;/li&gt;
&lt;li&gt;Runs &lt;code&gt;npm run build&lt;/code&gt;, which is the same as &lt;code&gt;npx @11ty/eleventy&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Stages all changed files for git, and makes a commit with a message in the format &amp;quot;Updated: 2024-11-12 22:17:05&amp;quot;&lt;/li&gt;
&lt;li&gt;Uses &lt;a href=&quot;https://neocities.org/cli&quot;&gt;Neocities CLI&lt;/a&gt; to upload the static files to Neocities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&#39;s very simple, but if anyone has a similar work pipeline I hope it helps.&lt;/p&gt;

        </content>
      </entry>
      <entry>
        <title>I&#39;m playing Hades II</title>
        <link href="https://gary.place/journal/im-playing-hades-II/"/>
        <updated>2024-05-27T00:00:00Z</updated>
        <id>https://gary.place/journal/im-playing-hades-II/</id>
        <summary type="html">
          After playing for about a week, I&#39;ve finally beaten PokéRogue.
        </summary>
        <content type="html">
          &lt;p&gt;I&#39;ve been playing Hades II since it dropped in early access some time ago. I&#39;ve put around 100h on the original Hades, and about 1/3 of that in the new one.&lt;/p&gt;
&lt;p&gt;I&#39;ve been having a blast. Even though it&#39;s early access, it&#39;s full of content both in terms of gameplay and story.&lt;/p&gt;
&lt;p&gt;I&#39;ve found it a bit more difficult than the original, specially the end game boss.&lt;/p&gt;
&lt;details class=&quot;spoilers&quot;&gt;
  &lt;summary&gt;
    Spoilers - About the final boss
  &lt;/summary&gt;
&lt;p&gt;Even though Hades, the end boss of the original game was formidable, Chronos is another beast altogether. He&#39;s much faster, for starters. His attacks come out incredibly fast and has little anticipation to his movements. He deals a ton of damage and has much more environmental dangers with him. He also summons some of the most annoying enemies in both games (the satyrs, goddamn).&lt;/p&gt;
&lt;p&gt;I&#39;ve been able to defeat him a few times, but only once I got three Death Defiances and started to find out which builds are more effective. Generally with him, I either had to keep away with a Cast boon such as Demeter&#39;s, Hestia&#39;s or Zeus&#39; or use a pure melee build with the axe and Demeter&#39;s freeze so enemies don&#39;t punish the slow attack speed of the weapon.&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;I&#39;ve also found Hades II is harder just in terms of game progression. Where Hades I was fairly linear and had a small amount of progress resources (such as Darkness or Jewels), Hades II has two concurrent routes and tons more gathering materials: from what you use in the cauldron, everything related to the Arcana, and everything related to weapon progression, there&#39;s a lot of stuff to keep track of.&lt;/p&gt;
&lt;p&gt;Still, I think it&#39;s a great game. I don&#39;t think everything I said is strictly a negative, either. Hades II is a bigger game, in general, and that also reflects on the story and characters. There&#39;s a &lt;em&gt;ton&lt;/em&gt; of characters. If you&#39;re a fan of greek mythology, you&#39;ll have a field day meeting every character you can.&lt;/p&gt;
&lt;p&gt;Also, the soundtrack is a bop.&lt;/p&gt;

        </content>
      </entry>
      <entry>
        <title>I beat PokéRogue</title>
        <link href="https://gary.place/journal/i-beat-pokerogue/"/>
        <updated>2024-05-05T00:00:00Z</updated>
        <id>https://gary.place/journal/i-beat-pokerogue/</id>
        <summary type="html">
          After playing for about a week, I&#39;ve finally beaten PokéRogue.
        </summary>
        <content type="html">
          &lt;p&gt;I&#39;ve been playing &lt;a href=&quot;https://pokerogue.net/&quot;&gt;PokéRogue&lt;/a&gt; on and off for about a week. In my most recent run (and the only successful one), I&#39;ve finally beaten the game.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://gary.place/journal/i-beat-pokerogue/assets/01.png&quot; alt=&quot;The main menu of PokéRogue&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I started the run with &lt;strong&gt;Torchic&lt;/strong&gt;, &lt;strong&gt;Magnemite&lt;/strong&gt; and &lt;strong&gt;Magikarp&lt;/strong&gt;. Through the game, I ended up forming a team of &lt;strong&gt;Blaziken&lt;/strong&gt;, &lt;strong&gt;Magneton&lt;/strong&gt;, &lt;strong&gt;Gyarados&lt;/strong&gt;, &lt;strong&gt;Shiftry&lt;/strong&gt;, &lt;strong&gt;Dusknoir&lt;/strong&gt; and &lt;strong&gt;Seismitoad&lt;/strong&gt;. At one point, I got both the &lt;strong&gt;Mega Bracelet&lt;/strong&gt;, and the &lt;strong&gt;Blazikenite&lt;/strong&gt; and &lt;strong&gt;Gyaradosite&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This was my set-up:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MEGA-BLAZIKEN&lt;/td&gt;
&lt;td&gt;Fire Punch&lt;/td&gt;
&lt;td&gt;Swords Dance&lt;/td&gt;
&lt;td&gt;Double Kick&lt;/td&gt;
&lt;td&gt;Aerial Ace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MEGA-GYARADOS&lt;/td&gt;
&lt;td&gt;Waterfall&lt;/td&gt;
&lt;td&gt;Ice Fang&lt;/td&gt;
&lt;td&gt;Crunch&lt;/td&gt;
&lt;td&gt;Dragon Dance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAGNETON&lt;/td&gt;
&lt;td&gt;Discharge&lt;/td&gt;
&lt;td&gt;Confuse Ray&lt;/td&gt;
&lt;td&gt;Tri-Attach&lt;/td&gt;
&lt;td&gt;Flash Cannon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHIFTRY&lt;/td&gt;
&lt;td&gt;Leaf Blade&lt;/td&gt;
&lt;td&gt;Nasty Plot&lt;/td&gt;
&lt;td&gt;Sucker Punch&lt;/td&gt;
&lt;td&gt;Synthesis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DUSKNOIR&lt;/td&gt;
&lt;td&gt;Shadow Punch&lt;/td&gt;
&lt;td&gt;Will-O-Wisp&lt;/td&gt;
&lt;td&gt;Thunder Punch&lt;/td&gt;
&lt;td&gt;Payback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEISMITOAD&lt;/td&gt;
&lt;td&gt;Hydro Pump&lt;/td&gt;
&lt;td&gt;Earth Power&lt;/td&gt;
&lt;td&gt;Hyper Voice&lt;/td&gt;
&lt;td&gt;Acid&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The battle with &lt;strong&gt;Eternatus&lt;/strong&gt; was tense. I&#39;ve lost most of my team against its base form, and by the time I was facing &lt;strong&gt;Eternamax Eternatus&lt;/strong&gt;, I had only &lt;strong&gt;Magnezone&lt;/strong&gt;, &lt;strong&gt;Dusknoir&lt;/strong&gt; and &lt;strong&gt;Shiftry&lt;/strong&gt;. Early on I also lost &lt;strong&gt;Shiftry&lt;/strong&gt; to a &lt;strong&gt;Poison&lt;/strong&gt; move, but I clutched it with my remaining Pokémon.&lt;/p&gt;
&lt;p&gt;My strategy was, mostly, hax. Just the floor before &lt;strong&gt;Eternatus&lt;/strong&gt; I got a TM for &lt;strong&gt;Mud-Slap&lt;/strong&gt; and I taught it to my &lt;strong&gt;Mega Blaziken&lt;/strong&gt; over &lt;strong&gt;Swords Dance&lt;/strong&gt;, since I knew I would not be able to set-up in the fight. In the first few turns of the battle, I was able to drop the accuracy of &lt;strong&gt;Eternatus&lt;/strong&gt; by a few levels, making it miss a few of its attacks.&lt;/p&gt;
&lt;p&gt;During the &lt;strong&gt;Eternamax&lt;/strong&gt; phase, I used &lt;strong&gt;Dusknoir&#39;s Will-O-Wisp&lt;/strong&gt; and &lt;strong&gt;Magnezone&#39;s Confuse Ray&lt;/strong&gt; to make it hit itself and wittle its HP down little by little. It used &lt;strong&gt;Recover&lt;/strong&gt; once, but luckily it hit itself in confusion just when it hit red so it couldn&#39;t do it again.&lt;/p&gt;
&lt;p&gt;I&#39;ve finally beat him with that combination.&lt;/p&gt;
&lt;p&gt;I&#39;ll probably do a few more classic runs with different teams before I tackle endless mode.&lt;/p&gt;
&lt;p&gt;I highly recommend the game if you like roguelites and/or Pokémon battles.&lt;/p&gt;

        </content>
      </entry>
      <entry>
        <title>Point and click</title>
        <link href="https://gary.place/journal/point-and-click/"/>
        <updated>2024-04-25T00:00:00Z</updated>
        <id>https://gary.place/journal/point-and-click/</id>
        <summary type="html">
          As a continued effort to keep learning Godot, I&#39;ve made a prototype system for omni-directional point and click movement system.
        </summary>
        <content type="html">
           &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/wbLRQ5w9ItA?si=N0hOrHbuXcpt2ZDH&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;As a continued effort to keep learning Godot, I&#39;ve made a prototype system for omni-directional point and click movement system.&lt;/p&gt;
&lt;p&gt;This also includes &lt;a href=&quot;https://github.com/nathanhoad/godot_dialogue_manager&quot;&gt;Nathan Hoad&#39;s Dialogue Manager&lt;/a&gt; plugin.&lt;/p&gt;
&lt;ul class=&quot;list-unstyled&quot;&gt;
  &lt;li&gt;
    &lt;small&gt;Tiles by &lt;a href=&quot;https://sodacoma.itch.io/awakening-complete-tileset&quot;&gt;Sodacoma&lt;/a&gt; and edits by me&lt;/small&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;small&gt;Characters by &lt;a href=&quot;https://axulart.itch.io/small-8-direction-characters&quot;&gt;AxulArt&lt;/a&gt; and edits by me&lt;/small&gt;
  &lt;/li&gt;
&lt;/ul&gt;

        </content>
      </entry>
      <entry>
        <title>State machine</title>
        <link href="https://gary.place/journal/state-machine/"/>
        <updated>2024-02-26T00:00:00Z</updated>
        <id>https://gary.place/journal/state-machine/</id>
        <summary type="html">
          In my previous post I&#39;ve made some basic point and click movement, but now I&#39;ve implemented a state machine to keep track of the player&#39;s character state.
        </summary>
        <content type="html">
          &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/svhFr0xmTLQ?si=ZeWx7lRKVW48aC3A&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;In my &lt;a href=&quot;https://gary.place/25-04-2024-point-and-click&quot;&gt;previous post&lt;/a&gt; I&#39;ve made some basic point and click movement, but now I&#39;ve implemented a state machine to keep track of the player&#39;s character state.&lt;/p&gt;
&lt;p&gt;I&#39;ve done state machine in the past, but its my first time implementing it in C#.&lt;/p&gt;
&lt;ul class=&quot;list-unstyled&quot;&gt;
  &lt;li&gt;
    &lt;small&gt;- Tiles by &lt;a href=&quot;https://sodacoma.itch.io/awakening-complete-tileset&quot;&gt;Sodacoma&lt;/a&gt; and edits by me&lt;/small&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;small&gt;- Characters by &lt;a href=&quot;https://axulart.itch.io/small-8-direction-characters&quot;&gt;AxulArt&lt;/a&gt; and edits by me&lt;/small&gt;
  &lt;/li&gt;
&lt;/ul&gt;

        </content>
      </entry>
      <entry>
        <title>Messing around with 3D</title>
        <link href="https://gary.place/journal/messing-around-with-3d/"/>
        <updated>2023-09-09T00:00:00Z</updated>
        <id>https://gary.place/journal/messing-around-with-3d/</id>
        <summary type="html">
          I&#39;ve always loved low-poly 3D games of the Playstation era, and I wanted to replicate the look and feel of them in Godot.
        </summary>
        <content type="html">
          &lt;p&gt;&lt;img src=&quot;https://gary.place/journal/messing-around-with-3d/assets/1.gif&quot; alt=&quot;An animated gif of a 3D capsule wandering around in a pixelated world&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.akamai.steamstatic.com/steam/apps/1055540/ss_0e864bf975bb71f238de6861fc8fd3d6ed6e4ce8.1920x1080.jpg?t=1701219411&quot; alt=&quot;Claire, the protagonist, flying around a low-res 3D world&quot; title=&quot;Claire, the protagonist, flying around a low-res 3D world&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A few months ago, I played &lt;a href=&quot;https://store.steampowered.com/app/1055540/A_Short_Hike/&quot;&gt;A Short Hike&lt;/a&gt; by recommendation from my partner, and I fell in love with the aesthetic. The concept of the game is very nice and feel-good, but it made me remember how much I loved the look and feel of games like &lt;a href=&quot;https://en.wikipedia.org/wiki/Digimon_World&quot;&gt;Digimon World&lt;/a&gt; and other PSX-era low-res 3D games.&lt;/p&gt;
&lt;p&gt;While learning Godot, I thought it&#39;d be nice to replicate that aesthetic. Luckily, there are &lt;a href=&quot;https://www.youtube.com/watch?v=Mg_V27arKdg&amp;amp;pp=ygUSYSBzaG9ydCBoaWtlIGdvZG90&quot;&gt;lots&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=WBoApONC7bM&amp;amp;pp=ygUSM2QgcGl4ZWwgYXJ0IGdvZG90&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=qRAeiwTA7qs&amp;amp;pp=ygUSM2QgcGl4ZWwgYXJ0IGdvZG90&quot;&gt;devs&lt;/a&gt; already applying this effect in their games.&lt;/p&gt;
&lt;p&gt;What I made is just a prototype I made just lowering the values for the &lt;a href=&quot;https://docs.godotengine.org/en/stable/tutorials/3d/resolution_scaling.html&quot;&gt;resolution&lt;/a&gt; of the game, but there are pros and cons about it.&lt;/p&gt;
&lt;p&gt;I&#39;m probably going to keep messing around with this until I have something I&#39;m satisfied with.&lt;/p&gt;

        </content>
      </entry>
      <entry>
        <title>Messing around with 3D... again</title>
        <link href="https://gary.place/journal/messing-around-with-3d-again/"/>
        <updated>2023-04-20T00:00:00Z</updated>
        <id>https://gary.place/journal/messing-around-with-3d-again/</id>
        <summary type="html">
          A Short Hike has a very cute dialogue system, and I wanted to try to repliacte it with the help of a video by DashNothing.
        </summary>
        <content type="html">
          &lt;p&gt;&lt;img src=&quot;https://gary.place/journal/messing-around-with-3d-again/assets/1.jpg&quot; alt=&quot;A small pixelated 3D world with a speech bubble saying &amp;quot;Hey, this is a test message!&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In a previous post I&#39;ve said how I&#39;d keep trying some 3D stuff. While I did that, I also tried to replicate the look &amp;amp; feel of the text message system from &lt;a href=&quot;https://store.steampowered.com/app/1055540/A_Short_Hike/&quot;&gt;A Short Hike&lt;/a&gt;. There&#39;s this helpful &lt;a href=&quot;https://www.youtube.com/watch?v=1DRy5An_6DU&quot;&gt;YouTube video by DashNothing&lt;/a&gt; that I&#39;ve used as a starting point to develop what you see in the screenshot.&lt;/p&gt;

        </content>
      </entry>
      <entry>
        <title>Roguelike prototype</title>
        <link href="https://gary.place/journal/roguelike-prototype/"/>
        <updated>2023-04-13T00:00:00Z</updated>
        <id>https://gary.place/journal/roguelike-prototype/</id>
        <summary type="html">
          This is a prototype I made in Godot of a roguelike similar to The Binding in Isaac.
        </summary>
        <content type="html">
          &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/XwVtgIe1eQk?si=d_DrgQC7KGKicXF3&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;In a previous &lt;a href=&quot;https://gary.place/gallery/2023-11-28-procedural-dungeon-generation/&quot;&gt;post&lt;/a&gt;, I&#39;ve re-created &lt;a href=&quot;https://www.boristhebrave.com/2020/09/12/dungeon-generation-in-binding-of-isaac/&quot;&gt;BorisTheBrave&lt;/a&gt;&#39;s implementation of &lt;a href=&quot;https://store.steampowered.com/app/113200/The_Binding_of_Isaac/&quot;&gt;The Binding of Isaac&lt;/a&gt;&#39;s dungeon generation algorithm in Godot. In addition, I&#39;ve also followed &lt;a href=&quot;https://www.youtube.com/watch?v=axMNUTmFEDA&amp;amp;list=PL2-ArCpIQtjELkyLKec8BaVVCeunuHSK9&quot;&gt;Matinator&lt;/a&gt;&#39;s roguelike tutorial series.&lt;/p&gt;
&lt;p&gt;In this video I showcase a prototype I&#39;ve made with a basic dungeon generation and character controller.&lt;/p&gt;

        </content>
      </entry>
</feed>