Page 1 of 1

Week of November 30, 2014

Posted: Mon Dec 01, 2014 6:35 pm
by JoshParnell
Sunday, November 30, 2014

Bomber in flight :geek: ...approaching target...wait! Can't fall into that trap again, can I!? No hints about the bomber's location :ghost:

Since I figure I've beaten the 'finalizing the Octember update' horse to death, instead I'll just throw in an interest tidbit from my day. After mind-numbing hours of work, I needed to take a break, so (for reasons unknown) I settled on watching a rather interesting video (seriously, it's only an hour long, that's not too much of a break, right!? :ghost:)

It really fascinated me. In a world where I had infinite time (such a tantalizing thought :cry:), I think I would definitely want to study theoretical physics. But just watching this video was enough for now :) It absolutely amazes me, though, and the more I think and learn about our universe, the more profoundly puzzled I become. Sadly, I'm completely bottlenecked by my (lack of) physics knowledge here. But from my rudimentary understanding of it all, it would seem to be the case that, essentially, we have shown the informational content of our universe to be of a lower dimensionality than it appears, or than we would expect. I couldn't help but be reminded of a time long ago when I first read about quantum uncertainty. One of my most immediate reactions to it (after getting over the initial shock) was that it sounded an awful lot like some form of exotic compression -- like the encoding of our universe is perhaps more sparse than it seems, hence the inability to accurately measure every facet of it at a given moment. I didn't give much more thought to it all, again, since I'm nothing short of a plebeian when it comes to physics knowledge. And yet, seeing this video, I once again couldn't help but consider this connection to compression. I don't know much, but I do get the very sharp feeling that, whatever's going on here, it's very, very interesting.

It actually makes me think back to when I was working hardcore on the LT universe simulation architecture. I had developed some rather interesting compression technology to enable simulation of massive regions at lower computational cost. That technology involved something not so unfamiliar to quantum uncertainty: far away pieces of the universe would be compressed into grouped objects, wherein individual units of 'detailed' data would be lost, but the coarse, 'low-resolution image,' so to speak, would remain (and details would be filled in with controlled randomness when it was once again time to expand the coarse data). For example, a far-off battle simulation might result in the outcome that x damage was dealt to (X, Y, Z) group of objects (such as a fleet), but the detail of exactly which object had received the damage would not be resolved in memory until it was actually 'observed.' In case you're curious, I ultimately dropped this solution in favor of a more practical LOD mechanism, despite the fact that I still love the underlying theory of performing coarse simulation via hierarchical data compression. But here's the thing: ultimately, while I did develop a mechanism for compressing universes for LOD sim, the dimensionality of calculations remained the same. Unless one were to create exponentially larger groupings (hence, drop exponentially more data at long distances), the underlying time complexity of the algorithms would remain the same, up to a constant factor.

Now, on the other hand, if one were to develop a scheme in which the actual dimensionality of data were compressed -- one could, in principle, drop the time complexity of the simulation algorithm. For example, going from O(n^3) to O(n^2). This is not a mere constant factor, but an 'asymptotic' speed-up. If one could develop a mechanism for compressing a universe into a lower dimensionality, simulating it at that lower dimensionality, and then expanding it again upon observation, one could actually create the illusion of a full simulation, but while running that simulation asymptotically faster. Do you see why I am so fascinated by our reality? ;) It's just something to think about, and definitely a long shot. But I'm just saying...if I were going to try to simulate something like a universe whilst appearing to do the whole thing at full detail at all times (not the case as in LT), I would probably need to find some exceptionally clever mechanism for drastically compressing the information that is actually simulated. Doing so would inevitably lead to certain patterned artifacts in the expanded information that, given careful enough observation, might even be used to deduce the nature of the compressed simulation.

Anyway. Perhaps that's a more interesting tidbit to read than "update's coming! I promise" :) Sometime when I've actually got some time (day off?) I'll be giving this some more reading and thought (in the mean time, anyone who actually knows about these things should absolutely consider schooling me if my understanding is way off the mark :roll:).

Truly, this place we call our universe is nothing short of an exquisite puzzle. I've absolutely no idea what's really going on here, but I feel quite thrilled just to be a part of it all :geek: In the mean time, I'll carry on creating my own little universes. How exciting :D

Re: Week of November 30, 2014

