All Talked Out
You know when you've talked too much when your throat hurts after a meeting! I tried two glasses of Guinness but it only helped dull the pain of life as I know it. All in all the meeting went very well again and everyone was happy with the demo and the planned progress for this week.
Progress Status
As customary, I did some Reloaded work over the weekend. Nothing on Saturday to recharge and 14 hours on Sunday (due to a stubborn coder refusing to sleep). The demo produced showed three enemy characters able to chase you down, reload, find cover, track you around mountains, climb ladders and perform a variety of basic animations including a cool death sequence based on the direction of the shot and the posture of the character.
Other incidental features also had to be created for the demo such as a relatively fast physics and AI back-end simulation, weapons for character hands, player weapon combat functionality, ducking and health refinements. Most of it needs optimizing (as I see some great optimizing opportunities now it's coded) and some needs fleshing out like a more complete weapon system and re-factoring of the code so resources are allocated based on offset values from a suitable data structure not hard coded into the module as they are now.
Performance Status
The demo runs nicely at 60fps (which is VSYNC capped for smooth 60hz refresh) and no one module is draining the performance. I have identified improvements I can make to the physics by replacing triangle mesh concave meshes with low LOD versions to improve speed and save memory, but also to write a small physics editor which can entirely replace triangle mesh dependence with axis aligned bound box positions which will substantially improve performance and memory usage further but will require manually editing each asset as it goes into the library. It's the same system used in many AAA games and the extra performance gain is well worth the pain. On top of all this, I have not yet activated the multicore features of Bullet which looking at the API is a very simple process indeed, and will speed some great speed-ups for users with duel and quad core machines.
AI is currently draining due to the massive amount of occluders required to cull out all the mountains from the available paths the characters can follow. I have an idea to pass the improvement of this system out to the community so some bright button can perform the same DarkAI obstacle generation for an arbitrary matrix height field with resorting to blocks (and lots of them). Something that traces perfect polygon obstacles around the offending hills.
Rendering performance is hampered by lots of overdraw and hungry shaders, but the new Depth Occlusion system will be getting a new front to back draw order system coded and hierarchy system for visibility checking of occluded objects which means virtually no serious overdraw and hitting the shaders a lot less. This should result in some sizable performance gains.
The last performance bottleneck is the core DBP source code itself, which grows as features are added. I have already started the principal of moving complex code over to the DBP modules themselves which is pure compiled C++. Two such examples are the depth occlusion and LOD subsystem which is done entirely inside the Basic3D module of DBP and costs no DBP cycles to operate.
Granted, Reloaded won't run well on a barely adequate DX9 card, or an ancient machine running basic kit, but I am hoping some well placed tests and then scaling within the code will overcome these challenges.
Signing Off
Due to a 3AM finish and 7AM wake-up call, and not much sleep in the interim I am getting to the point where my brain will not function well beyond this blog. My plan is to answer all the emails, sort out any pending business for today and ensure my back-ups are in place, then have an early night. It's just coming up to 6PM which feels ridiculously early to sleep, but when you're tired you gotta sleep!
I can report that some juicy emails are coming in, showing some new modules in progress such as a cool Fire module that's coming along nicely, new RPG weapon from Mark which is fiendishly cool and some pre-production artwork for the Reloaded logo and animating intro logo too, all very encouraging as more final artwork comes in!
I have a busy four days ahead of me as I pack up on Saturday to attend IDF in San Francisco next week. Unlike many previous trips, this time I am attending purely as a coder attending lectures and being social with my fellow developers so if you're in the neighborhood I will be tweeting all the time I am there. There will be plenty of tweets about IDF from other bloggers but I will be tweeting about things that make sense from a Reloaded perspective. Should be good fun too! Until a very long and busy Tuesday, good day!
With regards to pathfinding in, around and over mountains, valleys and buildings, Polyvox (http://www.volumesoffun.com/polyvox-about/) uses a 3D A* algorithm. I've never tried implementing such a thing, but I can imagine how it would be done. I can also imagine that if it were not very well optimised, it could be quite slow.
ReplyDelete