Enlarging the world

Published November 07, 2010
Advertisement
There have been very few changes to the features of Nostromo recently. I have tried a number of ways to optimise the performance and whilst the handful of micro-optimisations I have made have boosted the frame rate a little none of the higher-level optimisations have done much. I did try, for example, storing a bounding box around each BSP node and ignoring it (and all its children) should this bounding box fall outside the field of view; the additional code to check the bounding box ended up halving the framerate rather than improving it.

Nostromo 3D engine????Nostromo 3D engine????Nostromo 3D engine

Nostromo 3D engine????Nostromo 3D engine????Nostromo 3D engine
I have, however, enlarged the level quite considerably. A staircase connects the central room with the pit to a rather strangely-shaped arrangement of walls (again copied from E2M7). The room with a pit continues to cause issues; looking across it towards the room with the small central staircase forces the engine to step through a very large number of convex sub-sectors and check many walls. This drops the frame rate down to about 3 FPS on a TI-83+. However, this is specific to that room; the newly-added rooms have not noticeably affected the frame rate in other parts of the level.

Another minor improvement is that the engine now supports different sprites. I'm not too good at drawing them, as you can probably tell from the above screenshots, but at least the code is there to support them.

You can download a TI-83 and TI-83+ binary to try the demo on your calculator (please back up any important files first). Alternatively, here is an animated screenshot.
0 likes 4 comments

Comments

shaunak
I have been following this series on you journal for a bit. I find it very intriguing and interesting.

I do not fully well understand this yet, but this has got me very interested in computer graphics, and I hope to learn, and perhaps one day create half as interesting a project.
November 08, 2010 01:28 AM
benryves
Thank you! The BSP Tree FAQ may contain some useful information on BSP trees. Working with the DOOM source code also taught me a few tricks.
November 08, 2010 05:47 AM
Extrarius
If you don't have Michael Abrash's Graphics Programming Black Book (Special Edition), I suggest getting it. It uses x86 assembly, but it is _full_ of tricks and optimizations relevant to rendering engines from Wolfenstein 3d to Quake. Despite the fact that many of the tricks are specific to the x86 architecture and instruction set, I'd be surprised if you didn't find something useful in there for this project. However, you'll definitely need to get familiar with x86 assembly to get the most out of the book (which shouldn't be a problem since Intel offers the instruction set books as free pdfs).

Edit: Using google, I found Graphics Programming Black Book here on gamedev in pdf form, so I guess you don't even need to buy the book..?
November 10, 2010 02:46 PM
benryves
Quote:Original post by Extrarius
If you don't have Michael Abrash's Graphics Programming Black Book (Special Edition), I suggest getting it. It uses x86 assembly, but it is _full_ of tricks and optimizations relevant to rendering engines from Wolfenstein 3d to Quake.
It sounds great — thank you very much for the recommendation! [smile] I've read some of his articles before (and found them interesting, even if not directly relevant to anything I've been working in) but not this particular book.
November 10, 2010 07:10 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement