3 ms·
I used to work on few streaming games (Spiderman 2, Ultimate Spiderman for example). I had to do the file I/O, some decompression (only for PS2, lzo running on
by malkia 15y ago
I used to work on few streaming games (Spiderman 2, Ultimate Spiderman for example). I had to do the file I/O, some decompression (only for PS2, lzo running on the IOP chip).
But what he talks is balooney. Now I wasn't directly involved with how the levels were made (they were in segments, I believe kind of like hexagonal, more likely brick style layout, with a big strip every one in a while). Every such brick or strip would get asynchronously loaded.
Okay, now how to get that fast on console? Well first, your data has to be precooked, at minimum only pointers should be fixed up. No "new"/"delete"/"malloc"/free" - you load it in a buffer, and it's almost initialized (without the pointer fixup).
Then problems - say for example Spidey goes towards one of the bricks - you should start loading the neighbouring bricks too, but as soon as you know more about where he's going you should start CANCELing these I/O requests. And better if your system really supports them (or if not so, read in less chunks, or find the buffer size that the I/O controller or OS is splitting the request into - for Xbox I think it was 128kb).
Then make sure that you get as much as possible I/O asynchronous requests per frame from the levels, sound, etc. and for a DVD (and maybe for HDD) do an elevator sort - e.g. start from somewhere and always take the next request that is closer to the previous ones (sometimes that's tricky, as by the time you want to start the next one closer, and the head is already on something further away).
Then the biggest pain is that on burn media you get one results, while on GOLD discs another. Mainly because of how CRC checksums are put - I believe it was for every 32 sectors (or 16), while on the burn was a bit different.
Then you might experience problems, where the japanese PS2 version of the console just reads badly, hopefully your devkit has the same problem, so you know you would run in to.
And not forget - check which mode would work better for you - constant angular velocity, or constant speed. In the first you get slower results in the middle (I think it was the beginning of the disk), rather than the end - somewhere (ballpark figure) 1-2mbs/s vs 3-4mb/s
And find decompression algorithm that decompresses faster than what you reading (I was able to get lzo with some small unaligned write assembly optimizations) and have uncompressed speed of 5-6mb/s instead of only highest 3-4mb/s.
So my problem with the article? He's not even talking about the simple things I explained. Believe it's that's only the scratch in making streaming game (Look what Naughty Dog did, when they could not load the level in time - the character would trip and hop - now that's very good solution, but really tied with your gameplay).
In our case, we had testers banging out what Spidey's maximum speed could be, so we can adjust the levels - some of the levels he had to do some quick missions, and pop-ups were never allowed (it was considered bug).
- zach 15y agoI worked on True Crime: Streets of LA which had similar streaming gameplay and also worked on Blizzard's upcoming next-gen MMO, so I know a bit about this as well. All those considerations you mention are true (and I remember them fondly), but I think the problem here is that whatever budgets are imposed on player-creators are not adequate. As I think the author implies, the problems are authoring guidelines and asset design. I don't even know if there are texture, vertex or other budgets imposed in Second Life, but I can tell you for sure that they were a big part of art creation in True Crime. The areas like Hollywood Boulevard with lots of recognizable buildings were really taxing on those budgets, but they made them work. Without those guidelines, even experienced artists can overshoot the mark. Ideally, within Second Life, these creative limitations can be integrated into the game, so that it gets increasingly expensive to claim a large amount of an area's graphical resources.
- malkia 15y agoHi Zach! I miss the luxoflux bunch (I had to help briefly on the first True Crime with the xbox audio, and we pretty much stole all the QA from you guys for Spiderman, which I think is what killed TC:LA (not enough testing)) I really don't know when comes to creative decisions (I'm very bad at that). At the end of the day I can only say we can stream this much and this much (say max 1 stereo stream for music, 6-7 mono voices occasionally, and rest for streaming geometry,t exture). So part of all this was adjusting, testing to get it right. This is what the author misses - user provided content would never get the same amount of testing, as there is simply no money behind that. For that reason they should limit themselves as much as possible. But I'm begining to go into waters I've never been (never worked on MMO, so what the hell do I know :)) Cheers! I think we met, or at least said Hi couple of times, when walking by! (I'm still at Treyarch)
- zach 15y agoOh yeah, Malkia! I'm sorry I didn't recognize you, big guy. Jeff Lander was so thankful you came in, he wanted to kidnap you to keep you at Luxo! You were great! Yeah, we had some crazy QA requirements for True Crime. It blows me away that there were parts of the map maybe only driven through a few times (we didn't have the resources to do that many complete drivethroughs - 240 square miles is just so big). We have so many "glitch videos" on YouTube I think it autocompletes the word glitch after our game's name! But that's very true - the iteration was a huge part of the process and of setting those limits. I couldn't imagine us not being able to go back to an artist and tell them it was chugging. I know some other studios did this thing where anytime the frame rate dropped below 30fps they put a bright red border up! We did fine with just a graphical meter and some really talented environmental artists. That's another thing - the folks who made our environments got increasingly better at delivering stuff under our budgets, because they were constantly getting feedback about it. Without that, you just can't get the best quality.