<script>
    import BannerTitle from "$lib/banner-title.svelte";
    import Content from "$lib/content.svelte";
    import TableOfContents from "$lib/table-of-contents.svelte";
    import Video from "$lib/video.svelte";
</script>

<svelte:head>
    <title>2024-03-12 | denizk0461</title> 
</svelte:head>

<Content>
    <BannerTitle
        title="Project N5 Progress Update: 2024-03-12"
        subtitle=""
        banner="../../previews/2024/0312.webp"
        bannerAlt="Protagonist pointing the N5 Blaster into the sky"
    />

    <TableOfContents disableStickyScrolling={true} />

    <p>I've unfortunately not gotten a lot done lately. Both an internship and many university courseworks had robbed me of much time, while the remainder of my free time had been taken up by a lack of motivation for working on my game. Despite this, I've still made a little bit of progress that I'm quite happy to share here!</p>

    <h2 id="titlescreen">Back to Title Screen</h2>
    <p>I needed a means to launch different levels quickly, so I created a basic title screen for the game! Behind this is a basic custom level manager that allows for launching and switching between different levels. Currently, there exist two of them – Unity and Arena. Unity is the original level that's been in the game since day 1, using Unity's (old) logo as a floor plane, mostly as a joke because I switched from Unity to Godot.</p>
    <img src="titlescreen.webp" alt="The title screen displaying two levels: Unity and Arena">

    <h2 id="arena">Level 2: Arena</h2>
    <p>The arena level is a new addition, everyone welcome the arena! While I do intend to design a proper arena for the final game, this arena is intended to test enemies and the arena menu.</p>
    <img src="arena.webp" alt="A panorama of the arena with a blue sky, white clouds, and an arena terminal">
    <span class="image-subtitle">the blue sky gives the level such a different feel. the clouds move really quickly here compared to Unity's clouds, suggesting a stormy atmosphere on this planet.</span>
    <p>The computer over there is the arena terminal. By interacting with it, you can select an arena challenge. Currently, it doesn't work. The menu does work! But the buttons don't do anything so far.</p>
    <img src="arena-terminal.webp" alt="Three arena challenges displayed in the arena terminal UI">

    <h2 id="thirdperson">Talking about yourself in the 3rd person</h2>
    <p>I discovered this great plugin for Godot called <a href="https://phantom-camera.dev/">Phantom Camera</a>. It's a plugin that allows you to use agents to control the game camera smoothly, efficiently, and hassle-free. In order to implement it in my game, I only had to do the totally easy task of ripping out my entire camera system. It totally didn't almost make me restart the project from scratch. But it works flawlessly now!</p>
    <img src="shoulder.webp" alt="An over-the-shoulder view of the protagonist aiming the N5 Blaster">
    <p>It wasn't quite flawless from the start though. I had issues with the camera facing my character's front instead of their back. Turns out though, that's not the camera's fault; Phantom Camera's agent was specifically designed to look at the character's back – only problem was that my character model was facing the wrong way! Fixing that took a little bit of time, but I got it done, and now the camera works pretty decently. I even added two more fancy camera gizmos: the first one is a level overview camera, like in Ratchet & Clank! It shows an overview of the level when you enter it. It smootly transitions to the player once any input is made.</p>
    <img src="overview.webp" alt="A panorama shot of the Unity level with the brick wall filling the entire left half">
    <p>The other is an over-the-shoulder camera! This one allows for (allegedly) more precise aiming. Come to think of it, I should actually turn down the camera sensitivity when the player is in this mode...</p>
    <Video src="shoulder.mp4" />
    <p>Funnily, due to initial collision issues, I first accidentally turned my game into a first person shooter. Actually looks kind of cool, I have to say. Maybe I'll implement a first person view as an alternative option to the over-the-shoulder view.</p>
    <Video src="firstperson.mp4" />

    <h2 id="sketches">Can I offer you a nice sketch in this trying time?</h2>
    <p>When I'm not developing, I'm often doing something else related to my game. Sometimes, I sketch!</p>
    <p>I am by NO MEANS a skilled sketch artist, but it really helps to note down ideas to remember them, visualise them, and expand on them.</p>
    <img src="sketches.webp" alt="Sketches of the protagonist as well as their armour and weapons">
    <span class="image-subtitle">don't judge</span>

    <h2 id="kanban">Kanban for my TODOs</h2>
    <p>Perhaps as a small insight into my project management process: I'm using <a href="https://obsidian.md/">Obsidian</a>, a markdown editor, as my means of collecting and managing my projects' notes and ideas. Recently, I've also tried using the Kanban plugin to organise my TODOs (I have <i>a lot</i> of them), which is working quite well! I often create small notes on this board, saving sparks of ideas that I occasionally have, and I like adding extra information that will help me remember in the long term what those ideas were about.</p>
    <img src="kanban.webp" alt="The kanban board housing all TODOs for the game">
    <p>I can only recommend it – both Kanban as a means of project management as well as Obsidian as a note vault!</p>

    <h2 id="future">in hopes of more to come</h2>
    <p>Progress has been slow lately, but I have not stopped thinking about my game. I have big ambitions for this title – of course bearing in mind that I am only one person, and that this is also my first proper attempt at making a video game. Still, I think that, with enough time and dedication, I can pull off developing something that I will be quite proud of. Even right now, I am already proud of what I've accomplished. I have a large chunk of the basic game mechanics down already, and I did it all on my own (with the help of online documentation and a few tutorials, of course)!</p>
    <p>After every day of working on my game, I ask myself: "did I really accomplish much today?" Often, my immediate response is "no", but my second response is "of course I did!" Because while a lot of things that take me quite a bit of time are children's play for another person most likely, the fact that I worked through it and managed to successfully create or implement something is huge. I'm always quite happy once I realise this.</p>
    <p>And so, while my day-to-day motivation for working on my game directly is rather low, this is only a symptom of a general lack of motivation for anything. In the long term, I think I am quite dedicated to this game. When I'm not coding something, I'm coming up with ideas. I'm managing my notes. I'm designing something. Maybe I'm talking to someone about my ideas. That last point is actually something I would love to do more, but I don't really know any person that would enjoy listening to my ramblings.</p>
    <p>Let's see how far we get.</p>
    <img src="alone.webp" alt="Protagonist staring longingly into the distance, pointing the N5 Blaster thereto">
    <span class="image-subtitle">staring longingly into the sunset</span>
</Content>