Posted: Tue Dec 02, 2014 7:01 pm
by JoshParnell
Monday, December 1, 2014

Hmmm...let's see...can't reveal the location of the bomber...can't bore you with 'the list'...didn't take any physics breaks today, so can't speculate on the nature of the universe...what's a devlogger to do? :think:

Well! It actually came to my attention a few weeks ago that I missed LT's second birthday (that is, by KS launch date of 11/20/2012). Happy birthday, LT! :D But in reality, you know, LT is actually about 2.5 years old. Sometimes I find it interesting to dig back into old materials and look at where we've been, where we are, and where we're going.

You all keep saying you want screenshots in the devlogs, right? Well...
Image :lol: This is, by all accounts, the oldest screenshot of LT that I've actually got. Hard to imagine that this was back in a day when I was still under the grand delusion that programs should be written entirely in one object file for fast compilation (that's right, what you see there is basically just a lot of header files :lol:). It's also back in a day when I still thought LT was going to be a top-down game. Yikes. It's been a pretty remarkable journey. I'm happy I abandoned both of those beliefs :lol:

You know, I've realized that there's a pretty large historical gap in my screenshots. While I have loads of documented screenshots every step of the way since the release of LTP, there's a rather mysterious gap before that. I know for a fact that this gap is out there...somewhere. One of these days I'll need to dig into the HD of my since-deceased laptop upon which LT was born. I'm sure there are some LT nuggets hiding in there somewhere.

And where we are now? Well, you'll get plenty of that in the video ;) But where we're going? For me this is the exciting part. Only time will tell. I can't wait to see 1.0, both because I'm darn sure it'd make 20.5-year-old Josh proud, but also because...it'll mark the end. Of the beginning, that is :D Sometimes I feel like, for every door that shuts in the world of LT features (i.e., gets brought into reality), seventy-three more open up. Who knows, we might be looking at a lifetime of work here :shock: At least it'll be a lower-pressure lifetime once 1.0 drops :ghost:

Anyway. Waxing nostalgic can be entertaining. Especially when you need to distract the crowd from a stealth bomber :roll:

:wave:

PS ~ Seriously. It's December. I need that day off :shock:

Re: Week of November 30, 2014

Posted: Wed Dec 03, 2014 6:27 pm
by JoshParnell
Tuesday, December 2, 2014

Still don't want to reveal the location of the bomber (*zmmmm*), but I'd also rather not cop out with another birthday celebration :roll: But! It ocurred to me that there's a line of thinking that happened this month that I didn't discuss in the logs. It happend a week (or was it two?) ago when I had that rather nice meditation session.

While I had a lot of thoughts during that time concerning object and item attributes (and how a 'type' could be thought of simply as a particular volume within attribute space), I also thought pretty heavily about fun. Obviously, we all want a fun game :D But I started to think about what exactly makes a gameplay experience fun. No doubt there are a lot of factors involved: freedom to engage in a wide variety of activites, immersion, playability / tight controls, etc. But of course, progression is also a key ingredient in fun. At the end of the day, we all want to feel as though we're making some sort of progress towards one or more goals. In my mind, I split that progression fun into two components: longevity and granularity. Longevity means that we'll be able to keep progressing for a long time before we run out of ways to make progress. In particular, it means that the gameplay supports a large enough spectrum of player progress that one does not quickly make it to the 'top' and then get bored for lack of ways to keep going. Granularity means that our progress is visible at a high enough frequency to keep us interesting and not feel overwhelmed by how long it will take to get to the next step. Together, you might think (very crudely) of this progress as being a sort of ladder. Longevity is the height of the ladder, and granularity is how close together the rungs on that ladder are. Ideally, we would want a really tall ladder, but also one that has relatively-close-together rungs. This way, we keep climbing, with the satisfaction of feeling each new step under our foot and recognizing that we're making progress towards our goals, while having the thrill of knowing that there's a lot more ladder left to explore. Indeed, it's a pretty poor anology for a non-linear game like LT, but perhaps it still conveys the idea behind fun progress.

In LT, of course, the issue of longevity is not really of too much concern. Starting as one person in a ship, with the ability to work your way all the way up to a multi-industry empire, there's not too much danger that most players are going to run out of ladder quickly (and, thanks to the procedural nature of the ladder, one can never truly reach the top). But what about granularity?

