Thursday, November 9, 2023

Let There Be Light, Before I Lose My God Damn Shit

Things are generally going well, and a version release draws near. Don't take this as an official announcement or anything, but I'm pretty darn confident that I'll have this out in the wild before the end of the year. That's the goal for now, anyway.

This month I finished up the in-game help pages for the new damage system and knocked out a few little bugs before realizing that I had bigger fish to fry. A couple of months ago I mentioned that the space station lighting wasn't quite up to par. As it turns out, I was not fully aware of the scope of the problem. What I should have said was ALL OF THE LIGHTING IS FUCKED AHHHHHHH!

Turning Off The Dark

So yeah, converting the project to Unity's Universal Rendering Pipeline (URP) absolutely fucked all the interior station lights, resulting in a huge detour which took most of my development time this month. The good news is that everything's working now, with the possible exception of my brain.

The station interiors were basically unplayable, the darkness pierced only occasionally by glitchy strobing bullshit. The main problem, which took me way too long to figure out, was that URP only lets an individual mesh be affected by a small number of realtime lights, so the dozen or so hangar lights plus all of the lights in the ship were fighting each other for dominance over the giant interior meshes and causing all manner of ruckus.

I'd never messed with baked lighting before, but it seemed like that was the solution. And it was, but hoo boy what a mess. The stations are all what Unity calls prefabs, which I was instantiating at startup. I couldn't get the baked lighting to work for days, and it's so obvious in retrospect, but it was because the stations weren't actually instantiated in the editing scene, and so didn't bake. So I had to redesign the whole architecture of how stations work in Unity's object hierarchy (now they all live in the editor & I just activate the objects when I need them rather than instantiating the prefabs at runtime) which worked but I still had to redo all the lighting after that and then, for some reason that I still do not understand, I had to bake the lights for each station individually. That part was easy but it took for god damn ever. So it was all just a huge time sink for very, very little payoff. It still doesn't look great, but it's good enough for now and I have a decent idea of what I need to do to fix things properly whenever I get around to redesigning the stations.

Procrastinating But Not Really

As anyone who has been following this development process knows, I hate fucking with graphics shit. It's just the worst. So this lighting fiasco kept bringing me to the edge of losing my shit but I had limited development time this month and I didn't want to waste what little time I had, so I spent some cool down days working on less pressing matters. I got my recording environment set back up and started planning out a release trailer and a 'what's new' video for v0.04, and started sketching out ideas for cockpit control layouts. I don't expect to be adding any new cockpit controls until v0.06, but it's fun to work on and I'll need to figure it out eventually.

Coming Up Next

This thing is pretty much ready, I think, but there are still a few loose ends knocking about and, more importantly, I need to sit down with the game and actually play it for more than a minute or two at a time. Who knows what soul-crushing bugs I'll uncover in the process.

I spent 2 of the last 4 weekends out of town and another one preoccupied with CTWC '23, so I really haven't been putting as much time into Black Road Sky as I'd like. But with the last known major bug squashed (LIGHTS!) and no big travel plans for the rest of the year, I'm excited to finally wrap this version up. The next post here will either be a trailer and some hype, or a deep meditation on the futility of existence, depending on how playtesting goes. Stay tuned to find out!

Monday, October 9, 2023

Chanting the Buddha's Name with Every Stitch

It's been a slow month, dev-wise. The first person controller bugs are squashed, a few more loose ends tied, and I'm working on getting ship maintenance pages added to the in-game help menu so that the new damage system doesn't feel totally opaque. That's ... pretty much it.

I spent a week visiting family out of state, which was great. I kind of needed the break and I was too busy drinking slightly different beers than usual to worry about Black Road Sky. Then I got back home and was promptly hit with some sort of fever which knocked me on my ass for about another week. And now I'm writing this. So that brings you up to speed. Back to work tomorrow, hopefully.

One Year Anniversary

I've been working on this version update for a year now. It's kind of depressing.

I was hoping to finish up by the end of this month so I could tell myself that it "only" took a year, but I'm not sure if that will happen. According to my notes, I originally expected to be done by the end of 2022. And that was before I dramatically cut the scope. What the fuck was I thinking? I try to be kind, tell myself it doesn't mean that I haven't accomplished enough, only that I lack prescience. The important thing is that I keep working and that I avoid burning myself out, and I am doing both of those things.

There are these Zen Buddhist priests who hand-sew their own ordination robes. It takes months of meticulous, daily work. Tomoe Katagiri, who introduced this robe sewing practice in America, was once asked what they consider to be the most important aspect of the sewing practice. She responded:

"When you think how many yards you will sew, chanting the Buddha's name with every stitch, if you count all the stitches, you say, 'I cannot do it!' But, if you do this stitch: one stitch. One stitch. One stitch continuously, you will finish. If you stop, if you quit, even if you are very good at stitching, you will never finish. Just continue!"

