Archive for the ‘Uncategorized’ Category

That time of the year

As the end of the year is upon us, all the gaming publications are pushing their “top whatever of the year” or “top X games of the year” bullshit. Next Generation seems to have taken it to an extreme:

Top 10 Blunders of 2007
Top 25 People of 2007
2007’s 50 Biggest Events
Best 30 Games of 2007
Top 10 Game Design Innovations of 2007
2007 Holiday Buyer’s Guide
Japan’s Best Games of 2007

… and finally to solidify the greatness of 2007:
2007: Best. Year. Ever?

I don’t know, maybe I’m just cynical. Maybe these lists do have a purpose, fulfilling some sort innate human desire for yearly enumerations.

Success Depends on Others Failing

I came across this article today. It’s somewhat interesting overall, but there are 2 things which particularly struck me, first, the following paragraph…

The researchers were especially interested in the set of outcomes where both players answered correctly. For any given prize value, the brain’s reward response was bigger if the other player earned less. Players on average were more pleased with a 60 euro prize when the other player got just 30 euros, for example, than they were if both players earned 60 euros, or if the other player got more.

I can only guess what my brain scan would show, but my gut feeling is that I’d likely feel empathy for the person being rewarded less and/or reduced satisfaction (or no satisfaction) due to the fact that my reward is inflated. However, I could definitely understand the negative reaction if I were the person being rewarded less and the satisfaction for being rewarded more for doing more.

Also, this seems really sad to me. It would indicate that humans are, in general, inherently selfish as we have no problem seeing others rewarded less for doing the same work.

(I hate that the article somewhat convolutes the issue, by casually making a segway to the “keeping up with the Joneses” concept; there’s a fundamental difference in keeping up and keeping up unfairly)

The dream of a standardized gaming platform

There was a small story last week about a guy from EA (Gerhard Florin) saying that dedicated consoles are bad for developers and consumers, and that an open, standard platform would be preferable to the current state of things. Ars Technica has a nice write up.

The idea is a bit out there given the current climate of competition between MS, Sony, and Nintendo, but it’s not without its merits.

I’m not going to reiterate what’s in the Ars Technica article, but a few things I thought about after reading it:

  • 1. A cheap machine that almost anyone can afford to pick up and that can play any game on the market is not a bad thing.

    Consider DVD players:
    • They’re cheap
    • A single platform and disc format = simplicity. (put in a dvd disc and it plays a movie)
    • Almost every movie can be found on a DVD disc.

    Now consider the typical console or gaming PC:
    • They’re expensive
    • A multitude of platforms and disc formats != simplicity. Think of it from the dumb consumer’s perspective: I want a game, I don’t want to consider my hardware platform choice or graphics card specs. (When you buy or rent a DVD, how often do you consider what type of DVD player your going to play it on?)
    • Unless the developer/publisher supports your platform, your screwed. As Nintendo continues to exclusively support its platforms and Sony and MS buy up studios to bring out exclusives for their platforms, the library of great games for a platform shrinks (due to less third-party developers and publishers), and in a weird sort of way I think this diminishes the value of the platforms themselves and weakens sales and exposure of the games which are exclusive to the platform (maybe Resistance: Fall of Man would have been much more popular if gamers weren’t forced to buy a $600 machine to play it, and maybe even Halo 3 would be even more insanely popular than it already is if it was released on multiple platforms). On the flip side, publishers which try to support all the platforms have a much harder time due to increasing development costs and technical hurdles; they are ultimately forced to take very little risk on new ideas or focus on platform exclusive titles.

  • 2. While a standardized platform could certainly be a hardware solution as EA sees it, a software solution is not a bad idea. If all consoles and PCs have a common platform on which to develop, porting a game would be significantly simplified. It doesn’t achieve the DVD-player-esque usability I outlined above, but it’s certainly better than what exists now.

  • 3. The lifetime for a console seems to be getting longer (the biggest selling console last christmas was the PS2), if the lifetime for the current “next gen” consoles are even longer, the PC may swing into the limelight. What’s a high-end PC today will become a cheap, ordinary PC soon enough and hardware-wise it would be more capable than any of the consoles. In this event, releasing PC games may become more attractive as there will be a very large install-base for the target platform.