Part of the danger of having a fully-player/AI-driven economy populated with procedural goods that span a huge spectrum of value (from single units of ore all the way up to station assembly kits) is that, necessarily, we can't hold the player's hand by making sure that the next step on the ladder is always in plain sight. Indeed, should the player venture into sparse territory, it's entirely likely that they may not have good options for the next rung on the ladder (I'm not counting accruing more credits of course, since credits are only 'hypothetical' progress -- worthless in the absence of a way to convert them into tangible progress). Patient and clever players will no doubt figure out how and where they need to be to grab the next rung. But still, I thought, is there a more accessible form of progress that lies somewhere in-betwen raking in credits and buying the next-best-thing?

This is where the thoughts about object attributes re-entered the picture to provide me with a solution to which I hadn't given much thought previously: modifiable / upgradeable objects. By upgrade, here, I need to clarify that I mean modifying the actual attributes of an object, not simply swapping out a hardpoint. Expanding your cargo hold a bit. 'Overclocking' your railgun to fire a bit faster. Boosting your scanner's resolution a bit. The difference between this and purchasing something new is that modification / upgrades could be thought of as operators on objects, rather than as objects themselves. Concretely, what this means is that they are provided as a service -- making them more accessible, in general, than new items. On the edge of civilized space, you don't necessarily have to find the perfect new transfer unit to move up a rung on your quest to master miner. Perhaps you only need to find a station that offers upgrade services, thereby enabling you to grab a mini-rung on the ladder when you return home with a load full of Dense Limitite ore. A few more watts blazing down the power circuits to your transfer units. No, it's not going to change your life, but it'll at least tide you over until you make it back to civilized space with enough credits to turn those Boringore miners green with envy.

Naturally, questions arise. What are the limits of upgrades? What things can be upgraded? Do upgrades come with an inherent negative, as with research? Perhaps more importantly: is having both research and upgrading a bit too much? Unnecessary mechanic that introduces too many degrees of freedom, or promising opportunity to provide the player with fun choices to make along the path to their goals?

I'm open to thoughts on the matter. Keep in mind that this was a line of thought generated a while back, not a reflection of today's work :)

(Quite a bit more elaborate than yesterday's distraction, don't you think? :roll: :ghost:)

PS ~ Again, I want to emphasize that this view of progress is an intentional trivialization of the true nature of progress in LT (which comprises far more options than just buying the next thing). Here I'm focusing exclusively on the 'stuff I own' form of progress.

Re: Week of November 30, 2014

Posted: Thu Dec 04, 2014 9:49 pm
by JoshParnell
Wednesday, December 3, 2014

Bah!! Can't tear myself away from the code :shock:

I'm so close, really! But I've neglected the item information widget for so long...and with the market in its current lovely state, that's simply unacceptable. No, we don't need full-blown, beautiful details for every item type in LT. That will come in the near future. But for now, I at least need to be able to see the properties of the ore / gun / whatever I'm buying in the detail pane. No, it's not the market's fault that I can't currently do so. It correctly calls into the ItemInfo widget to create what should be a readout of what you're buying. But the current placeholder of ItemInfo -- a name and icon -- is not really sufficient anymore, now that these items are finally exposed and ready to buy. I want to know how fast that darn thing shoots before I lay down my cash. The final part of the market experience? Knowing what you're buying :lol:

It occurs to me that this may sound rather odd, especially to a non-programmer, that such an 'important' thing might be seen as a detail at the end. But indeed, from the perspective of developing the market and the omniview and such, how an item's information is displayed is totally irrelevant (not the concern of this widget). Just as object windows create a bunch of component widgets depending on what components a game object contains (health, cargo, hardpoints, etc.), thereby delegating the work that is not solely its domain, so does the market delegate the work of 'rendering' (so-to-speak) the description of any given market product. Time to make that delegate do a bit of work, yes?

Not looking for anything fancy here. Text will do just fine. But I really do need to know what I'm buying :ghost:

I'll also admit that I lost a tad bit of time today to the proverbial grocery runwas. I've been running on nothing for the past week or so, praying that 'today will be the day!' and I'll finally be able to go get some more food :shock: Alas, the headwind is strong and the bomber rushes for no man :ghost: But with a re-stocked fridge and, perhaps most importantly, a new supply of diet coke with lime ( :monkey: ), the nights are once again limitless.

