The Code Zone Bargain Basement Blog


Imparting Game Development Wisdom of Dubious Quality Since 1998

Monday, June 23, 2008

Memory and my personal conspiracy theory

Dang, memory has gotten cheap. It's gotten cheap both in the physical sense (I just upped my laptop to the max memory it'll support for $44), and in the metaphorical sense. People just don't think about how much memory things require anymore.

I remember the old 386MAX/QEMM days. Those were apps that would cleverly stuff things like drivers and TSR's in areas of memory that MS-DOS wasn't normally able to access, thus giving you more free space for your app. And sometimes if you really tweaked it you could get 50 or 60k extra space for your app.

Last week I popped up Shelly's task-manager to see how much space Civil3D 2009 (with a big drawing loaded) was occupying. 650 meg. That's a thousand times the typical amount of memory that computers had in the olden MS-DOS days, and ten thousand times what the old TRS-80's and Apple II's typically had.

But now I really don't care. I was a bit taken aback last week when I discovered that Digsby on my machine required ten times as much memory as the program it replaced (Trillian=6 meg, Digsby=65 meg) despite it being only a little bit nicer than Trillian. I seriously considered reclaiming my memory and downgrading, but then I realized that Digsby had been running on my machine for several weeks without me even noticing that it was a giant hog.

I'm now starting to think that Civil3D is downright lean. After all, it's only ten times the memory footprint of an IM client :)




And here's my personal conspiracy theory. It's about MS Silverlight, which is Microsoft's browser-plugin that's been pimped as a Flash competitor. I'm now thinking that it's not a Flash competitor and that it has actually been created for a single purpose.

Silverlight was created as a way to run .NET content as a web plugin. That is to say that it was created to run CLR content as a web plugin. And that is to say that it was created to run Managed C++ as a web plugin.

That means that, unlike other plugin technologies, you could take a large existing codebase written in C++ and get it working (with heavy modifications to the UI and File system layer, hopefully abstracted out) as something stream-able to a web plugin so it could be run anywhere.

Something like. . .Microsoft Office!

Apps like Google Docs are pretty cool, but at best they're about 1/3 of MS Word and Excel. And rewriting Word and Excel with, say, 3/4 of desktop functionality in javascript would be both a major code undertaking as well as a porting nightmare, as getting such a huge piece of javascript running in the three different major browsers (i.e. three independently-written interpreters based on a not-very-standard standard) would be nigh impossible. Not to mention that you'd be at the mercy of the other browser-makers if they suddenly decide to tweak a language feature that'll break your app. And you have to support older browsers that may or may not have broken javascript features. And any problems with sub-par or slow javascript implementations are gonna get blamed on you.

But what if you had a VM that ran as a plugin, and you had complete control over it? And what if the VM interpreter could compile much of your code as-is? And what if your codebase has existed since the 1980's with nicely separated presentation and file layers that could be rewritten (this is at least the case with Excel, as that was the biggest case-study in Debugging The Development Process). Then you could conceivably create something almost as rich as the desktop equivalent and with all the convenience of other web-apps.

Office Live Spaces is at best a band-aid competitor to Google Docs, and its main deficiency is one that cannot be overcome -- it requires MS Office on any machine that it uses. But what if, instead of purchasing MS Office, I could pay a subscription fee for a fully-featured MS Office that stores my documents in the cloud and would be available to me anywhere where there's a web-browser?

And also couple it with something along the lines of AIR or Google Gears so it'll still work locally like its "classic" desktop equivalent.

Of course, it remains to be seen if Microsoft can pull it off, but I bet they're working on it. Google is certainly working on their suite, and I wouldn't be a bit surprised if Adobe Buzzword suddenly sprouted a spreadsheet and a way to work offline.


I think the next big war five years from now is gonna be for who can get the bestest and richest Office suite that can seamlessly switch between running online and offline.



And on that note, I predict that Adobe's gonna buy a.viary.com. Google could buy 'em, but they seem to be leaning towards doing everything in javascript. A.viary's written in Flex and could merge seamlessly with Buzzword.

Tuesday, June 17, 2008

Let the language war begin

I'm writing a followup to my venerable old very-outdated What Language Do I Use? article, and I'd like a little advice. The article isn't bad, but it's clearly showing its age. The languages I covered back then were.

C
C++
C or C++ (which is better)
Assembly
Pascal
Visual Basic
Java
Authoring Tools (Flash, Director, IconAuthor, Hypercard)

And I'm trying to update things for the present. The fixes I see thus-far are. . .

- add the .NET languages with C# and VB.NET subsections. That'll kill the Visual Basic section.

- replace the "Authoring Tools" section with "Flash" because Flash won that war.

- replace Pascal with Python. Pascal seems to be much more of a niche-player nowadays than Python. Seems like most of the old Pascal language-zealots are now worshipping C# or Python, so I don't think I'll break any hearts there.

- server languages (PHP, as well as a short discussion of previously-mentioned languages that work nicely on a server, like Python and ASP.NET)


And yeah I know I'm starting a language war here, but my goal is to be pragmatic and cover technologies that are used now and in the very near future to create viable commercial products. Hence I don't think I'm gonna mention javascript because it doesn't exist beyond very small projects, and Silverlight isn't really anywhere in game development either. The javascript thing might change with that Apple Cocoa-gizmo that was just announced, but that's a ways down the road before we even see it, much less when we start seeing quality game-products done with it. And Silverlight might change as soon as someone ports a terrific 3D shooter to it, but that's also a ways away if ever.

Java will probably get a much heavier emphasis on its use as a server language than a client one because I haven't seen any growth in Java as a client technology, but it does seem to now have a comfortable niche for servers.


So I'm at this now. . .

C
C++ (with the "C versus C++" part in the conclusion)
Assembly (probably keep this very short, no real growth here)
Python
Java (emphasizing server use more than client)
.NET languages (specifically C# and VB.NET)
Flash
Server languages (PHP, server-side Java and Python, ASP.NET)

Any omissions?

Okay, any HUGE omissions? I know I probably oughta mention Perl and Haskell and Ruby (on or off Rails) and LUA, but you're gonna have to lobby for those.

Discuss. . .

Thursday, June 12, 2008

Yeah I'm still here

Going in about a dozen directions and feeling like I'm not making headway on any of 'em. I got stuff going on with games. I got stuff going on with books. I gotta write reviews. I gotta write outlines. I just gotta write. Bleah, write write write.

And I gotta write a blog. Thus-far, I've been more faithful writing in twitter lately, mainly because it only takes up about ten seconds of time when I feel the need for distraction.

And in penance for my lack of posting, I'll post a pretty picture. Japanese BaffleBees.



If the client likes it, I should have about twelve games in five languages. Lots of cutting and pasting monkey-work, but it'll get done.

Also, Duck Tiles is now up at Big Fish Games. Happy duck-pushing!

Monday, June 02, 2008

We are widgetized!

Here's some good news if you're a fan of putting web-widgets on your personal pages. Thanks to the folks at WidgetBox, all of The Code Zone's Flash games are now available as web-widgets for your favorite homepage and social network. Every game page (as well as the Play-n-Share page) now has links with one-stop installation to your blog, Google Homepage, NetVibes, FaceBook, Bebo, and a half-dozen other platforms that support widgets.

Note that while the daily puzzle games are included, they're not running in "daily mode", so your users or readers don't have to have an account at The Code Zone if they want to play. And you can play the games over and over, which makes more sense if the games are installed on a homepage.

Enjoy the games, and if you find a particularly creative way to use the game widgets, be sure to contact me.