Ignoring the word Octree for a moment, because I don't really understand any word that isn't in daily use of the un-cerebrally gifted, and looking more directly at your problem:
The most basic method of optimisation is to hide what is off-screen so the engine doesn't have to render it. Call this code every few frames for example:
for obj=1 to 65535
if object exist(obj) then if object in screen(obj) show object obj else hide object obj
next obj
Progressing further than this are various methods either of pre-generating what objects are visible at a given location such as in BSP.
Or there's the method I use in Terrascape, which is to group objects together and check whether the group is within visual range.
Even the simple code above could be optimised further by checking certain object number ranges at different frequences - based upon what objects are in those ranges and what you're doing with them.
Ultimately the method of optimisation that you use is very much dependant upon the games design - the type and quantity of objects. When you are optimising every last tenth out of your program every detail inter-relates with another.
Is it faster to use a .x saved plain or make one within DBPro and configure it's object settings manually? Once you've worked that out what ramifications does that have on the engine and the way the object is handled - must I adjust the collision code? Is that change now slower despite the original change being faster?
If programming the game itself along with all the special effects and artificial intelligence etc. is the day job of programming a game - then it is the optimisation that is the art.
There really is no hard factual method for saying this is the way to solve a given problem - the only answer is experimentation and through that your resulting experience of what works and what doesn't.
Optimisation is why I can load 500,000 objects into a single scene - and a new-comer gets slowdown when they load 300, it's not because i'm a particularly talented or a genius - but because i've experimented in DB long enough to have tried many different approaches to the same problems and seen which have worked best.
Sorry i've no better answer for you than that.
Pneumatic Dryll
