Return to “[Archived] Daily Dev Logs, 2012 - 2015”

Post

Week of August 18, 2013

#1
Sunday, August 18, 2013

Summary

Another highly-practical day! I think yesterday's graphics marathon left me too excited to quit :)

So today I continued to dive into the wondrous world of asteroids, fog, jump holes, and so forth. Tweaking, fixing, upgrading, slashing, ripping, flipping, and whipping. :monkey: Asteroids look even better, as does fog. And jump holes. And the holographic command interface display. :D

Oh, also had to sink a few hours into fixing the Mac build thanks to Intel drivers being absurd and not supporting the minimum requirements set forth by the OpenGL spec (this particular requirement is so old and outdated it was probably in the spec before I was even born :eh: And we're still not supporting it in 2013....!?!?! :x )

Ok, I think it's time to get back to the conceptual side, yes? And perhaps some more quantum mechanics rambles as well.

Just kidding.

I hope.

:shifty:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of August 18, 2013

#2
Monday, August 19, 2013

Summary

Meh, a bit of a mediocre day. I tried to do both practical and conceptual in the same day and didn't really make great strides on either end.

I spent some time trying out the XCode profiling tools for the first time today, since the Mac version has been suffering a bit at the hands of these new graphics (Mac users don't fret, keep in mind that my Mac is running a very weak graphics card!) I was strongly impressed with the tools ~ I never knew Xcode has such a sophisticated performance toolkit. Awesome! :D It led me to a few optimizations, but not enough :( I fear that I really am going to need a rewrite of the scenegraph code to fix these problems. I really need to be using hierarchical culling...brute-force is killing me with the number of asteroids that are on-screen these days! I'll hand that job off to intense-performance-coder Josh whenever I see him again ;)

On the theory side, I started to tackle one of the larger remaining challenges: location. Location is such a weird thing. It's odd to me how much of a challenge it seems to pose. I've found most aspects of abstract simulation to be easier than I expected...but location is just...unyielding. The fact is, if you're simulating a large group of objects as one, they can be spread throughout many locations in space - or worse, many locations in many different systems. Taking an average over locations does not suffice. It really leaves out too much critical information. Even some kind of simple distribution seems insufficient. A distribution over systems seems a reasonable approximation (14% of this object is in system A, etc..), but then what about the actual continuous spatial location? It's a much harder question, and the player will no doubt notice severe aberrations if and when they occur. Need more time to solve this one. :(

Also had another quantum-mechanics-related breakthrough today that I won't discuss until I'm feeling more coherent ;) But I think it's going to change my view on several things - for the better!

Not really sure what I want out of tomorrow. I'd rather focus on one side or the other..but...hard and boring theory...or flashy and exciting applied stuff...arg...the choices... :)

...ok, yeah, I think I answered my own question. Let's have a flashy day :squirrel: :squirrel:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of August 18, 2013

#3
Tuesday, August 20, 2013

Summary

Well, I guess my last dev log didn't leave much question about what I intended to do today ;) Yep, I let myself have a bit of a flashy-and-fun day!

Nothing particularly big, but plenty of little excitements, if you'll allow me to rattle them off:
  • Better shading model for asteroids (again!??!? Leave the blasted things alone already!! :shock: )
  • Better bump mapping for all surfaces
  • Better graph widgets and correspondingly-sexier FPS readouts :D
  • Better holographic shader for command interface
  • Correlated system background color with star color (FINALLY), leading to much more "natural"-looking system colors :D
Ah, shiny days. How you make my heart sing. Anddd I believe, since I've had my graphical fun, it's back to the conceptual grind tomorrow :shock: ...

:monkey: :thumbup:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of August 18, 2013

#4
Wednesday, August 21, 2013

Summary

(Warning: Yeah, it's one of those days. No quantum mechanics this time, but I can't promise it will be much better... :oops: )

Ah, really a fantastic day. I attribute the large spike in mental throughput to the fact that I finally bought a nice, big whiteboard for my room!! ;)

I've gone through so many different beliefs about location / abstraction / events / power allocation in one day that I'm almost afraid to say anything for fear of being able to prove myself wrong (again) within the hour. But, all in all, I'm definitely closing in on something. I don't know what it is, but it's something :shock:

The beginning of the day saw me continuing to think about location as a distribution. First I explored continuous distributions, thinking about simple ways to model general probability functions to "approximate" location. Then I stepped back and noticed that continuous space really isn't important, which led me to the belief that location is actually a distribution over the object graph. Who cares if you're floating in space? What we really care about is what object you're near to. But that wasn't satisfactory either, so I moved to the belief that location is a distribution over the edges of an object graph. You're either at A, B, or somewhere in between. Showing a bit of respect for continuous space now :D

That was a pretty good model, in retrospect. It might have even worked. But still the notion of spreading onself over many nodes in a spatial graph is tedius. How do you know which "pieces" of yourself have which propeties? Kind of defeats the purpose of abstraction to be asking questions like that.

So I came to the conclusion that "splitting" is a necessity. If you're an abstract object and you need to be in two places at once, you've no choice but to slice yourself in half. This led me to an exploration of "divergent forces" and how events can actually "tear" an abstract object into pieces if they pull at it in different "directions." Kind of reminds me of Voldemort...you know, if you want to put your soul in a bunch of different objects in different places, you need to tear it a few times first :shock: But how do you decide where to tear it and how big each piece should be? I don't think they ever discussed the solution to that one in the books...shame :cry:

