<< | Next Archive>>

CopperLicht 1.1.2 released and why all your WebGL code will break soon

WebGL is not 100% finished yet, and it is still a moving target. The next versions of browsers supporting WebGL (that is Firefox, Chrome and Safari) will introduce changes soon, breaking nearly all existing WebGL 'programs' out there. If you don't rewrite your code, your site using WebGL won't run anymore. In detail this is a subtle change to how shaders will be accepted (mandatory shader validation), and a change to the signature of a function everyone use who is loading textures, texImage2D.
Anyway, if you are using the JavaScript 3D engine CopperLicht, you are on the sunny side: You only need to download the just released latest version (version 1.1.2) and replace the copperlicht.js file you are using with the one in the SDK. That's all. Your WebGL program or game will then run both on old browsers as well on the once introducing the new changes. Which, by the way isn't that simple, because there is no real way to find out which version of texImage2D your browser is using. CopperLicht does it this way:

try
{
  // try new version
  texImage2D(target, level, internalformat, format, type, HTMLImageElement)
}
catch(e)
{
  // above will throw a DOM exception since internalformat is not a HTML element, so it must be the old version
  texImage2D(target, level, HTMLImageElement, [optional] flipY, [optional] premultiplyAlpha)
}

Not a very clean solution, but it's much better then checking the browser version, and it works everywhere. So you should update to CopperLicht 1.1.2 soon, or if you are not using it, update all your own WebGL code as soon as possible.



irrFuscator is the best Actionscript / Flash protector

On coldconstructs, Corey von Birnbaum reviewed all the major 4 flash SWF protectors and actionscriopt 3 obfuscators. He comes to this conclusion:

Overall Id say irrFuscator takes the cake for being reasonably-priced and offering that Flex Project option which makes it very powerful, yet it still retains simplicity of use through an easy user experience, plus the program itself was fast to load and responsive. The others were written in Java or were otherwise slow to start, so they were a bit sluggish.

Nice, so irrFuscator pretty much won. Full review here.





irrKlang 1.3.0b released - now supporting .NET 4

I just released the latest version of the sound library irrKlang. It now includes support for .NET 4. Of course, it was possible to use irrKlang with a .NET 4 application before as well (it's supporting .NET 1, 2 and 3), but some users preferred if it was using the same assemblies as their own application. This is possible now as well. So now irrKlang comes in the following flavors:
That's 7 binaries. If this isn't cross-platform than I don't know what is. :)



Google Adplanner: The new Alexa Rank?

Interesting: You can find out quite a lot information about various websites using Google Adplanner: For example the users of reddit seem to be interested in Programming and Technology news and spend an average of 12 minutes on the site. The site also shows uniqe visitors, total visits etc. Of course this only works for bigger websites, but I think this information is much more valuable than for example the extrapolated data from Alexa (who on earth is still installing browser toolbars?).
There is already a top 1000 list, and should they extend this a bit more then I guess Alexa should be history soon. :)



They'll never learn

Just sent this mail to one of our users of our online dating website Bienen und Blumen:

Hi,

thanks for scamming our users on our online dating website. We've already collected the IP and email adresses of your multiple accounts, and locked them. Any further attempt like this and we will send this info to your local police.

Best Regards,
the Bienen und Blumen Team.

I really can't stand people abusing our free site to steal our users money.



The state of WebGL and HTML 5 audio for creating JavaScript games

I created a small 3d WebGL game. It is pure HTML 5 (HTML with JavaScript) and runs in all WebGL enabled browsers, such as Chrome and Firefox: Start the game.

If you don't have a WebGL enabled browser, you can watch a video of the game here:



The game code is open if you want to learn how I did it. I even did the graphics, sounds and the music myself (so warning: Programmer Art and Music!). I basically created it from scratch using the 3d engine CopperLicht, the 3d editor CopperCube and even my HTML editor WebsitePainter, to test out if it was possible to create HTML 5 only 3d games already. The result is the following:

WebGL: good
WebGL, altough still not finished yet and only supported in most browsers if you enable it manually, works. It's quite stable and very fast. It's - like OpenGL - a bit too complicated to use it without a library since I doubt every web developer wants to learn writing shaders and 3d model importers, but if you use a free library such as copperLicht, everything is fine.

JavaScript: excellent
I was quite amazed by the speed of the JavaScript engines in todays modern browsers. Having implemented and worked with a number of dynamic languages already, I think it's even quite ok to wonder how they actually did this. :) So no problem here, game logic is totally ok to be written in JavaScript today. You only need some discipline, since JavaScript still doesn't support static typing, quite a problem once your project gets big.

HTML 5 audio: bad
The problem is HTML 5 audio: Praised by a lot of people on the interwebs, HTML 5 audio in its current state is not what you want for creating games. Currently, and only if looked at Opera, Firefox and Chrome, it is simply broken. It behaves differently accross all browsers and different types of encodings and file formats are supported accross browsers. Additionally, using it in a game via JavaScript, there is no way to have full control over you audio: Seeking is not possible, restarting an audio stream isn't possible, and the browsers will reload audio files from the HTTP server each time you play a sound if you try to work around this problem, ignoring the cache completely. Additionally, looping is completely broken in some browsers and goes from 'works sometimes', 'simply doesn't work' and even 'crashes the browser'.

So there is still work to do for the browser developers (and probably maybe also for the W3C regarding the JavaScript interface of HTML 5 audio compopnent), but there are workarounds (like flash), and you can already create nice working games.



