From a69105b1a07dd5a1906daec7865905e0b8be1d73 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Sat, 29 Jun 2024 17:32:50 +0100 Subject: [PATCH] Add work-in-progress blogs --- src/assets/posts/{ => 2024/05}/pulex_leg.webp | Bin .../2024/06/photo_2023-08-07_10-22-00.jpg | Bin 0 -> 46803 bytes .../posts/2024_05_28-Astro_is_hard.mdx | 2 +- .../posts/2024_06_08-Urchin_project.mdx | 82 ++++++++++++++++++ src/content/posts/2024_06_29-ESPHome.mdx | 12 +++ src/content/tags/algorithms.md | 3 + src/content/tags/esphome.md | 3 + src/content/tags/gamedev.md | 3 + src/content/tags/go.md | 3 + src/content/tags/ha.md | 3 + src/content/tags/raylib.md | 3 + src/layouts/Markdown.astro | 2 +- 12 files changed, 114 insertions(+), 2 deletions(-) rename src/assets/posts/{ => 2024/05}/pulex_leg.webp (100%) create mode 100644 src/assets/posts/2024/06/photo_2023-08-07_10-22-00.jpg create mode 100644 src/content/posts/2024_06_08-Urchin_project.mdx create mode 100644 src/content/posts/2024_06_29-ESPHome.mdx create mode 100644 src/content/tags/algorithms.md create mode 100644 src/content/tags/esphome.md create mode 100644 src/content/tags/gamedev.md create mode 100644 src/content/tags/go.md create mode 100644 src/content/tags/ha.md create mode 100644 src/content/tags/raylib.md diff --git a/src/assets/posts/pulex_leg.webp b/src/assets/posts/2024/05/pulex_leg.webp similarity index 100% rename from src/assets/posts/pulex_leg.webp rename to src/assets/posts/2024/05/pulex_leg.webp diff --git a/src/assets/posts/2024/06/photo_2023-08-07_10-22-00.jpg b/src/assets/posts/2024/06/photo_2023-08-07_10-22-00.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45040e09fcceec9f6755b4e4ee7dcbc242c21a71 GIT binary patch literal 46803 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 literal 0 HcmV?d00001 diff --git a/src/content/posts/2024_05_28-Astro_is_hard.mdx b/src/content/posts/2024_05_28-Astro_is_hard.mdx index d713f0b..73ba677 100644 --- a/src/content/posts/2024_05_28-Astro_is_hard.mdx +++ b/src/content/posts/2024_05_28-Astro_is_hard.mdx @@ -154,6 +154,6 @@ I'm hoping to write more blogs in the future, mainly to practice my writing skil regardless if it's something political or programming related. But life's in a tangle right now
- ![Maned Wolf art by Pulex](../../assets/posts/pulex_leg.webp) [Art by + ![Maned Wolf art by Pulex](../../assets/posts/2024/05/pulex_leg.webp) [Art by Pulex](https://www.pulexart.com/)
diff --git a/src/content/posts/2024_06_08-Urchin_project.mdx b/src/content/posts/2024_06_08-Urchin_project.mdx new file mode 100644 index 0000000..161d88d --- /dev/null +++ b/src/content/posts/2024_06_08-Urchin_project.mdx @@ -0,0 +1,82 @@ +--- +draft: true +title: Urchin project +description: The game that maybe could be +pubDate: 2024-06-08 +tags: + - python + - go + - raylib + - gamedev + - algorithms +--- + +'Tis I again. + +Recently I've made quite a lot of progress on a project of mine and my brothers. I dubbed it "Urchin Project" because +urchin sounds funny, but also I have zero clue what to call the game. + + +## What was originally + +This project actually started [around 10 months ago](https://www.youtube.com/watch?v=z9P-KlNKXAA), but this version was +abandoned for a few reasons. Main one being, I had zero fucking clue what I was doing, I didn't plan out a single part +of the project, I didn't even know what the story was going to be. Quickly, there was a lot of foot-guns in place and +horribly designed systems. + +Urchin Project, though not called it back then, was written on PyGame, a Python wrapper for SDL with a few helpful +features. PyGame is more than suitable for most project and tests, as its quite simple to use and relatively fast to get +the hang of when first getting into writing games. One of the biggest gripes I have with it was the software based +rendering, but that shouldn't be an issu- + +![Screenshot of the Urchin Project on a highDPI screen, causing everything to be really zoomed out](../../assets/posts/2024/06/photo_2023-08-07_10-22-00.jpg) + +oh, yeah, that. While basically impossible to see on the screenshot, what ran at 300FPS on my 1080p monitor ran at barely 40fps on +a 5k one, this was going to be an issue, not only when it came to scaling things, but also the general design of the +game. + +The only option I had was either to: +1. Ignore the issue and deal with it later +2. Use something like ModernGL to make an OpenGL context, and use PyGame as the input and audio manager + +Guess which I've taken! + +From the [previously linked video](https://www.youtube.com/watch?v=z9P-KlNKXAA), you can see I made quite a bit of +progress on the game. I even made a [world generator of some sorts](https://github.com/Fluffy-Bean/py_map_generation)! +But it was all horribly slow, terribly implemented and wasn't going to get far, and it didn't. + +Eventually I gave up and moved onto other things, such as dealing with upcoming college. + +## Go + +Then around October 2023 I picked up Go. Go is a pretty neat little language, it has the simplicity of Python, and a +_pythonic_ sort of syntax in some ways, but the speeds of languages such as Java! + +{/* I believe I read somewhere that Go can preform faster than Rust, but I cannot find the video/resource to back this up */} + +Since then, I've used Go for most of my new projects, because since then I realised that Functional is the way to go for +me. + +At one point I even tried to make something using a Go SDL wrapper, but that didn't really go anywhere and I gave up +even quicker with that. + +## raylib + +Now, here's where things get interesting! + +- What have I been working on in the past week +- How the project started originally +- Why did I choose RayLib and Go over python + - Python was slow + - I didn't plan out the project well + - PyGame wasn't for me + - Gocurrency + +- Physics system + - SAT + - QuadTrees + - Greedy Meshing + +- What I want todo next + - World Generation + - Time/Temperature based systems diff --git a/src/content/posts/2024_06_29-ESPHome.mdx b/src/content/posts/2024_06_29-ESPHome.mdx new file mode 100644 index 0000000..c7454d3 --- /dev/null +++ b/src/content/posts/2024_06_29-ESPHome.mdx @@ -0,0 +1,12 @@ +--- +draft: true +title: ESPHome +description: Making little controllers do magic +pubDate: 2024-06-29 +tags: + - esphome + - ha + - networking +--- + +ToDo diff --git a/src/content/tags/algorithms.md b/src/content/tags/algorithms.md new file mode 100644 index 0000000..98a5ee5 --- /dev/null +++ b/src/content/tags/algorithms.md @@ -0,0 +1,3 @@ +--- +name: Algorithms +--- diff --git a/src/content/tags/esphome.md b/src/content/tags/esphome.md new file mode 100644 index 0000000..662bb95 --- /dev/null +++ b/src/content/tags/esphome.md @@ -0,0 +1,3 @@ +--- +name: ESPHome +--- diff --git a/src/content/tags/gamedev.md b/src/content/tags/gamedev.md new file mode 100644 index 0000000..fe1c4dc --- /dev/null +++ b/src/content/tags/gamedev.md @@ -0,0 +1,3 @@ +--- +name: Game Development +--- diff --git a/src/content/tags/go.md b/src/content/tags/go.md new file mode 100644 index 0000000..7bcc63e --- /dev/null +++ b/src/content/tags/go.md @@ -0,0 +1,3 @@ +--- +name: Go +--- diff --git a/src/content/tags/ha.md b/src/content/tags/ha.md new file mode 100644 index 0000000..5c22364 --- /dev/null +++ b/src/content/tags/ha.md @@ -0,0 +1,3 @@ +--- +name: HomeAssistant +--- diff --git a/src/content/tags/raylib.md b/src/content/tags/raylib.md new file mode 100644 index 0000000..e50ea62 --- /dev/null +++ b/src/content/tags/raylib.md @@ -0,0 +1,3 @@ +--- +name: raylib +--- diff --git a/src/layouts/Markdown.astro b/src/layouts/Markdown.astro index 87513ab..fb9cd85 100644 --- a/src/layouts/Markdown.astro +++ b/src/layouts/Markdown.astro @@ -271,7 +271,7 @@ const comments = import.meta.env.PUBLIC_COMMENTS === "true"; img { margin: 16px -16px; - max-width: 100%; + max-width: calc(100% + 32px); height: auto; border-radius: $radius;