Anyways, a lot of this may just be a lot of wishful thinking. Sony, Microsoft, and Nintendo won’t waste any time in trying to crush anything that challenges their market share.

Resistance: Fall of Man Lighting

I stumbled across an interesting article last night; it’s the creation of the lighting for Resistance: Fall of Man by Eric Gooch, a lighting artist at Insomniac Games. He also has a pretty cool blog and I totally agree with him about level bosses.

firesync 2.0 coming soon

firesync 2.0 is just around the corner, there aren’t a whole lot of new features but it’ll be very stable and fast, with quite a few tweaks (delay in querying the network won’t lockup the UI) and improvements (graceful handling of conflicts, where copies of overwritten files are sent to the recycle bin). Perhaps the only major new feature it’ll have will be the ability to handle file deletions and renames, which seems to be an issue with a lot of sync apps. (A revised sync algorithm handles this, it’s not done using a service running in the background; I wanted to avoid a service at all costs as it can lead to some sticky situations, e.g. what happens if the service doesn’t start or is killed?)

One feature I would have liked, but may not make it in is “auto-sync,” which would have automatically sync’d files when your CPU was idle or its usage was very lower (I rejected the idea of a scheduling system b/c [a] users won’t take the time to do it and [b] it can be hard to guess when both machines setup to be sync’d would be free and connected to the network). It’s not difficult to implement, but I doubt I’ll have the time to properly test it (and for firesync, testing anything takes a huge amount of time and patience). However, it’ll definitely be in firesync 3.0.

Anyways, I’ll be talking more about firesync 2.0 when it’s released, for now, enjoy the new logo…

firesync 2.0 logo

Loop Burn

Here’s a small program I created and used to test the Single Core Launcher I talked about in my last post. It’ll run both cores in a dual-core processor at 100% (i.e. it’ll use 100% of a dual-core CPU). It might be useful to someone else.

LoopBurn -> download here!

Note: It is not generic and will not scale to processors with more than 2 cores, so this will only burn 2 cores if you have a quad core setup.

Oh, and it doesn’t do anything special it’s just incrementing variables. I was going to have it display something, but output to the console actually incurred a delay which lowered CPU/core usage.

Bad dual-core processor, no twinkie for you!

So, I’ve had a new desktop for a little over two weeks now, but stuck with my old one because there was just too much stuff that had to be transferred over or reinstalled and I didn’t have the time. This past weekend I finally made the move.

Now, my new desktop is cool high-end machine and of course that means it has a dual-core processor (well, I could have gotten a quad-core processor now, but the prices are insane). I got an Athlon 64 X2 6000+, which is pretty sweet. The comparable Intel chip (the E700 or whatever) does squeak ahead on the benchmarks, but not by a whole lot to justify its substantially higher price tag, even after the price cuts last month.

Overall I love my dual-cores, but yesterday I tried to run Deus Ex: Invisible War, just b/c I’ve never been able to run it will all the graphics setting cranked up, and it froze on the menu screen. So I rebooted (it was fullscreen, and I couldn’t get to task manager) and googled for solutions. Turns out it’s a pretty common problem, and the fixes were either:

a) Install dual-core optimizer from AMD (even though the dual-core optimizer seems interesting, my system was working fine and I wasn’t too crazy about installing additional stuff just to run this game; for the most part, I like to keep my system running the way it would for a typical user so I don’t write code with false expectations about the environment it’ll be running in.)

b) Hit Ctrl+Alt+Del before the menu screen shows up and set the thread affinity of the process to a single CPU core. (I played around with the config file, was able to start the game in a window, to prevent having to reboot if it froze again, and this little hack worked, but requires an amazing amount of speed and agility to set the thread affinity before the game loads the menu)

So the problem was obviously that the game couldn’t deal with multiple cores.

I had played around with thread affinity (just a fancy way of saying which processor a thread runs on) in code a while back and figured it might be possible for me to do a quick program to set the thread affinity automatically. The big question was would it be possible for a parent process to set the affinity of a child process, and would any processes spawned by that child process inherit the affinity? (The inheritance issue was especially important b/c DX:IW is started by running DX2.exe which executes DX2Main.exe, and you can’t execute DX2Main.exe without launching DX2.exe; there are quite a few other games that have similar setups). I guessed that affinity should be inherited and after a little bit of digging, a post in Raymond Chen’s blog confirmed my assumptions.

