Tuesday, 29 March 2011

Summer is almost here

Geneva currently has what I would consider ideal weather conditions for me. Not too hot, not too cold (10-15 degrees Celsius) and the sun is shining from a blue sky. If only it could always be this perfect...

Another month gone by. Without any foil hardware. It's not funny, it's not frustrating, it doesn't make me angry. It's just the way things are. The transport has been initiated afaik, so maybe it will be here next week.

Working on light mapper, coding things I've thought about so many times before but never have implemented. Next step is to orient the charts and pack them in textures. I haven't thought about size problems yet, but it'll creep up on me sooner or later. I have not thought much on the real time indirect lighting, I will first try a high quality offline baker and see what can be done for incremental updates. I want that, otherwise I could just bake in a 3d modeler.

Didn't think on it much, but there will be quite a few new interesting games this year: Battlefield 3, Deus Ex Human Revolution, Mass Effect 3, Rage, TES5 Skyrim. Slightly off this list are Diablo 3 (eta 2012?), DNF (meh), Max Payne 3 (hmm). Trouble is they all go for mass markets: the combat in BF3 looks like more of the same mind numbing kneading, DXHR looks horrible and stupid compared to the oh so wonderful original for its time, ME has always botched a wonderful premise with a crap action game (slow deep story and interactive action sequences don't mix!), Rage is an id game (gorgeous, but boring) and Oblivion was so close but ended up being stupid (I was the master thief, assassin, magician, warrior and whatever else in the world eventually). Where is the new tight Raven Shield, difficult Ghost Recon, funny and superdiverse NOLF, evil Diablo 2, zany clicky adventure games, Oblivion like a Sim X game where things don't go according to plan...

Side-note: Grim Dawn. I have higher hopes for that than for Diablo 3. Looks properly evil and gritty.

Game development articles online are really depressing too. It's either about making games for the mass market including marketing and business, Minecraft (nice game, but enough already!), portable games for people on the run or the private life of a game artist. It's all facades, games aren't serious anymore. Most people would say it's the other way around, like how AAA titles turn around sooo much money, rivaling Hollywood and they should strive to become art to prove Ebert wrong or whatever. But then it's a business and the hunt for something irrelevant. Games have become a channel. Where are _the games_? Games created by one visionary eccentric designer who can actually write a fair amount of code going "I wanna do this". Not a medium forced on a computer or console, but a computer or console showing you.

Lost Eden may have been bad, but the world is an insta-pull compared to what you see today.

This is why I will never give up programming :)

End of vent.

Monday, 28 February 2011

Radiosity

The big thing this time is that my interest for real time approximate radiosity has received a major boost, mostly due to seeing Geomerics at work in BF3. A few days ago, DiCE released a video showcasing very short snippets from inside the game apparently and it looks really nice. I read up quickly on the current status of real time global illumination methods and started up my own gears upstairs and I have one idea I'd like to try out. It should require relatively little preprocessing and not only allow dynamic lights and objects to receive radiosity, but to actually affect it as well. Imagine a big sci fi ship descending into a dock with radiosity working that scene. Bold ideas, no demo ;) FreeGLUT and hard code to the rescue.

Still waiting for the foils hardware...

I have played way too little guitar lately. I want a proper amp and cabinet alt. combo, a Marshall plexi 1959 or 1987 or a Fender Deluxe... Dunno how often I would power it up though, considering how careful I am with not disturbing my neighbours.

Been playing a fair bit of Titan Quest on weekend evenings with my brother, pretty fun. Act IV sure is one major step up in difficulty compared to the rest, love it. That one double headed dog boss was a pain though, went relatively quickly once my brother and I set up a dirty quick swap strategy and tickled it to death. Anyway, I really like the potential in combining so many masteries, but some masteries feel too similar. Piercing and poison are crazy powerful too, whereas red hot burning pieces of stone are like flies coughing at you. TQ bosses are too easy. Some funny balancing issues, otherwise a really neat game.

Monday, 31 January 2011

Overall progress

It seems like the tilting foils device is nearing completion! A few details left, some repairs and modification on the implantation chamber and then hopefully it will be tested in the experimental hall. Found a break in the analysis, trying to work out some statistics mismatches in two programs.

