Wednesday, December 17, 2014
Starting off with a bang
Wouldn't have it any other way. There's really no time to waste.
First up, the handling testbed
. Let's face it: flight controls in LT still aren't perfect, despite eons of iteration. But we're living in this new world where things can be F5'd to death and perfected in microseconds, right?? So why not that too!? Ah, well you see, the code that handles handling (
) is a rather uniquely-weird piece of code, because it lives halfway between the UI and the game world (it is, in fact, a very confused little piece of code
). Both pieces presented challenges for porting to LTSL. Today those challenges were blasted and the F5 cannon was brought to bear on flight handling in the new handling testbed. Along the way, we picked up a few things like inter-script messaging and some new math exposed to LTSL. But the real victory is, of course, the F5ability. It hasn't been F5d to perfection yet, but it's already better than before. I really want it to feel more visceral, especially when piloting smaller, nimble ships. F5s in hand, we will soon achieve that goal.
But that's not good enough right now. Right now (for reasons that will come to light soon
), we need to pack more punch
into LT. And where does one find punch? Well, after extensive rumination, I've decided that the most punch to be had lies with colonies. We've got the absolute basics working. But colonies are to be the fountains of life in LT. They need more. Not only do they need more innards
(modeling of the internal population and economy that drive their markets, etc.), but I'd also like to see a half-decent informational widget. In the end, my ultimate test of LT's dynamism will be to spawn only a single colony on a single planet in a single system, and watch life grow. If the end result is a bustling system ablaze with trade, piracy, mining, production, research, construction, etc...then we'll know we've really succeeded
That is a ways off, particularly due to the lack of construction mechanics as well as the AI's inability to use income to expand its operations. But for now, I would simply like to focus on the source. The question that I will be asking myself continuously is: if all the other mechanics were implemented, would these colony dynamics be sufficient to spark (and sustain) a living system?
I think this is a good guideline. As you may have guessed, the answer is currently "no"
But! That's still not good enough for right now. We don't just need working stuff
. We also need working, visible
stuff. So along with colonies, I'm going to vow to push further into the game's event system and the visualizations thereof -- in particular, the news feed. I have had the concept of events implemented in the game for quite some time, where an event is basically just an encapsulation of "X did Y at Z with W" kind of thing. Fundamentally, in describes how things in the universe are changing. More importantly, it gives us a way to see
, and, ideally, even understand
those changes. Well, that is, if we actually had a way to see them
Enter the news feed. The news feed is simply an aggregation of local events of significance. I've always known that making the dynamism of the universe visible
would be a critical part in making it matter. But it's only recently occurred to me that aggregation of events is a remarkably simple and effective way to do it (and a way for which some code already exists!) To me, only one major question comes up here: what are the criteria for an event becoming 'known'? If a tree falls in the forest and no one is around to hear it, does Freeport 7 have a headlining story about it the next day?
I have actually considered the possibility that knowledge of events is, like other knowledge, encoded in physical 'data' form. That is to say, if we witness the destruction of an Imperial Star Destroyer, we may automatically have that event recorded in our database. Certainly one could see how this opens up the possibility for a lot of interesting gameplay (from inter-system news-runner to factional spy gathering information about enemy activities). But it is, IMO, a luxury. So for now, I will likely proceed by registering events above a certain significance threshold with a system-wide news buffer, which will be displayed at station / colony news boards. From there we can always add more nuance.
Finally, getting back to what I actually coded
today (yes, as you've probably gathered, I spent a lot of the day thinking about what I want to do next
), I managed to kick a little extra functionality into LTSL while I was at it. We now have static variables as well as some new optimizations to the way local variables are allocated and freed. Both of these additions result in higher performance and cleaner code! Worth mentioning, but I'll leave it at that
My LTSL wishlist, developed largely during the last few weeks of sprinting, grows shorter by the day.
Whew. Long day today. Time for sleep