Display posts from previous

Sort by

So today, among other things, I got to ride around a planet (through its rings, actually) at 1km / s. It was pretty thrilling

I spoke previously about how warp rails, thanks to their natural implementation as connected line segments, could potentially have some global curvature to them. I decided to test this a bit today, and was quite successful in doing so! These little puppies are going to be more exciting than I anticipated.

The thing about rails is that, compared to the remarkable scales of systems, a rather slight per-node curvature can result in a dramatic global curvature. Placing nodes at 5km / 10km or even 20km, I can produce some pretty drastically-curved paths with minimal local curvature (i.e., without making the lane allocation risky!) As the ultimate test, I tried encircling a planet with a rail network running through the heart of the ring. Wow. That was a cool idea This resulted in a pretty fantastic trip around a massive celestial body. Again, with the rails (and, to a lesser extent, the asteroids within the ring) providing a sense of scale, I was able to understand just how tremendously large this planet actually was. I have a new respect for those double-precision numbers Had I been able to enter / exit the rail at arbitrary points in the ring (still on the todo list), I probably wouldn't be here with a devlog, but would still be immersed in game

So, hopefully the question of 'why would we curve the rails' has been answered. The secondary boring answer is: to avoid obstacles. But the primary shiny answer is: to provide access to points of interest! By curving rails, we have a lot more flexibility to do so. Imagine a rail that curves ever-so-slightly right along the outside of a large ore field in deep space. Suddenly, an entire portion of the field's boundary can become highly-accessible to miners! Again, the extreme example is a planet's rings: an 'orbital rail' can provide access to the heart of an entire belt of ore-laden rocks

The possibilities are only just beginning to unfold here. What started as a half-dream-induced crazy idea is turning into the solution for immersive fast travel that I've always wanted. And it's practical, from a gameplay standpoint! I'm glad I didn't get far with warp tunnels. There was a reason! How could I even think about occluding the lovely universe of LT?! How could it even cross my mind to blot out the shining stars and planets with high-energy retro toilet water!?

Yes folks, I've played space games without fast travel networks, and I can say now more than ever that my mind will not be swayed on this one. HighwaysRailways-in-space provides more bang for your gameplay buck than all the tiled-deferred horizon-based temporal voxel-cone-tracing FXSMTXAA SSAO dynamic DoF in the world can do (yeah, you're right, I did just compare apples and garden hoses. So what? Are you the comparison police? ) Sure, you can mod them out if you really want, but doing so will make the Great Warp Node up Above shed a solemn tear

I honestly didn't intend for this devlog to be about rails. I meant for it to be about all the things that I'm wrapping up in order to push out the update video. But you know how it goes. How easily the mind of a man is distracted by such things as riding trains around planets.

PS ~ May the devlog deficit rest in peace. He was a good beast, a strong beast. But he drove angst into our minds one-to-many times. May his legacy live forever in the scrolls, but never be reincarnated in this reality. This we pray in the name of the Great Node in the Sky.

PPS ~ To those concerned about the immersion of 'space polluted by highways' - the rails look absolutely miniscule in comparison to planets and planetary belts (or asteroid fields, for that matter). From a distance you can't even tell that there's a network within the belt. It's even pretty easy to lose sight of the network while staying within the planetary belt. I promise, there's no polution here It's definitely nothing like those big green tunnel-worms in X:R (And I mean that in the most loving way possible. There's still a special place in my heart for that game ).

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Today was just one of those days, regrettably, that was lost to the demons of working with external APIs. I hate them, but today I had to do it. I'm glad I did. I swallowed a pill that I've been avoiding since the beginning of time, a pill that I knew I would someday need in order to complete the power and beauty of LT's rendering, but a pill that is unmatched in its unsavory flavor

I woke up dreaming of text. Not just humdrum, quotidian text. No. Shiny text. Crisp text. Text in space. Text on 3D interfaces. I dreamt of a world in which my text, like all my other UI glyphs, can emit that lovely, sci-fi glow. I dreamt of a world in which my text, like all my other UI glyphs, rendered blazingly-fast and without hassle or restriction. I even dreamt of a world in which text, like all my other UI glyphs, can emblazon itself onto worldly textures; where futuristic banners and emblems and signposts might convey information in the world itself; where stations might advertise special deals, important news, or dangerous warnings with their own words, rather than the words of the interface. And this world, I knew, was only one pill away. The pill of handling my own font rendering. Today, I have swallowed that awful pill.