I have been slacking off with TDD lately, I tend to write a lot of implementation before tests, mostly because it's really hard to write tests for something like a "splitter widget". A lot of fail safes fall into invariance testing anyway. Maybe all I have to do is to write destruction tests for all those widgets. Also, memcpy() in an assignment operator or a copy constructor, bad idea, learnt the hard way. There's a reason why classes with pointers should define their own mentioned pair... Smart pointers are really nice, esp. unique_ptr for widgets. Had to write a custom container for grabbing and focusing which may be a little dangerous, better keep that in mind.

My brother has bought a Realforce, I am really excited about his thoughts on it. Hopefully he will have it today. I have gotten a slightly scary desire lately, to open up my Filco and reduce the activation force. Very intrusive manoeuvre, but the keys are not as light as they could be. I shall wait until I have tried a Realforce, to see whether I want to keep the Realforce or if I can go postal on my Filco.

"Cliffs of Dover" is way too overrated, Eric Johnson has so much more to give. "Trademark" is all I have to say.

I have started training Colemak seriously, I exercise every day. My muscle memory has pretty high momentum, however, so it's going pretty slow. It feels great, QWERTY is probably as inefficient as layouts can go (probably not really... EDIT(2011-10-25): carpalx has found the most ineffective layout by stochastic methods, if you're interested.More on carpalx in the next blog entry!).

Another recent idea I've had is to improve my "dreaming", or dream recall to be more precise. Paying more attention to your dreams apparently improves your chances (or even control) of lucid dreaming, something that has intrigued me for several years.

Friday, 31 December 2010

2011

In an effort to avoid cliché garbage about the past or the coming year, I shall do my best to keep this post as down to Earth as possible.

I finally got my new guitar, an FGN NCST 10m 2TS, which is a Fujigen strat copy with an alder body, maple fretboard and 2 tone sunburst, almost exactly like the first 54 Fender strats (they sported ash bodies). Beautiful, looks to be very well made. Really thick satin finished neck in contrast with the really slim (almost record breaking) wizard neck on my Ibanez RG. I looked really hard for the body block crease, but I couldn't make it out. The guitar sounded nice acoustically, and since I only have a Zoom 2.1u, I don't dare say too much about the pickups. According to an obscure German review somewhere, the pickups sound somewhere between Fender vintage and Texas. I know nothing about Fender guitars, but I have a feeling that assessment is kinda correct, the FGN can provide nice cleans and more output for some proper metal! With a Zoom.

I have done a lot of research about developing Outburst recently. Most importantly, I started playing around with Visual C++ to make sure my source code plays nicely with that IDE. I had to move around and rename files quite a bit, but but it's all sorted out and still just as easy to build in Linux or with MinGW. Or right, MSBuild is a joke, imho. I probably haven't seen the real strengths behind the terrifying piles of XML files, but a simple makefile is a lot more flexible and easier to write. A 30 liner for GNU Make could do more complicated file location stuff for a small project than the full MSBuild arsenal.

Time for the last meal of the year that my parents have made and apparently I am not allowed to keep writing this entry, so Happy New Year peepul!

