The last few Months I haven’t been able to post any new material here, but don’t worry I haven’t been slacking off.
Most of my energy has been poured into my research regarding Navigation Meshes, and I’m happy to announce that I have completed this work. This research project has also led me to graduate from Utrecht University Cum Laude. Since January 15th 2015 I am officially a Master of Science :D.
While I was working on that I have also been job hunting, and last Oktober started at the company SilverFit. Here I use the Kinect Camera to help elderly people rehabilitate by means of computer-aided physical exercises.
I hope that, once the dust has settled, I will be able to start producing content for this blog again. I have been working on some cool things with Roslyn that I would like to show you all.
Meawhile you can have a look at my Navigation Mesh Research
So a friend of mine, let’s call him Red, has been bugging me to create a Let’s Play series together. Two weeks ago we finally decided on a game. The very mediocre shooter ‘Darkest of Days’ (though it really has some potential). The first two episodes are up, and we’re trying to keep a schedule where we upload a video every Thursday and Sunday. As this is our very first youtube series we had no idea how to do a lot of things. For example we wished we started with a game that’s more fun :P! Anyway let us know what you think of it, and please subscribe to stay up to date!
Can you guess which voice is mine
So in this post you saw me playing with facial feature detection. I’ve used that to construct a robot (together with Ynze van der Spek) that tries to mimic your facial expressions, the robot was inspired on the MIMBO project, since ours ran on Windows instead of on an iPhone we’ve called it Wimbo. The robot was part of an exhibit at the Rijksuniversiteit Groningen for 2 months and was then moved to Der Aa-Kerk in Groningen for the ‘Nacht van de Kunst en Wetenschap‘ (Night of Arts & Sciences). My old boss just e-mailed me some pictures of the robot in use during the exhibit so I’d thought I’d share them.
Wimbo was build for Science LinX, an institute of the faculty of Natural Sciences at the Rijksuniversiteit Groningen that tries to inspire pupils to choose a career in science. The photos were made by Hugomatic
Btw, as you see this is not the third, and final, Farseer Physics tutorial, unfortunately I haven’t had much time to program on personal projects lately, but I promise I will try to finish it as soon as I can. Can’t give any ETAs though!
Today I finally finished my thesis. It’s topic was to count the number of upper sets in partially ordered sets Which is quite a hard problem since it’s in the complexity class #P-Complete (that’s the class of counting the solutions to the decision problems in NP-complete). All and all I’m quite pleased with the result. Although the upper bound is still , (can’t quite get under there without solving P=NP and winning a million dollars) I’ve manged to find a solution that has a best case of both in time and memory complexity. With a particularly large data set the brute-force algorithm took over 2 hours to complete while my algorithm took 0.025 seconds. Now that’s what I’d call a speed gain (and yes it was a real life data set, no tricks here). You can see this for yourself in the graph at the bottom of this post the ‘naïeve algoritme’ is the brute force approach, the ‘Familiealgoritme zonder uptrie’ is the first version of my algorithm, the ‘Familiealgoritme met uptrie’ is the final version of my algorithm. It uses a trie like data structure to speed up searching and uses a lot less memory. Note that the graph has a logarithmic scale.
Unfortunately for most readers my thesis is in Dutch, but I’ve translated the abstract to English:
Counting the number of upper sets in partially ordered sets gives us a unique number that can be used to compare sets. This number is like the fingerprint of a set. Until now there isn’t, as to my knowledge, an efficient algorithm to calculate this number. This meant that the number had to be calculated either by hand or by using a brute force approach. Using a brute force approach leads quickly to problems, even for trivially small data sets since this means that you have to generate 2^n subsets and check each of these subsets on upwards closure. When calculating by hand you can use symmetry but this menial process can take a lot of time and is error prone. In this thesis I present an algorithm that can calculate exact, and usually fast, the number of upper sets in a partially ordered set.
You can download my thesis here: Upper sets in partially ordered sets (Bsc thesis Roy Triesscheijn) as I’ve said before the text is in Dutch, but the proofs and attached code should be readable enough. If you’ve got any questions feel free to ask below!
I tried to do a weekly update during my internship at Nixxes, but I never got around to finish a single post. However since Post-Mortems are hip these days I decided to write a simple post-mortem about my internship.
Let’s start with the beginning. In the first week my mentor at Nixxes was still on vacation so a co-worker set me up with a new computer (a shiny i7) and helped me set-up the development environment. I was handed a few drafts from another co-worker who a few years back wrote a proposal for the tool I was to build. So I tried to arm myself with knowledge and put my education to the task by writing things like inception documents and prototype proposals. Although this was a bit formal for the team (they only do a light scrum + two person commits) it helped me get a good overview of what I had to do. I also played a lot with their technology (trying to give good old Lara Croft green hair in a test-level of TR:Legend).
The tool I was to build had a simple enough goal and had to do with their automatic shader generation. I had to make a tool that gave artists insight in how different settings on materials would create different shader configurations. It was not to give technical insight inside the shaders (you wouldn’t want to bore artists with that) . But to let them reduce the number of actual shaders by simplifying material.
In the next few weeks I started searching for existing tech, testing and prototyping. I needed tools to show large complex graphs with a lot of cross-nodes. So I started searching for layout algorithms (In the end I combined two layout techniques and wrote code myself, but it’s always good to check if you’re not reinventing the wheel, and it gave me some great insights).
I also had to familiarize myself with WPF, which I really enjoyed (the learning curve for WPF is much shorter than for WinForms and the performance and ‘nice-ity’ of WPF greatly outclasses WinForms).
After a few prototypes we decided on a work-flow for the program and refined the core questions the program had to solve. It’s really helpful to write those down because a goal might be too abstract/far away so these core questions help you refine your way to do the goal and give you some work flow hints. (It’s also good to have these in your help file).
Because of the limited time there was only one week of feedback from real artists but of course I was surrounded by techies to help fill this void.
In the end we refined the work flow once more and tied in the program with existing tools. (Up until now I was just parsing raw data). I hooked into a content-service using C++/CLI. This C++/CLI program also hosted my C#/WPF frontend, and to my surprise this worked really well and was easy to do!
In the end I left behind a well document and finished product and because we had a week to spare there was even quite some polish (the last week was used to add in some background workers and nicer progress bar, I also added cancellation support to the layout algorithm).
During my internship I also experienced the release of Deus Ex: Human Revolution, of which the tech and pc-port was done by Nixxes, so it was really great to see the game get an 8,9 on meta-critic!
The end-talk with my mentor was relaxed and pleasant. I knew I had done pretty well but I was quite surprised when he gave me a final grade of 9 out of 10! Yay!
All in all I had a great time, and I’ve learned a lot of new techniques (C++/CLI, WPF, Graph Layout Algorithms, Data Binding). I also finally got to experience a real hands-on approach where everything gets prioritized because resources are finite. On the university it’s really a rare thing to experience this, so this was really an eye opener. I feel like I learned more valuable skills in these two months than I would have doing 3 more courses (Thanks to a helpful dean I could replace 3 courses with this intern shop)
I would like to thank everyone at Nixxes for a great time!
One of my co-workers again sped up my A* code after peeking at my blog. I have his code and am trying to add a nice visualizer to it this time before posting it, so expect it up soon.
So not too much big going on lately, but a couple of small news-bits might be enough to fill up this post :).
-I’ve dropped the work on my ‘rotating tetris’ idea, I made my gf play the first two prototypes and it seemed just too confusing or too boring once it was dumbed down a bit. Oh well, I’m happy I actually made a prototype first this time.
-In search for something to keep me occupied for a longer time, I’m working on creating a deferred rendering engine for XNA4.0, I’ve find deferred rendering a lot more logical than the normal way of rendering, especially writing lighting shaders seems to be a lot more easy because the required data is a lot more structured. I sometimes wish though that HLSL was an object-oriented language, since a lot of the lighting code for different types of light is duplicate. A nice XNA4 compatible way of getting there is StichUp by Tim Jones, but I don’t think this goes far enough. Anyway for now I don’t want to get a complicated parser project in the way of writing a deferred render engine. Oh btw, to really get me started I began converting Catalin Zima’s excellent deferred rendering tutorial to XNA4.0, I ran into a few small problems (as usual) but luckily I was able to fix this with a little help of Catalin.
On some more fun news, the new XNA Developers Survival Kit (XDSK) II is out. And it includes 3 of my tutorials (MVC in games, Farseer Physics Platformer Tutorial and the Arcbal camera snippet) . Ok I kinda snail-mailed Nelson Hurst for inclusion, but I was very pleased to find out that he actually knew of my tutorials.
Well that’s all for now, I’ll be mostly working on Calculus and the Deferred Rendering Engine the rest of this vacation, oh and celebrating Christmas, new year and my birthday of course!
As usual I will sent you my seasons greetings using a lol cat:
That’s my hand, and what I’m holding is my nice Microsoft Natural 4000 ergonomic keyboard (which is supposed to look like this) , or well, it’s the innards of the keyboard, the part that you shouldn’t normally see. Oh and there’s a towel.
Unfortunately 4 days ago I tried to explain something in a very expressive way while sitting at my desk with a cup of tea. As you might’ve guessed the hot tea and the keyboard kinda came in contact with each other (well… I poored almost all of the tea over it by accident).
After a small inspection, I found out that my 3 and “enter” key weren’t working at all, and that pressing some others keys had some awkward side-effects. So I removed all the keys and let the keyboard dry for 3 days. Unfortunately this didn’t remedy any of the problems. So I opened the keyboard (a lot of screws at the back, 2 hidden under the space key and 4 hidden under the arm rests, for those interested). I didn’t find much water, but the innards did look quite fancy.
Of course, this didn’t help me at all.
Another bad case is that I’m hooked to this type of keyboard and the local shops haven’t got it anymore…. Also the cool €35,- combo package (MS 4000 keyboard + (crappy) MS 3000 mouse) isn’t available anywhere anymore, and the keyboard alone costs about 50… Oh well.
(Did I remind you guys that there is a donate button on the right hand side of this blog?).
I should probably stop mocking now… This crappy el-cheapo BenQ keyboard isnt that bad at all. Can’t wait to order a 4000 again though, ah at least I can still type.
I didn’t have the time to finish up my upcoming reflection tutorial (it’s still coming!). But here is a small article about a real-world problem I faced on my work.
As a student I work part-time at the university’s science center (Science LinX, Dutch). One of my activities there is to help develop new exhibits, mostly as a programmer. But my input is always valued by my boss. We’ve been talking a lot about some recent projects (not developed by us) turning out to be more like powerpoint slides than real games. It seems very hard to keep educational games fun. In the design documents of some exhibits I haven’t even found any stakes regarding the fun-ness.
Well I would do things differently! And recently I’ve been given the chance:
On a project regarding the Herschel satellite there was a set of information that we wanted the public to learn (in our case 14~18 year olds). A colleague categorized the information and came with the idea to present pictures with different details of the satellite and then embed the information in them: you would have a close up few detailing one one of the components, or a far-away view detailing the launch of the satellite, etc…
Now I liked this idea, but it was way too powerpointish, and not fun. Some thought had already been put into this and things that where thought of was displaying al the data on MS surface table, and being able to zoom in with multi-touch gestures. However this would be hard to communicate to the users, and would it be more fun if you could pinch zoom?
So I came with my own idea for demonstrating the data: create a 3D simulation of our solar system, including the satellite. Add an Xbox controller for moving the camera. And present different textual fields depending on how close you’ve zoomed in onto the satellite. Seemed like a cool idea, didn’t? My colleague agreed and would search for any existing models of the satellite and would be working on the texts etc… I looked up my old space ace code and started salvaging code so that I could create a quick prototype.
After working for a full day on the prototype my boss (who had been ill) came into the office, and I quickly explained the idea to here. Unfortunately there wasn’t anyway to play the game yet, but I was sure she would understand the novelty and fun factor.
She immediately soon asked for our design documents (which we hadn’t updated at all yet) and came with some very provoking questions, the first (for me unexpected) question was: “How is this more fun than a powerpoint presentation”?
I was baffled and shocked, and I would immediately explain it to her, however… I couldn’t think of a reason why, other than that you could control the camera and that things moved (not a strong argument).
So I walked into the same trap as other exhibit developers on my first try, although I thought I was guarding actively against that trap! I had a nice long talk with my boss, and she had some very good ideas to get stuff on the road again. Monday there will be a fancy meeting and we’ll ask the most important question again: will it be fun.
Some of you might look a but strange at the title, it is the exact same title as TheZman’s latest blog post.
His post got me to think again about a project I’d like to start on *(Oh god, this makes me think of the oh so many projects that I want to start on!). Writing a book? It takes quite a lot of courage and determination to write a good technical book. Hell I know that I haven’t yet acquired the technical skills for it. (Maybe I haven’t even mastered English enough yet). So obviously I’m not think about writing a technical book.
However I would like to write a book for people who are not into (game-) programming or maybe even games in general. I would like to introduce readers to a kind of ‘ambiance’ that gives us developers such a comfortable feeling when developing for games. I would like to tell people how difficult game programming is, what games really are (in my opinion that is). And what some games with attention to detail, and attention to the real world, can bring to people.
Hell it would be a book worthy of a game-evangely. Of course there should be added technical parts, but the book I’d like to write would also contain parts that you could take a good sit for and read for pleasure.
This however brings me to how to actually release a book. Of course I could just put it up here as a pdf and be done with it, but that’s not really what I had in mind. Publishing a game, getting your name on there somewhere is also something that could thrive me into making a book.
Oh well, first back to spell and style checking my blog posts I guess. But maybe I could do a small primer someday, say 50 pages, and see what people think. (And count the number of mistakes, to see how long it would take to correct a full book…).
After working with my fathers’ old Pentax K1000 (which is really old as you can see here ) until it finally broke down a few years back (Leaky shutter). I haven’t been doing much photography at all. But recently my little brother bought a Canon 1000D and I found out that I just couldn’t resist not touching it :). So blood began to boil, a few weeks past and then I just had to buy myself a new camera.
Because my budget is pretty limited, being a student and all, I set myself the task to find the best possible camera €300,- could buy me. Quickly I narrowed it down to these camera’s:
Nikon Coolpix P90 (€290~410)
Panasonic Lumix DMC-FZ38 (€307~403)
Casio Exilim EX-FH20 Zwart (€280~350)
All good bridge camera’s in my price range. As an added bonus the Casio has an excellent film setting, the Nikon has great image quality (for a bridge camera). And the Panasonic just caught my eye as a nice all rounder. As you no doubt have noted hower, the title of this post is the Olympus E-520, which isn’t on this list, and isn’t a bridge camera. I looked at bridge camera’s because I didn’t think I could afford a nice DSLR. However after using tweakers.net excellent pricewatch to check if I had missed any cameras in my price range I came across the Olympus E-520 Double Zoom Kit package. At first I thought I was being fooled with, a fully functional DSLR, on par with the Canon 1000D, and two zoom lenses listed for less than €300,- by the cheapest store (Azerty, Netherlands) . After checking out the store reviews I came to realize that this was a reliable store and that this either was an insane offer or a mistake. Quickly I payed for the kit and had it send to me. And to my delight I really got it for only €285,-. Shortly after I bought the camera there though the normal price was restored and the kit is now listed there at €640,- (although there are a lot cheaper stores selling it for the more adequate €400,-, I guess they want to undo some of the damage ).
After toying around with the camera I really felt like a price winner. I’ve given a quick review on both tweakers.net and the store, but I’ll try give a more detailed one here as well.
Facts / external reviews
First some basic facts. The kit I bought is the Olympus E-520 Double Zoom kit, featuring two zoom lenses by Zuiko Digital (Olympus’ daughter corporation that makes some of the most excellent kit lenses, outclassing those of Nikon and Canon). The first lens is the Zuiko Digital 14-42mm 1:3.5-5.6 listed at dpreview.com here. The lens scores very good for a kit lens and gets the ‘recommended seal’. The second lens is the Zuiko Digital 40-150mm 1:4.0-5.6. It hasn’t undergone a decent lens review yet but in a short summary here, dpreview.com says
“Covering a focal range of 40-150mm (equivalent to 80-300mm on a 35mm camera), this 3.8x zoom lens offers superb mid- to telephoto functionality at an attractive price. A fast f-stop of f3.5-4.5 gives Olympus E-300 owners ample opportunity to get creative by extending their telephoto capabilities.”
So, excellent lenses! But ofcourse these lenses are useless if the body isn’t able to handle them. Luckily dpreview.com reviewed this camera in a 32 page review here. Listing it as just falling into the Highly Recommended category. I’ve taken the liberty of copying the most important pros and cons directly so you can view them without clicking through 32 pages :).
Conclusion – Pros
Good image quality at low ISO settings
In-body image stabilization means the benefit is seen with all lenses
Control panel display allows quick access to the important shooting parameters
Generally snappy performance (though it would be nice to disable SSWF at every startup)
Supersonic Wave Filter ensures no dust on sensor
Quality kit lens
Conclusion – Cons
Dynamic range limited compared to the rest of class – can lead to more easily clipped highlights
Disappointing high ISO performance
Menu structure a little longwinded (especially the setup menus)
Auto focus provides only three focus points, although AF performance good
So it’s not the camera to take with you on a nightly trip, but still it has a very good price/quality ratio.
Well let’s tell something new instead of just copying dpreview.com (I can’t help it, they are just so thorough). When I first started using this camera I was a bit overwhelmed with options. Especially the setup menu was a bit cumbersome, leading me to frequently ‘wrong click’ which made the setup menu disappear. It was a bit strange walking trough context menus by pressing left and right. Some options really require to use the manual. For example I wanted to set the image format and quality the camera saves the photos in, and I just couldn’t find it. Turns out that instead of image format, or something else descriptive the menu option is hidden behind some kind of arrow icon. The settings weren’t very clear either, L/M/S and F/N (and RAW and RAW+JPEG with one of these combinations of options). After reading a bit trough the manual (which is very clear, and has a good index) I got the hang of it and selected the highest resolution and quality setting for JPEG.
After a bit of shooting I found out that I head a dead pixel in the sensor, these things can happen, it’s not easy to get 10M light sensitive ‘pixels’ on rectangle with a diameter 4/3rd of an inch. The dead pixel was always bright and began to annoy me. Right before I was sending the camera back for repair I came across a helpful fellow who told me to try the pixel mapping feature. (More about that here). This option tries to detect if there a haywire pixels in the sensor and turns them of and compensates for them. I tried as hard as I could but I can’t find any evidence now of there ever being a dead pixel. This option is really valuable!
So then the time came to really get some photos cracking. I love the way the shooting options are set via some sort of “super menu” on the display. By pressing ok once you can freely move over the tiles which represent options and pressing ok again allows you to change the current option to whatever you like. This gives an easy review of the settings you are shooting with, as well an easy way to change them. Of course the most important options are visible in the ocular piece as well.
I’m in love with the ‘paparazzi’ mode which lets you shoot about 3.5 photos per second. And if your CF or XD card is fast enough you can keep doing this until the card is full. (You need at least a card capable of writing 20MB/s). One oddity about those CF and XD cards btw. Al tough the camera works fine with both XD and Compact Flash, only XD cards ‘unlock’ the panorama setting in the scene menu, very weird.
The photos seem very sharp in places where there is enough light. If there is not enough light the camera sometimes has trouble auto focusing, luckily you can always switch to manual focus with the touch of one button or set the flash to help focusing (even if you don’t want the flash to fire for the photo itself). The photos taken with flash don’t feel so worn out as usual, the white balance options really compensate a lot for this, and thus even flashed photos look warm and great. (But of course you can manually adjust the white balance settings and program).
I really love how feature full this camera is, it’s really a full grown DSLR, but in a pretty compact shape. Its’ body slightly smaller than the Canon 1000D and the lenses, thanks to the FourThirds system are a lot smaller, keeping everything very neat and compact. So this camera is definitely right for someone who wants to do more than just study/indoor photograph. The body and lenses are sturdy and feel less plastic than the Canon and Nikon starter DSLRs. However the camera is not weatherproofed (you’d need a few levels up in the Olympus product catalog).
I don’t know much about lenses so I don’t feel comfortable giving an outspoken opinion about them, so let’s get to the conclusion.
I think the Olympus E-520 Double Zoom kit has an extremely good value for money. Because of the size of its sensor and the quality of the lenses this camera outclasses every bridge camera out there. It’s also a camera that can keep up nicely with the big boys (Canon and Nikon) in the starter segment of DSLRs. Great white balance, good quality lenses, a sturdy compact body and full featuredness are big pluses for this camera. Of course there are a few lesser points like the poor performance on high iso’s but I as a whole this camera is excellent. Especially if you consider what I paid for it.
Because I’m not a professional photographer, I haven’t shot any really nice pictures yet with this camera. However I can’t review a camera without posting at least one picture. So here’s a picture of one of our cats. The composition is not great but I hope you’ll be distracted by his smirk :). (Artifacts are largely due to the image upload service of tinypic)