Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
quake 1
#1
Could someone explain to me how John Carmack managed to get quake1 to run at 40fps, 640x480 on a 100mhz computer? (looks in Blitz's general direction). Please don't answer something like with great skill...
am part of the legion of n00b. We are numerous if dumb. We will enslave you all!
Reply
#2
with immense skill :p. nah bsp trees of course which are just 1/2 of the performance though. but given the geometry of quake levels it's a big part of the performance issue. the renderers are of course highly optimized too ( no use of memcopy :p ). there's a couple of abrash articles that explain why quake performed like that. check gamedev.net for ramblings on the quake engine or something like that. or search for michael abrash
quote="NecrosIhsan"]
[Image: yagl1.png]
[/quote]
Reply
#3
I did. I read "Ramblings in Realtime" multiple times, gave me ideas on how to make my lighting engine. But still, even with zero overdraw for the world, and the lightmaps, I still find that quite a staggering figure... by the way would you happen to know how to split a polygon based on another polygon? I used bsp line segments for my little toy, but splitting polys in 3D for a 3d bsp tree is a whole new game for me... any tips?
am part of the legion of n00b. We are numerous if dumb. We will enslave you all!
Reply
#4
I imagine they could have used quite a bit of assembly as well but I dunno - never looked at the source before. :lol:
Reply
#5
yep, carmack does use some asm
url=http://www.random-seed.net][Image: asylumsig.png][/url]
Reply
#6
Quake 1 uses a combination of BSP trees and potentially visible sets (PVS) to do render the world quickly. The PVS data stores the set of potentially visible BSP nodes from each other node. With a normal BSP tree you still have to render things that are in the line of sight, but drawn over by closer objects. The PVS sets eliminate alot of this problem. PVS are calculated when the level is compiled and can take a huge amount of time. IIRC, Id have said that some of the levels in Quake 1 took several hours to compile on their four cpu server.

Quake also makes extensive use of caching and sorting techniques to allow things like texture maps to be found and loaded quickly when needed. I don't think the lightmaps have too much impact on the rendering because, again, they are calculated at compile time (static lighting) and become gray scale texture maps representing light levels.

Quote:yep, carmack does use some asm
Id only really used assembly code in the days when they were making DOS games (upto Quake 1) and it was only really used for coding the low level rendering and IO stuff. GLQuake and the other newer Id games now use libraries for this and contain very little, if any assembly code.
esus saves.... Passes to Moses, shoots, he scores!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)