Software development industry analysis by Larry O'Brien, the former editor of Software Development and Computer Language
Friday, June 29, 2007

Wii has announced that they will be opening the door to small developers on the Wii. The first take on this is that "WiiWare" is primarily about downloadable games a la XBox Arcade, but we all knew that was coming. More surprising is that Nintendo says that they will not apply their notoriously thorough and expensive vetting process to such games. No details on the SDK: whether it will be C-based or some form of managed language and no word on whether it will be free.

Friday, June 29, 2007 6:51:23 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | XBox360#
Sunday, March 25, 2007

Dream Games has extended their registration date for their Build a game in a year and increased the prize money to $10,000. They have also explictly stated that TorqueX based games will be allowed. Last date for registration is April 1st 2007

Source: Another $10,000 competition - for TorqueX Originally published by zman@thezbuffer.com

I almost landed a 25-article contract for high-performance programming for which I was going to develop a game. I had the games all designed, too. Oh well. None of us can afford a significant amount of programming for a purely speculative reward, but if you have the intention of developing a game anyway, what harm would it be registering for the contest?

Sunday, March 25, 2007 8:02:04 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | XBox360#
Thursday, March 15, 2007

Jon Udell suggests that if we have travel-like learning experiences online, then perhaps some of the non-obvious benefits of travel would also accrue in online environments. It's a nice thought, but I'm thinking that you don't necessarily choose "Gears of War" as your meeting ground.

Thursday, March 15, 2007 1:07:06 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Offtopic | XBox360#
Friday, December 29, 2006

Well, more or less...

There's really no way to program XNA, even in 2D modes, without learning HLSL.

Friday, December 29, 2006 9:40:26 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | XBox360#
Thursday, December 21, 2006

Absolute times to calculate a fixed range of the Mandelbrot set:

MachineConcurrencyLanguageTime
Dual-OpteronSinglethreadedC#~0.81
Dual-Opteron
Multithreaded
C#
~0.45
Dual-Opteron
Singlethreaded
C++
~0.50
Dual-Opteron
Multithreaded
C++
~0.38
XBox 360
Singlethreaded
C#
~4.4
XBox 360
Multithreaded
C#
~2.1
XBox 360
GPU Shader
HLSL
~0.05

This isn't even fair because the non-GPU timings are strictly timings of the calculation loop. The GPU timing is actually derived from my frame-rate.

I'm having some trouble getting my shader to run on my desktop (ATI All-In-Wonder with Radeon X800), but will post that number when I can.

Thursday, December 21, 2006 11:14:27 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Concurrency | DotNet | Knowing | XBox360#

Ah, that's more like it. This is a graph of duration (in seconds) versus the number of threads during a calculation of a Mandelbrot set using the XNA Framework on the XBox 360 (Neil: The previous graph was normalized speed, as you suspected. For more on labeling the Axis in Office 12, see the next post.)

In order to have the XNA Framework distribute processing, you must explicitly set the "thread affinity." This must be done within the worker thread (presumably early in the ThreadStart delegate) and, on the XBox 360, you must not use the values 0 or 2, which are reserved. Thus, I use code like this:

 

