jump to navigation

Finally finished the Graphics Black Book June 18, 2009

Posted by jhuculak in Industry Commentary.
Tags:
add a comment

I finally finished reading Micheal Abrash’s Graphics Black Book from cover to cover. I found it funny that Jeff Atwood of Coding Horror fame posted about it about the same time that I started reading it. Almost a year later I finally made it through.  I had read the Zen of Graphics Programming but not the entire collection before.

In my opinion there is only one real reason that Micheal’s writing and articles are exceptional: He LOVES what he does and it shows. I got my start in games programming in the pre-internet days and articles from people like Micheal or even books like Tricks of the Game Programming Gurus were like candy to me as a kid. It seems that since the 80’s, books on programming have generally become more stuffy or process focused and move away from the love of coding. It was good to read this book as a reminder that anyone that has the lucky job of creating things, in this specific case code, has a dream job that is contantly changing and challenging! Some people might be confused why someone would derive so much entertainment out of squeezing performance out of code. I think that the days of fast hardware are making the efficiency battles less important and less fun.

I consider this the “Great Cultural Divide” that is developing within the game programming community. There are people that want to code to the metal and understand everything that makes a program tick. Then the other group wants to make the computer do something specific and the details of that are not the strict focus. Some people split these up as programmers vs. scripters. The divide to me is actually between people that like working with well defined problems and people that don’t mind creative iteration and subjectivity.

Low level programmers love direct challenges and fixed hardware environments. This allows you to craft out the best possible solution to a problem and “know” that you are close to optimal. You can measure your progress by the time taken to execute.

High level programming is mostly about making sure you are hitting the requirements of the application within reasonable performance/memory targets and getting a product that is interesting.

Even through these personality types can co-exist in the same programmer, I still find that one takes a healthy precedence. I also think that the low level programmer is changing from being assembly programmers to being C++ programmers. It is a scary thought, but the move towards having fully fledged support libraries like .NET, XNA, DirectX etc. are making it so that you don’t need as low level expertise. This means we are making more programmers into the high level programmers and I find that less are doing it for a love of code, but rather for a love of results. This changes the dynamic and feel of the workplace from loving code and learning to frustrations about what hardware can do and how annoying the coding part is to get results. Meanwhile, the low level luddites hang onto languages that take twice as long to write the code and may not end up getting things done. This is going to lead to an interesting language transition in the near future where some other language will completely dominate C++, even in embedded systems.  I am interested in seeing how this evolves and what being a low level programmer will mean 5 years from now.

I also apologize for my lack of posts in the last little while. I’m packing my place up to try and sell and have been out of the house more than I have been in it!

Down with the Sickness again… June 8, 2009

Posted by jhuculak in Uncategorized.
add a comment

I had another crazy sick weekend. If I get the chance I will post more tomorrow but for now I’m just trying to sleep and hydrate.

Star Destroyer Part II – Geometry Block In June 2, 2009

Posted by jhuculak in Art, Speed Modeling.
Tags: , ,
add a comment

It has been a couple weeks since I looked at my Star Destroyer model. Last time I had come to the conclusion that I should start over because the geometry was messed up in the back of the ship. Rather than start from scratch I decided to delete the geometry be doing a boolean subtraction of a cube from that half of the model.

FixByCuttingInHalf

In order to subtract half the model I went through every vertex that should be aligned and moved them to 0.0 on the X-axis. Then when I subtracted the cube from that half I had a perfectly divided Star Destroyer and my bad geometry was gone forever.

Next step was adding some detail to the engines. I did this using some capped cylinders and extruding them back into themselves to make the engine shape. I still haven’t finished with the bottom of the ship but I might skip to details and UV mapping next week to maximize my learnings.

By no means do I consider this a “good block-in”. This is about building by skills, not fine art!

StarDestroyerDay2Shot1StarDestroyerDay2Shot2