View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Sp01 Final Exam Review: Networked Barbie Game

See Final Exam Review - Sp2001

Comments? Answers? Criticisms?

Why send 3d models over the network? Keep all the orginal models locally on every computer, and only download the rare custom models.
like every other 3d network game.
That's reasonable, but when would you not even want to send the 3D models? There are games that do 3D without 3D models (like DOOM, actually). Mark Guzdial

For prerendered sprites to achieve anywhere near the visual quality of 3D models in the general case, you would have to negate any space savings. As a point of reference, a "typical" 3D model in a game like Quake3 contains about 2000 polygons. Assuming that you need approximately 1.5 vertices per triangle (by shared vertices), that's 3000 vertices, each of which contains 3 64-bit floating point numbers, or 72k of data total. Throw in another 50k or so (very generous) for vertex pointers and attributes. Round it up to about 150k of data for a reasonable 3D model which can be rendered at any resolution. If you used skeletal animation (very common these days), there's no need for multiple copies of the model. Compare this 150k to 32 prerendered sprite frames at a (low) resolution of 64x128 in 16-bit hicolor, for a total of 524k of data. Even with the additional overhead of texture data, the model comes out ahead. John Hall

Hint: See "Sub Attack" on Disney Blast. It's a 3-D videogame, cross-platform, peer-to-peer networking, that uses no 3-D models. (Side note: It's implemented in Squeak.) Mark Guzdial

a. "We?re downloading 3-D models of Barbie and all her guests, and it?s taking a horrendously long time. Is there anything that we can do to reduce that time?"

Why is Mattel downloading 3D-models from their own computers onto their own computers??? Aren't they supposed to be uploading 3D-models instead?

To reduce the time - implement better algorithms, use faster servers?? I don't know what kind of academic answer you are looking for over here.

b. "Cross-platform is very important to us, but someone in upper management suggested we go with Visual Basic. And Bill Gates isn?t returning our calls about producing Linux and Macintosh versions of VB. What do you recommend that we use, and what argument should we provide to upper management for it?"

Use Java because it is portable across platforms, secure and reliable.

c. "We?ve heard about this UML stuff for our design notations, and it sounds great. We know all about UML class diagrams. What?s another UML diagram that you think is good? What?s it good for?"

Use case diagrams to illustrate user-system interactions.

Sequence diagrams to show how the different components of the system interact with one another to complete a certain process, especially one that is somewhat complicated.

(a) is downloading into users' computers. (b) – "So we want to use Java 2, and it's not available on iMacs...:-)" Mark Guzdial

a. As already stated, one could decrease download time of 3D models by not downloading them at all. Instead, the 3D models of characters, etc, could be distributed with the software, or only downloaded once. If the 3D models are represented with vectors, vertices, and textures, a client only needs an updated list of vertices in order to redraw a 3D object (since it already knows the relationship between vertices and the textures to use). But transfering a new set of vertices for every single movement of a character could still be slow. We could abstract the model out even further by sending messages to the client that represent movements that 3D objects make. For example, if Barbie is walking across the room, we could send a destination point (a set of vertices) and a way to get there (walking, running, etc). Then it would be the client's responsibility to make that movement visible.

b.If you want your software to run on all platforms, it would be wise to use a language that uses a virtual machine. If this is done, your software will run on any OS that the virtual machine has been ported to, and without having to write any additional code. Both Java and Squeak are good choices of Object Oriented languages that use a virtual machine. Because someone else has already pointed out Java's strengths, I will note Squeak's:
        Arguments to upper management

c.State Diagrams are another UML diagram. State Diagrams model the dynamic behavior of an object by specifying its response to certain events in a given situation. In other words, a state diagram describes how a system responds differently to the same event because of a different set of circumstances. It also describes how the state might change due to an event. If I'm in a bad mood, and someone yells at me, I'm likely to yell back. However, if I'm in a good mood, I'm likely to laugh it off while at the same time I'm more likely to have an angry response if another person yells at me. Similarly, given a event, a program could respond in many ways. State Diagrams help map a response to an event given a certain set of situations.

Doug Powers

