Sunday, April 7, 2013
Summary
This week, my goal is to transcend single-tasking. So far, I am off to a good start. You might call it the quantum week, wherein "Josh" no longer refers to a single state, but rather, a linear superposition of infinitely many possible states. There is the guy that is lining up distribution, the guy that is working on the EULA and legal side of such an early release, the guy that is tending the command interface's rather demanding needs, the guy that is trying desperately to mend all of the minor bugs that have worked their way into the game over the months, and, of course, there's the guy that just wants you all to have some fun with this darn thing The current Josh cannot be adequately described by any of the aforementioned, but must be understood to be a probabilistic melange of each, only confined to a single activity by the act of observing and measuring him, but in reality, is strung out among millions of simultaneous tasks. I guess this boils down to a hopefully-entertaining way of saying that I am stretched very thin But it's all coming together, and I'm as excited as you are to share LT's first breaths with the public! And nervous. I hope you like the result of the past many months of my life
Among the various tasks of the day, whose details I will refrain from boring you with in entirety, I did start giving a little love to that thing that they call commanding. There's a startling amount of work left to be done on the RTS side of the game. I guess you couldn't expect me to have that perfected at this stage though. But I have implemented a basic formation selector in the command interface today, and am working to get the formation system back into shape. I had already implemented formations in the most basic sense, but now it's time to really get them right. It's actually very, very difficult to do correctly without cheating the physics. To make the AI capable of maintaining a precise formation while restricting it to using only the same thrust / maneuvering facilities as the player (i.e., only what the ship is capable of) is definitely a tough problem to crack. Actually, this is also the hardest part of combat AI. In general, AI maneuvering is difficult when doing it the "right" way. I feel that I still haven't found the right insight/simplification that I need to make it simple. I need to think about the math of it a little more, because the problem really just comes back to math, and nothing else. The problem that I am running into is not a problem with AI, it is a problem with the mathematics of a damped spring system. A spring system that is not damped enough will overshoot its target, and possibly oscillate several times before finding equilibrium. This is a problem with any damped system driven by a restorative force. It's not totally clear to me yet how I can avoid oscillation in all cases, which is something I need to do to produce realistic AI behavior.
Speaking of mathy things, I think I finally solved the 'target lead' equation today. Embarrassingly, I am currently only using an approximation to determine where the player needs to shoot in order to hit the target. Not cool. But I tried several times to solve the problem of "where do I shoot to make sure that my projectile collides with that target" and failed. Which is sad, because it seems like a very easy problem to solve. Finally I was able to grind out what I believe to be a correct solution today, and it ended up being a little more complicated than I thought. It is a quadratic equation, which I guessed from the start, but it involves some trigonometric fun that I was not expecting. Maybe I have formulated it poorly, because trigonometric fun can usually be expressed more elegantly in terms of vector math...but I am having trouble seeing the simplifications here. Still, this is a promising result, and I hope that I can implement it soon to improve the accuracy of both the AI, the targeting computer, and the lead indicators!
Let's hope for some more progress on fleet command tomorrow
Also, let's hope that I get a chance to, one of these days, write a dev log that is actually interesting in some way again
Hour Tally
Coding: 6.86
Internet: 1.77
Testing: 1.59
Thinking: 0.69
Total Logged Time: 10.91
Post
Sun Apr 07, 2013 11:31 pm
#1
Week of April 7, 2013
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford