4 ms·
For Crash Bandicoot (1996), Naughty Dog sidestepped the entire VSD performance problem. Since the camera is on rails and only moves forward and back, they pre-c
by Nition 2y ago
For Crash Bandicoot (1996), Naughty Dog sidestepped the entire VSD performance problem. Since the camera is on rails and only moves forward and back, they pre-calculated the visibility for every position and stored it in the game's data. That meant no visibility calculation needed in real time at all, and they could do it per-pixel. As a result of that and some other brilliant tricks, they were able achieve probably the best graphics on Playstation.
- mh- 2y agoThat's a very cool example of doing the "inelegant" thing and it just being objectively better. Am always on the lookout for these anecdotes, thanks!
- Nition 2y agoIn the same game, for character animations, instead of just using bones like others were doing - often resulting in some big distortions with low-poly characters - they set up per-vertex animation, letting the artists manually position any vertex every frame. Then wrote a custom compression algorithm in assembly to store it.
- knome 2y agoNot to mention actively streaming levels from the disk while you were playing them. The whole thing is a great story. https://all-things-andy-gavin.com/2011/02/02/making-crash-bandicoot-part-1/ https://all-things-andy-gavin.com/2011/02/02/making-crash-ba...
- Nition 2y agoYes! And the best part of that feature: > Andy had given Kelly a rough idea of how we were getting so much detail through the system: spooling. Kelly asked Andy if he understood correctly that any move forward or backward in a level entailed loading in new data, a CD “hit.” Andy proudly stated that indeed it did. Kelly asked how many of these CD hits Andy thought a gamer that finished Crash would have. Andy did some thinking and off the top of his head said “Roughly 120,000.” Kelly became very silent for a moment and then quietly mumbled “the PlayStation CD drive is ‘rated’ for 70,000.” > Kelly thought some more and said “let’s not mention that to anyone” and went back to get Sony on board with Crash.
- bongodongobob 2y agoI don't understand what that means. 70k per what? 120k per what? What is a "hit"? A read operation?
- Alphaeus 2y agoI would interpret it as completing the game requires 120,000 disk read operations, but the CD drive may fail after just 70,000 read operations.
- Nition 2y ago70k per lifetime of the CD drive. 120k per complete playthrough of the game. A hit is reading from the CD.
- kalleboo 2y agoLooking at the data sheet for a contemporary Sony CD-ROM mechanism ◆ Service life of feed motor The current consumption of feed motor must be less than initial value plus 30% after 50,000 cycles. (1cycle : innermost track → outermost track → innermost track) ◆ Service life of limit switch The contact resistance must be less than 100mΩ after 50,000 cycles. (1cycle : innermost track → outermost track → innermost track) ◆ Pick-up slide operation The pick-up should operate perfectly after 50,000 cycles. (1cycle : innermost track → outermost track → innermost track)
- alt0_ 2y agoWhy did it work, though? Wouldn't the disks die halfway through the game? Did they end up cutting / optimizing the feature?
- juliangoldsmith 2y agoThe rating was the minimum number of reads the motors in the CD drive of the Playstation would work for. Most likely, the rating was really low compared to what the drives could actually do.
- mrguyorama 2y ago
- paulryanrogers 2y agoQuake 1 and 2 did this as well. I wasted so much time with details that later got botched by the vertex compression. I think Quake 3 had vertex animation too, but they split the character at the hips so it could face away from the direction of travel.
- trilinearnz 2y agoThe hip swivel worked well, functionally, but I always lamented how stiff the character animation looked because of it. Was the vertex compression responsible for the wobbling/swimming effect you'd see on models, when running Q1 and Q2 in OpenGL mode?
- paulryanrogers 2y agoYes
- fulafel 2y agoThere must have been some cleverness in representing this data in a compact way, esp as it would have competed with the 150 kB/sec CD-ROM bandwidth streaming other asset data?
- Nition 2y agoWeirdly the excellent devblog that I got all this info from[1] mentions crazy compression algorithms for the vertex animation and for the level files, but not specifically for the occlusion data. [1] https://all-things-andy-gavin.com/2011/02/02/making-crash-bandicoot-part-1/ https://all-things-andy-gavin.com/2011/02/02/making-crash-ba... Especially part 3.
- rasz 2y agoI think occlusion was just per vertex.
- Nition 2y agoJason Rubin says this on the blog: > Our occlusion worked on a texture level. That is, if we had a giant polygon with a fern texture on it (think many leaves but lots of empty space) the occlusion could actually get rid of polygons behind the leaf part of the texture but leave the polygons seen through the alpha channel holes. No other game had that kind of detail in occlusion, and it paid off immensely. Given how small ground polygons could be in the distance, a little fern action went a long way.
- 7bit 2y agoThere's a video series on YouTube where game devs talk about the challenges they faced while driving the game. Crash Bandicoot is covered in one episode, and there is another fantastic episode about Dead Space with the tentacle scene. Much recommended view.
- cordenr 2y agoThere's quite a few videos.... Can you link to the specific one your thinking of? Cheers.