Tricky --no-sandbox

Troubles with WebGL in Chrome? Use it with the parameters

--enable-webgl --allow-file-access-from-files --in-process-webgl --no-sandbox

otherwise you will have problems. Especially forgetting the '--no-sandbox' parameter is tricky. Chrome will then render WebGL, but insert wrong OpenGL states here and there for no apparent reason.



Downfall

I just read that in the USA, there are by now 1271 government organizations and 1931 private companies which all are basically intelligence services and secret agencies (source). And an astonishing 854000 people are holding top-secret security clearances.
These numbers are quite incredible. If you know a bit about history, you also know that the downfall of a lot of states and civilizations began with the rise of their secret organizations. Lets hope we are not witnessing history repeating itself again.



With all its glory

Yesterday I was sitting unsuspectingly in front of the TV, when this was shown at the start of a commercial break:


(bigger version)

Initially, I wasn't planning of getting a copy of it, since all gameplay videos of SC2 look very much like the first version (only in 3d), and I've played that one to its death already.
But damn, those nice 3D movies, as always! Let's be realistic: I'm probably going to buy it anyway. And going to play through it in one weekend with bad weather. :)



Now on Twitter

Finally, I've created a twitter account. I''m going to write there news about irrEdit, CopperCube, Websitepainter, irrFuscator and irrKlang from time to time, so if you prefer twitter to the Ambiera newsletter, you can follow me there:

www.twitter.com/ambiera



Game Over

Again an example why you won't want to work in the games industry: Rockstar Lays Off Red Dead Redemption Employees. Either you are not successful and loose your job. Or you are successful and loose your job.



A Mac Application

Nice feedback I received yesterday:

"One thing that impressed me is that the Mac version looked and felt like a Mac application, not simply a port of a Windows app. You've designed this quite nicely and for that I'm grateful."

Well, thank you, wxWidgets. :)



What google knows about your pages

When I checked if google already had indexed the pages of my just released latest product, WebsitePainter, I was quite surprised by this result:


Looks like google recognized that the page above is a thread in a forum or discussion board, and is able to show some meta information about this (author, last post). Ok, it's doable, there are about 3 major forum software packages out there in use by most pages, but the interesting part about this is that the forum software used on Ambiera.com is quite unique. I programmed the forum especially for this page, and no other site on the web is using it.
This means google seems to be running some quite expensive analysis of websites behind the scenes. Interesting.



Ambiera internal HTML editor now available for public

As most other software developers I know, for my company Ambiera, I am also implementing Websites for other companies from time to time. It's simple work and is a variety to C++ programming. During the last years, I created a small tool to help me doing this, since I'm not a good graphic artist. With that tool I only had to click and drag buttons and gradients, and the tool generated the whole html code, css styles and images needed for this for me, instantly.

A customer recently saw me using this tool, liked it and asked if he could buy it. I said "no, sorry it's just an internal tool". But since this was a good idea, and maybe there are other people in the need of such a software, I've now cleaned it up a bit, named it WebsitePainter and made it public:

websitepainter


It's not a 'real' HTML editor but more a HTML generator, and is is possible to create full websites with it, including floating texts, images, gradients, web 2.0 style shapes and areas, flash, java, forms, and more. It is available for Windows and Mac OS X. It also fully supports Unicode (once I used it to create a Korean website for it) and should be quite easy to use.

If you like to try it, you can download it here.
Any feedback is welcome.



Charity

Recently, I had an interesting mail exchange. Summarized it went like this:

A: CAN WE GET A COPPERCUBE LICENSE FOR FREE PLEASE WE LIKE THE SOFTWARE BUT THE TRIAL IS RUN OUT NOW AND WE WOULD LIKE TO CONTINUE USING THE SOFTWARE

Me: Hi, nice that you like CopperCube. If the trial is over and you like the software, you are supposed to buy it, that's how it works. If you are a student or working for an educational institute, I can give you a discount, but I cannot give it away for free, I'm sorry.

A: BUT WE ARE A CHARITY ORGANIZATION

Me:No, I'm sorry.

A:YOU CAN NOT DONATE IT TO OUR COMPANY TO USE FOR CHARITY PURPOSES

Me:No, I'm sorry. What you could do maybe is gather some donation money and then buy it with that.


The interesting part is not the all-uppercase-mode the mails were written in, but that this was not the only guy claiming he was working for a charity organization and who wanted my software for free. Strange.

I'm wondering if this is a new kind of scam and if other software developers are maybe falling for this. I mean I am always open for special discounts and actions, but in a reasonable mode and not with such suspicious mails.. :)



Again a small C++ debugging report

I love C++, after all, it's still the most powerful high level language out there. There is nearly nothing you can't do with it. But sometimes, it totally annoys me. Like this problem which hits me about 4 or 5 times a year:

Yesterday, I had a bug in my program where I couldn't figure out why it was happening. It was reproducible, but made no sense. The debugger showed the program did the right thing but the output wasn't correct. So I debugged the program for about 30 minutes, until I gave up.

Then, I cleaned the built object files and rebuilt the whole project from scratch. TADA. Bug disappeared. *grml*
I know, this happens from time to time. The built executable gets corrupted somehow and a rebuild helps. But this time I swear: I'll remember: If it makes no sense, rebuild FIRST! :)



BP mode of irrlicht3d.org

The BP mode for this blog is now available, finally: click here. Consumes a lot of CPU cycles but works. :)