Since the beginning, I've relied on SFML to handle my dirty work. But slowly, steadily, I chopped away until the dirt remained in only a few select places: handling OS things like threads / windows / mutexes, and...rendering text. Until today, text was the only part of LT's rendering that required the help of an external library. Unsurprisingly, it continued to be the only part of LT's rendering that gave me consistent trouble. I've always wanted to use distance-field-based text rendering, because it's the future and pretty much the only way people sould be drawing text in games these days -- it cleanly blows everything else out of the water. Crispness at any size (no more worrying about 'font size'), low memory requirement, and, above all else, extremely easy2-bit toggle switch, cool-effect goodness (outer glow, outlines, you name it). To do so, though, would require me to either layer my own solution on top of SFML, or cut out the last of this library's role in my rendering.

I tried the former, as all pragmatists would. And yet, the results were as expected: when you layer complexity upon complexity, things break, because knowledge and understanding is lost at each step of the way. So today, in spite of all my fears, I dove in, searching for the knowledge, aiming to eliminate a final piece of complexity plaguing the rendering engine and preventing me from climbing into that dreamy world of flexible, fast, shiny text.

Sure, I was savvy to how monstrous the uber-ANSI-C-compliant-legacy-proof-future-proof FreeType library is. But nothing can really prepare you adequately for going up against it. It's a beast that all men fear, as it has many strong tentacles, countless obscurities, and vast quantities of frightening phrases like "usually use this," "don't use this unless," and "don't use this now but maybe in the future." It holds deep within its recesses an abundance of traps: obscure special cases, pointers within structs within pointers, and even negative pointer offsets.

No, but seriously, as much as I hate on it, everybody uses it. Everybody. Still, I'm going to be harsh enough to say it: FT is a textbook example of over-engineering, speculative-engineering, and non-user-centric engineering. It's not a friendly thing Granted, I respect the fact that it works on every platform ever, including the legendary 256-bit abacus and the revered 1-bit toggle switch. I've even heard rumors that it'll run on typical garden plants as well, given the right sunlight exposure. But still. I'm working on a post-dark-ages machine here, and it's painful to be constantly reminded of our computational past.

Anyway. After many hours of fighting, I've come out of the dungeon with the treasure that I sought: my own text rendering. Well, in reality, all I've got now is the ability to create a glyph map for any font -- a texture with rendered glyphs on it. But that was the hard part. That part was in the evil domain of interfacing with external APIs. Now comes the fun part: the ball's in my court. Computing the distance field? Rendering those strips of quads? Writing the shaders for crispness and glowiness? This part I can do. This is my domain now. It'll only be a few hours longer

I know, I know. You didn't need this for the next update, did you? But the thing about needing is...you never realize how much you needed it until you have it Give me a chance to show you how much you need this lovely new font rendering engine

Here's to a brighter tomorrow -- a tomorrow unburdened by working with the external!

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Honestly not feeling much of a log today, as I'm pretty much wiped...pulled at least 12 hours working on...surprise, surprise: everything (naturally that includes having crisp, glowy, fast SDF font rendering implemented, as promised ). Always burning hard to get to that sweet taste of a day off, always finding myself one inch away from recording the video, and yet, that blasted inch. Just never seems to go away

On top of everything, there was that annoying thing called real life, wherein outside temperatures dropped to well-below-freezing and the heater kicked the can all in one night! You guys must think I'm making this stuff up by now, right? What's that...like, two major water leakages, one AC outage, random puddles of water appearing in the room, and now a broken central heat, all in one year of development? I wouldn't even believe me. And yet, here I sit, trying to thaw myself out with the heat from a fire that I've been nurturing for the past 12 hours, praying that the repairman makes his way over here soon.

Pretty sure I should move. But that would take dev time away. So no. No moving. Just prayers, happy thoughts, and lots of firewood. No one said coding caves were easy to keep up

And now, friends, I must grab a pillow and pass out on my couch