Splitting sounded like a complex nightmare, but, luckily, I was saved towards the end of the night when I realized that splitting is really just power distribution. This led me to a new formulation that doesn't require splitting (thank goodness), as well as yet another way to understand location! I've been trying to see location in a similar way to other states. But I realize now that it's not. Location and time are both dimensions, and power allocations are made with respect to a dimension!!! So we can actually understand location as governing the start-up cost of allocating power towards an event. Whoa!! :crazy:

I really think I'm onto something here. I'm exploring the possibility that location is more or less neglected in abstract sim, and superseded by a notion of "allocation time" - i.e., trading with a far-away station requires more time to re-allocate the "cargo power" to that (far-away) event. This is a really neat idea, because it eliminates so many complexities. It also boils everything down to an emphasis on interactions. Continuous space doesn't matter, even an object graph doesn't matter. What matters is where you are relevant to the interactions in which you're taking place. I have a really good feeling that this is the droid I've been looking for :D

With today's great progress, I may need another conceptual day...honestly I'm more excited to finish this sequence of thoughts than to do something "flashy" :)

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of August 18, 2013

#5
Thursday, August 22, 2013

Summary

Tough day..I tried to ride the waves of the mental zone, but it seems that the world just didn't want to yield many insights today. Instead, it decided to throw a few more tough problems into the mix :problem:

I was happily finalizing the rest of my location / power / event architecture (yeah, I know, all these words I've made up all at once...it's like...is he even actually working on anything? :P I promise they have meaning!!), rolling through several tough problems, when an even tougher opponent reared its ugly head: mobility. I didn't realize it before, but some power is mobile and some isn't. You can't use the cargo space in your manufacturing station to make a trade run in some other system. Even more extreme, you can't use the massive ion cannons on the surface of your planet to take out an enemy in another system. May sound obvious, but conceptually, it's a tough problem for abstract sim. It implies a serious and unresolvable difference between a ship and a station. :think:

Suddenly, power has properties. Ew...don't like it at all. :( Is there really a difference between "mobile power" and "stationary power"? I'm exploring that right now, but I fear that, for the purpose of accuracy, the answer must be yes.

In the face of these serious dilemmas, I can only say: I need a shiny day :D

The whiteboard can wait a day longer for a solution, don't you think? ;)

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of August 18, 2013

#6
Friday, August 23, 2013

Summary

Hmm...I guess my definition of shiny has changed a bit since the beginning of all this heavy simulation work...because when I thought to myself, "what kind of shiny things do I want to do today?" The answer was, of course: "speed up physics and culling with a hierarchical acceleration structure!!" :D Hey, sounds pretty shiny, don't you think ;)

I've never really taken the time to delve deeply into AABB trees, which is a shame. Well, I mean, I know what they are and how to use them, but constructing them is really the key. Today I finally sat down and worked my way through the construction phase. Actually, I ended up implementing a structure that's a bit more interesting than a traditional BVH, and, as best I can tell, is called a "bounding interval hierarchy." When I finally wrapped my head around everything, I couldn't believe how simple it really is. The querying code (checking to see if a given piece of space overlaps the hierarchy) took about 20 lines of simple code :shock: Wow!! :thumbup:

As for construction, I have the algorithm but haven't implemented it yet. It seems pretty simple :D

So who cares about all this? Well, I care!! Practically-speaking, this means more rendering power, which means more objects floating around in space ;) When I finish, I'll also try out using this structure for collision detection and see if it yields any speedup. Although I don't think it will beat my current scheme, if it does, we may be looking at faster collision checks and, consequently, larger scale differences between objects! That's been the subject of some heavy discussion here on the forums, and my answer has always been that the problem with scale differences is collision detection. But if we can make that a bit faster, we can push the scale further ;)

On the outside, it might not look like a shiny day, but to me it feels like one :lol:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of August 18, 2013

#7
Saturday, August 24, 2013

Summary

Sadly, I got hit pretty hard today and yesterday with a cold of some sort :( Today it was worse and my brain felt way too fuzzy to do anything "real"...

So I ended up doing the most mundane and simple thing imaginable: cranking up the warning level on gcc and trying to rid the codebase of all dangerous type conversions :geek: I've been meaning to do that for a while, but it's super tedius work - perfect for a sick day :D

If you ever do want to really know the meaning of pain, I recommend the -Wconversion and -Werror flags at the same time. It's funny: without -Wconversion, gcc is actually way too lax about type conversions. Like, dangerously so. MS Visual Studio is a lot better on that end - I would say VS gives the "right level" of warnings. On the other hand, when you turn on -Wconversion, things go from being all unicorns and daisies to being Satan's minions and the fiery core of Mount Doom. With that flag, the compiler is significantly more strict than VS :shock:

Not sure where tomorrow will take me, but maybe with a good night's sleep I'll be able to fire up the old noggin again :D Really need to get in gear here for the end of the month!

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of August 18, 2013

#8
Week Summary

General Sentiment

Hmmm, between getting sick towards the end of the week and working on a lot of small things towards the beginning, it just didn't feel like a great week. The graphics are looking better (as always), and abstract simulation is getting ever-closer to completion. Still, it would have been nice to have a major breakthrough or two on one of those fronts.

Oh well, let's have a strong finish to the month! :D

Major Accomplishments
  • Improved lots of asteroid-related graphics (again!)
  • Improved cleanliness of codebase with respect to type strictness
  • Started to tackle the problem of location with respect to abstract simulation
  • Started to implemented BIHs for faster occlusion culling (and potentially collision detection)
  • Came up with three-stage cost model for abstract events ("allocation" and "deallocation" time as abstraction for location)
  • Fixed the Windows build so as to avoid last-minute breakages like last month :oops:
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Online Now

Users browsing this forum: No registered users and 2 guests

cron