struct ThreadWorker
{
    int processorAffinity;
    static int processorAffinityIterator = 0;
    internal ThreadWorker()
    {
        switch (processorAffinityIterator)
        {
            case 0  :
                processorAffinity = 1;
                break;
            case 1 :
                processorAffinity = 3;
                break;
            case 2 :
                processorAffinity = 4;
                break;
            case 3 :
                processorAffinity = 5;
                break;
            default :
                processorAffinity = 1;
                break;
        }
        if (++processorAffinityIterator == 4) { processorAffinityIterator = 0; }
    }
   internal void ThreadRun()
   {
     Thread.CurrentThread.SetProcessorAffinity(processorAffinity);
     ... begin work ...
Thursday, December 21, 2006 9:46:09 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Concurrency | DotNet | Knowing | XBox360#
Wednesday, December 20, 2006

UPDATE: See this new post It looks like XNA does not distribute processing across the multiple cores of the 360:

This is identical code (a Mandelbrot calculation of a fixed size) running with multiple threads. While my desktop machine speeds up with more threads (peaking at 3), the XBox 360 running XNA runs at almost exactly the same speed.

Incidentally, the graphic shows normalized speeds. The actual performance of the XBox 360 is 1/5 - 1/9 that of my desktop (4.43 seconds as opposed to ~.8 seconds single-threaded or ~.47 with 3 threads).

Wednesday, December 20, 2006 2:30:15 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Concurrency | DotNet | Knowing | XBox360#

Sweet. Stay tuned for performance benchmarks, concurrency and GPGPU programming experiments on the 360, and maybe even some games...Maybe even a domain-specific language for writing board games.

Wednesday, December 20, 2006 11:24:33 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Concurrency | DotNet | Knowing | XBox360#
Tuesday, December 12, 2006

I spent about an hour last night playing with the release of XNA Game Studio. My first impression is that someone at Microsoft needs to contract me to write some tutorials! Heh heh heh.

Actually, I'm greatly looking forward to incorporating XNA into a series of articles I'm pitching on GPGPU programming. Basically, I've written the same program in Ruby, C#, C++, C++ with OpenMP, C++ with assembly language, HLSL, and I'd like to add implementations in Accelerator, PeakStream, and any other GPU-based languages / libraries I can find. It'll be fascinating to see how the XBox 360 stacks up in "one design" racing. (BTW, as much as I love Ruby, it is slaughtered in this type of comparison.)

Say... I wonder if I could develop a tutorial that ran on the XBox 360 that combined audio-video / screencasts / etc. teaching how to program in XNA Studio. I mean, I know I could produce the tutorial, I just wonder if the "XNA Creator's Club" would allow me to distribute it (i.e., sell it) via XBox Live. Hmmm....

Tuesday, December 12, 2006 12:22:42 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Concurrency | Knowing | Languages | XBox360#
Wednesday, October 25, 2006
Patrick Logan says that some Schemers have put a Scheme on the Nintendo DS. Naturally, my first thought was "Hmmm... I wonder if I could do that with XNA?" (Or, more generally, if one could write a self-contained interpreter / compiler that would run on the XBox360). You could certainly do a clunky, self-contained interpreter but the real goal would be something running at chip-level or at least CLR-level. Generating the appropriate bytes is certainly well within the capabilities of the hardware (are you kidding?), but the really, really hard thing would be convincing XNA to start executing your generated bytes as instructions. At the assembly-language or C/C++ level, of course, it's trivial to command the machine to "execute these bytes as instructions," but (one of) the major security-oriented points of managed environments is that such plasticity is forbidden. I suspect that XNA has pretty tight walls around the sandbox to prevent you getting around this limitation, as once you allow this capability, security guarantees become much, much harder. (Not impossible, though, in the case of managed code, since you can still run security checks at load-time -- whether the bytes were generated ten months or ten microseconds ago is irrelevant.)

Wednesday, October 25, 2006 9:34:08 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Languages | XBox360#
Monday, September 18, 2006

The slow boat from Amazon finally brought my copy of Test Drive Unlimited, a "massive multiuser online racing game" set on the island of Oahu. At first, I was slightly disappointed, since while the layout of the streets is based on reality, the scenery isn't. So it's not like you're bombing down the street at 180 and see the old water department and thereby know that you're coming up to Punchbowl Street (although I did shout to Tina "Don't go around the block! Just take Prince Kuhio the wrong way for three blocks!").

The individuality of the cars doesn't seem quite at the same level as Project Gotham Racing, especially the drift mechanics (in PGR3, you go around one corner and you can tell where the engine weight in the car is). The engine sounds of PGR3 are also more distinctive.

So, while I was very happy with the TDU as a different kind of racing game, I wasn't entirely jazzed. And then, after tooling around for a couple hours using either the gamepad or my MadCatz steering wheel, I discovered the somewhat obscure "Options|Controllers|Steering Wheel|Enable" setting. Oh baby... The problem with steering wheels has always been that games optimized for thumb-stick steering aren't responsive to the slight corrections of "real" steering. So although you have a steering wheel (which is nice), you have to throw it side to side. Not with TDU: once you tell it you have a steering wheel, the responsiveness improves tremendously and, instead of feeling like a video game, you feel like you're driving and can do things like stay in your lane, track through corners, weave through traffic... It's incredible. I lost like 3 hours yesterday to it. (For me, spending 3 hours of daylight in front of a TV is inconceivable.)

Awesome game.

Monday, September 18, 2006 8:07:54 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Offtopic | XBox360#
Wednesday, September 06, 2006

Sony's written a Folding@Home client for the PS3 and is getting excellent PR for the power of the Cell processor in the PS3. The various "@home" distributed computing projects struck me as a good example of the type of coding that was more likely to be possible on the XBox360 than amateur game coding.

Sadly, because XNA has locked out networking in its initial release, it doesn't look like an enterprising set of coders can write some optimized protein-folding shaders and get any work done.

Wednesday, September 06, 2006 5:02:55 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | XBox360#
Sunday, September 03, 2006

In a forthcoming column in SD Times, I predicted that one of the first things written using XNA GSE would be a Bittorrent client for the XBox360. Wrong. The current version of XNA does not allow network access.

Hmm...

Sunday, September 03, 2006 9:56:40 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages | SD Tools | XBox360#
Thursday, August 31, 2006

Ah. Although you cannot develop with XNA GSE inside a VM (either VMWare or Virtual PC), you can install Visual C# Express side-by-side with Visual Studio 2005. There's a slight weirdness in that VC# Express can only install to $PROGRAM FILES, while I normally keep my dev tools on a separate partition, but that's just a quibble.

Thursday, August 31, 2006 11:54:36 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Concurrency | SD Tools | XBox360#
Wednesday, August 30, 2006

Oh, bummer! Given that XNA GSE is a beta and given that it requires C# Express, not Visual Studio, I installed it in a VMWare OS, but when I went to run the sample SpaceWar game, I received a "No suitable graphics" message. I think that leaves me out of luck. Maybe I'll install it on one of my laptops, but if anything actually needs the power of my development machine, it's game programming.

Wednesday, August 30, 2006 9:01:27 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | DotNet | SD Tools | XBox360#

I'm kicking myself for having two weeks ago written a column on Microsoft's outreach to non-professional programmers. If I had waited until my current deadline, I would have an excuse to spend the day programming a game for the XBox. As it is, I have GSA sitting in my /Downloads folder and have to spend the day writing about... oh, I dunno' ... Vista pricing or some crap like that.

Wednesday, August 30, 2006 7:48:48 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | XBox360#
Saturday, January 14, 2006

casey chesnut has solved the issue of streaming DivX to the XBox360, apparently even getting decent framerates over 802.11g. Since I recently upgraded to a “pre-N” wireless network (Linksys wrt54gx2 – highly recommended), I am totally psyched.

Saturday, January 14, 2006 10:28:04 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | XBox360#

I love Geometry Wars on XBox360; it's a great arcade-style game that's perfect for killing a couple of minutes. Amazingly, though, it's apparently one of the few games that distributes its computation across the XBox's three cores.

I find it wildly amusing that something that is essentially an updated "Asteroids" is using three times the computational power of Project Gotham Racing 3.

Saturday, January 14, 2006 10:16:31 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | XBox360#
Friday, December 23, 2005

I have what was considered a great TV in its day (the year 2000) -- a 27" Sony Trinitron. There are no over-the-air HD signals here on the slopes of Hualalai Volcano, I have basic cable, and my Tivo doesn't record in HD. Project Gotham Racing totally makes me want to go out and spend $1,000 on an HDTV. (With better visual cues, I'm sure I could shave 10 seconds off my Nurburgring times -- I'm just sure of it!) Not gonna' happen, but all the HD manufacturers ought to send Bill Gates a box of chocolate or flowers or something...

Friday, December 23, 2005 7:56:31 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Offtopic | XBox360#
Search
About Larry...
Flickr photostream
Subscribe: RSS 2.0 Atom 1.0
Popular Articles
Programming Sabre with Java, C#, and XML
Genetic Programming in C#
15 Exercises To Know A Programming Language
Top 10 Things I've Learned About Computers From the Movies and Any Episode of "24"
Recently Published Articles
HI
KonaKoder
Categories