added devlog 2026/0309
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
alignment,
|
alignment,
|
||||||
video,
|
video,
|
||||||
pixelated,
|
pixelated,
|
||||||
|
smaller,
|
||||||
}: {
|
}: {
|
||||||
image: string;
|
image: string;
|
||||||
altText?: string;
|
altText?: string;
|
||||||
@@ -16,6 +17,7 @@
|
|||||||
alignment?: string;
|
alignment?: string;
|
||||||
video?: boolean;
|
video?: boolean;
|
||||||
pixelated?: boolean;
|
pixelated?: boolean;
|
||||||
|
smaller?: boolean;
|
||||||
} = $props();
|
} = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -39,18 +41,37 @@
|
|||||||
{/if}
|
{/if}
|
||||||
{/snippet}
|
{/snippet}
|
||||||
|
|
||||||
|
<!-- this structure is ugly as fuck. there must be a better way of doing this -->
|
||||||
{#if alignment && alignment == "left"}
|
{#if alignment && alignment == "left"}
|
||||||
|
{#if smaller}
|
||||||
|
<a class="subtitled-img-container subtitled-img-container-left subtitled-img-reduced-size" href="{image}">
|
||||||
|
{@render subtitledImageContent()}
|
||||||
|
</a>
|
||||||
|
{:else}
|
||||||
<a class="subtitled-img-container subtitled-img-container-left" href="{image}">
|
<a class="subtitled-img-container subtitled-img-container-left" href="{image}">
|
||||||
{@render subtitledImageContent()}
|
{@render subtitledImageContent()}
|
||||||
</a>
|
</a>
|
||||||
|
{/if}
|
||||||
{:else if alignment && alignment == "right"}
|
{:else if alignment && alignment == "right"}
|
||||||
|
{#if smaller}
|
||||||
|
<a class="subtitled-img-container subtitled-img-container-right subtitled-img-reduced-size" href="{image}">
|
||||||
|
{@render subtitledImageContent()}
|
||||||
|
</a>
|
||||||
|
{:else}
|
||||||
<a class="subtitled-img-container subtitled-img-container-right" href="{image}">
|
<a class="subtitled-img-container subtitled-img-container-right" href="{image}">
|
||||||
{@render subtitledImageContent()}
|
{@render subtitledImageContent()}
|
||||||
</a>
|
</a>
|
||||||
|
{/if}
|
||||||
{:else}
|
{:else}
|
||||||
|
{#if smaller}
|
||||||
|
<a class="subtitled-img-container subtitled-img-container-centred subtitled-img-reduced-size" href="{image}">
|
||||||
|
{@render subtitledImageContent()}
|
||||||
|
</a>
|
||||||
|
{:else}
|
||||||
<a class="subtitled-img-container subtitled-img-container-centred" href="{image}">
|
<a class="subtitled-img-container subtitled-img-container-centred" href="{image}">
|
||||||
{@render subtitledImageContent()}
|
{@render subtitledImageContent()}
|
||||||
</a>
|
</a>
|
||||||
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -66,6 +87,7 @@
|
|||||||
|
|
||||||
.subtitled-img-container-centred {
|
.subtitled-img-container-centred {
|
||||||
width: var(--media-width);
|
width: var(--media-width);
|
||||||
|
/* width: fit-content; */
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
@@ -112,6 +134,10 @@
|
|||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.subtitled-img-reduced-size {
|
||||||
|
max-width: initial;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 600px) {
|
@media screen and (min-width: 600px) {
|
||||||
@@ -119,6 +145,10 @@
|
|||||||
width: 34%;
|
width: 34%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.subtitled-img-reduced-size {
|
||||||
|
max-width: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
/* Don't limit height of images set to the side because text flows around them */
|
/* Don't limit height of images set to the side because text flows around them */
|
||||||
.subtitled-img-container-left img, .subtitled-img-container-right img {
|
.subtitled-img-container-left img, .subtitled-img-container-right img {
|
||||||
max-height: initial;
|
max-height: initial;
|
||||||
|
|||||||
@@ -234,9 +234,16 @@
|
|||||||
color: var(--color-highlight);
|
color: var(--color-highlight);
|
||||||
margin-top: var(--margin-header-top);
|
margin-top: var(--margin-header-top);
|
||||||
margin-bottom: var(--margin-header-bottom);
|
margin-bottom: var(--margin-header-bottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h2, h3, h4, h5, h6 {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
|
h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
|
||||||
/* Remove top margin when a header immediately preceds another header */
|
/* Remove top margin when a header immediately preceds another header */
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|||||||
75
src/routes/projects/projectn5/devlog/2026/0309.md
Normal file
75
src/routes/projects/projectn5/devlog/2026/0309.md
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import SubtitledImage from "$lib/components/subtitled-image.svelte";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
Been a while. Again.
|
||||||
|
|
||||||
|
<SubtitledImage
|
||||||
|
image="habitkit.webp"
|
||||||
|
altText="A screenshot of the app HabitKit zoomed in on an entry labelled 'Project Laura' and subtitled '2025 IS THE YEAR OF LAURA'. On the left half are red dots scattered, marking days of progress, whereas the right half is entirely blank."
|
||||||
|
subtitle="aaaaaaaaaaaaaa"
|
||||||
|
alignment="right" />
|
||||||
|
|
||||||
|
## What's Been Going On
|
||||||
|
|
||||||
|
Not a lot. Well actually, that's not true. I returned to Germany after a four-month abroad semester in the UK. I deep-cleaned my apartment. I switched to Linux. I worked on my website a bunch. I [learned to draw](/blog/2026/0205). But there's not been any hard progress on Project N5.
|
||||||
|
|
||||||
|
I use this habit tracking app, [HabitKit](https://www.habitkit.app/), and it (unfortunately) quite clearly displays the lack of work on the game. But this doesn't mean I've given up on the game. Maybe I'm just saying this because I'm too stubborn though.
|
||||||
|
|
||||||
|
## What I've Realised
|
||||||
|
|
||||||
|
<SubtitledImage
|
||||||
|
image="papertracker.webp"
|
||||||
|
altText="A calendar with the title 'HOMESICK Abroad Progress Calendar'. Close to half the days are marked with a cross, with no discernible pattern visible."
|
||||||
|
subtitle="proof of progress"
|
||||||
|
alignment="left"
|
||||||
|
smaller />
|
||||||
|
|
||||||
|
In and especially after my drawing challenge, I've realised something I wasn't 100% sure applied across the board for me: I struggle to get started even on the things I enjoy most. I knew before that I have a hard time starting work on the game but enjoying it once I do begin, but I found that the very same applies to drawing.
|
||||||
|
|
||||||
|
There's just something inside of me that hinders me from doing what I love.
|
||||||
|
|
||||||
|
I tried combating this when I lived in the UK; I had a physical version of the habit tracker printed out (on uni credit) that served as a looming reminder day and night. The fact I needed this to begin with is ridiculous, I gotta say. But it did help, in a way, I think? Judging by the way my progress looks on the tracker app, there was at least a small increase in productive days.
|
||||||
|
|
||||||
|
## What's There to Look Forward To
|
||||||
|
|
||||||
|
Something I was really looking forward to was [Godot 4.6](https://godotengine.org/releases/4.6/), which finally released a while back!
|
||||||
|
|
||||||
|
The change that'll probably impact me the most is the (re-)introduction of inverse kinematics! That's something I've been longing to be able to implement for quite a while. But there are more cool changes that'll have a more minor but still interesting impact, like those on tonemapping, glow, LOD generation, and also the added support for controller lights and the possibility to use the DualSense's adaptive triggers in a future update.
|
||||||
|
|
||||||
|
I've also been keeping my eyes open for resources, and I found a couple that piqued my interest; namely, two shaders, a [toon shader by Binbun](https://binbun3d.itch.io/godot-ultimate-toon-shader) that seems more customisable and a lot more visually interesting than the one I've been using so far, and [Sky3D by TokisanGames](https://github.com/TokisanGames/Sky3D) for very pretty skies.
|
||||||
|
|
||||||
|
I am also planning on potentially looking into root motion for animation, once I get to that. It feels like a larger undertaking, and I may not end up pursuing that after all, but it seems like a cool way of getting better and more fluid-feeling motion out of a character.
|
||||||
|
|
||||||
|
## What's Changing
|
||||||
|
|
||||||
|
Possibly the biggest change I can announce right now is the name of the project. I've been calling it by this name for a while, but to make it somewhat official: the game is now called ***Homesick***.
|
||||||
|
|
||||||
|
The old 'Project N5' hasn't felt right for a long time. It's a relic of a time when the game was meant to be more of a shooter, Ratchet: Gladiator-style, with a robot protagonist fighting other robots while travelling across different planets. This isn't what I had in mind for the project for a very long time now. ***Homesick*** is meant to represent Laura's feelings, Laura's struggles when she learns what has happened to the world she once knew.
|
||||||
|
|
||||||
|
I'll probably change the URL structure soon to read `/projects/homesick`, but I'll set up redirects so old URLs won't be dead ends.
|
||||||
|
|
||||||
|
## What I've Done
|
||||||
|
|
||||||
|
Even in my state of absence from the project itself, I kept it in mind – I never forgot about it! Still, the actual progress I made is rather minor. I did implement metro stations back in December, which allow the player to travel between levels and even to set locations within a level. Aside from that, most other changes are pretty basic and not really worth mentioning, like tweaking parameters or simplifying code blocks.
|
||||||
|
|
||||||
|
Possibly the most significant progress I made was on starting to model Laura v3. Wait, what?
|
||||||
|
|
||||||
|
## What I'm Planning to Do
|
||||||
|
|
||||||
|
Something I started but made very little progress with is Laura's redesign. The *next* redesign. I think I learned a lot from the v2 model (or v4 model, as I had called it before), but there's more to improve mesh-wise. However, I also want to make bigger stylistic changes. I feel that a lot of what I criticised about Laura v1 still applies in some way: she just doesn't look that interesting as a character. There's so much more I can do with her, I think, and the v2 model is just iteration on the v1 design. I made a low-poly mockup back in December to dump my brain onto the 3D canvas:
|
||||||
|
|
||||||
|
<SubtitledImage
|
||||||
|
image="laura3-preview.webp"
|
||||||
|
altText="A low-poly model of a human with red hair in a ponytail wearing a black mask, dark grey shirt with long sleeves, green trousers, and white shoes."
|
||||||
|
subtitle="an idea for where laura may be headed" />
|
||||||
|
|
||||||
|
Some pretty drastic colour palette changes. Red top, brown hair, and black/white everything else is just *boring*. That's like the look I wear irl except red instead of green. I wanted to mix up things.
|
||||||
|
|
||||||
|
I also believe that my recent efforts in learning to draw gave me a better perspective at modelling human bodies. There are details I had to pay attention to that I think just aren't reflected very well in the current model. It's small things like not making her arms and legs straight as matches. Or the proportions. Or her face; I think I'll be able to improve her eyes in particular. I struggled with that on v2, but ESPECIALLY on v1. And maybe I'll do a little better at drawing textures too, who knows?
|
||||||
|
|
||||||
|
It feels weird to design Laura for a *third* time now, but I guess this would be no different in an actual game studio's production. There's no way you'll land on the perfect character on your first try, right? It's just that a game studio may do this in a week or two, and I'm much slower at this.
|
||||||
|
|
||||||
|
Something else I need to revisit is the amalgamation I built a while back to manage Laura's different movement states. I think the way I built it is somehow both completely overengineered and also insufficient for use as a foundation for Laura's movement. It works *now*, don't get me wrong, but it's so bad to maintain. I'm not even gonna show it lol
|
||||||
|
|
||||||
|
Something I also *finally* need to do is just sit down and write story bits. It's something I've just not done (enough), and the story obviously isn't gonna magically appear out of thin air. There are ideas floating around in my head and I need to capture, connect, and build upon them. It's just something I've not done much before, so I'm worried and I keep postponing it, but just like with all other hobbies of mine: *I just need to get started!*
|
||||||
@@ -11,6 +11,15 @@ export interface DevlogPostLink {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const posts: DevlogPostLink[] = [
|
export const posts: DevlogPostLink[] = [
|
||||||
|
{
|
||||||
|
key: "2026/0309",
|
||||||
|
post: {
|
||||||
|
title: "The Overdue Update",
|
||||||
|
date: "2026-03-09",
|
||||||
|
bannerAlt: "GDScript code zoomed in on a function called '_take_damage()' that checks whether the player has died and then reads: 'if is_dead: _die()'.",
|
||||||
|
description: "An excuse, a fresh character, and a new name.",
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
key: "2025/1207",
|
key: "2025/1207",
|
||||||
post: {
|
post: {
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 698 KiB |
BIN
static/projects/projectn5/devlog/2026/0309/habitkit.webp
Normal file
BIN
static/projects/projectn5/devlog/2026/0309/habitkit.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
BIN
static/projects/projectn5/devlog/2026/0309/laura3-preview.webp
Normal file
BIN
static/projects/projectn5/devlog/2026/0309/laura3-preview.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 164 KiB |
BIN
static/projects/projectn5/devlog/2026/0309/papertracker.webp
Normal file
BIN
static/projects/projectn5/devlog/2026/0309/papertracker.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
BIN
static/projects/projectn5/devlog/2026/0309/preview.webp
Normal file
BIN
static/projects/projectn5/devlog/2026/0309/preview.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 529 KiB |
Reference in New Issue
Block a user