Saturday, December 19, 2009

Happy Christmas!

Ho ho ho,

Well, it's that time of year again - must be time for a Christmasy blog!

It's been an interesting if low key year, during which I managed to fail yet again to get anything substantial done, but still managed to learn a lot of things along the way. 

The evolution of BlitzMax into a threaded language has been probably the most interesting/challenging thing I've done, and in particular the development of an entirely new garbage collector.

It's still not perfect though, as there are some 'pathological' situations which can still upset the GC. The solution to these problems is to make the GC 'generational', which basically means keeping track of 'old' and 'not so old' objects. Ouch.

This apparently requires the addition of nasty things called 'write barriers' - little bits of code that get called every time a pointer is written to a variable (reference counting actually involves a write barrier of sorts) . I have a feeling this can be achieved 'on the cheap' using virtual memory techniques though, and it's something I'll probably be looking into next year.

And the $64,000 question - what about 3D?

Well, the truth is, I just don't really feel that I have anything new or particularly clever to offer 3D wise right now - and haven't for a while. There are plenty of good 3d libraries out there these days (and many of them free!)  and competing with them has just become more and more scary. I guess what I'm really after is some kind of dinky new approach or something that simplifies life the way Blitz3D did.

I could certainly do more to promote and support the 3rd party 3d modules for BlitzMax around these days though. My general suckiness at marketing etc issues not withstanding, I'll make an honest attempt to do something about this soon!

I'd also like to do something *I'd* use to write a game with, and to be honest my requirements for a 3D engine are pretty minimal. As much as I'd like to a do a bumpy/specularly extravaganza, the truth is I just don't have the resources to do it justice. In which case, why not do something simpler, faster etc that works on more hardware. I guess what I'm saying is, as with programming languages, my first priority is to do something I'd be comfortable using myself, and all this next-gen stuff creates a certain amount of tension in that respect.

But all power to guys like Josh Klint and his leadwerks engine which requires a reasonably high spec - they're definitely pulling the technology in a good direction as opposed to, say, Intel and their craptacular graphics cards. Honestly, we'd have been better off with GeForce 4's!

Gaming wise, I've actually had something of a gaming renaissance in 2009, although this is probably more down to my being a bit more open to trying new gaming 'forms' than any resurgence on the industries part.

I have thoroughly enjoyed games such as Mirror's Edge, Infamous, Arkham Asylum, and esp. Uncharted 2 and kind of feel that gaming is heading in interesting directions these days.

Many of these games feel almost 'mini-game-ish' in nature, with set pieces sort of strung together by sequences of 'actual game'. The 'actual game' bits can sometimes get a bit monotonous, often consisting of 'wack a mole' style combat, but the set pieces are usually very cool - certainly cool enough to keep me playing for the next one!

Mirrors edge really stuck out for me though. The actual game bit basically consists of running very fast from point A to point B - and it works really well! Keeping your speed up is key, and do so allows you to run up walls and jump over huge gaps without it all feeling too silly/impossible. But I feel it's let down a bit by having too many restart points, which basically allows you to get lazy as you can always just try again. IMO, they should have made the levels a little easier, but with fewer restart points. It would've made for the same overall difficulty, but have given it all a little more tension.

I'm also very much looking forward to 'Demons Souls':

Not available in stores here in NZ (why?) but I've got it ordered and it should be here next week. Good too see developers being brave enough to make a game *hard* again!

Anime-wise, I must confess to having watched a lot of 'high school romance' style Anime lately.  In particular, I find the Anime adaptations of the Japanese 'girl games' by Key Visual Arts (haven't played the games...though they're apparently quite raunchy!) really entertaining. Not quite sure why, perhaps because there's usually an element of the supernatural in there or something, but they're definitely skilled at building up characters and manipulating the viewers emotions.

But 'Death Note' was probably the Anime highlight of 2009 for me. A simple premise - a guy discovers a note book that will magically kill off anyone whose name he writes in it - is taken in gloriously confusing directions. The amazing thing about the show is that despite the fact things keep getting more and more complex  (the book has an apparently never ending set of rules governing its usage) you're never really lost by it all. There is the odd bit of exposition here and there, but overall it's just a brilliant bit of story telling.

Movie-wise, I didn't get to see all that many movies this year (too busy watching Anime and playing games!), but I did thoroughly enjoy Star Trek, Synecdoche New York and esp. Coraline.

The thing I always liked about Star Trek was the Kirk/Spock dynamic, and I felt the movie kept this intact very nicely. Yes, it was a bit of an incoherent mess ('racist' Vulcans? Surely racism is not logical!), had too many lens flares (Well, I liked them!) and featured probably the biggest god machine coincidence in living memory (Kirk AND future Spock AND Scotty all accidentally stranded on the same minor planet?!?) but I thought the actors caught the essence of the original characters just fine.