EDIT: I had to cut my post short on New Year's Eve, so here's a small addendum to flesh things out a bit. Back in the land of nonchalance, I gave my guitar a good bashing right after having abused my brother's Fender for a few weeks. One thing for sure, I always have, do and always will hate D'Addario strings, they're like railway tracks. Good thing is they came for free on the guitar, bad thing is I would have preferred something else. Don't much like the 008 Malmsteen set by Dean Markley either to be honest, they feel like stretched out mosquitos. The saddle makes a popping sound when I do bends, even for whole note bends (with D'Addario strings, 1.5 bends are like successfully blowing the whistle on evil mega conglomerates, otherwise awarded for their brilliant and consistent improvement of environmental impact by their processing and manufacturing branches and providing for a better world for everybody, even young children and infants in poor third world countries, to live in), so I will get a TUSQ or similar eventually. I have also been eyeing the GOTOH 510TS-SF1 tremolo to fix the wobbly whammy bar (the Fender tremolo bar spring is supposedly bad for the threads), but these require new large holes for the posts so I'm gonna wait. The neck is peculiar. Perfectly fine, but it feels like a sort of light weight modern plastic wood compared to the heavier wood on my brother's Fender. Feels very airy and almost blown up due to it being pretty thick but still very light. Not sure if it's good or bad, just a neutral observation. I think I prefer it to the heavy Fender neck. The springs pick up on a tone just under C# on the 6th fret on the G string (and the same not on other strings). Pretty powerful feedback, so it seems there is a lot of transfer from the strings which is a good thing. Dunno if it's a good thing that the springs pick it up though. Did the Verheyen B string vibration transfer trick and the guitar body is well "alive".

I played around a lot with the Zoom this weekend and boy are the pikcups fun. Clean, plopping and chiming chords or really heavy, chunky riffing both work very nicely on the Zoom. Of course it doesn't have the "meat" of a tube amp, but for a hobbyist like me, it's more than good enough. And I really like the super fast patch switching in the Zoom, the fastest in the business when the unit came out apparently. Instaswitch.

Eudaimonia Overture, amazing to play, I recommend practising it. There is hardly a single dull piece of guitaring in there. Just a few sections that I need to work out still.

I have become rather accustomed to TDD and class invariances by now and I am almost starting to cheat a little. Sometimes I write the class declaration before the tests, but never the implementation. Porting the GUI widgets currently, I have the old size distribution calculations for the grid widget done, doing the button currently. Decided that pixel perfect rendering in OpenGL is a hopeless project and will go for Duplo style graphics (big fat rectangles for a bumbling artist).

Monday, 29 November 2010

November update, with zealots and only a hint of TDD

I noticed a few days ago that I have managed to post an entry almost once per month, and thought maybe it's time to finally commit myself and update my site exactly once per month. So this will be my November 2010 post.

TDD is definitely one of the better things I've picked up for development in the last few years. No smallish graphics demos (like that would ever have happened ;) ), but I am writing tests and new classes for the Outburst game engine and reorganizing classes a bit. The new source code looks really nice. Another friend of mine has another game idea with simpler technology which may bear fruit a little sooner, now developed from scratch with some planning and TDD strapped tight just underneath. No more bloated classes or members, no more super complicated dependency chains or whatever. Oh right, wrapping TestInvariant calls in class templates for auto verification at the entry and exit points of methods, constructors and destructors is pretty useful, just be careful with local objects that mutate the current object.

Waiting for my guitar. It took two days for the guitar to go from the Japanese provider, through customs/export, through the air I guess and to the french customs in Roissy outside Paris. It's been there for one week plus 25 minutes or so as I post this.

I noticed a problem in a particular piece of open source program and thought I'd remedy it. The developers hang out in IRC, so double newbie warning there, since I don't normally hand in patches (I use my own forked version of DWM, customized to how I work on my PC, nobody else will ever have it) and I never use IRC. Like a sheep without any worries in the world, I presented my patch and got some suggestions on improvements and I asked about a few implementation details such that the patch would fit the rest of the project nicely. The discussion went from the ISO C++ standard about primitive types to me being a user of abuse discussion tactics and childish for pointing out that was an offensive thing to say to a guest. Oh yes, I was just wrong too. When I asked how, I was referred to _my_ older posts. It's like saying "You are wrong. See previous sentence." This reminded me of a forum discussion that I tried to start up regarding stuttering in 3D applications on Fedora but not on Ubuntu. These days, the Fedora and NVNews forums are run as companies by angry Windows converts with the brains of suits, meaning if you got a problem, goons who know how to click on "reply" and "post" shove you into the hands of support people. From my part, the discussion was along the lines of "glxgears stutters in Fedora, not in Ubuntu, what does Fedora do that Ubuntu does not?" and I was met with "GLXGEARS IS NOT A BENCHMARK, YOU ARE A CHILD, GET LOST". Mhm, some caps. It took a few days until "reasonable" people showed up and started discussing various ideas without bearing any fruit. At that point, I did not care any more and I'm a happy Slackware user now. The problem is, big Linux distros are what Windows is, i.e. "try this, try that, until it works" "yay it works!" "nay it unworks". Where did "the problem may be this and that _because_ of those and these, so I would _look into_ this or that." Linux people of today actually don't understand what is happening. Plug the CD in, install bloatness and off we go until we need to do the same thing in a year.
I said I was gonna fix that patch. I think I shall not ever go to that channel again to be honest.

The Filco tenkeyless blue keyboard is still holding up nicely. The keys have loosened a little bit and it's so wonderful to type on once you hit a streak of feelgood words. My webcam mic picks up the sound pretty badly though, but if people force me into talking rather than letting me use my wonderful keyboard... payback! ;) Doesn't mean I don't want a HHKB 2 Pro. Stupid price.

EDIT: Leslie Nielsen has passed away. It was not immediately apparent on IMDB, they sport a very pleasant wine red:ish almost camouflaged banner at the top for actors recently passed away. It's Nielsen of all people, they should have painted the banner in flashing neon green.

Friday, 29 October 2010

Slow work and intro to TDD

I have been very busy lately, so I have no spectacular news to report. Still no foil device to install in the beam line, so we're slowly preparing the rest of the setup and doing analysis for other experiments. Exactly what my french companion in physics and I came down to CERN for. Ah well, it could be worse, we could have been Ph.D.s at LHC a few years ago.

I still haven't ordered that strat. I haven't even played much guitar at all lately in fact. I will order the guitar in two weeks or so and then I will have to make time for it.

Just before summer I believe, a friend of mine working at Erlang Solutions in London (his blag) tried to convince me to embrace TDD, Test Driven Development. I had heard/read about this before, esp. from extreme programming and Netbeans, but I never invested time in "getting it". After all, most people applied this in functional languages or thereabouts so I never did care much. Two things have changed: I learnt to like C++ and I stopped being a C zealot. I still don't like the long build times, but computers are getting pretty fast these days so who cares. With C++ in a new light and a new set of less cynical eyes, I started looking into safe source code. That's one of the selling points with C++ over C, after all. I started thinking about my friend, because he develops high profile and highly reliable software that _must_ work (the amount of tolerance on software quality at release is terrifying imho) and I started asking questions and looking things up. It took a few tries until I found introductory articles which gave me the right idea. TDD is basically "write tests, then write code". Because TDD is very different to how software is otherwise developed (i.e. "I have to write all this code to reach this goal"), authors tend to complicate their articles immensely. To be fair, this is a recurring problem in anything remotely academic. Anyway, after "getting it", I developed my own rather capable super minimalistic testing framework which consists of one header file and one source file which have everything I need for the moment. Minimal code, minimal problems, maximum understanding and maximum control. I plan to use this to develop a few graphics demos to get in the groove, and then I shall aim towards bigger, better, stronger and faster endeavours. Not really a Daft Punk fan, good stuff nonetheless.

Small side note on how TDD will help me immensely: I always, always, go back and read through old code during development. For example, I have very often been victim to the effect of rotting code (leave some code "untouched" for a good while and bugs somehow creep into your code). I am tired of this paranoia, continuous testing would help me feel much more secure. I am fully aware of that TDD does not catch every potential bug, nothing except possibly a Spider Mastermind can do that. However, TDD implements a granularity of testing which is practically impossible to achieve if you put testing code when your SLOC shoots to hundreds of thousands.

So, the next blog post will probably be a bit about some stupid graphics demo that I wrote using TDD. Do not hold anybody's breath. (EDIT(2011-10-25): So, no, no graphics demo :p )

Wednesday, 1 September 2010

Code and work, in staccato

Back from my vacation in Sweden, which I spent mostly on writing a whole lot of code. Tried Bullet physics which was fun, immediately found a few bugs which spawned some ideas for writing my own solution. I shall (and should) post pone those ideas as much as I can. Did a lot of work on the GUI and editor too, I can now load objects, select materials and assign shaders. Will continue working on this a bit so that I can actually put proper objects into the game test code.

Work is a little complicated right now, the plans for experiments in the fall are very diffuse. Will have to discuss some ideas with some people.

Tried my brother's new signature strat, really nice. Will buy an FGN NCST 10M 2TS (maple fretboard and two tone sunburst finish) soon. This of course brings forth my picky buyer side, because transparent finishes show a lot of wood, and then there's the grain pattern in the headstock... Another silly idea is that since FGNs are pretty inexpensive guitars, I could buy a tele at the same time. Teles sound absolutely incredible far down the neck with chords and they are really crisp. But strats are "easier". I will start with a strat.

The Filco keyboard is really something else. I tried a bunch of keyboards at home and I am pretty confident no rubber dome keyboard has a chance against blue Cherry switches. N key rollover is priceless too (I could not sidestep, lean and reload at the same time in Raven Shield, that's just not cool). I have actually found a few of those small Dell server keyboards at CERN. Really nice for rubber domeys, but the blues still win. Want hhkb.

Gotta finish my lunch for tomorrow, potato salad with capers, some pork filet from home on the side and something green. Like red tomatoes.

That was a rather pointless entry, but an entry nonetheless.