News for 95.402 Advice for the layperson: Given an assignment to take a one million line program and a requirement to output information involving 3 nested loops, you don't first expect to try to understand the entire program... Concentrate on the simple task and then if you feel like it, see if you can understand some small part of the larger program AT YOUR LEISURE. In the first assignment, you are given a small program by industry standards. It requires that you complete a minimum of 3 tasks (to look at the REALLY important parts of the assignment). Task 1 requires you to output a world which is a collection of objects which is a collection of faces which is a collection of game points... (and a few other little bits). This IS actually a simple task that really only requires you to understand output streams in C++ (not 3D) and how to loop over STANDARD TEMPLATE LIBRARY collections (collection.size () and collection [i] is all you need to know). Task 2 requires you to input the world you output above; i.e., that you read it back... This is actually a simple task that really only requires you to understand input streams in C++ (not 3D) and looping. Task 3 requires you to draw your world assuming that you don't know how to draw anything in 3D. The solution is to look at how the rotating picture is drawn in the builder. The code in half a page actually (a) "activates a texture", (b) begins drawing a polygon, (c) outputs a collection of game points each of which consist of "coordinates for normals", "texture coordinates", and "coordinates for vertices", and (d) ends drawing. Your task to draw a world is to loop over the collection of objects each of which loops over a collection of faces each of which draws with code like the above that you can rape from the builder. For this to work, you must have previously constructed a texture object (an object that contains the bytes in a bitmap and an identifier that the game card gives you back when the bytes are loaded into the game card). Now, a texture is a synonym for a bitmap and bitmaps (on disk) have a name that we call the texture name (a string such as "brick.bmp"). There is already a "static Texture" routine that will read a bitmap and create a texture object given the name and it's called "read... something or other". You must also load the texture onto the graphics card. There is already a routine that will do that called "load". The only complication is that many different faces refer to the same texture. You must only construct ONE texture object per texture name. The easiest way to do this is to have looped through all the faces at BUILD time creating a collection of all the DIFFERENT texture names. You can output them before the objects. Then, in your engine, you read these names, create ONE texture object for EACH name, and then load each texture. Then when you get to the faces with an associated texture name, search for the texture object with that name and make your face refer to that texture object (as a result, many faces will share the same texture object). The rest of the assignment is just fiddling to see if you can understand what is already there in isolated simple sections; new key facilities are variations of what is already there (BUT YOU HAVE TO LOOK TO SEE WHAT IS THERE); e.g., to go left and right, there is already code that moves along the x direction. To move up and down, just do the same but in the y direction. If you can't figure that out, it's not the end of the world... The above was the important part... So the assignment is essentially half a page of code to output into a file, half a page to read, and half a page to draw. I estimate it should take you a day to do this because you're just learning how to program but if you were experienced programmers, I'd give you an hour... Knowing MORE about 3D is not going to help you to learn to deal with stream input/output. So it's easier than you think and you'll be proud of the result since you'll be able to see an arbitrary worldcraf MAP file. NOTE: I had difficulty downloading my specially set up version of Worldcraft and Wally (whatever that is). So I went back to the original site to get it. The problem is you will have to install it yourself (a bit tricky but you should be able to manage it). If you can't install it to work correctly for the first assignment, don't worry... provided you figure it out within the next few weeks. If you want to download it yourself from the original site (because there is other information there too), do what I did. I went to http://halflife.gamedesign.net/ and clicked on resources somewhere at the top of the page. Then I found "Worldcraft 3.3 Info Page"(ignore Worldcraft 2). From there I reached mirror sites that contained it and which allowed me to download it. Additionally, go to "Halflife map design toolkits" and download Wally (it's a facility to put bitmaps into the worldcraft editor)... It turns out to be at http://www.telefragged.com/wally/. Get it by clicking on download.