Coming Up Next

"Just continue!"

(https://tricycle.org/magazine/tomoe-katagiri-zen-sewing-stitching/)

Saturday, September 9, 2023

BERGS N TWERKS

With the major goals of v0.04 either complete or kicked down the road for future-me to deal with, I've been focusing on fixing bugs and making small tweaks to various systems and game balance. This is usually a pretty boring phase of development that I lovingly refer to as ...

BERGS N TWERKS

These are mostly small, easy fixes. It's so easy to get sidetracked with little things during normal development, and those sidetracks often lead to more sidetracks, so that when I finally get back to whatever I was originally working on it takes another 20 minutes just to figure out what the hell I was even doing, and then, you know, oh shit, gotta go to work or whatever. So when I notice something small that needs to be done, I find that it's much more efficient to jot down a note and deal with it all later. Well, later is now.

I've been steadily knocking things off of the todo list, but there's not much to show or to write about, really. Like, I forgot to add the new light switches to the save system so I fixed that. I added an option to disable the new ship damage system, and added some more readouts to the cryopod UI. Lots of little shit. This is all work that players won't really notice, since I'm fixing problems that didn't even exist in the previous version.

Some bugs, however, are more long standing. Manual navball movement is now much less wonky (3d rotations are so fucking confusing, I still don't know what the fuck a quaternion is), and I spent some time cleaning up the way space stations transition into and out of physics range, which was previously causing a lot of weird station behavior. It's still not perfect.

Making Games is Hard

Of course, for every 10 easy fixes I'll run into at least one big pain in the ass fix. There were all sorts of issues with how my first person controller interacted with the new ship interior; clipping through walls and sinking through floors into backrooms nightmares, launching off of surfaces like a god damn pinball, just all kinds of problems. The first person controller was one of the first things I wrote in Unity and I've never revisited the code until now. It was horrifying. I ended up rewriting the whole thing. This handled all the weird bugs, and movement is now noticeably nicer in general. It also created some new bugs which I'm still working on fixing.

The other really time consuming issue was that every space station light broke at some point. I still don't know why. I spent so long researching and trying to figure out why nothing was working, but for some reason the solution was to increase the intensity of the lights by like 4 fucking orders of magnitude. I only figured that out because I was frustrated and I was like TAKE THIS UNITY and spammed '9's into the intensity setting of a light. This caused other problems, though. Lighting in URP works differently than the standard pipeline and I'm still struggling to get the space station interiors looking decent. On the one hand, it's pretty frustrating because the whole point was to make things look less like shit, and at the moment the space stations just look more like shit. On the other hand, I don't want to spend too much more time on it, since the space stations will all be completely redone eventually. Eventually might be a long way off, though, so I'll keep plugging away at it for a bit.

You might think that a dude who spends his free time coding an orbital mechanics simulator would be handling character movement and scene lighting no problemo. You'd be wrong. It's problemo all the way down.

Coming Up Next

More of the same on the horizon, just tying up loose ends and preparing the project for life in the real world. I still need to do things like setting up the initial game state, and there's lots of playtesting to do which will inevitably uncover more bugs. The circle of life. I'll admit to you, since you've read this far, that I'm getting a bit burned out and have been sacrificing some development time to replay Crystalis, maybe my favorite ARPG on the NES. I'm good at dealing with burnout, but it only slows down an already glacial development pace. I soldier on, though, and I'm committed to finishing this version update before taking a real break. Still a lot left to do, but we're getting close.

Wednesday, August 9, 2023

The Game Looks Less Shitty Now

This month was a bit of a trial, but it all came together in the end. There's still a lot of work to do on this front, but I'm happy with the progress and I'm calling it good enough for now. I think I'll just commit to spending a month or so with each update from now on working on graphics.

Procedural Planets Drama

Integrating the procedural planets into the main game did not go smoothly.

I have a system. 'x' means 'done', but it also means 'fuck it I give up'.

This disaster was due in part to me not understanding what the fuck a rendering pipeline is, but was mostly caused by my dumb ass panicking when everything broke. I changed a bunch of my own code as well as settings balls deep in esoteric Unity menus without backing things up first and I just ended up spending a day completely borking everything. I finally decided that it was easier to take the loss and revert to a previous version. My version control discipline isn't great but it's not entirely non-existent, so it ended up setting me back by like a week.

I thought about moving on and just sticking with the old planet models for now, but you don't spend years slaving away at a game that no one is ever going to buy without being a stubborn son of a bitch. So I took another shot at it, and I'm glad I did. Check it out:

Tyra's new groove

Same shitty old clouds, and I'd like to add some atmospheric effects eventually, but I think the planet itself is a huge improvement. More importantly, the procedural planet generator is working (with a few bugs, admittedly) in the game, so I spent some time replacing a couple of other planets & moons as well. Happy exploring! I'll try to get to the rest in the next version.

Ship Interior Complete

The interior is still very much a work in progress, but it's finally starting to feel a bit more space trucky. I sealed off the engine room for now with non-functioning doors labeled 'Cargo Hold', pretty sneaky yeah?

Lower Deck Hallway

Cockpit

Midship

Good enough for now! Luckily, as I mentioned last month, I had moved on to planet generation before spending the time to tediously place these new interior art assets, so that saved me a lot of re-do work when I had to revert the project.

Post Processing Effects

I also spent some more time dinking around with post processing. Applying effects selectively to different cameras turns out to be pretty problematic in Unity URP, and Black Road Sky uses a bunch of different cameras to create the illusion of scale, so I wasn't able to do a lot of the things that I wanted to.

I ended up applying effects only to the main 1st person camera. The result is subtle, but generally makes things look a bit nicer. I think? Either that or maybe worse? I can't tell. Whatever. I'm just not a graphics dude, you know?

Coming Up Next

I've got a little bit of cleanup work to do with this graphics nonsense, but the coming month will be focused on bug fixing and optimizations as I get ready to think about possibly maybe finally releasing this version someday soonish.

Sunday, July 9, 2023

Interior Decorating & Terraforming For Dummies

Work on the amorphous goal of "making the game look less like shit" continues this month with reasonable success. Note that the goal isn't "make the game look good" ... I'm neither that ambitious nor that foolish.

A brief foray into the world of post-processing didn't yield any results that I was stoked about, and I just wasn't having much fun with it so I moved on from that pretty quickly. I plan to take another stab at it before release, though. So, no obnoxious lens flare screenshots this month but hold yr horses, they're coming. Probably.

Interior Art Assets

I considered shipping v0.4 with the placeholder interior art assets, but I need the 3d modeling practice and it seemed like low hanging fruit in the pursuit the goal so that's what I've spent the most time on recently. I wouldn't call the results impressive, but I do think it's a significant improvement, which is all I'm going for here. Here are some of the interior assets hanging around a test scene to give you a feel for the vibe:

Some of the new modular interior assets

I'm still working on getting all of these assets placed into the game proper. It's taking a while because it's boring but it should only take another day or two of focus to get it done.

Planet Redesign

To break things up while I'm tediously placing art assets I decided to start turning my attention towards the planet models. These are currently shitty not-even-spheres with slapped on textures from Google image search, so I was pretty confident that I could do something to improve on that.

All of the inspiration and most of the code comes from this fantastic tutorial series by the Bob Ross of programming himself, Sebastion Lague. I'm a big fan of his, and I've had the idea to use this procedural flavor of planet generation for a while. The style feels right for Black Road Sky, and someone else already did the work, so win-win.

I'm still working on getting this integrated into Black Road Sky, but here are some early results:

Some Test Planets

Coming Up Next

It'll just be more of the same in the coming month, placing the rest of those interior pieces and finishing up the planet generator. That will still leave a lot of graphical work left to do, but I think it should be good enough for now.

Friday, June 9, 2023

Damage, Repair and Moving The Goalpost

Development this past month has focused on finishing up the damage-related systems. I think it turned out great, but it took quite a bit longer than expected for a bunch of boring reasons. Like, I literally finished it yesterday. In fact, everything is taking a lot longer than expected, so I've decided to reduce the scope of v0.4 a bit and tackle the rest in the next version. This is annoying, since v0.4 was just meant to clean up the leftovers from v0.3 but whatever. More on that in a minute, but first let's talk DAMAGE, BABY.

Damage & Repair Game Mechanics

Visually, there's not much to show off beyond the ostentatious new UI elements:

MORE READOUTS LET'S GO

So we now have hull integrity, systems health and engine efficiency to manage. Engine efficiency was already a thing in Black Road Sky, it was just hidden from the player so you couldn't directly see how different engine modes worked at different efficiencies. Now you can! This is really just a measure of how effectively your ship is converting fuel into thrust.

Efficiency is now affected by system health, which is a measure of general wear & tear on the ship's systems. The ship will still perform well with system health in the 80's or 90's but will start burning fuel noticeably faster as you drop towards 50 and below. Wear accumulates naturally, but is pretty minimal outside of high throttle maneuvers.

Hull integrity refers to the structural stability of the ship's outer shielding. Damage occurs naturally during normal operation, but accumulates very slowly ... unless you're running into shit. This is pretty much a standard video game damage bar. A careful pilot will rarely need to worry about hull repairs, but system damage accumulates faster with a weaker hull, so fuel economy can be affected seriously by any major hull damage that goes unrepaired. Let things go too far, of course, and fuel economy will be the least of your problems.

Game Over!

Repairs can be ordered from any garage terminal. This works basically the same way as refueling, just pony up and it's done. As with refueling, there's a flat fee in addition to the cost of repairs. This is meant to discourage players from refueling and repairing every single time they land, just because I think that would be a tedious activity to reward.

Get fucked, get fixed.

On paper, this doesn't change the gameplay that much; don't throttle up higher than you need to and it's just an extra fee to pay every once in a while. In practice, though, actually having a reason to care about your ship's health adds a fun element of immersion to the game. It's a placeholder system but I think it's a nice taste of the direction things are moving in.

Reducing The Scope of v0.4

It should come as no surprise to Potato Clock Games stans that this update it taking for god damn ever. And there's still a lot to go. So I've decided to polish up what I've got once I'm done with the visual improvements that I have in mind and release it.

The game is already in a stable, playable state so this shouldn't have much of an effect on the overall development schedule, and it will be a good way to get some player feedback before moving on. I'm obviously not qualified to hazard a guess at a release date so I won't even try. It isn't exactly imminent but I'll say that it's on the horizon, whatever that means.

As for the elements that are being cut from this version, fear not, they'll make up the bulk of the next release. This means pushing systems implementations back YET AGAIN, but it's cool. We'll get there.

Coming Up Next

With the damage and repair systems finally complete, I'm moving on to experimenting with post processing, shaders and lighting. This is stuff that I know pretty much nothing about, so it's more research than active development at the moment, but it's something I've kind of got to deal with eventually. I'd also like to start redesigning the planets and moons. That might just amount to research, or redoing one planet, or maybe replacing all of them. Dunno yet. And I want to take another stab at some of the placeholder ship interior models. But then we'll just be a round of buxfixing, optimizations & loose end tying away from a release.

Tune in next time to find out if I just spent a few weeks ruining the game with a bunch of lens flares or something. Until then, fly safe, and I'll catch you next month!

Tuesday, May 9, 2023

Gameplay and Quality of Life Improvements

I've spent the last month ticking a bunch of little things off the gameplay / quality of life to-do list because that's less intimidating than working on more important shit. Here are some highlights:

Cryopod Improvements

I took a bit of time to work on stability problems with the cryopod (time acceleration is hard) and made some marginal gains on that front, but I'm more excited about the new quality of life improvements. There's now a throttle warning light outside of the pod, which I think is a big improvement over just pushing the button and wondering why nothing is happening. This tripped me up all the time after getting kicked out of warp and it bugged the shit out of me but then I was like, huh, I'm the dev, I guess I can fix that. I also added readouts to indicate the nearest station, your distance from it, and your distance to safe warp range. So you no longer have to target the station you're departing just to see when you've left warp inhibitor range. These were easy things to add but they've really improved the gameplay experience, at least for me as a player.

New Planet & Moons

This was a bit of a sidetrack, but I wanted to add some new places to explore for a the small handful of weirdos out there actually looking forward to this update. There's a new rocky planet beyond the orbit of Tyra called FuShen, based sorta kinda on Mars, but named after a Chinese god of happiness instead of a Roman god of war. Call me a hippie. The actual moons of Mars are too small to play nicely with my orbital simulation so they've been altered beyond recognition in a way that I hope will provide new orbital mechanics challenges. The near moon, Mekka, is a human-built superstructure which will be the in-fiction production facility for the exotic handwavium that powers the warp drive. The far moon, Mirchick, is a small, irregularly shaped, natural moon. There are 7 new stations in the FuShen system including Zazen City, the de facto capital city of The Sangha, and Juliano Station, named as a nod to Michael Juliano, the developer of Rogue System.

FuShen, Juliano Station, and Mekka

Ship Damage System

I'm currently working on implementing collision damage, wear & tear, and the ability to repair from garage terminals. This is a much simplified version of the eventual goal in which individual hardware components will accumulate damage and wear, and that damage will affect specific ship systems. For now, there are two very video gamey damage bars to manage: hull damage and systems damage. Hull damage accumulates slowly & naturally during flight and particularly during high thrust maneuvers, but is mostly there to penalize you for running into shit. Systems damage will build faster the harder you push the ship, and negatively affects your thrust power and fuel efficiency as it accumulates. The lower your hull health, the faster it will accumulate. My goal is that as long as you fly safe you'll rarely need to worry about paying for repairs, it's just another resource to consider and manage.

Coming Up Next

I did a bunch of other little things, too, but that's pretty much it. Spring is a busy time of year for me between beekeeping, fucking around in the yard and generally trying to spend time outside after a depressing Michigan winter, so development took a bit of a backseat this month and probably will continue to do so for a few weeks. But I've been forcing myself to work on Black Road Sky for at least a few minutes every day just to keep in the groove and I'm pretty happy with the progress I've made. Once I wrap up the damage / repair system I'm planning on getting back into modeling & graphics in an attempt to make good on my stated goal of "making the game look less like shit".