Saturday, February 8, 2014
Lots of random small things today, trying to push forward on multiple fronts at the same time (a strategy that I'll explain at the end)
I've generalized the HUD workspaces today so that subsystems are automatically queried to see if they want to expose a workspace, and if so, automatically added to the workspace set for the HUD. This means you'll automatically get new workspaces when you install equipment that provides them. Heck, right now I could even install multiple scanners and get different scanner workspaces with different properties. Neat. I am about to start a research workspace, which is why I implemented this in the first place
I'm also trying to decide exactly how I want to treat transfer units in terms of controlling them. In particular, do I want them to have a dedicated workspace, or do I just want them to function like most weapons? I guess I should probably have a workspace to make it fun. But it seems this workspace would also need to tie in with the scanner, as it would be a bit tedious to have to keep switching back and forth between the scanner and transfer unit. Or...maybe scanner and transfer workspace are actually the same? Need to give it a bit more thought
Now, don't hate me, I only sunk two or three hours into it - but I let Graphics Josh out for a very specific purpose today
I wanted him to write a good SSAO shader to see if there's any chance that I could replace my per-vertex AO, thereby freeing me from the constraint of having highly-decimated meshes. No, I'm not going back on my love for scalar fields, but I'm not particularly loving the way that they're triangulated right now. It's going to really start bugging me when I try to build large stations (you see, this was relevant to station work!!), as triangulation of hard-edged and highly-detailed surfaces is notoriously difficult. The math underneath it all (the fields) is so beautiful...but converting everything into thousands of triangle shards...ugh. Not beautiful. I understand why modern graphics hardware is built around triangles, but that doesn't stop it from sucking. The biggest barrier between me and a different mesh representation is my ambient occlusion, which looks so freaking good I could never abandon it if I didn't have a quality replacement. Well, graphics Josh did a good job. In a few hours he got the best SSAO I've ever been able to get before. It's not Crytek quality, but it's pretty darn good
Unfortunately, this was enough for me to answer the question: no, it cannot replace my AO. Compared to my current solution, SSAO doesn't even get close. Add to that the fact that it is
incredibly slow compared to most other rendering operations, and I just can't stomach it (yeah, I had forgotten how expensive SSAO is..). For now I remain tied to these triangles
Ah well. Someday I'll think of something. LT2 perhaps.
Bit of an odd tidbit, but I spent some time thinking critically about development efficiency, work ethic, and all that stuff...trying to get a more thorough handle on it. I wrote down some equations as best I could to try to approximately understand the way that my efficiency works and how it varies with time, with the rate of problem solving, the difficulty of the problem being solved, etc. Basically, what I came to understand is that, at least in my case, a really difficult problem can have the effect of breaking 'flow,' (or 'focus,' 'interest,' 'motivation,' etc.) What this led me to realize is that my way of working is probably wildly inefficient. I have a tendency to not yield to a problem until it's solved. We've seen this happen many times throughout development. No doubt this persistence is part of what makes me a strong problem solver, but maybe also something that gets in my way sometimes - rather than taking a sledgehammer to the same problem over and over and over until it collapses, I should try mixing in some smaller problems to build up my focus, then switch over and give the harder problems a good thwack, then come back for a while, etc.
I think difficult problems pose a serious threat of 'negative feedback' - e.g., they decrease your focus, which leads to lower efficiency, which in turn continues to decrease your focus. Contrast that with a smaller problem, where the opposite is true - you continue to pick up speed as you blow quickly through it. How many times have you heard me say "awesome day of graphics
"? That's because graphics is so easy compared to all the other problems I face in developing LT...after a day of graphics work, I'm usually on a peak in terms of motivation and focus. Contrast it with some of those AI days way back when, and I think you'll see a really notable difference in tone. Graphics days usually feel like huge wins (despite the fact that they're small in the grand scheme of things), while the harder, conceptual days feel like trudging through an endless swamp of difficulty.
So, from now on I'm going to try to keep more mini-post-its on the monitor at once so that I can have a "working set" of problems between which to switch
Ideally, I guess this set would include a few small problems and a big one. I'm interested to see if I can tell any difference between this strategy, in terms of how "in the zone" I am
(Now THAT'S a dev log, folks
)