(Sorry, I know it's not the most uplifting of logs, but you know...long days of work and coldness happen. By the way, is it just me or does life seem to be auto-balancing its difficulty level against me and getting progressively harder??? Is there a settings menu where I can turn that off )

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

AI usage of rails in pathfinding (for our current purposes, this means using rails to get back and forth between a mining site and a selling site)

Warp rail ejection

Message-passing between warp nodes to allow sending an entry request at any intermediate node, rather than just the endpoints. I really want to be able to hop on and off during the update video (hence this and the one above)

Sub-categories in the trade UI (not sure if I can pull that one off in time...)

Drawing a UI + text to an in-game object. Good god I just want that to happen...talk about icing on the cake for a cake that has been in the works for way too long

Seriously. I'm excited. But mostly-resigned to the fact that this is clearly going to be an October-and-most-of-November update video, and that my update video release schedule is whack. Surprisingly, I'm learning to let go of my angst over this I'm feeling less guilty by the day, mostly because of all the great stuff that's currently streaming into the game

Tomorrow: 1000 LTBucks for completion of all of the above. No partial credit. Hey, why not, right? Burning the candle at both ends is so last-year. If you can find a third end, perhaps even a fourth or fifth, why not light them all

PS ~ Heating is fixed! Woohoo, not freezing anymore! Apparently it was a beast of a job. The guy said he had been doing this for 20 years and it was "the hardest I've ever seen." He told me not to let the inspection guy see my unit because it's centuries old (or something like that) and wouldn't pass (I was like...I didn't know there was an inspection guy for that? ) Like I said, life is clearly ramping up in difficulty. I need to go try to find some kind of amulet of luck or something before I'm offed by a falling tree or rabid squirrel

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Well, we all knew that wouldn't happen, but it was worth trying, right? Turns out I could only find 3 ends of the candle to burn

Thankfully, I didn't come out empty-handed! Warp rail ejection: done. Arbitrary entry at any node: done. Yes, my rides around the planet just got a whole lot more fun, now that I can hop on and off I'll admit that I might have lost an hour or so just to riding around various systems...I enjoy it

What else? Test of creating and rendering an interface onto a texture within a custom LTSL object: absolute success. Let me explain that, just so we're clear: within the game update loop, using a custom object built in LTSL, we are able to render an interface (with whatever widgets, text, icons, etc. you want) to a texture for later use. Did it sound cooler with the italics? Ah, maybe not. But you get the idea. We're a hop skip and a jump away from having those rendered in-game. All I have to do is write a shader for it (easy, generating the texture was the hard part!) I hope I don't have to tell you that this makes functional cockpit equipment (i.e., monitors with real information on them) a very real modding possibility Or maybe I do have to tell you that...but then I just did

I estimate that at about 60% of the total work (by time requirement) of yesterday's list. Extrapolation says...the end of tomorrow should be a satisfying day for me, and I reckon that means a satisfying day for all is...days away

Back to the burn!

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Almost there. Almost there guys. I'm so close! Right now I'm trying desperately to get AI utilization of rails done. I know I can do it, I'm really on the home stretch now Just need a hair more time!

By the way, working with the AI these days is really a pleasant experience. I know most of you can appreciate just how many times I had to rework it all before I came to the final solution ('twas no different with the UI, I suppose ), but it did pay off. The degree to which AI functionality is isolated yet re-used in this system makes it quite straightforward to integrate something like rail usage. All I really have to do is touch one file of code, and the rest of the AI will automatically be using rails when appropriate. Just need to finish this one file! So close now I can taste it

OK. The code calls. I can spare no more

Stay with me ladies and gents. I've got a pre-thanksgiving thanksgiving gift on your way

PS ~ Oh, also worth mentioning that I enjoyed some 64-ship brawls in the dogfighting testbed today. Not just for fun, but for tweaking AI piloting (Ok, I'll admit that it was partially for fun as well...but AI is fun when it involves loads of explosions!)

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Ah. To see the system alive once more. But this time, those miners -- bless their patient souls -- have got a new trick up their sleeves. They needn't have the patience of a tree any longer, because now, they're in the fast lane: they're riding the rails!

Took quite some time to implement...a bit more than I expected. Making sure that entry and ejection requests are issued at the proper times by the AI (especially when paths include pre-final-node ejection) wasn't all that non-trivial. At any rate, it's working, and pathfinding is now happy to exploit all the nodes it can find to make AI journeys faster I've also tried to make pathfinding as general as possible such that future fast-travel mechanisms can be added / changed by mods and still be understood by the AI. Objects that influence travel (currently just wormholes and warp nodes) simply need to expose a 'navigable' component, which tells the engine how they connect to other objects. The AI automatically considers all such navigable objects

At this point, I just need to perform my pre-update checklist. No no, I'm talking about the minor things, like making sure that things work and are visible and whatnot The checklist contains no new features, thank god. Just the final polish. I'm quite done with features for this 'month'

Like I said, it's going to be a happy pre-thanksgiving thanksgiving

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford