Last week I dropped into Halo 3: ODST and I've really been enjoying it. (My wife would probably say I've been enjoying it too much and shouldn't stay up past midnight playing games, even if it is a Friday night). I've been sad to see it receive mediocre-to-bad reviews in the media, so I figured I'd put my opinion out there. I hope this review will tip the scales for some of my friends who haven't picked up the game--I need more friends to play Firefight with.
I've broken down my review around key points and provide counter arguments to many of the negative reviews.
Price
Most reviews need to get over themselves on this point, especially regarding the "Wasn't this a Halo 3 expansion?" crap. Both Microsoft and Bungie have been pretty clear that they decided to go beyond the scope of just an expansion.
Personally, I feel the price is just fine. It is right in line with all major polished games. Some people seem to think that Bungie "owes" them something -- as though because Bungie had previously built the Halo 3 engine they don't deserve as much money for a new game using it. As a software developer, I am more than happy to pay for good software and I'm keenly aware of the predicaments surrounding software often being under-valued.
But in any case, Bungie did update their engine for ODST, they added a new campaign, and they added a new multiplayer mode. And the stats available on Bungie.net go above and beyond what most games provide.
To me, getting the Halo 3 multiplayer maps is also a nice bonus. I hadn't bought any of them, so I feel like I got a good deal. But even without that, I'd still say ODST is worth the price (I still haven't put in the 2nd disc).
Campaign
I very much enjoyed the campaign. It reminded me of the original Halo: Combat Evolved -- I felt like I was exploring a new world again. Some people have brought up the "Halo 1" comparison as if it were a bad thing or that Bungie had somehow regressed. I disagree, feeling that they've taken the best of both worlds.
I'm a huge fan of the story in the original Halo. But somehow Halo 2 and 3 left me feeling quite unsatisfied. The overarching story was compelling, but it was ruined for me in the little details, contrivances, and the occasional terrible lines.
The ODST storyline really strikes a chord with me. You are dropped into a new setting very unlike the other Halo games (and no rehashed Forerunner levels -- seeya library!). You are given somewhat more leeway in how you go about completing your objectives. There is great voice acting and dialog. But the piece de la resistance is the atmosphere they create: the lost rookie in an occupied city; a fragmented squad trying to do the best they can.
Speaking of the squad, the Firefly casting is superb. They pay some excellent homage to the series, yet also manage to bring a very Halo feel to the characters. I agree with some reviews that they could have done more to develop the characters so you care more about the squad. But compared to the very two-dimensional Master Chief, the ODSTs have a lot going for them.
The combat dialog provided by the cast is fun to listen to, and also gives Firefight some nice flavor. Additionally I found that their dialog can also be very helpful, saying things such as, "Down to my last mag!" when you're running low on ammo. Sometimes I lose track of my ammo while in the middle of a fight, and that little audio clip really helps me out.
The Hub
The tasteless critics seem to think that the open-world hub area was just a play on Bungie's part to extend the duration of the campaign without adding any real substance. I can't understand this opinion. There is a great atmosphere and sense of exploration. It's the perfect setting for the story they are telling. It's true that the hub is somewhat light on combat, and I have no problem with that for the sake of the story!
Discovering the clues to what happened to the squad was compelling to me. I liked the idea that the city's AI, the Superintendent, had been recording events happening all over the city.
I also liked the optional "Sadie's Story". As a gamer who leans toward completionist, I found the search for these story bytes to be a very enjoyable treasure hunt. Unlike Assassin's Creed there are a reasonable number of items to find, and the Superintendent will assist the observant seeker.
ODSTs vs. Master Chief
Too many reviews are getting hung up over the differences between the ODSTs and the Master Chief. I can agree with some of these points. For example, why can't the ODSTs use equipment (e.g. bubble shield) but they can tote around a turret without breaking a sweat? It's pretty arbitrary.
But having said that, I enjoy the differences. I must vehemently disagree with the distinguished senator Justin McElroy of the site of Joystiq. He asked, in essence, "Who looked at the awesomeness of the Master Chief and asked for less?" Well, sir, I did.
I tire of the Master Chief. He's too powerful, and that cheapens the character. He's a one man army. From Halo 2 and 3, it would seem that he (almost) single-handedly saved Earth and defeated the Covenant and Flood. He's the superman of Halo, sans kryptonite.
I like that the ODSTs are capable, elite units, but not invincible. I like the challenge it brings, especially in Firefight.
Firefight
I love Firefight. I love cooperative gameplay, and this provides me some nice Halo multiplayer where I don't have to go up against 12-year-olds who are better than I. Having missed out on the Left 4 Dead and Gears 2 scenes, I'm ecstatic about the mode.
I was sad to see that only two of my friends have picked up ODST. I played Firefight by myself until I finally got a 2-player game going on Saturday. That game was awesome. Working together we were able to survive for quite a while -- and got the associated Firefight achievement to boot.
Conclusion
If you like Halo, you'll probably like ODST. If the original Halo was compelling enough to get you out to buy an XBox just to play it (as several guys I know did), then why are you quibbling over $60? Get it. It's worth it.
The campaign story is excellent. Put away your expectations of what a Halo story is "supposed" to be. Enjoy the audio magic of Nathan Fillion, Adam Baldwin, and Alan Tudyk. And most of all, play Firefight with me!
Monday, September 28, 2009
Friday, July 24, 2009
Iterative Programming
Programming in iterations is something that has always made sense to me at some level. If nothing else, I like seeing the change logs for each version of a program. But in the last few months I've had the idea on my mind quite a bit. I feel that my paradigm for programming is shifting.
It probably started when I got my new job and they kept asking about Agile development experience. Then later we had a week of official Agile training. I'd also been reading The Mythical Man-Month. Then the other day I also read a Coding Horror post about the same subject.
The main idea is that through iterative methods, software "grows" or "evolves". This is in contrast to the idea of "building" or "constructing" software.
As Mr. Brooks points out in his book, the analogy of "building" software is very compelling and can be very useful. It captures a lot of the careful planning and execution required when writing code. It also serves as a great metaphor as to why things are never just a "simple matter of programming".
But the building analogy falls short in many ways. It really fails to capture the mutable nature of programming. Code is not etched into stone tablets. It can be modified and bent to the will of the programmer as easily as I typed this post. Also, unlike a well designed and constructed building, you really never know if you've been building the software correctly until you've already done a good share of the work.
The emerging paradigm of "evolving" software seems a better fit. Like a plant, there are detailed structures and processes which go into programming. At each stage you can see gradual improvement. Each version or revision is the "offspring" of the one before. Good adaptations are kept while old or bad ones wither away.
This evolutionary process is driven by code changes made by programmers. A bug is fixed here, a new feature added there. Small tweaks are made all along the way. The skill set and demeanor of a successful programmer resembles a craftsman. He is a creative explorer rather than an assembly line worker.
It just makes sense to me. Iterative programming seems to have much better balance between documentation, planning, designing, and coding. You do enough of each of these to get to your current goal. Then you focus on the next step, the next feature, the next idea. Instead of getting lost in the pie-in-the-sky dreams, you're actually building your way to them. Of course, this means you have to be ready and willing to enter a chrysalis from time to time in order to change both inside and out.
I'm excited to see how iterative programming plays out in my own projects, at work, and in the industry in general.
It probably started when I got my new job and they kept asking about Agile development experience. Then later we had a week of official Agile training. I'd also been reading The Mythical Man-Month. Then the other day I also read a Coding Horror post about the same subject.
The main idea is that through iterative methods, software "grows" or "evolves". This is in contrast to the idea of "building" or "constructing" software.
As Mr. Brooks points out in his book, the analogy of "building" software is very compelling and can be very useful. It captures a lot of the careful planning and execution required when writing code. It also serves as a great metaphor as to why things are never just a "simple matter of programming".
But the building analogy falls short in many ways. It really fails to capture the mutable nature of programming. Code is not etched into stone tablets. It can be modified and bent to the will of the programmer as easily as I typed this post. Also, unlike a well designed and constructed building, you really never know if you've been building the software correctly until you've already done a good share of the work.
The emerging paradigm of "evolving" software seems a better fit. Like a plant, there are detailed structures and processes which go into programming. At each stage you can see gradual improvement. Each version or revision is the "offspring" of the one before. Good adaptations are kept while old or bad ones wither away.
This evolutionary process is driven by code changes made by programmers. A bug is fixed here, a new feature added there. Small tweaks are made all along the way. The skill set and demeanor of a successful programmer resembles a craftsman. He is a creative explorer rather than an assembly line worker.
It just makes sense to me. Iterative programming seems to have much better balance between documentation, planning, designing, and coding. You do enough of each of these to get to your current goal. Then you focus on the next step, the next feature, the next idea. Instead of getting lost in the pie-in-the-sky dreams, you're actually building your way to them. Of course, this means you have to be ready and willing to enter a chrysalis from time to time in order to change both inside and out.
I'm excited to see how iterative programming plays out in my own projects, at work, and in the industry in general.
Friday, July 10, 2009
Water Lilies
Water lilies float
in a still pond with their soft
lilac hues aloft.
This haiku came about because I was using a water lilies image which comes with Windows XP as a placeholder for a program I'm working on at work. For said program, I needed some text. It's amazing what the combination of being bored and tired at work can produce.
in a still pond with their soft
lilac hues aloft.
This haiku came about because I was using a water lilies image which comes with Windows XP as a placeholder for a program I'm working on at work. For said program, I needed some text. It's amazing what the combination of being bored and tired at work can produce.
Wednesday, June 17, 2009
Sunday, May 31, 2009
Source-Sacrifice
Apparently my blog has come down with a bad case of journalitis -- a condition where it is neglected for long periods of time.
My wife and I really have been quite busy of late. I have started on an open source project which threatens to take forever to complete, even if I do spend all my free time on it each week. And we are also getting new floors.
I've come to find a new level of respect for those programmers out there who spend their time away from work on open source projects. I've found it to be very difficult, even though I am really passionate about the project. I imagine that many programmers have to sacrifice a lot of other things to work on their labor of love. Especially after they've put in 8 hours at their day job. But I cannot in good conscience sacrifice much of my time -- especially the time my wife needs me. So I do what I can and hope that it won't fall by the wayside like other projects that I've embarked upon.
One thing that will help this project though, is that I have other people already interested in it and working with me. None of them are programmers, but they are experienced in the kind of work. Thankfully, they will be able to help me with much of the non-programming work that I tend to ignore or procrastinate.
I have a long term dream that someday work on this project could be my day job. But I'm a little fearful to ask how long "long term" will actually be. The end goal is something almost too good to be true. So in the meantime, I'll just have to patiently and diligently work toward my goal.
I'm reminded of a quote from Trigun, "Every great journey must begin with a single enormous step."
My wife and I really have been quite busy of late. I have started on an open source project which threatens to take forever to complete, even if I do spend all my free time on it each week. And we are also getting new floors.
I've come to find a new level of respect for those programmers out there who spend their time away from work on open source projects. I've found it to be very difficult, even though I am really passionate about the project. I imagine that many programmers have to sacrifice a lot of other things to work on their labor of love. Especially after they've put in 8 hours at their day job. But I cannot in good conscience sacrifice much of my time -- especially the time my wife needs me. So I do what I can and hope that it won't fall by the wayside like other projects that I've embarked upon.
One thing that will help this project though, is that I have other people already interested in it and working with me. None of them are programmers, but they are experienced in the kind of work. Thankfully, they will be able to help me with much of the non-programming work that I tend to ignore or procrastinate.
I have a long term dream that someday work on this project could be my day job. But I'm a little fearful to ask how long "long term" will actually be. The end goal is something almost too good to be true. So in the meantime, I'll just have to patiently and diligently work toward my goal.
I'm reminded of a quote from Trigun, "Every great journey must begin with a single enormous step."
Friday, April 17, 2009
Jetsettin'
It's been a few months since I took my new job. I've spent the time working on-site for one of our clients. It has been a good experience for me. The company is quite large -- we were drawn a small part of our org chart one time and it took up the entire wall. Based on what I've heard, I should be working for this client for a while to come.
I guess they have been pretty happy with my performance. My keen senses have picked up on that when they frankly told me so. They have assigned me to be the lead programmer for the upcoming project (which is based on the one I've been working on thus far). Then this week they asked me to travel out-of-state for two days to meet and work with the other departments we work with.
All in all, I am very excited about it. I'm glad that I've been able to earn their trust and demonstrate my ability. This kind of work isn't my #1 favorite -- I'm not actually writing or designing code -- but I'm doing my best at it. When I switched jobs a little while back, one of the main reasons I did it was to increase the breadth and depth of my experience. I think it is working.
The biggest drawback of it all is that I'll be away from my sweetheart. I suppose that these two days will give us a taste of what her upcoming Science Fair trip will be like. Separation-wise, that is.
I'll miss you while I'm gone sweetie!
I guess they have been pretty happy with my performance. My keen senses have picked up on that when they frankly told me so. They have assigned me to be the lead programmer for the upcoming project (which is based on the one I've been working on thus far). Then this week they asked me to travel out-of-state for two days to meet and work with the other departments we work with.
All in all, I am very excited about it. I'm glad that I've been able to earn their trust and demonstrate my ability. This kind of work isn't my #1 favorite -- I'm not actually writing or designing code -- but I'm doing my best at it. When I switched jobs a little while back, one of the main reasons I did it was to increase the breadth and depth of my experience. I think it is working.
The biggest drawback of it all is that I'll be away from my sweetheart. I suppose that these two days will give us a taste of what her upcoming Science Fair trip will be like. Separation-wise, that is.
I'll miss you while I'm gone sweetie!
Wednesday, April 8, 2009
STOP!
Yesterday morning after I dropped my wife off at work, I ran a stop sign.
I didn't mean to... I was just distracted somehow. Or maybe I didn't notice the sign (although I have driven on that road many times and should know by now that a sign is there.)
It freaked me out. Especially since it was a 2-way stop crossing a busy road. And just as I realized I had done it, I saw a police car up ahead on the other side of the road. Apparently he didn't notice my crime, because he just drove on by casually.
Everything turned out fine, I suppose. I wasn't pulled over. Even better, I wasn't in an accident. But I couldn't help thinking about how easily I could have been in trouble. The last thing I need is to be paying for causing a wreck.
Overall, I think I'm a pretty good driver. I try to be observant and obey the traffic laws. But this incident caused me to wonder how often I'm not paying attention while driving. It also gave me pause to consider that maybe the stupid drivers I often see on the road aren't really stupid after all. Perhaps they are just having a lapse of attention. Perhaps.
I didn't mean to... I was just distracted somehow. Or maybe I didn't notice the sign (although I have driven on that road many times and should know by now that a sign is there.)
It freaked me out. Especially since it was a 2-way stop crossing a busy road. And just as I realized I had done it, I saw a police car up ahead on the other side of the road. Apparently he didn't notice my crime, because he just drove on by casually.
Everything turned out fine, I suppose. I wasn't pulled over. Even better, I wasn't in an accident. But I couldn't help thinking about how easily I could have been in trouble. The last thing I need is to be paying for causing a wreck.
Overall, I think I'm a pretty good driver. I try to be observant and obey the traffic laws. But this incident caused me to wonder how often I'm not paying attention while driving. It also gave me pause to consider that maybe the stupid drivers I often see on the road aren't really stupid after all. Perhaps they are just having a lapse of attention. Perhaps.
Subscribe to:
Posts (Atom)