Nice answers, Doug! I'm guessing that y'all may not have discussed (a) in class. If you want your characters to be available 360 degrees, then you have to download 3D models. BUT, if you are only going to have certain faces visible at different sizes, you can use Flash (vector graphics system) – much smaller, easily resized. DOOM, for example, doesn't use complete 3D models for most of the backgrounds. Instead, it uses a handful of views, resizable, on planes that shrink and grow to simulate perspective. Sub Blast works the same way – subs and fish are small Flash objects in one of four positions. Easy to "fake" 3-D. Mark Guzdial
gaaaa.... Doesn't that increase the overhead at the server side? For ever user you have to render the user's view for them. Why not export the data necessary to render (which isn't a lot). That way you can delegate the responsibility of what you see to the end user. If I have 30 users connected to my Barbie world I could just export the world-data to each of the users and let them each render their own view. The other method requires me to do work for each of the 30 users to decide which flash picture to send to them. The overhead for exporting models grows in terms of network connections to send the same data. The overhead for sending flash views grows in terms of sending data PLUS the overhed of rendering each person's view (still linear, I suppose, but why put the load on the server when you could delegate it to the user's computer?).

DOOM is about 7 or 8 years old though, it's ancient!! Even a barbie game is going to want to look better than that. You can't even look up or down in DOOM. (My knowledge of barbie doll anatomy is lacking but I think even they can do that! :)

Most new games use full 3d models nowadays, or risk looking antiquated (current exceptions being cases like Diablo II; but the character graphics there are bitmaps because the game is 2d, and I am sure that the size is MUCH larger than the models they were rendered from. Diablo is a 3rd person game with only 1 perspective to render. The problem states that the Barbie game is first person, so it will have infinitely many views to render...)

I dunno about flash but I don't think the results would be acceptable to Mattel. 4 positions is going to look kinda hokey... you could render more but end up using more space than a single 3d model would take. and if you want to throw in views from above or below (remember that doom was actually 2 1/2d) then your number of views is going to grow exponentially as you try to increase quality. its just not worth it.

it seems like 3d models stored on the users computer as the first person suggested is the best solution, but not the one you wanted...

I can't find any reference to sub blast online, do you know where I can find it?
Andrew Harp

oh and another idea, since barbie dolls are all basically the same, just make the pieces of the models modular, so that you can plug them together. Just make a blond head, a brunette head, etc etc, and a few different bodies. same with the clothes. It'd be just like legos, and you could make a whole bunch of different types of barbies from them. this would save time as every piece would only have to be downloaded once, and to create a new barbie on a users computer would be instant (or very quick if they had to download a new piece or two). pluggable object oriented barbie dolls (or something like that)!

Andrew Harp

Wouldn't having all the 3d models, along with character "movments" (skeletons) localy on the end uesrs machine, with less frequent model updates as new models are added, lessen the download? Since you would just send the center location for any one model, its azimuth and angle, and any current "animation" identifier to the users during the simulation. Responsiblity for rendering the scene is left the client side. Most of this is present in VRML worlds ( blaxxun ).

John Thomas McDole

Andrew, your argument for matels acceptance of flash might be a little off. Barbie doll marketing is geared towards little girls so I think that the quality of the 3d capabilities would not really matter in this case. You're thinking more from the gamer perspective which is fine if you're designing a game that should appeal to someone who plays a lot of games. People who do play a lot of video games are probably not going to invest much money let alone time into a barbie video game. So, in this case I think flash will suffice. Plus you can do some amazing things with flash and you can make the 3d look pretty convincing to a little girl. Another thing that must be considered is the cost of developing such software against the market value for such software. Again, using the same argument of who the software is meant to appeal to, we can clearly see that there wont be a lot of funds which can be invested into creating a high quality 3d game. I might be wrong about all this :) , but thats just my view on the whole thing. Arkady

you might have a point Arkady but I think you're wrong about the budget issue... according to, Barbie Pet Rescue, published by Mattel Interactive was the #9 top selling game last december. At number 18 was Barbie Magic Genie Bottle. Quake3 doesn't even show up. so saying that a Barbie game wouldn't warrant the cash for 3d models (and do you know that flash models are cheaper anyways? they could be smaller sizewize but more expensive production wise) is pretty silly. Those barbie games rake in a LOT of cash. So I say if 3d models look better, are easier to implement (you make one model and let the client handle rendering instead of hacking out a system for a finite number of flash views), and cost can't be a very big issue, why not use them, even if they are a little bit bigger?

Besides, Mattel already has the 3d model system implemented, according to the question. They could either just go ahead and put the models on the CD like every other game or do that AND make the models connectable components al la legos like I suggested earlier to shorten future downloads.

Andrew Harp

Links to this Page