Monday, September 29, 2008

Operating Systems

Seeing as I am not done setting up new computer (I've been pretty busy), I suppose I will post on something else. Operating systems!

While today we only there are only 3 main operating systems (2 as far as most consumers are concerned), there used to be many. Here is an ascii art graph of chart of the decline in their numbers (Please excuse all the `s. HTML and white space don't get along):

```|```/---\
lots|---/````\
```|````````\---\
```|````````````\--\
```|```````````````\
`3`|````````````````\--+
```+----------------------------------
```A while ago```````````Today

I would love to go into the details of the research I did to come up with this scientific looking graph, but I won't... for the sake of brevity... yeah, that's it.

As you can see, OSes have become endangered. Each year there population declines, and there hasn't been a new OS in years. If we aren't careful, we may lose the majestic species forever!

Well, obviously OSes aren't going anywhere for a while, and we probably won't see any of the big three disappear (although it can be argued that Mac's OS is starting to resemble a Linux distro more than a completely separate OS since it is now based off of BSD (to be honest, I'm not really sure what the difference between BSD and Linux is)).

Have OSes really just become so complicated that it's not feasible to build a new one from scratch? Are we going to just continue to add on to what we already have?

Well, I found some people that don't think so: http://www.osdev.org/. I would suggest checking out the wiki, it has everything you could ever need to get started on a brand new OS. Even if you never plan on trying (like me), it is still interesting as a reminder to just how much goes into one of these behemoths. And humbling, to say the least.

So the next time you get frustrated at Vista for being bloated, Linux for being hard to install, or Mac for ever thinking that one button on a mouse is sufficient, and grumble that you could do better, well, now you know where to start. And if you don't think that a small group can put an OS together, check out http://www.menuetos.net/, it's an OS that was written completely from scratch and fits on a floppy disk. I used it back in high school (back people still used floppies), and I'm happy to see that they are still maintaining the project.

Wednesday, September 24, 2008

Rock Band 2 and using Properties

Good Wednesday Everyone,

Unlike James, I did not do a good job of thinking of a topic during the last week, slightly busy and such. I did do a fair amount of Rock Band 2 playing, and I will spend a few moments summing up what the multitudes of reviews have said along with a few pet peeves. I think I will also spend a few words talking about using Properties as a method of potentially fostering easier and quicker game development.

Rock Band 2 is a fantastic expansion pack game. No really, it is more a an expansion pack with a few gameplay tweaks than it is a full sequel, however I have no problem spending 60 dollars on 80 some-odd fantastic songs along with everything else. The song list is pretty damn crazy! While there are a few songs which I am pretty “meh” about in terms of their value as a song in Rock Band (Master Exploder, Visions the sound quality isn’t that far off) in general the track list is amazing. But where I feel Rock Band 2 falls short are in the little itty-bitty details which you often notice when you play a game a lot. How come my previous scores are displayed as they are? Where are the stars I earned, or how about the percentage of the song I was able to complete? Why aren’t these options I can turn on and off? The more I am able to customize my interface, the happier I am. These are not hard things to implement. All of these fields are being stored by the game, and I should be able to tell the game which ones I want to see. Overall Rock Band 2 is very worth the money, I just wish that it was a slightly more polished presentation.

Now, on to using the paradigm of Properties to maybe help develop games quick and easier. Properties are something that I use at work. Essentially I have the ability to adjust values in my program by simply changing them in the property document, and then restarting the program rather than hard coding them in and having to constantly re-compile. What if we wrote a helper class that, at runtime, would read in a text document which had a map of values and used those when running the game? The guy is hitting too hard? Well turn down his damage and restart the game. This allows for quick and easy tweaking without having to go back to the source code. This also allows for an easy way to modify the game if someone wants to make it easier and harder.

Now the system I use at work is incredibly robust, and what I explained here is only a tiny fraction of its power. However, it was designed and written by people with much more experience than myself. I simply think that some of the ideas behind it have a lot of potential.

Anyway…until next time!
-Matt

Monday, September 22, 2008

New Computer

I typically try to think of ideas to post on throughout the week, to give me time to develop them and prevent having to rush one out just to keep up with my (self-imposed) deadline. This past week, however, I was having a bit of trouble. Nothing I came up with really seemed to be of the... caliber that has come to be expected on this blog. But I lucked out as a topic just fell into my lap last Friday morning when I went to turn on my computer: it was dead!

My first thoughts when looking at the black screen were, "Alright! I bet I can turn this into a blog post! Sweet!" And as I spent the next few hours trouble shooting the problem only to find that the problem is either with the video card, motherboard, or CPU, I could barely hold in my jubilation as I began to write the post in my head.

I have decided to go ahead and build a new computer instead of fixing my defective one, as this is not the first major problem that I have had with it. So, Friday night I took my laptop down to a nearby Chick-Fil-A and spent about an hour picking out parts on NewEgg.com. Why Chick-Fil-A? Because the internet in my apartment was out, and you can't really beat the combination of free wi-fi and chicken sandwiches.

Parts in total cost $715, and that's for the case, power supply, processor, motherboard, memory, and hard disks. I'm going to see if the old video card still works before I buy a new one because I would rather wait a year and get a better one for half of what I would pay for a top of the line one today. I can reuse the optical drive, as it is a decent dvd burner, although the IDE cable my be a pain in my new case. (An interesting aside, I found an old newegg wishlist from November 2006 which cost about 700 bucks as well. You can't make a direct comparison since many of the parts are out of stock and my priorities have changed, but I'm looking at roughly 4x RAM, 2.5x HD (only counting one of them), and 2x CPU (well, 2 cores instead of 1))

You see, I decided to go with the micro ATX form factor. These may seem like a really dumb idea for someone who likes to play a lot of games on their computer, but I assure I gave this plenty of though (which I suppose doesn't mean that it's not a stupid idea). I had originally been considering going pico ATX: small, low power consumption, low heat, and little noise. Unfortunately the trade off is in performance. Pico would work for me if I wanted a cheap server running 24/7, but as my main development and game playing rig it just wouldn't have the muscle.

Micro, however, doesn't force you to compromise much more than a few expansion slots that I would never use anyway and only a little in the way of performance. I will share the wish list on NewEgg when they update their public lists, but for now I guess I'll just link to all the components:
Intel Core 2 Duo
ASUS Micro ATX mother board
OCZ 2 x 2GB
Samsung 640GB SATA 3.0G (2 of them)
Athena 470W Micro ATX power supply
Silverstone Aluminum Micro ATX case

Not bad for a computer that will actually fit in my desk. It's not the bleeding edge, but it will get the job done for the next few years. As long as it does what any good collection of hardware should: never bother me. The harder decision here: what OS.

This may seem like an easy question considering the fact that I am working on games in XNA, and XNA means Windows. But windows isn't ideal for me, as I also would like to host files and perhaps an SVN repository. Windows just doesn't have the reliability of a solid Linux distro, and I miss bash (I'm sorry cygwin, but I need the real thing).

Whatever will I do? Find out in next weeks blog (Ha! I knew I could stretch this into two posts)! Will it be Windows? Will it be a Linux distro? Will it be some mixture of the two with the help of some super nifty virtualization software?

Wednesday, September 17, 2008

So...Rock Band 2...(and Braid)

Kept my busy all evening, because it is very fun. So I will have a more involved post in the next couple of days about, you guessed it, Rock Band 2!

But in brief I do want to draw your attention to Braid. The child of Jonathan Blow, this is truly an epic platform game. While Blow had some help from other sources for the art (and I assume sound), the incredibly basic game play mechanic of controlling time has never been so fully realized. Imagine the new Prince of Persia games, except now you really do control all of time. You can rewind back to the very moment that you entered the level, or if you miss a jump, rewind to the to before you feet left the ground. You never die, and you never have to worry about saves.

But the game is still incredibly challenging. Some of the puzzles are complete mind benders, and require a good ten minutes of sitting and mentally running through all your options until you get the proper set of moves to accomplish the goal. One of the neatest things, however, is that there are puzzles within the puzzles. You have the over arching story that allows you to really, truly relate to the characters, but throughout each level you battle puzzles to get...puzzle pieces. These can be put together to form 3x3 and 3x4 puzzle images that help deepen the narrative.

Blow did have to sink approximately 180,000 dollars into this project according to Wikipedia. That is a wee bit more than I am willing to put down right now for any kind of game. However, within the first week, Braid sold approximately 55,000 copies. At 15 dollars per copy we are talking about *busts out the start->run->calc* 850,000 dollars. Now I am not sure how much of that Microsoft gets to keep. Lets be super generous to them and say they get two thirds, so that leaves Mr. Blow with 275,000 dollars. Damn. And that was only the first week of sales. So to say that Braid paid off I think would be a bit of an understatement.

So I did not plan to write this much tonight. Rock Band 2 will come on full force next week!

-Matt

Monday, September 15, 2008

Civilization IV

As we approach this holiday season, there are many blockbuster games on the horizon and a few which have just arrived. Rock Band 2 is out, I have a copy of Spore waiting for my at my apartment's office (damn getting off work after they close!), Warhammer online is about to / has release depending on your version, and we have even more to look forward too: Fallout 3 is a mere month and a half off, and Starcraft 2 is on it's way.

But I have yet to play any of these games, so instead I'm going to do a bit of a review of Civilization 4, which I had somehow neglected to play until about 2 weeks ago. I guess this review is a bit late, seeing as the copy I bought was the "Game of the Year Edition."

You see, when Civ4 came out, I scoffed at the idea of paying fifty bucks for what looked nothing more than upgraded graphics for a game that would be fun in NES era graphics. Plus, I still remembered the features cut when they came out with Civ3 (Really, who cuts multiplayer in a sequel? 1602 A.D. / 1503 A.D. Don't think I didn't notice!).

But I am please to say that Civ4 is more than just a pretty re-skinning: some core game mechanics have been changed, and for the better. Take the new religion system for example, it adds a whole new dynamic to foreign relations (the system for which has also been greatly improved with the addition of much needed feedback) and a new way to expand your power.

While the new additions have given depth to the game, such as with the much improved unit experience system, Civ4 has become no harder to play. One of my room mates was new to the series and had almost no problem jumping right into a game thanks to the clear interface (smiley face good, frowny bad), sensible mechanics (tank beats horse) and surprisingly helpful adviser tips. I know that none of these things are brand new in this version, but they have been refined to improve clarity (hammers instead of shields for production, productivity units of 5 are grouped (5 hammers = 1 anvil)). I also have to admit that I listen to the adviser pop ups much more in this version, although they can still get annoying.

I would like to see more playable scenarios, and the camera can be frustrating if you try to fight it, and occasionally I just want to tell the pop up adviser box to shut the hell up because I know what I'm doing, I mean I'm the emperor of the most powerful nation in the world for crying out loud, but these are minor complaints. In the end, we have a great example of what a sequel should be. Civ4 is more refined, easier yet deeper, and even more fun than it's predecessor.

Although they did get rid of the palace.... unless my people just really hate me (did I mention that you can institute slavery?).

Wednesday, September 10, 2008

An Afternoon with Ben Wallace

Hello again everyone, it has been awhile since I have posted here. James wanted to start blogging again, and since he is focusing on doing a Monday post, I said I would have a post up by Wednesday for all of our non-existent readers.

Monday afternoon I had the privilege of meeting and listening to Ben Wallace, Engineering Lead for the Halo series. Ben gave a very interesting presentation on how he developed solutions to creating highly realistic lighting and material for Halo 3. Halo uses the tried and true method of bump mapping to apply textures to their models, and this gives the model much more depth without requiring more vertices. Bump mapping using take a flat texture that has different normal values (how much and in what direction the light bounces off) for different areas on the texture. When this texture is applied to a flat object, that object acquires depth.

Much of the depth on the textures in Halo 3 comes from this technique. This by itself is not a huge contribution to game engineering, however Ben’s techniques for dealing with the massive amount of calculations that need to be performed is more so. Unfortunately for all of you, I did not take any notes during this talk (I wasn’t really thinking about blogging at that time). To sum it up, many calculations need to be done in order to deal with reflections of the world on shiny objects, light reflecting around the world, High Dynamic Range lighting – which is what happens when you are standing in a shadowy area, and there is incredibly bright light coming in from an outside source – and Ben and his team created and modified ways to approximate all of this so that Halo could be played with anything resembling a decent frame rate.

All in all it was an interesting presentation, and Ben is a very nice guy. I have rediscovered why I don’t think I will ever truly be a software engineer like he is, I just don’t have the penchant for learning math and honing my skills to the degree of sharpness that is required. Some things that he did mention at the end: If you want to be a game engineer you should definitely pursue some high end calculus, vector geometry, and other middle level mathematics. Along with that, make sure you are actually working with implementing these kinds of things on your own. Nothing will convince a game company to hire you more than seeing you have the initiative to do work for your own sake.

In other news, in the next few months, James and I should be starting on a couple new XNA projects for our own enjoyment. I am sure more details will be put up here and we flesh out the ideas we have right now.

Next week – talking about Braid and probably Rock Band 2!!!

-Matt

Monday, September 8, 2008

Dream, Build, Play

AKA: Dream, dream, and dream some more.

Microsoft has set out to, as they say, "democratize" the game industry with XNA.

For those of you who have not heard of XNA (and are too lazy to look it up) here are some helpful links: Gamasutra feature and Official Page. You will also find many references to it in past blog posts, as Matt and I have used it extensively and have even made some video tutorials on it: Blog Post or Download Page.

The idea is to give the power to make games to mere mortals. No longer will games only be produced by huge teams and EA's sweatshops, but by anyone with the with determination and a little bit of know how. XNA (you don't want to know what the acronym stands for) allows you to write games in C# that can then be played on both windows machines and the XBOX360. And other than the account required to play the games on your XBOX, it's all free! And if you sign up for Dream Build Play, you can get a four month Creators Club account free too.

So instead of having to learn C++, one can start of with managed C#, which is much easier to learn. As far as the amateur programmer is concerned, there are no make files or pointers or any of that other confusing C++ stuff. I originally learned how to program in Java, and I must say, the transition was quite smooth.

But XNA is more than just a language choice: there are a multitude of included libraries designed to make writing a game easier, and a plethora of examples and tutorials. There are libraries for interacting with a gamepad, doing matrix operations, and collision detection. I really don't know how they could have made making games any simpler.

But... where are all the games? There are some notable examples, such as some of the previous Dream Build Play competition winners (XBOX.com news), but I haven't really seen a major explosion of indie games. Maybe I haven't given it enough time, and maybe my expectations are too high, but so far the most Dream Build Play has done for me is taught me that "democratize" is actually a real word (I though for sure they had made it up!). I was hoping for a resurgence of the maverick game makers, a new John Carmack or Richard Garriott to show those big game publishers that we don't need them! If a kid gets sick of WWII shooter 12 and thinks he can do better, than gosh darn it he can! All it takes is some dedication and a spot of help from XNA.

But the industry has changed to much, and the best we seem to be able to do with XNA is make some slick looking arcade-style or casual games. Even so, and please correct me if I'm misinformed, we haven't seen an explosion of these games either. XBOX Live has had some successful arcade games (such as geometry wars and Matt mentioned "Braid") but we have yet to see a gaming revolution. I don't see people buying XBOX 360s just so they can play these games, and I definitely don't see "democratized" game making. But what can I expect? After all, a democracy depends on the involvement of it's people, and I certainly haven't done my part.

Which brings me back to the start of this post: despite being interested in games and even making some with XNA (such as the demo one Matt and I made for the video tutorials), I have yet to make a concerted effort to enter in the Dream Build Play competition. I have plenty of ideas and was really excited about this iteration of the competition, but now the deadline is looming and I have nothing to submit. I've got the "dream" part down, but have yet to execute on the "build."

Well, I think it's time for that to change. Although it's a bit late for this competition...

Monday, September 1, 2008

Steam

Let me start this post by saying that I love the idea behind Steam, Valve's gaming platform (http://www.steampowered.com/v/index.php). Being able to buy a game, download it, and then have it automatically update seems like such a great idea that I find it hard to believe that it's not more popular. With a high speed connection, it's ridiculous that one would have to drive all the way to a store to buy a game! Just download and play! So easy and convenient! Sign me up!

And I did sign up, I bought a few games through Steam, and I must admit, I was loving it. I could browse the store, try out demos, and I knew that if I ever bought a new computer, I could just re-download all of the games without the hassle of trying to find those long lost cd keys. Not to mention not having to pop a disk in to my pc every time I wanted to play a game (what is this, a console?).

Unfortunately my early optimism has been steam rolled by a horrible UI, debilitating DRM, poor network connectivity, and resource hog. Not to mention the fact that I am no longer able to play Team Fortress 2.

Steam can take a long time to load, and has increased my windows start time. That bugs me. It also does not work on networks with a DMZ. That bugs my room mate, who is kind enough to switch the option off (thus making his self-hosted site inaccessible when I want to play a game). For some reason, Steam still does not work on my network, and the UI gives no indication as to why, or even that a problem exists. This drives me nuts, because I don't even have an error number to start looking for help with. Finally, I can't play TF2, which downright infuriates me because I paid for the game.

Well, I might be able to play... I hit the launch button about an hour ago, and it appears that the game is finally updating. Finally. Two weeks ago I decided I wanted to see what was new in the Heavy update, and since then it has been an ordeal trying to update steam and get it to run a game. Although the whole time Steam was able to keep me updated on when all of my friends where online playing. GAH!

And when you get down to, all the convenience that is potentially gained by this content delivery system has been totally obliterated by the all of the problems I have run into. I like the idea, but thus far the implementation has left a lot to be desired.