Project Frontier #14: Import Models

 By Shamus Jul 6, 2011 159 comments

So I have an animation system that works. I also have a system to import animations from bvh files. Now all I need is a figure to animate.

frontier13_2.jpg

I have a look at the various file formats available to Blender. There aren’t many. (The previous version of Blender had a LOT more file formats, but I didn’t know about that when I was working on this.) The Direct X format, creatively named “X”, is a likely candidate.

I would like to meet the guy who chose the name “X” for their file format, so I can thank him with a surprise elbow to the face. Do you know what a pain in the ass it is trying to search for information on “.X files”? I want to know about the file format, and most search results are focused on Mulder and Scully. Even when you search for “.X 3D file format”, you’re still going to find your results sprinkled with stuff about the Smoking Man and aliens.

Still, you can go a long way to figuring out X files (see?) by just reading the file itself. It’s a parser’s dream: A unique word (like “Mesh” or “MeshMaterialList”) marks each part of the file. Then there’s a number, saying how many things it’s about to list for you. Then it lists them. Example:

Mesh {
1632;
-0.795500; 0.006100; 1.484800;,
-0.802100; 0.015600; 1.523800;,
-0.832800; 0.015700; 1.526000;,

This part is the “mesh” – the geometry part of the file. It has 1,632 vertices. Then it lists them. 1,632 X,Y, and Z values, separated by easily parsed commas and semicolons. At the end of that long list of XYZ values, we see:

-0.140900; 0.085100; 0.572700;,
-0.153400; 0.132200; 0.429600;,
-0.229300; 0.082400; 0.434900;,
-0.195500; 0.055400; 0.578900;;
408;
4; 0, 1, 2, 3;,
4; 4, 5, 6, 7;,
4; 8, 9, 10, 11;,
4; 12, 13, 14, 15;,
4; 16, 17, 18, 19;,
4; 20, 21, 22, 23;,

As the list of XYZ values end, we see a 408. That must be the number of polygons. After that is the list of polygons. It begins with the number of verts in the polygon. (All of the ones you see here start with a 4, which means they are quads. After the 4 are the indexes. Remember that drawing polygons is like playing connect-the-dots. This is a list describing the order in which to connect the dots. (The list of 1,632 XYZ values are the “dots”.)

I’m able to figure all of this out on my own, without needing to consult any documentation. (Which is good, because there isn’t much.) When I’m done:

frontier14_1.jpg

Don’t applaud yet. This guy is about as animated as Mt. Rushmore. To get him moving, I need two more pieces of information from the file: the vertex weights, and the skeleton.

For whatever reason, inventors of file formats insist on describing skeletons in terms of a series of transformation matrices. I know the term “transformation matrix” sounds technical and scary, but it’s just fancy-pants talk for a grid of numbers. The numbers act like a magic box. When you want to move stuff around in a 3D world, you use a matrix. Remember this XKCD comic?

http://imgs.xkcd.com/comics/matrix_transform.png

When you want to position some stuff in a 3D world, you take your X, Y, and Z values and crank them through a matrix. You multiply XYZ across the columns, add up the results, and the resulting output is your new XYZ position. I use this when I build trees and want to move & rotate (that is “transform”) the foliage into place at the end of a branch. I use it again when I want to transform a single tree into place as I add it to a forest.

You take your grid of numbers, do some trigonometric hoodoo on it, and then it can rotate stuff and move stuff anywhere you like. If you feed it the points that make up (say) a flagpole or a humanoid or a 200 foot tall Godzilla, the result will still have the same shape. The points might be far away, or turned 90 degrees, or whatever you were trying to accomplish, but it will still be shaped like the original thing.

I hate this part. All I want is to know the XYZ values of the joints. It could list them the same way it lists vertex positions, but instead I have to parse and process a matrix hierarchy. It would be like if I wanted to give you directions. I could say, “Meet me by McDonald’s.” Or I could give you directions along the lines of “Drive at sixty miles an hour for two minutes, then turn ninety degrees left, then forty miles an hour for one minute. Ninety degrees left. Then twenty miles an hour for fifteen seconds, then turn thirty degrees right.

Later, when you arrive at the Jazzercise studio, you’ll have no idea where you went wrong. The slightest mistake in any part of the instructions will lead to vastly different ending locations.

So. I have to read in a matrix. It looks like this:

Frame RootFrame {
 
  FrameTransformMatrix {
    1.000000,0.000000,0.000000,0.000000,
    0.000000,1.000000,0.000000,0.000000,
    0.000000,0.000000,1.000000,0.000000,
    0.000000,0.000000,0.000000,1.000000;;
  }

I have to parse those numbers, stick them in a matrix. I keep a stack of them. When it creates a new joint, I add its matrix to the end of the stack. Then, to find my XYZ values, I multiply each matrix by the one before. Then I stick the value 0, 0, 0, into this final matrix, and out the other side will come the number I actually care about, which tells me where this joint is in space.

Once I have my XYZ values for the joints, I can throw all that other crap away because I don’t need it.

Now I can stick my skeleton inside of my model.

frontier14_2.jpg

We’re not done yet, though. The skeleton can move, but there’s no information linking the model to the skeleton. The bones move, the body remains rigid. To finish the job, we need vertex weights.

Vertex weights tell my program how each vertex should move. For a particular vertex, the file might tell me that the point is 75% shoulder, 15% torso, 10% upper arm. (Or whatever. The shoulder is one of the hardest parts of a model to articulate, because the extreme mobility and range of the human shoulder makes it hard to set up the weights right.) I apply the vertex weights. The result:

frontier14_3.jpg

Hm. Does that look right to you? It seems off. Bah. I’m sure nobody will notice. Let’s call it done.

Sorting this one out is tricky. After some experimenting, I discover I was reading the skeleton wrong. The wrist was where the elbow should be, the elbow was where the shoulder should be, the shoulder was stuck inside the spine. Basically, every point was positioned where its parent should be. The devil of it was, the result still formed a stickman, so it looked correct. Then when the limbs go flailing around like this because they’re pivoting around the wrong point in space, it’s really hard to tell what the trouble is.

I solve that one, but it’s still broken. The vertex weights on this model are… odd. There are weights like, “this point is 0.00000% upper arm”. Uh? That’s zero? Why is it listed? Also, the weights seem to add up to more than 100% in some places. I’m not sure how. Also, each vertex is attached to a LOT of bones. I did a count. Even ignoring the superfluous 0.00000% listings, some points seemed to be connected to more bones than was reasonable. This might be a problem with the model. Or with my importer. Or with by animation system. Hm.

I have an artist who has expressed an interest in working with me on this. I don’t want to tweak this system to work well with a model I’m not even planning to use, so I think I’ll wait until I have one of his models before I examine this further. For now I just affix each vertex to one bone, no fancy weighting. On a high-polygon model this would look awful, but on Mr. 408 Polygons here, it should be fine.

frontier14_4.jpg

One problem remains. The right leg is moving with the left leg of the skeleton and vice versa. And the right arm with the left arm, and so on. (I don’t actually know if the above screenshot is from this exact point in the process. I can’t tell. I have these shots of mangled avatars, and they all sort of look the same.)

I had been kind of expecting to run into something like this. As we discussed in the comments, my coordinate system is a bit unconventional, so incoming geometry needs to be altered to fit. I knew this would happen, but I couldn’t picture in my head how it would work out. So, I just waited until it failed and then tried to figure out what I needed to do by examining the model visually. I was expecting to have to swap Y and Z values, or turn the model on one axis, or something else tricky. It turns out that to go from Blender to my program, all I have to do is mirror it on the X axis. Easy.

frontier14_5.jpg

It works! And yes, this game is going to be third person. I wasn’t 100% sure of this at the outset, and I was willing to settle for first-person if this didn’t work out, but now that I’ve switched to a third-person camera I’m sold on it. This is the way to go. The extra distance between the camera and the ground hides the shortcomings of the grass. Being able to see your avatar eliminates the visual confusion over size. Instead of saying, “I’m six inches tall”, you say, “Wow. This is very tall grass.”

frontier14_6.jpg

One last thing. I’m going to be stuck with Mr. 408 until my artist can produce the models. (I want both male and female.) In the meantime, I want to see if I can make Mr. 408 a little more visually appealing. By using the vertex weights, I can identify the points for the head, hands, and feet. I can then “inflate” these parts to sort of approximate the whimsical style I’m aiming for.

frontier14_7.jpg

Eh. There really is no substitute for having a proper artist.

At any rate, it works. I’ll probably have to revisit this once I start dropping real art assets in, but this is good enough for now.

A Hundred!202019We've got 159 comments. But one more probably won't hurt.


  1. kikito says:

    That’s not specially tall grass.

    It has a standard irresponsible-parent-who-doesn’t-take-care-of-the-backyard height :)

    Althought I’m not particularly sold on having procedural terrain mixed up with traditional artistry, I’m happy that you sorted this out reasonably quickly.

    • albval says:

      “This is no ordinary grass!”

      The results are looking good, btw

    • Eric says:

      “Don’t go into the long grass!”

      If you start populating the world with creatures, I demand velociraptors.

    • MichaelG says:

      I think Shamus is being a bit old fashioned (and I can say that, since I’m older than he is) about both the book and the software project. He’s hung up on the idea that if you don’t keep control of the content, you’ll lose your market opportunity.

      These days, involvement from your fans/customers is worth a lot more than the raw “content.” As Cory says, the problem for most authors is obscurity, not piracy.

      I see no reason that Shamus couldn’t publish his book by the chapter as he works on it and still turn around and sell it at the end. A recent example is “Go the F* to Sleep”, which is widely available online and is now being published in print. Another is Tyler Cowen’s “The Great Stagnation”, which was published as an e-book and is now coming out in print.

      The same goes for software. As a programmer, you think “I have all this great stuff. I can’t just GIVE it away.” But if you’ve ever tried to pick up someone else’s undocumented source code, you know what a pain it is. That’s why so many open-source projects have only a single author, despite the invitation to just jump in and improve it.

      I’m reasonably sure he could put up demos and so on with perfect safety and not have any issues with it in the future. That’s what I’m doing with Sea of Memes, and I’m not worried about anyone “stealing” it.

      The one exception is if you want to go with a traditional book or game publisher. They have the same old-fashioned attitude about “giving it away” that many programmers and authors have. They might refuse to publish it. But I think Notch (and several successful ebook authors) have shown us you don’t need the traditional publishers any more.

      So I think what you are seeing here is Shamus behaving differently from normal (he usually publishes all his work on blogs and websites) because he’s worried about losing control. He’s also probably worried about the situation where someone else scoops up his great thing and makes money off of it.

      Can anyone cite a case where this has actually happened with an open source project?

      • Simon Buchan says:

        Shamus fairly clearly stated one of the reasons he was not making the source public specifically because he would like to leave the door open to publishers: “Someone might want to hire me because of this. Someone might want to buy the project. Giving away the source might make this less likely. Employers are sometime strange beasts, and they don’t always view source code the same way we do.”

        Shamus: In regards to the negative comments you’ve been getting lately, I’d just like to make clear that I am super on board with this project, whatever it is. :) If my comments seem critical or abrasive, I apologise – that’s just me being bad at writing. Know that it’s not my intention to say I’m smarter than you, just that at most I might have learned something that might help you out or save you some time. (I also apologise for the super sappy tone of this – you just sound a bit ground down by the tone of this thread).

      • Zak McKracken says:

        EDIT: Whoops! That was supposed to be an answer to MichaelG’s post!
        There are some “Blender impostors”. People who rebranded Blender and sold it as if it was a commercial product. That’s illegal, and although one or another might have made some money off it, certainly they’ve never taken anything away from Blender’s name.
        With open books … I don’t know. In each case you could argue that more people would have bought it if they hadn’t read it online for free before that. But then probably a lot fewer people would have known about the book in the first place. There’s this study by Harvard law school finding that even illegal mp3 downloads actually almost don’t correllate with sales at all, but the tiny correlation that is measurable is positive … then there’s the XKCD book wich seems to sell pretty well despite the fact that most contents are free anyway. But there’s also the uncertainty if that sort of thing only works if you have the level of fame that XKCD enjoys or if it work for anyone.
        As an outsider (but potential customer) to the business I enjoy the thought of not clinging to copyright and IP law and stuff like that, as it makes my life much easier (and I have the XKCD book…). At the same time I have no way of knowing how it will work out for different authors (and you never read about the failed attempts, only the successful ones). I can literally feel Shamus’ nervousness about the whole endeavour, since for him there’s a lot at stake, so he tries to play it safe. I’d love for him to open this up, but since all my knowldedge about this stuff is not very definitive, I don’t really dare making a definitive statement here.

      • Jordi says:

        EDIT:This was also supposed to be a reply to MichaelG.

        I can’t cite any examples, but obviously projects have been forked before. I’m sure there are cases where the fork is more successful than the original project, and has more potential to make money. I know that’s not exactly the same thing, but something like this could happen.

        Anyway, Shamus made some comments about it here (in case you missed it). The main thing I’m taking away from that is that while Shamus doesn’t so much mind sharing the code, he’s afraid that potential buyers/investors and employers might. Personally, I think he is right about that. At least in the sense that it might make it slightly less likely that he could somehow monetize it.
        I’m also not sure if he would really gain a lot from sharing his code, but maybe you can say something about that, since you’ve gone that route.

        As for the book: I know very little about writing, but I can imagine that maybe things don’t always get written chapter by chapter in an exact order. Furthermore, if I was writing a book, by the time I get to Chapter 10 I would want to be able to go back and edit Chapter 3 if I feel that would make the book better. If you release sequentially, you might constantly be trying to fix “problems” you discover with earlier chapters in later chapters, instead of in those earlier chapters themselves.
        I’m sure it is possible to sequentially release a book (I’m not sure, but I seem to remember Shamus saying he did that with the System Shock novel), but I think that that would require a writing style that is very different than you could use when you release/sell it all at once.

  2. MaxDZ8 says:

    It looks fairly sophisticated.

  3. Kdansky says:

    Yeah, matrix stacks are a pain. “Subtle” errors result in heads attached to legs which turn horizontally around the waist, and all other errors leave you wonder where the model went. But it looks like you got it working. Still waiting for what this will be about, and if your artist will manage to come up with something that looks good in third person. The uncanny valley looms right over there.

    As for Blender: I read that the current version has improved vastly on the interface side, so going downwards for export functionality would probably annoy you much more on the long run.

    • Scerro says:

      Last time I just tried blender, I gave up on it just because the interface was completely unintuitive. Maybe I’ll check it out again.

      • Yeah, the new UI is the bomb. With a little tweaking (aka swapping the mouse buttons), you can actually make it work JUST LIKE EVERY OTHER PROGRAM.

        • Piflik says:

          I actually found a preset to make it behave like 3ds Max (or as close as possible), but I still don’t like it… :D

        • Zak McKracken says:

          ” JUST LIKE EVERY OTHER PROGRAM”
          So … I’m using roughly 4 to 5 different programs (Raytracing, CAD, 3D visualization) which have a 3D viewport, and have been using more of them in the past). There are no two of them that solve the problem of navigating and manipulating stuff in 3D even remotely similar. I wasn’t aware there were even so many ways of going about it, but each of these programs offers mouse mode customization, and it is still entirely impossible to make to of them roughly alike.
          Fact: there is no standard for 3D mouse navigation/manipulation, and every single software out there completely reinvents it. I have a hunch that there may be a some patents somewhere preventing most software (and of course most prominently Blender, since they can’t just afford licenses for patents) from just doing it the way “the other guys” are doing it. Whatever the reason, there is no standard, it’s bugging me, too, and whatever “every other program” is in your world, prepare to be dissappointed next time you get into a new one. You got really lucky to find two that can be tuned to behave the same way. Don’t expect more from life than it can give you…

  4. benjamin says:

    wow! again, very impressive stuff. will you make a note on the day and night system? I know its not as impressive but I’m curious of how you implemented it.

  5. Reet says:

    Pshaw. You said this would be hard. You certainly don’t make it sound all that difficult. Although that’s not to say I would be able to do any better. To be honest I’d probably have more luck trying to break down a brick wall using nothing but my face. It’d probably be less painful too. In any case, I’m glad you got this sorted out with (seemingly) little fuss. This means the project isn’t dead, right? Because that is a good thing. So, I’m definetly looking forward to the next update!

  6. Dys says:

    To my unpractised eye it does look like there is a scale mismatch between the ground textures and the character model. Of course that’s stylistic and not actually a problem, but I still see it.

    Given that most things in nature are fractal, I wonder if you’ve ever considered fractal textures. I suppose they wouldn’t be much use without the ability to recalculate the texture in real time as the camera approached.

    • Jeff says:

      Yeah, the little dude still looks 6 inches tall, as Shamus put it. Somebody mentioned it’s a side effect of using the wrong type of grass textures? However, it may be a little unreasonable to expect Shamus to be a botanist too.

      • Kacky Snorgle says:

        In the last two screenshots, compare the avatar to the nearest grass/sand boundary. Many of the grass blades along that boundary are roughly the same size, in pixels, as the avatar’s forearm; the larger ones are as large as the avatar’s entire arm. But they’re farther away from the camera than the avatar is, so accounting for perspective, they’re actually even bigger than that.

        If the avatar is six feet tall, we’re looking at individual blades of grass that are at least six inches wide and three or four feet long. On the other hand, if that’s typical scrubby grass that might be found straggling near the edge of sand, then the avatar is less than a foot tall.

        Note that, for me at least, it was never the height of the standing grass that was causing most of the perspective issues. The main source of the trouble is the overly large *width* of the grass blades, especially these grass blades that are part of the ground texture. I can believe grass that’s several feet tall, but I can’t believe individual blades that are the better part of a foot wide. Because the length of your grass blades is within an order of magnitude of their width, my brain interprets the grass as fairly short, and hence the avatar as fairly tiny.

        Hey, y’know, if you were to exaggerate his cartoony proportions a bit more, you’d have a perfect Smurf…. ;)

        • Shamus says:

          Ah!

          When people said “grass” I didn’t realize they were talking about the ground texture. I don’t really think of those as “blades of grass”.

          I really do think that’s an important part of the “whimsical” style, although if people are looking at it and seeing “regular blades of grass”, then it’s a concern. In any event, that’s not solvable. You can see the size of the pixels in the ground texture in that screenshot. I couldn’t make the “blades” narrower if I wanted to.

          Probably too early to start worrying about it now. You see all sorts of wildly mis-proportioned things in WoW, and it still works. The general perception of the scene will change as other art assets are added. Mr. 408 doesn’t exactly pull the scene together.

          • uberfail says:

            Solution: The player is a gnome…

          • Atarlost says:

            Making the ground texture more like plain noise than strands would fix that part of the problem.

            • Kacky Snorgle says:

              That was my thinking too. Given the intended scale, the grass should not have features that are more than one pixel wide. Strands just as *long* as the current ones would be okay, as long as they’re only one pixel wide–then my brain would accept the grass-blade-width as being smaller than a pixel, and I expect most of the perspective issues would disappear. The ground-texture grass should be mostly green noise, with some one-pixel-wide curved features thrown in especially at boundaries where the grass needs to “overhang” the sand/dirt.

              On the other hand, the current “grass” ground-textures would be fine if the pixel-size could be made much smaller. Those blades that hang over the sand could be perfectly good thistle leaves or similar, if they were a tenth the current size. That was what I meant in an earlier comment thread about shrinking the vegetation relative to the terrain. But from Shamus’s comment, it sounds like changing the pixel size is not technically feasible.

          • Zak McKracken says:

            Would that not be solved or at least improved by either
            a) making the character larger
            b) making the character style match the rather pixelated style of the environment
            b) increasing the resolution of nearby stuff?
            With “increasing the resolution” I mean both texture and geometry resolution.
            Since most of what you’re doing is already based on the idea that things have multiple levels of details that can be procedurally added and expanded, shouldn’t it be possible to add some more detail in the close range?

            I do agree that having texture pixels on the ground that are wider than your feet does look weird. But then you’re just now figuring out having a reasonably-shaped ground and a character that is animated at all, so I think this is something that doesn’t have to be right in the first tech demo.

            • StranaMente says:

              If else is too time consuming I think that a different art style for the protagonist (pixellated as suggested) may be the solution.
              See Minecraft (obvious comparison) everything is blocky so looks reasonable.
              Anyway, proportions seemed a bit off since the tall grass came in for me.

              • StranaMente says:

                And about the artist, you’re looking for a concept artist or someone who knows his way in those dark 3d alleys?

                Edit: thinking about pixellated style, have you tried to make his limbs more parallelepiped-ish? With somewhat smooth angles and joints could be better than the fully formed human body visually and technically. An inflated kind of stickman.

                • Shamus says:

                  I can’t talk about style now. We’re sort of debating the style now. His preference is going one way, mine are going another. I don’t want to move that debate into the comments. Wouldn’t be fair to him.

                  We’ll just have to see what we get.

              • Kacky Snorgle says:

                I’m reminded of the Stolen Pixels that had Breen standing in a Minecraft world. The juxtaposition looked ridiculous–which was ideal for the humor of that particular comic, but would probably not be tolerable for long in an actual game.

                Obviously Shamus’s gameworld’s art design is much more detailed than Minecraft’s, and it sounds like his avatars will be designed with rather less detail than Breen. Still, there may be a danger of a similar undesirable clash between differing levels of detail?

                I still don’t have a clear idea of what Shamus means by “whimsical style”; I’m sure it’ll become apparent as more pieces are put into place. Like you, eagerly awaiting. :)

  7. Carra says:

    Keeps looking better and better.

    I wonder how you will handle the physics though. Things like swimming in the water, collision detection, water moving.

  8. Herrsunk says:

    First thought at the first “failed joints screenshot”?

    IT’S AAAAAAALIVE!

    • Andrew B says:

      My first thought? Must not fire coffee down nose. Must not fire coffee down nose! Oh gods, everyone is looking at me funny and trying to work out why I’m having a seizure. Damn you and your humour, Shamus! Now I’m going to have to move office!

  9. DanMan says:

    Oh, so THAT’S what matrices are useful for. See high school math teachers? If you just told me that, instead of ignoring my questions, maybe I would have paid more attention to you.

    • Robin Z says:

      …except that they didn’t know if you would be using matrices for (a) transformations of vectors, (b) tension, shear, and compression in bodies of materal, (c) describing systems of linear equations, or (d) any of the innumerable other problems which can be described with that language. Matrices are not much less general in their possible applications than, oh, numbers.

      • Kdansky says:

        But to many people, 3D games are interesting, and therefore a great example for matrix application. I’ve had quite a bit of this subject during uni, but it never occurred to the algebra teacher to tell me “3D games OMG!”

        • Alexander The 1st says:

          This. Although they did for me, this is important.

          Namely, it was a “Geometry in Computer Graphics” Math course, but we went from “Here’s how you move a point” to “When you join these points, you have an object in the grid to “When you add a perspective-projection matrix, and add four more points, you can draw an accurate representation of a 3D cube, on paper. This is more or less how your computer renders 3D games.”

          We even went one more step (This was before the 3DS/3DTV hype). “So, if you want stereoscopic 3D like in an animated 3D movie, you would do the perspective-projection matrix twice, each 2.5 cm apart from each other on one axis. Now see, I have one of these goggle things used to show one image in each eye, draw out the computed matrix for each eye (As mentioned above, 2.5cm apart on the x-axis), then put the images into this goggle-aparatus, and take a look at 3D *THAT YOU MADE YOURSELF*…by hand!”

          It was pretty epic, and got me into 3D mathematics – though not 3D programming, because I can never go low level enough and be efficient…

          • Zak McKracken says:

            Why did I have to read the first sentence containing “goggle” four times before I realized it wasn’t about Google?
            Great thing, though. I used to do two perspective projections of a cube in MS paintbrush, by hand, then stare at it. Good times.

  10. Zak McKracken says:

    “Once I have my XYZ values for the joints, I can throw all that other crap away because I don’t need it.”
    Really? I thought you’d compute the result of the matrix stack for each limb once per animation frame, then use it to transform all the points that belong to that limb. So if that’s not how it works, then how do the individual points end up at the right location?
    The individual matrices in the stack are useful to have around anyway as they also contain the angles of each joint, and the resulting stacks can be efficiently computed for hierarchical objects, because every limb matrix is the resulting matrix of the parent limb times the location of the joint, times its own matrix.

  11. Jjkaybomb says:

    To give the model a face and clothes and stuff… I remember in some old games you could find a skin and just color all over it, and the program would make that your model. Could the same be done for Mr. 408, so you wouldnt have to worry about messing with his shape?

  12. Ayegill says:

    It still does look like you’re six inches tall on those last screenshots, though. At least to me.

    • krellen says:

      More like three feet tall. Especially after the body morph is applied, it looks like a child.

      I think, however, it’s a product of the perspective on that last image; the earlier image with the model standing in “T-pose” among the grass doesn’t make it look short.

  13. Simon Buchan says:

    .x is deprecated :). Use “site:msdn.microsoft.com” to search only on MSDN – the best link seems to be http://msdn.microsoft.com/en-us/library/bb173014(VS.85).aspx

    Most model formats store skeletal animations in matrices because then you can just throw them at the video card without doing anything at load time (which you want to make really fast!).

    A typical implementation of skeleton animation:

    // Updated per object per frame. In a real engine,
    // probably actually two frames to interpolate between.
    buffer perObject {
        matrix4 bones[128];
    }
     
    struct VS_INPUT {
        float4 Position;
        float4 Normal;
        float2 TexCoord;
        uint BoneIndex[4];
        float BoneWeight[4];
    }
     
    struct VS_OUTPUT {
        float4 Position;
        float4 Normal;
        float2 TexCoord;
    }
     
    VS_OUTPUT main(VS_INPUT in) {
        // Blend bone weights
        matrix4 m = matrix4();
        for (int i = 0; i != 4; i++)
            m += bones[in.BoneIndex[i]] * in.BoneWeight[i];
        VS_OUTPUT out;
        out.Position = in.Position * m;
        out.Normal = in.Normal * m;
        out.TexCoord = in.TexCoord;
        return out;
    }
  14. Adam P says:

    I would like to meet the guy who chose the name “X” for their file format, so I can thank him with a surprise elbow to the face.

    Wouldn’t that be the Regina Cuftbert method?

    • Alexander The 1st says:

      There are clearly two options:

      1.) Some comp-sci designer started off with:

      “Okay, for this modeling program, I need it to export to a file format. Let’s call it “x”. X will contain specified elements, indicated by a base skeleton, then the polygons, and then the actual weights.”

      *Ten hours later*

      “Okay, I’ve finally figured out how to spec my 3D file format “x” such that it works with any animation file format “y”. I probably should replace the file format with something else, but then I’d have to refractor all instances of the string “.x” and be consistent with this…but the “x” files kind of grew on me, and I don’t want to rename them either.” *Beat* “Okay, yes, it’s staying.”

      2.) Rutskarn went and researched an entire new way of formatting 3D models JUST for this moment.

      I’d say Josh would’ve been a better candidate, but there’s one specific difference – he would’ve named them “.incinerator” and sold the license to the Blender crew, if for no other reason than he can say “Hey Shamus, I don’t know what you’re talking about, I sold the incinerator already.”

  15. skeeto says:

    Google’s new programming language, Go, has almost the same search problems as X. Of all companies you’d think they’d know better.

  16. Vegedus says:

    There was a real sense of relief at seeing the properly animating after the incredibly mangled skeletons.

    I’m sure you felt the same when you got to that point.

  17. Hitch says:

    Did anyone else flash back to the lawnmower posts when they read, “Wow. This is very tall grass?”

  18. Amarsir says:

    I typed:
    .x
    in my google search box. It autopopulated to “.x file format” and every one of the first page’s results were about directx. I was going to see if subtractive searches were an improvement on your result but apparently Google’s responded to your blog post by reordering the search rankings. And you thought a blip.tv reaction was far-reaching!

  19. Samrobb says:

    Shamus, I’m curious. Are you planning on incorporating a scripting engine (Lua, Python, whatever) in this project to allow for customization/plugins?

  20. UbarElite says:

    It’s sort of uncanny to see such weird results from such (seemingly?) simple bugs. Nice job getting it all sorted out though.

  21. Do you know what a pain in the ass it is trying to search for information on “.X files”?

    A similar problem is encountered by people working with VALVe’s engine, Source. Searches like:

    “source ai code”
    “source programming”
    “source documentation”

    Will make you want to scream.

  22. Very neat. Parsing a transform tree is a pain, but can be quite powerful. I’m glad you got it figured out. You could use the same method to make the procedural trees wave in the wind (with procedural animation too). Are you planning on doing environment element animations?

  23. Eärlindor says:

    Do you know what a pain in the ass it is trying to search for information on “.X files”?

    *Facepalm*

    Anyway, I got a little excited reading this because I actually know what these matrices are.
    And while I was filled with some sadness in seeing Sticky move on (sniff) I was excited to see the evolution of the character model.

    Can’t wait to see where this goes next!

  24. Isy says:

    Given you said this was the point most likely to make you destroy the project with frustration, I’m glad to see it working. (Sort of working anyway. I’ve no doubt there’s a million things still to be done.)

    I have to say, though, your project usually looks better when it’s more “zoomed out” than you usually display it? Is there any way to alter the scale easily?

  25. Weighting vertices has always been a complete mystery to me and an absolute pain in the ass. I use Maya and though I’m guessing there’s a lot going on in the background between the UI I use, I too end up with vertices whose weights are swimming all over the place and attached to joints I had kept locked through the entire process.

  26. Potado says:

    This is great! I could never, ever make an importing system like that.

  27. Ander the Halfling Rogue says:

    Wow. For someone who expected to hit a wall at this point, you’re blazing through animation pretty well. It is very impressive.

  28. Odoylerules360 says:

    Is there really no way to have each grass tuft slightly rotated, so they don’t make such an obvious grid?

  29. X2-Eliah says:

    Hmmmm. Okay, Shamus, you have ragged on Bethesda about horrible 3rd person animations endlessly. Expecting you to not drop the ball now. Sorry if this is harsh, but frankly this is how it comes across here. Not to mention that the relative mismatch between your lowpoly ground textures and the high-polycharacter mesh already is quite unsettling. The two just don’t seem to belong to the same art design, basically.

    • Shamus says:

      You’re saying my untextured temporary filler art assets don’t fit with the art design of the game?

      Ludicrous!

      • X2-Eliah says:

        You positioned this temp model as a ‘basic placeholder’. That implies that you are looking to go even further and get an even more detailed thing. Which is a massive step in the wrong direction, when your ground texture has pixels the size of your temp avatar’s lower leg or so.

        • acronix says:

          It`s a problem with the interpretation of the word “basic”. For instance, I interpreted “basic placeholder” as “something to fill the place and run tests”, not as in “simple” or “will get something more complex later”.

    • Adam F says:

      If years of drawing old-school 2d art have taught me anything, it is that whatever final art he uses will fit in much better when he comes to the point of giving it a shadow.

    • Shamus says:

      Okay, hours later an this is still annoying me.

      First, it’s COMPLETELY unreasonable to hold a one-man-show to the same standards as a multi-million dollar company.

      Second, you have no idea what this character is for or how it will be used, or if you’ll end up looking it in the eye for prolonged periods of time while navigating a conversation tree.

      Third, the requirements and standards are completely different for toon characters and idiots fighting in the uncanny valley with their army of photorealistic robots.

      I’m beginning to see why people don’t develop in public. Having people rag on you for your temporary art assets and make presumptuous demands about how your game needs to be developed gets OLD.

      • Shamus says:

        Fourth, the animations are being made by someone ELSE. Someone who is working for free for the sake of friendship, and who HASN’T hammered Bethesda the way I have. So if the animations aren’t to your liking, you can go aim your misplaced indignation at him.

        • IGI says:

          There ain’t nothing free in this world. The 2nd law of thermodynamics proves there can be no free lunch nor perpetual machines. Now, “friendship” may not suffice as legal consideration, but that is what he/she is trading it for. In the end, the trade had to have been perceived as equitable for the individual to acquiesce.

          While these value judgments are rather subjective, and everyone has their own opinion on theses, I’ll just say that NOTCH never posted on his blog (joking or not) about rich investors coming to invest in his game before he even released a pre-alpha or anything gameplay at all, nor did he get free artists on the side by trading companionship… From an anthropologists perspective that is the oldest-profession-trick-card you are playing (euphemism for prostitution) by trading companionship/friendship with something else of value (money/artwork) etc

          “I’m beginning to see why people don’t develop in public. Having people rag on you for your temporary art assets and make presumptuous demands about how your game needs to be developed gets OLD.”

          No one forced you to develop in public. You wanted to use this as a carrot to dangle in front of us internet couch-potatoes to increase your pageviews and adsense revenues, fine… that’s your prerogative. You have pipe dreams about going commercial with this crap and notching NOTCH out of his thrown, fine, its a free country. Personally I think you should have finished everything and then made a post.. but if you want to drag this out like the LOST episodes and self-promote both your blog, forum, site, platform and gaming aspirations then guess what? You are going to get criticized especially since the project is crap quality. But don’t be a self-serving hypocrite that bitaaches because you can’t have your cake and eat it too.. you criticism others all the time, like that flip.t rant.. Did it make you feel happy that the CEO paid some personal lip service to you? Seems you can dish it out but not take it in huh? It goes both ways dude. Karma’s a bitch.

          And there is no need for X2-Eliah to be apologetic about your own retardedness. Seems like you did a good job of brainwashing the sheeple.

          • krellen says:

            Notch might be thrown out of his throne, but hopefully he can spell the difference.

          • Zukhramm says:

            I haven’t rolled my eyes this much since my last demonic possession.

            If you get help from you’re friends, you’re a whore, literally? I guess everyone I know and I myself are, than. Because sometimes, we help each other.

            I assume most people are here because they’re interested in reading this. Posting one post once it’s all done kind of defeats the purpose of a blog.

            • StranaMente says:

              The problem with work and friendship is a hard one. Persons (and I mean good natured ones) want to help friends, and would do that for free, I know I am one.
              The problem is when money is involved. For now there ain’t any for all of you, so there can’t be any problem.
              But I think it’s better if you have plans if any money comes in from this. Money and friendship are bitter enemies.

              About the animation, I’m surprised that only few weeks from the beginning of the project you, Shamus, already arrived this far.
              The demand to achieve the quality a huge company didn’t get along many years is really silly, to the point that at first I thought it was sarcastic.
              From what I saw until now the whole point is not exactly to make another photorealistic 3rd person shoter, and for me it was glaringly obvious, thus I understand how this could have really bothered you, Shamus.
              All the criticism that has been moved (by me too) is constructive (even when it isn’t gently expressed).
              We criticize because we hope to see this project improve.
              Even if I don’t get everything of the techinical part, I enjoy watching this work progress, and I like reading your post about your struggles.

              Now, let’s try to get the best from this posts and ignore the troll, will we?
              I don’t like to roll my eyes this much either.
              :-)

          • Shamus says:

            “You have pipe dreams about going commercial with this crap and notching NOTCH out of his thrown, fine, its a free country.”

            You’re wrong. You have no understanding of my motivations, my situation, or my goals. You’re just a rude asshole. Get off my blog and don’t come back.

            • Leonardo Herrera says:

              Shamus, please remember you owe us nothing. Please feel free to delete any idiotic posts in this thread (even this one.)

              Keep up the good work!

          • Kian says:

            Wow, he used ‘sheeple’ in all seriousness. That’s the first time I see that.

            So, if I get this straight, software should be provided freely with source code, while hidden until it is done, but accepting someone’s offer of free artwork is akin to prostitution? Why the double standard?

      • X2-Eliah says:

        I would say that behind the multi-million dollar company are people and enthusiastic developers just like yourself.

        I could say that while you say ‘temporary art assets’, the points about textures & grass being off-scale.. No, wait, *appearing to be* off-scale have been repeatedly said not just by me, and on many previous posts too.

        But frankly – I am *not* your enemy, nor was I nagging. I’ve seen 100x worse in your own rants – so I figured you’d be able to stand a simple blunt paragraph without pretty wording for make-better-feel, having dished them out so many times. Guess I was wrong – I didn’t mean to annoy you.

        • IGI says:

          Imagine if Shamus apologized to blip.tv’s CEO after his rant… that ain’t never gonna happen in a gallizion years. But basically that is what you – X2-Eliah – have just done here.

          blip.tv is largely ad supported, as is this very site and blog. Blip.tv’s CEO humbled himself and made time out of his busy day to apologize and give Shamus (his customer) an “explanation”. He didn’t go off on a rampage and twitter about how ungrateful this twentysided Shamus was for using his free service and then ranting about its ads… no instead he came on here and apologized…

          Likewise, you/we are the customer on twentysided… instead my comments get censored and he bursts an artery when he read your post giving criticism of his artwork (not even his own artwork, haha) and pointing out the hypocrisy of it all…

          Instead of apologizing to his customer like the CEO of blip.tv did, he rants and raves about your comment TWICE…. infuriating for “Hours”… and then intimates YOU into giving HIM a PUBLIC apology… WTF?!?!?!?!?

          Talk the talk but don’t walk the walk huh Shamus? I think the real shame is on us.

          • krellen says:

            I think you meant “intimidate”. “Intimate” has a similar meaning to “imply”. You really need to work on your communication skills, because your word usage is horrendous.

            • krellen says:

              I saw the last comment of yours that got deleted. While you’re obviously a trolling jerk, that comment went super-over-the-top on it. You’ve toned yourself back a bit. These might actually stay, if only so others can see how ridiculous you look.

          • X2-Eliah says:

            You should note that I am not actually apologizing. I stand by my words, I just want Shamus to see it as level-headed criticism, and not some kind of aggression he seems to view it as.

            Also, I certainly don’t hold your views on the subject – please don’t use me as a support of your own theorems, kthnxbai

          • Kelhim says:

            Are you planning to turn the comments section into a disrespectful rant against the blog owner who is giving away content all the time for free, but chooses to keep the source code of this particular project closed for the time being, because he is, you know, unemployed?

            Because that’s how I understand your comments.

            Criticism should always be stated in a civilized manner without insulting the person you hope to convince of your opinion. And ideally, criticism is constructive, so that one can gain knowledge or different perspectives on the subject.

            Your comments are far from that.

      • Factoid says:

        I think the secret to developing in public is to not pay attention to comments like this. Nerds are sort of pedantic by nature, so every word choice will be picked apart, analyzed and potentially misinterpreted.

        This is an absolutely fascinating series. I’m mind-boggled at how far you’ve come, so fast. I never would have imagined something like this was possible by a single person in just a few weeks.

        I’m pretty sure you used the words “placeholder” and “filler” more than once. Anybody that tries to hang you for those things isn’t really worthy of attention.

        • X2-Eliah says:

          are the grass textures still placeholders? Is the scale between the trees, land, mountains, character size placeholders? No, they are not. And there is a mismatch between those since many posts ago, and not actually changed by the placeholderiness of the character *model*, when we’re talking about other stuff, and the model’s relative size – which is more determined by import system and not the object itself.

          • krellen says:

            You still haven’t seen mountains. Those are hills.

            • X2-Eliah says:

              That look like mountains in all pictures (for a ton of people) because of the way textures are applied to them. Which is EXACTLY the point I’m making. No, they are not mountains, but they look like mountains at wrong scale.

              • StranaMente says:

                Even if they aren’t placeholders, nothing is written in stone, so we calmly suggest what we think should be done in another way. I think that there’s a mismatch in the proportion, but since we’re about a month into this project and everything could be replaced (even Shamus if he is so inclined (-: ).
                Now, let’s calm down.

                Even if everything remains the way it is, and at the end the misproportion is felt the same way, we can’t pretend anything, since it’s not our project.
                We don’t know where it’s headed what most of the things are goig to look like, and it’s possible we are shortsighted.

                Anyway we can suggest, say what we feel wrong and discuss about it. Since he’s in the earlier stages, it’s better (I assume) if he correct the proportions now, but if the art style makes sense out of them, that won’t be necessary.
                Simple as that.

              • Cerapa says:

                If those look like mountains then im a giant squid.

              • krellen says:

                These would be the same people that think the Appalachians are “purple mountains majesty” and would probably faint if they saw the real mountains that are the Rockies, right?

          • Kelhim says:

            I suggest you calm down. This project is clearly work in progress, and issues like mis-scaled textures or objects can easily be fixed later on. There is nothing to get angry about, and certainly your comparison between Shamus and multi-million dollar companies, who owe their customers decent quality, wheras at the end of the day Shamus doesn’t owe you anything, is a bit unfair.

  30. Why bone weights can add up to more than 100%: Because they are reflective of the influence of the bone on the vertices, not how much the vertices are influenced by the bone. (Huh?) OK, let me try that again:

    25% bone weight associated with a particular bone means that every time a bone moves, the vertices in question move 1/4 as much, not that 25% of the vertices’ positions are based on that particular bone. Clear as mud?

    EDIT: Or as the kids say these days,

    “For a polygonal mesh, each vertex can have a blend weight for each bone. To calculate the final position of the vertex, each bone transformation is applied to the vertex position, scaled by its corresponding weight.”

    http://en.wikipedia.org/wiki/Skeletal_animation

    • Piflik says:

      Vertex Weights, that add up to more than 1 (100%) are very very (very) bad. Those vertices will start running away from your mesh.

      Let’s say a vertex on the shoulder is 0.6 Clavicle and 0.6 Upper Arm. When you now rotate just the Clavicle, the Upper Arm will follow but that single vertex will move 1.2 times that distance, destroying your mesh.

      All modeling apps have mechanisms to prevent such weights.

  31. Jarenth says:

    I hope Fonzy the Stickman makes it into the final game design in some shape or form. I’ve grown fond of the little guy.

  32. Veloxyll says:

    Will we be able to customise our models and if so, will we have breast, butt and crotch size sliders? And will npcs be procedurally generated?

  33. anaphysik says:

    *teehee* I can’t believe my comment sparked such a huge debate! And even warranted a linky from Shamus!

    Anyway, I’m not usually one for 1st-person viewpoints… but in a game where all we’ve really seen is exploration of a vast environment, using first-person as a window into that world would actually be really good. (Naturally, you haven’t shared with us the total view of the project’s design.) And if there’s no other people, you don’t need to worry about character models conflicting with the terrain aesthetic.

    I suppose, though, that one of your ideas is to have multiple players, yes? So then, you’d need character models regardless of the viewpoint… oh well. I can only hope we one day see a first-person version where you can simply wander around through the world.

    Good luck!

  34. Blake says:

    Coding for testability seemed to get you through the animation framework relatively unscathed.

    Imagine if you had’ve started with the animation and did importing last, who knows how much longer it would’ve taken!

    Good to see it’s up and running, with that out of the way it’s full steam ahead on all the other fun stuff :)

  35. Kayle says:

    I would like to meet the guy who chose the name “X” for their file format…

    Heh, not Microsoft’s fault (well, it is in the sense that they kept the format name), it came from RenderMorphics, whom they bought for their 3D technology which became Direct3D. Might have been Servan himself…

  36. Phoenix says:

    The project looks tasty, if it will be about exploring a random world.

  37. Kyte says:

    I thought they were stacks of transforms because they were used to calculate the resulting vertices for the model on each frame, by setting the final transform matrix (times the model’s World) as the mesh’s World. Or at least, that’s how XNA does it. And I’m pretty sure that’s ’cause it’s how D3D does it. *shrugs*

    _model.CopyAbsoluteBoneTransformsTo(_boneTransforms);
    foreach (ModelMesh mesh in _model.Meshes) {
      foreach (BasicEffect effect in mesh.Effects) {
       effect.World = _boneTransforms[mesh.ParentBone.Index] * modelWorld;
       effect.View = Matrix.CreateLookAt(...);
       effect.Projection = Matrix.CreatePerspectiveFieldOfView(...);
       effect.EnableDefaultLighting();
      }
      mesh.Draw();
    }
  38. Winter says:

    Only male and female? Jeeze, what a let-down.

    • Zeta Kai says:

      Yeah, if I can’t play a transgendered avatar in a roleplaying game, then I just won’t play at all. I hacked Mass Effect to give MISS Shepherd a five-o’-clock shadow. ;)

      • krellen says:

        Saints Row 2. You can do that.

        • Winter says:

          Demon’s Souls also lets you alter your gender expression separate from being male or female, so you can go all the way over into male body while being female or vice-versa.

      • Winter says:

        Interesting note, in older Bioware RPGs (thinking specifically Baldur’s Gate 2, here) you could hack your listed gender. Because D&D has all kinds of interesting genders (including “both”, “none”, and “hermaphroditic”–among others) you can set it to all kinds of things with a character editor. Interestingly enough the game mostly handles the hacks gracefully.

  39. GTB says:

    “Cancer Man”

    You have been docked one geek point. Please be aware that further displays of lack of knowledge about the X-Files or any statement to the effect of “The Empire Strikes Back” not being the best of the starwars franchise may result in the loss of additional points and ultimately the suspension of your license and repossession of any painted Warhammer miniatures that may be in your possession.

    • krellen says:

      “Star Wars” was the best movie of the franchise. People only like Empire because they want to jump on the “dark and gritty” bandwagon.

      • Piflik says:

        No, because it is superior.

        • krellen says:

          Quantify its superiority, please.

          • Piflik says:

            It has setbacks for the protagonists. It is a constant struggle, where the Prequel was one straight line to victory (with the sole exception of Obi-Wan Kenobi).

            There are other reasons…AT-Ats, Bespin, Yoda, not to mention ‘I am your father.’ And Luke rather falling to his death instead of living as his fathers son…

            • krellen says:

              So, dark and gritty. Like I said.

            • Sagretti says:

              I don’t know if you could say the first movie was a “straight line to victory.” It included the main character having his only (known) family brutally murdered, being captured and having to escape from the enemy, the sudden death of the protagonist’s mentor and guide, and near total defeat in the final battle with luck and supernatural power barely saving the day.

              As for the list of cool stuff, you can do that for either movie. A New Hope had Mos Eisley Cantina, the Jawas, Tatooine, plus a ton of its own quotable moments.

              Not that I’m big into debating which movie is better, just thought there were some interesting counterpoints.

          • Factoid says:

            I was into Empire way before it was cool to be into dark and gritty sci-fi. I don’t even care if that makes me a hipster.

      • Zak McKracken says:

        I liked it back before I was even aware there was a “dark and gritty” thing going on, much less there was a bandwagon for it.
        Actually, at the same time I hated all the “dark and gritty” people in my class. Also, “Empire strikes back” isn’t really of that sort. Look at what Bespin looks like, or Hoth. All white and light-flooded and cool. Then watch “The Crow” for comparison.

    • PAK says:

      The lead comment in this thread confuses me. “Cancer Man” “Smoking Man” and “Cigarette-Smoking Man” were terms used interchangeably by both Mulder, the fanbase, and the critics during the run of the show. The show dialogue, while it was weighted more toward “Cancer Man” early in the series, tended to use the term “Cigarette-Smoking Man” far more frequently than “Cancer Man” in later years. How exactly did Shamus undermine his geek cred?

  40. Alan says:

    “And yes, this game is going to be third person. I wasn’t 100% sure of this at the outset, and I was willing to settle for first-person if this didn’t work out, but now that I’ve switched to a third-person camera I’m sold on it.”

    A question: would either a first or third person perspective be easier to do?

    You have said somewhere before that having a first person perspective means that you have to make another set of models for ‘weapon loading’ animations etc, but for a third person perspective means you can just play with the one model.

    Also, are you going to use essentially the same model for NPCs, with different ‘clothing’?

    • Shamus says:

      “A question: would either a first or third person perspective be easier to do?”

      I’m sort of wondering that myself. Viewmodels can be tricky to get right, and double the work involved for every single thing your character might hold. (And items need to be much more detailed if they’re going to be floating in front of the camera.)

      On the other hand, a third-person game will live or die on the player model. Having tried both:

      1) In first-person, I tend to look more towards the horizon.
      2) In third-person, I spend more time looking at my avatar.

      I’m not sure how the costs will break down, long-term.

      • IGI says:

        Whats wrong with having BOTH views? Tom Clancy’s original Rainbow Six supported this with a F1 key toggle back in 1998! Get with the times dude.

        This is not an either/or position. Ampersand!!! Ampersand!!! Ampersand!!!

        • StranaMente says:

          And (obvious comparison) Minecraft does too. If it isn’t too hard, you could implement both, at least at a certain extent.
          The camera in 1st person view could “replace” the head (to avoid collisions with the face polys) or stand right in front of it.

          I’m pretty sure that if you’d make a poll you’d find people would like one or the other in about the same proportion.

      • Zak McKracken says:

        Something that occurred to me: Given the right perspective, the environment can be the main attraction even in 3rd person view. The avatar just needs to be small enough on screen, and the view maybe not centered on the avatar but with him/her in the lower third or so.

  41. IGI says:

    You know the idiom, publish or perish! Where is our pre-alpha?

    John Carmack was coding projects both broader and greater in depth than this a decade ago for lunch!

  42. Nathanael says:

    Look here,
    http://smallysreviews.wordpress.com/2011/07/02/welcome-to-smallys-review-blog/
    when I tested one of my blogs and posted myself a comment as a logged off person, it is a different icon, so it’s not a Wavatar. So how to get Wavatars now? By the way, visit mrcontesty on YouTube for Shapeworld based on your Wavatar creations.

  43. MelTorefas says:

    I find this all fascinating, so thanks for posting it! I hope the less desirable comments don’t weigh you down too much.

  44. krellen says:

    Go back and re-read the comment threads on Project Frontier. Shamus’s proclamation about his source was not pre-emptive.

    And yes, on his own blog, Shamus’s ability to rant and rave is higher than that of the average commenter. If you want to rant about Shamus’s work uncensored, do so on your blog, not his.

    Also, you wanted “latter”, not “later”.

    Aww, looks like that was the step too far. Go ahead and delete this, Shamus. I won’t be offended.

  45. Zak McKracken says:

    Ok, the post I was replying to just got deleted …
    So what do I write in this space?

    Shamus, I think there are certainly some here who will just love anything you ever do, no matter what. There are some who’ll hate it (although I have no idea what makes them come back to this site).
    I think it does show in some spots that you have not spent the last ten years writing AAA games, but that makes it so interesting to watch you try stuff and figure things out and maybe even learn something in the process. And while you presenting your endeavours in this format is both entertaining and informative, I find it completely OK if you get some advice back from your audience. Some people around here seem to know a lot on the topic, or (however small) parts of it.
    I’m not seriously convinced that this project will have a particularly large impact, but I sure whish it’ll do well.

  46. Neery says:

    I am so endlessly charmed and fascinated by your trees. There are so many different ones, and all of them are interesting, and they all look great! I’m honestly really excited about one day getting the opportunity to run around that world. If the entire gameplay just consisted of running around gawking at the landscapes and the trees, I’d play the hell out of that game.

    And thank you for taking the time to write out all those explanations of your process. I’m not a programmer at all, so parts of it fly right over my head, but it’s really interesting to see all the decisions that go into making a game. It’s making me wish I had the patience to do something like this, although sadly I know I’d get distracted about two hours into the learning process.

  47. Zanfib says:

    Couldn’t you have just added “-Mulder” and “-Scully” to your search terms?

    Not that this in anyway exonerates the person who named the file format of course.

  48. cl says:

    Look Shamus. I am sure you are a busy man. I know you have more crap going on that people who have jobs. Even when you had a job you had 20 of them. So I am very sympathetic, but dude…umm…I need more Frontier related stuff. Math and all. I don’t understand half of what you say…but something is wrong if you are not saying them every day about this project.

    So…that said…there really should be no excuse for you not posting something about this project every day dude. Seriously. I might could even be talked into paying for the post…that’s how addicted I have become to this project. You had me at the first post.

    Also…how much would you charge for online/internet based coding lessons?

  49. Steve Healy says:

    never mind.

Leave a Reply

Comments are moderated and may not be posted immediately. Required fields are marked *

*
*

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun.

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!