:wave:

PS ~ I'm seriously getting antsy. I want this blasted update to come out, because the amount of ideas that I have to suppress while I'm wrapping it up is painful. There's so much in reach and so much that can and will happen after this update...but for now I have to stay on target :ghost: Just today, for example, while working, my mind was absolutely tantalizing me with ideas about the procedural dialogue generator in LTSL (for mission descriptions, AI communications, anecdotal item / object info, etc), and how it can tie in with AI personality. And I was utterly powerless to pursue them :cry: I really can't wait for next month. Octember has truly lasted too long!! But we will conquer it soon enough :cool:

Re: Week of November 30, 2014

Posted: Fri Dec 05, 2014 8:19 pm
by JoshParnell
Thursday, December 4, 2014

Yes! :geek:

Really feel good today. It's all coming together. Really. Basic item display is functional. I can see what I'm buying. What a technical triumph :roll: :ghost: Like I said, nothing fancy. Text, but functional. Very eager to dig deeper in the near future. By the way...getting to see all these item names in the market has reminded me of how badly I need to work on the name generator :lol: Haven't touched it since LTP :oops: Many ideas about how to tie it in with the procedural description generator. Like I said...so excited to move on from 21.

Speaking of which, is going to be...soon!! :ghost:

(I know, 'soon' literally means nothing at this point coming from me, which is why I'm allowed to say it now. But still...soon :lol:)

Sorry for shortness of devlogbreath today. LT calls. She's antsy to make an appearance. And I'm antsy for that day off.

:wave:

Re: Week of November 30, 2014

Posted: Sat Dec 06, 2014 10:00 pm
by JoshParnell
Friday, December 5, 2014

Yikes!! The time, the time!!!

Well...sorry guys but I'm...erm...a bit busy right now... :geek:

(Drat. I knew I wouldn't be able to resist. Well, I suppose it is true what they say: stealth never works in space :roll: And to think how much I payed for that blasted stealth bomber :ghost: )

See you soon ;) :squirrel:

Re: Week of November 30, 2014

Posted: Sun Dec 07, 2014 8:22 pm
by JoshParnell
Saturday, December 6, 2014

Grr. :x One of those days man, one of those days.

So, as you may have picked up on, at the last writing of the devlog I was indeed starting filming. All was going great. Until I noticed an AI fighter blazing past me at nearly the speed of light :shock: I figured, you know, I'll play that one off and investigate later :roll: Now is not the time for perfection. Kept filming. A minute or two later a frigate did the same. Except, you know, it's a frigate. Severely more visible :ghost: Then another. And another. By now it was clear that this couldn't be ignored. Stopped filming, and it's been one of those days ever since :|

Apparently I didn't test warp rails rigorously enough, despite them seeming to work just fine until now (universal law: something will not go wrong until it is the moment of maximal detriment, at which point, it will go as wrong as it can possibly go). In particular, it would seem that the large number of AI ships in the system coupled with letting the system run for longer than my usual testbeds do has uncovered a problem. The problem lies in rail allocation, and how the AI behaves when rail allocation fails (the rail is full). Seems they manage to get a rather luxurious free ride through space (how nice, AI exploiting bugs :lol:)

But why would the rail be full? Herein lies the real problem. Lane merging (which happens upon exiting the rail) doesn't work as intended, apparently. Let me be more clear: until about an hour ago, it didn't work as intended :geek:

It does now. So that's good. Quite frankly, I shouldn't be too surprised about this. The rail allocator isn't a trivial piece of code and it's new. But still. I need to be more careful about testing over long periods of time, of this much I am certain :think:

As of now I'm tying up the final issue: handling AI behavior when rails are full. This one actually isn't a bug so much as a missing piece of logic. I didn't implement handling of failures to 'use' a navpoint in AI navigation code yet. Time to change that as well. Don't want to see crazy, hyper-magic-drive frigates in this video.

Ok. *Turns on relaxing music and tries to breath slowly* Better day ahead, yes? Yes. As I sometimes say about days like this, it hurts me more than it hurts you :ghost:

(Thankfully, it has been my experience that negative days like this usually precede positive ones. Unless it involves house repairs. In that case, all bets are off. Luckily, this one didn't. One can only hope that karma will now pay its due...)