It has been a busy week of tweaks. I'm working on the trailer, so I'm having to fix a bunch of little things to get Miranda looking her best for recording.
The ATV is the star of the first shot of the trailer, and it needed a bit of work. Previously it had exhaust, but I was never really happy with the look of it. I added wheel dust which looks pretty great, but that made the exhaust look even worse, so in the end I removed it.
To record the trailer, I have a special camera I call the CineCamera. One of the things it can do is rotate around units which immediately showed a little problem with the shroud. Normally players can only see the shroud from the south so Miranda only renders 4 sides of each shroud cube (it's actually more complicated than that, but I'll save that for another time.) The CineCamera however can see the shroud cube from the north which looks a bit unattractive. Adding the fifth side (temporarily) was easy, and now the shroud looks its best for the trailer.
As the ATV was driving I noticed that at the end of every segment in the path it was following that the ATV would pause briefly. This is even more noticeable when the CineCamera is following the unit, the whole scene just freezes for a moment. I could have simply edited that out with Sony Vegas, but it was ugly and needed to be fixed. I use flowfields to steer the vehicles in the game and those are calculated for each path segment. I discovered that the system that prevents the flowfields from eating all available CPU was causing the delay. Instead of calculating the flowfield immediately, it would wait for a moment before calculating it. Once I fixed the flowfield to calculate right away, I was disappointed to see that there was still a short delay. That turned out to be the game's update loop. I modified the game to schedule an update immediately at the end of the current path segment which got rid of the last little delay. Units are now driving smoooooth.
Next I needed a way to clear and restore the shroud at any time on the client. (Sorry, that only works for Admin accounts.) As soon as I added that, I discovered that the code that updates the map and shroud renderables as the shroud changes was super, super slow. It dawned on me that the shroud could be the cause of the mysterious seconds-long pause that sometimes occurred after login. I spent most of a day optimizing the shroud update and by the end it was fast enough (at least for the current size map.) I also discovered that if the player logged out and then in again that the shroud was not being reloaded properly. I fixed that, which I think should also fix most of the general shroud weirdness I had noticed while playing the test weekends. If you played Miranda on the test weekends you may have noticed the shroud getting blocky or re-shrouding areas you had already explored. This is caused by the server being limited by the amount of memory it can use to store the shroud data. Since I was working on the shroud anyway, I also modified the memory limiter so that it will never re-shroud blocks.
The last thing I worked on this week was explosions. I had some spiffy particle animations I bought recently so I wanted to add sprays of smoke and fire to some of the explosion effects. To support that, Miranda needed the ability to orient particles based on their velocity vector. I couldn't find a good example on the net (all the examples I found turned out to be wrong.) I worked out what I needed to do, but actually getting it to work was a tedious exercise in trying every possible permutation of the mathematical operations until I found the one that worked the way I wanted. Once I had that working I spent a full day trying to get the smoke sprays working, but in the end I couldn't make one I liked. I did make a nice screenshot of Dememtors though. After that I added some nice new elements to the existing distant explosions as well as a nice looking new distant plasma explosion. Something I've discovered working on the art for explosions is that some explosion effects look good close up, and some really only look good far away.
We were unable to retrieve our session cookie from your web browser. If pressing F5 once to reload this page does not get rid of this message, please read this to learn more.
You will not be able to post until you resolve this problem.