Focusing On The OS

I did some reflecting, and I realized the OS needs some work. There are a few specific areas that I tackle in this months post.

Aug 2nd - Resuming After A Short Break


The last thing I was working on was the property serializer. It was in a really solid state when I left it, I just needed to clean up a few things - such as lists and maps serializing default values, if the container hasn’t changed from the source code, there’s no need to serialize it.

Not really a major issue, but it was a really good first bug fix after a few days break. It helped me remember exactly where I left off, and what I need to do next

Aug 7th - Calendar App


Another task I’ve been focusing on solving is the widgets. The original calendar app was a prototype test and didn’t actually do what I wanted. So I removed it a while ago. I’ve been meaning to write a new one for ages but never got around to it until now.

I wrote a quick proof of concept for the UX and I’m pretty happy with it. The dimensions need to be adjusted slightly, but it’s a good first implementation for now.

It includes a section for events, which I’m not sure if I’ll utilize or not. My idea was a weekly schedule, plus some kind of historical archive of what you did. So the save file could have your schedule history, and every week the schedule could rotate with something new, relative to where you are in the story.

I’m not sure if the story will work that way or not, but it’s a cool concept I’d like to explore.

One of the story board ideas I’ve had for a while is to let the game take place in the past, using the digital clocks to represent the year the game takes place in.

Having the clock, time & date system interlinked into one API will allow me to control this functionality. As of now, the demo will probably feature this concept, just so I can get my prototype out there.

Wpy7jPt5K6

Aug 9th - Start Menu App


The start menu app I’m basing off of Windows 11. I like the direction they took with minimizing the main menu, but I feel they took it a step too far when they separated the search function.

I felt like it could be done better though. The original idea I had was a Windows 8 style start menu - you would be able to freely pin programs, and it would have a button for “All Apps”.

In my app, the recent apps show up first. This is a list of your most recently executed programs on your user profile. This is always changing to stay up to date with your progress. - I’ll probably adjust this down the road so it’s manually controlled, but this is really useful for quick testing right now.

Under that is a button “All Apps” - replacing the current “Recent Apps” panel with a list of all installed apps.

Under that, that will be the user settings and power option settings (lock, logoff, shut down).

And finally at the bottom, the search bar is present.

vudaqgr2IL C3x5tqc23h Some assets used are not created by me, and will not be in the final game, this is developer footage only

What’s Next


The next direction is going to be continuing to lay out the foundational groundwork to make this experience shine. Quality of life features, bug fixes, and resolving any half-baked implementations are my current goals.

I have a few things I need to solve with the 3D engine.

  • Scripting variables are static, this is on purpose, as it let me prototype quickly in the moment to resolve other issues, but now that the system is solidified and I will be doing it this way, I have to fix that static implementation as it essentially makes most scripts useless unless they are some global scripts only once per scene.
  • Small stuff like that, I’ve got some todo lists to keep me in check but we’ll see where it all lands when I go back to 3D engine dev. For now I’ll be focusing on general OS fixes though.

Aug 12th - Settings


I’ve started the settings app, this has been a long time coming, but I’ve done my best to base it off the Windows 10 settings menu. I’m not the biggest fan of the windows 10

cO9FCazil2 Some assets used are not created by me, and will not be in the final game, this is developer footage only

Aug 13th - Theme Selection


I’ve started the theme selection today.

Ng7MOVnnIS KGqLtXQBS8 Some assets used are not created by me, and will not be in the final game, this is developer footage only

Aug 13th - Explorer Navigation


I’m working on explorer today, and this includes modernizing the navigation system to be like Windows 11. I did my best to add buttons on the address bar, then make it clickable and hide them.

GgQTQRJD1N Some assets used are not created by me, and will not be in the final game, this is developer footage only

Aug 15th - Core Rewrites


I’ve decided to go back to basics. I paused development on the 3D game engine to focus on the core OS again. There are a lot of unfinished features I left that I feel should be finished for the final version. This has me focused on them under bug fixes and quality of life updates.

Specifically I’ve tackled the task bar highlighting, on Windows the task bar elements that are clickable, highlight on hover. This is a small but very obviously noticeable feature when it’s missing. I’ve solved this and introduced a nice hover API where I can allow the background to be transparent while allowing the opaque hover background to still show up.

I’ve been doing a lot of rewrites that the codebase has needed since day 1. The majority of the code I’ve written up until this point has been ad-hoc solutions. Now I’m in the process of turning this system from being a prototype into the releasable version - and that includes the API / code I’m writing with, and using.

The original demo like I mentioned in an earlier post, goes back to 2014. Then in 2023, parts of that original demo were used in my OS prototype. I’ve been building on top of that prototype, which means I inherited some of the kludge that came with it - including the way I handled specific low level technical concepts, such as files, context sharing, and more.

The good news is, these changes I’ve understood internally, and planned for quite a while. I could not be happier to actually get the chance to dedicate time to solving these issues. In my mind I had to move fast, and I had no time to fix these kind of critical issues - but the more I’ve been experimenting with the OS, I realize that it needs to have the user experience I imagine in my head. This means solving every single one of the weird technical problems, and reworking the system so it’s got the capability of doing the things that users would expect.

Such as dragging and dropping files from the host OS to the game OS. And vise versa, these kind of interactions are almost assumed to be working. I want the experience to work, without any extra training. This means I have to support the existing experiences users have when working on PCs.

Aug 20th - Explorer Advancements


I’ve been focusing on the file explorer lately, specifically I had re-engineered the desktop and file explorer. Yesterday I started working on the recycle bin, and realized that’s another explorer implementation I’ll have to handle. This means I currently have 3 ways of instancing the explorer code. All of them essentially create the same visual buttons to click / interact with - but the presentation and specifically what happens changes depending on the implementation.

I reworked a bit of the system last night to get it to really work well with the new recycle bin changes. Part of those changes has been to limit explorer access. I do not want the explorer instances to have access to the recycle bin folder, or the user the save files. I’ve been thinking of hard-blocking off the save folder for a while. Yesterday I blocked off the recycle folder, and it felt great.

There is a clear way to access that folder, as the contents inside of it are renamed to prevent file path conflictions. So the idea is you can delete an unlimited amount of data, and no real loss should occur. If a user deletes it from the recycle bin… Well. Then it’ll go into their host OS recycle bin, and from there, I assume they meant to delete it.

There will not be a way to delete files from the game OS path /recycle which means the only way to do it will be through the recycle bin application. I’ve really tried my best to ensure there are no “gotchya’s” with this system, so player files are protected and sandboxed properly.

Aug 21st - Theme Custom Font Support


I thought it would be cool if themes could support custom fonts. It’s been part of the original design since I created the system, but I never tied in the ability to load custom fonts until now.

dPVRR0ZqVt 1 Some assets used are not created by me, and will not be in the final game, this is developer footage only

Aug 22nd - Theme Customization


Powerful theme customization is a feature that I’ve planned for a while. I want the ability to completely reskin every single element eventually. Until then, I’ll happily settle with title header backgrounds and borders.

lAZEn3wM09 fiB3scrAct SsnlQ7ei2C VQ7cYmiP1w FneMx2ZY0I Some assets used are not created by me, and will not be in the final game, this is developer footage only

Aug 30th - Chromium


This all started with a thought - dynamic wallpapers.

One thing let to another, and suddenly I had a chromium instance working, in the release build. I cannot overstate how absolutely challenging that was, purely for testing my patience the entire time. The actual literal magical incantation I stumbled upon came from just plain-old trial and error. The result is chromium.

Due to the way window rendering works - in the release version of the game, the chromium instance cannot be used as a wallpaper rendering engine. I can probably get this working in the future, but as of now, this is out of scope. (Heavyweight components rendering over top of lightweight.)

STEAL.THIS.GAME.exe_8vYYOTbwIC Some assets used are not created by me, and will not be in the final game, this is developer footage only

Because the game has chromium implemented now, I figured would be fun - and good for user safety - to build an adblocker. For now it’s just a really basic URL blocker with a small hostlist I’m maintaining.

20251116060455