So, I set about making an application which would allow you to run a program on a single core of a multicore processor. It took a couple of hours. I did a nice interface using C#/Winforms and the code to actually launch the app and set the thread affinity was done in C++/Win32. I’m calling it Single Core Launcher, this app was small and simple, so no fancy name for this one.

single core launcher screenshot

Single Core Launcher -> download here!

(Extract all files to the same directory and run “Single Core Launcher.exe”; requires .NET Framework 2.0)

Oh, before making this I also found Mike Lin’s SMPSeesaw, which is pretty cool, but it only allows you to switch which core an app is running on after it’s already been started.

My adventures in web design

I’ve tended to avoid web design and web development work like the plague. I’ve done web stuff on and off since the early days of geocities; remember, back when everyone had a web page or fansite of some sort? There was even a web design class at my high school where students made sites and put them up on geocities. Then of course the geocities fad went away and, fast forward a few years, we now have myspace filling the void.

Anyways, there is a sense of satisfaction from building a website, but in the early days I never had much of an interest in it and if I needed something done, I’d just hack it out in Frontpage. In more recent times I’ve been put off by the annoyances encountered when supporting multiple browsers. Learning a language or a technique was one thing, but all too often web design work felt like learning hacks to get things to work in a certain browser (typically IE6). And of course, I still didn’t really have much interest in it because of all the game development stuff which always seemed much cooler.

However, there’s no denying that outside of a few specific fields (e.g. video games) in the computer programming world, most programming jobs now require some form of web development work and, more often than not, the projects being worked on are web-based services. So being the pragmatic person I am, I decided to invest some time in learning some web stuff over the past two months. I’ve spend a ton of time learning XHTML (well, ok, learning XHTML takes like 5 minutes) and CSS (via. web, book, and class at NYU), which is very interesting and so cool now that I realize that you can do more with it than just do the hover effect on hyperlinks. I’ve also spent some time on PHP, which is fairly simple to pick up for anyone that has some computer programming experience and while not the prettiest language, it is very useful and seems to do a great job of addressing web-specific issues. I’ve also spent some time on ASP.NET (which seemed natural for me, as I’m familiar with C# and the .NET Framework), but haven’t really done anything practical as yet. I’ll also be putting in some time with Javascript soon. Almost all my time for the rest of this month will be web development work, as I have 3 paid projects and 1 personal project (I’ll talk about this next month) that needs to be completed in early May.

So am I in love with web development now and given up on game development? No way! Game development is still #1 (the Zerospace solution is open and sitting patiently in my task bar), but web design and development is very interesting. I love the workout I’m getting in Photoshop (somehow or other, I think I’m becoming a competent graphic designer). I love styling in CSS and not having to fight with tables (bad Frontpage memories) is wonderful. And some of the stuff that can be done in Javascript seem to rival Flash (check this out). I’ll probably try to learn Flash and a bit of Actionscript next month, but I’m not too sure about that as yet. My one negative comment about doing web design is that browser inconsistencies still exist (from what I can tell, primarily with CSS support). IE7 seems fairly good when it comes to CSS standards compliance, but IE6 isn’t dead and probably won’t die anytime soon.

I was going to rant a bit about the rise of web applications and the decline of desktop application, but I’ll save that for another day.

RTF to HTML converter 1.01

Stupid me, I didn’t anchor the label at the bottom-right correctly causing the label to overlap the text areas when the app window was resized. New version is up.

Rtf2Html Version 1.01
(Requires .NET Framework 2.0)

RTF to HTML converter

I tried to find a lightweight app that converts RTF text to HTML text, mainly so that I could post formatted code from Visual Studio on the web. Unfortunately, I couldn’t find one and doing the conversion through MS Word is way too time consuming, as I would have to save to an HTML page, then go and extract out the relevant HTML. So I ended up making my own …

Rtf2Html Version 1.00
(Requires .NET Framework 2.0)

Note: The only formatting options handled are: text color, bold, italic, underline, and strike-thru.