Synecdoche New York is probably a bit of an old farts movie, concentrating as it does mostly on death and 'what have I done with my life' issues, but it's also funny, wildly imaginative and thought provoking. The main character builds a 'miniature' of his world inside a huge warehouse, and after a while what's real and what's 'acted' becomes blurred. And, of course, the ending is killer...

Coraline is...awesome. A bit goth, but if you can handle that, see it! it just me, or was 2009 a bit of a loss? Waiting for someone to kick things into gear again...

Coolest moment of 2009: Obama getting elected. 

Bummer moment of 2009: Obama's Nobel peace prize acceptance speech.

Anyway, getting WAY off track. Have an excellent 2010 and code the good code!




  1. Yep, supporting 3rd party 3d engines is very likely the right answer. There is no point in actually create the whole thing from scratch, the selling point is creating a simple to use api (blitz3d like), it it's there people will use it.

    But the biggest possible selling point for blitzmax would be iphone and console support. Those markets have honey in it for both big (in the case of the iphone EA & all) and small players (indies).

  2. Hi,

    As far as Blitz for consoles go, that's just not gonna happen. Console manufacturers like to strictly dictate development environments, and it's all kept very much in-house. C# on the 360 is about as 'free' as that side of things gets.

    iphone is technically possible, except that it'd require a lot of work (a new ARM compiler backend at least) and I suspect it would still manage to run afoul of Apple's legal team in the end, probably via the app approval process. Also, the horror stories about rejected apps and lousy sales because their app starts with the letter 'k' or something should give any sane developer puase to think. Perhaps that particular goldrush is over?

    Besides, I don't feel that console/iphone support is really in the spirit of Blitz - the cool thing about the various PC platforms is that anyone can do anything on them (lurve chess anyone!) no strings attached, and I've always liked that about the Blitz scene. 'Getting into bed' with MS or Apple or whoever would represent a major shift away from that.

  3. Iphone first:

    I think the gold rush on the (i)phone market has barely begun. The iphone market keeps growing at a pretty insane rate. The apple "rules" are not as draconian as "slashdot" horror stories seem to suggest. Actually I find them pretty straight forward.

    Apple actually created sales channels (with payment processing included) using itunes. Mark, I had a blitz game published on retail, I also sold it directly (using kagi), and I feel like itunes is a dream for indies. Yes, the no one will probably make ANOTHER 2 million dollars with a "blank white screen with max bright", because there are two hundred of those. Yes, there will be very few other multi-million selling "fart machine" like apps (a app that showed a ass and played a samples, and sold millions(!). But any grey alien game would be an instant "best match four" game on the platform... as well as many others blitz games that would be instant best sellers (any of those in the left column of the blitz site would sell like crazy).

    Blitz would not run into any more trouble than torque or unity3d (those should actually have trouble since they are heavily dependent on scripting!)... unless you somehow make an "interpreted" version of blitzmax. Quite frankly I don't even think you should write max2d (or max3d if it matters) modules for it (just use cocos2d and iminib3d wrapped).

    The console market:

    Wiiware (wii), psp minis (PSP and PS3), PSN channels (PS3) and xbox marketplace are pretty damn easy to publish to (if compared to the traditional publishing channels on consoles or retail for ps/mac), and if you take a look at what is actually there, you will see that A BUNCH of blitz products would be instantly the best games on those channels.

    Take a quick look at "World of goo" (mac/pc and wiiware) and "Fieldrunners" (iphone and psp mini), which are probably some of the best games on those markets, both are made by indies and have sold millions on consoles, compared to thousands on mac/pc.

    There are some great examples of really good games done using blitz (max and blitz3d). If some of those could reach the iphone and console download markets, well... I believe some would sell millions (because there are established distributions channels, very few problems with piracy, etc). On the Mac/PC that is just very unlikely to happen.

    I had my retail published game ($25.000 USD paid upfront for US and Canada markets only) from my hobby. Selling "directly" (worldwide) I got less than $2.000 USD. Good sales channels are everything for indies (that is why steam and portals are so important, and why retail is such a confortable zone to be in).

    Hottest channels right now: Consoles (all three), steam (PC only) and the iphone. Nothing comes even close.

    Next big thing? Social games! Facebook. So if blitz missed the console and phone waves; time to take a look at what is happening in facebook. People are spending millions playing very basic stuff at facebook: farmvile, yoville, mafiawars, poker, etc. And I mean millions. The funny thing about it is that the big players did not even noticed what was happening until a couple of months ago. EA discovered that people were playing "SIMS" like multiplayer games and spending like crazy on facebook. And boy, are those games poor in every way, lousy sound, terrible graphics, very primitive indeed.


  4. Sorry, but it ain't never, ever gonna happen.

    To do the iPhone/console thing would involve doing some sort of deal with Apple/MS/whoever (as Torque and Unity3D will have done) and that's just not something I'm at all keen on.

    I did actually have a brief encounter with Microsoft over the possibility of porting some b3d games to xbox, but it ultimately turned out to be a pretty unenjoyable experience and I ended up feeling quite jerked around.

    That's business I guess...but it's not for me, and I'm more happy to stick it out on my own and continue to develop for the remaining 'open' platforms (while there are still some around)!

    And honestly...facebook games?!? I'd rather eat my own face than be involved with *that*!

  5. ROTFL on your reply on the facebook games!

    On the consoles/iphone, I see your point, and hey, you gotta enjoy what you do.


  6. Mark,

    I would suggest creating an upgrade path for Blitz3D owners. Many aren't upgrading to Max because they can't really import their work. If you could bridge that gap you would have a modern Blitz3D that can be upgraded forever and re-energize your already sizable user base... and make some extra doe while yours at it!

    If I could recommend anything as far as expanding the OS base, it would be to look at getting BlitzMax to run on Google OS / Android. Its an open platform thats going to rip current OS's apart IMHO.

    Anyway... Merry Christmas... May you find more focus in the new year!

  7. Not to be rude but "ain't never" is a double negative, so it /is/ going to happen?

    Android+Blitz sounds like fun. I'm learning Java for that, but Blitz would be much better.

  8. This comment has been removed by the author.

  9. Mark,
    Apple will have no issues with iPhone games written in BlitzMax. This past Oct, I was at an iPhone dev conference and people were talking about other languages now becoming available and being accepted by the app store. Basically, it comes down to no JIT compilers or downloaded source code… Apple’s store rules spell it out.

    "An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by AppleĆ¢€™s Published APIs and built-in interpreter(s)."
    Fully compiled executables are ok. There are now games on the app store written in C#, Lua, the above mentioned Ruby. Adobe even now has ActionScript games in the app store. This is done by way of the LLVM and embedding a compiled runtime in each app (embedding, not a good solution). The public beta was recently canceled as they push to get a release version out asap.
    while the gold rush might be done, that doesn’t mean it’s not a good platform for people to write for and still make money with. Not to mention, this is a good opportunity for you and us… don’t miss it!
    Here is the Lua solution…
    On, your aforementioned marketing skills... "marketing" can be as simple as being there... or activity in your product. I beg you to take advantage of the community you started. Many of us are willing to help just for the knowledge that you are continuing development and interest in your language. For instance, re-skin the website… ask for skins, choose a new one. I sent in a very nice skin and mentioned it in an email to you just a few days ago, these type of things are free and many of us are willing to help. People want to help support the core language too… they’ve uploaded multi-platform functions and changes that could be easily added… for instance, the cpu/core count function is a perfect example. If you were to embrace this like say torvalds does, you'd see a lot of activity.
    Many people are just looking for direction… I believe the main reason some of the community work starts to wane is because yours seems to. if you were to ask for submissions which were complete (multi-platform, docs), people would submit code.
    ask people to mention the language... update wikipedia... some people have recently easy suggestions for the website... like adding comments or combining worklogs and gallery. adding a core submission area... I'm sure you could even find people to code such changes for you... shit, I know I would.

    Man, sorry for the rant :) But BlitzMax is an awesome language and I miss it when I work in others.

  10. First of all, Merry Christmas and Happy New Year! (I'm late, I know...)

    About your post and the 'decisions' you get...
    1. a new 3d engine 'made in BRL' is stoned. Well at this point is a good decision. I like your point of view to 'support' third party engine (I like Leadwerks one - even if targeted to mid-high gfx card). I would like an 'official' support to MiniB3D (I mean, some suggestions and improvements to speed up/fix the have a little experience in 3d engine, so you should know something! - and this could be used to 'drag' Blitz3d user to BlitzMax)
    And an extended-minib3d (with at least shadows and basic shader support) is not a bad idea at all!!!
    2. if you have 'spare time' you (or someone else under your direction/control) could really think to extend BlitzMax modules (with paid one I mean!): at the moment we have the mighty Brucey that has done/wrapped everything in the world (it misses my washing-machine and the NASA computers...) but I think BlitzMax really needs something 'OFFICIAL'.
    I would like (already said in the forum!) a module for manage 'media': play and record .avi (based on the codec presents in the OS) and audio (except for mp3 due to license cost)
    Maybe with realtime effects...
    Or just ask to the forum what kind of module (except 3d...) they would like to have!
    3.other platforms: as I dont' know costs and legal limitations I can't give a right interpretation. Honestly an ARM compiler (as many mobile devices are based on this architecture) should be taken in serious consideration. In the near future Android will take a big step of the market, and it seems the more 'free' platform around.

    About 'selling channel': why BRL/BlitzBasic forum dont' have an own 'selling channel'? You can just create a page and try if and how it works

    Facebook & co: please delete their IP from any DNS on the world! No more comments...

    In any case an excellect 2010 to everyone!


Note: Only a member of this blog may post a comment.