O2 in the UK have finally properly unlocked my iPhone – no more software unlock needed to run it on Softbank. Hurrah!
I’ve moved to Tokyo! Its much bigger than Nagoya 🙂
I’m currently stuck behind a Dynamic IP address so cannot host the site and email from home anymore – I’ve moved the blog to Media Temple and my email to Google Apps.
Finally in playtest on Xbox Indie Games, Avatar Kart now has:
- 8 CPU racers
- Avatars sit down and actually steer their cars
- Race restarting
- Cool loading animation
- Drift handling improvements
Done some optimisation to get the framerate to a steady 60FPS, definitely still much more I could do. The floating point performance on the 360’s .NET Compact Framework is pretty dire..
I’ve just pieced together a renderer for QR codes that outputs a texture instead of System.Drawing.Image objects (the Xbox .Net Framework version does not have access to the Drawing namespace). I’ll be using this as a way of uploading times on Avatar Kart to my server instead of copying a code which you had to do in Lines, my previous game. I will release the code once I’ve tidied it up a bit.
My Avatar Kart game now has:
- A skybox
- An original track
- a floor for the world
- Debug and chase cameras
- A starting countdown
I also finally got Avatars in the code (Xbox 360 only so no videos yet). Microsoft has not decided to release the bones for the avatars, so I cannot do custom animations or poses yet. Therefore they are standing in the karts at the moment…
I’ve now had the pleasure of developing two line of business applications using two very contrasting versions of the Symfony framework in PHP/MySQL. Whereas symfony 1.0 allowed you to generate custom CRUD (create, read, update and delete) interfaces by editing simple human-readable config files and overriding simple functions, new symfony 1.2 systems require you to understand badly documented APIs (more on that later), PHP’s OO programming quirks, the exact method call order of the new forms framework and write completely new classes to provide custom filter functionality. 1.1 was an interim version that left in backward compatibility.
Imagine you want to add a custom filter to the standard object lists that require custom joins or subselects on columns not in the object’s table. We want an extra filter called “is_missing_address”:
- Add “is_missing_address” and boolean type to the list in generator.yml
- Override the addFilterCriteria() method in the actions.php file to add the custom SQL when the “is_missing_address” filter is active
- Add “is_missing_address” to the filters list in generator.yml
- Add the sfWidgetFormChoice() Widget with all the select tag values to the list of Widgets in the Filters form class’s configure() method
- Add the sfValidatorChoice() class to the list of Validators
- Override the getValues() method of the filter form to include “is_missing_address” and a custom criteria method name
- Add a method such as addMissingAddressColumnCriteria() to the filter form class that adds the custom SQL
There are benefits to doing it the 1.2 way once you know what you are doing, but it is extremely complicated before you get your head around it. 1.0 was vastly more accessible partly in due to its amazing documentation.
I learnt symfony 1.0 by reading The Definitive Guide to symfony, written by the two lead developers. This was a fantastic book, detailed and simple. It was also clearly written (mainly by Francois Zaninotto) and obviously properly proofread before publishing.
The two lead developers have appeared to have a massive falling out after 1.0 was finished and massive changes brought in. The main author of the book has quit the project entirely after attempting to document the new changes and realising that 1.2 is only powerful and not simple. Simplicity and speed of development is probably the only two reasons anyone would want to use symfony in the first place (and probably PHP) – both of these points have been removed. The new documentation is full of French-lish such as “Softwares” and the homepage has what can only be described as non-native english. I believe parts of 1.0 were written with the documentation in mind (Documentation Driven Development), but 1.2 appears to have been made as powerful as possible, gaining maybe 10% more functionality at the expense of being easy to learn.
You do get what you pay for however, and symfony is free to use. I would not pay to use it when money gets you access to something like ASP.NET MVC now with fantastic MSDN documentation (there are free versions but it still requires a Windows server to host with). The symfony developers offer expensive training workshops – if the framework was still designed with simplicity in mind, you wouldn’t need training workshops or “symfony camps”.
The standard response to negative comments on open source projects appears to be “why don’t you volunteer to fix some bugs or correct some documentation?”. If I did that, it wouldn’t be free now would it?
During my down time I’ve been cracking on with XNA and am developing “Avatar Kart” – essentially Super Mario Kart on the SNES with Xbox avatars (we have to wait until XNA Game Studio 3.1 this summer for avatar support). In a couple of days I’ve managed to finish:
- CPU Car AI
- Physics and wall collisions
- Terrain effects
- Lap counts and car rankings
- Split screen
The track is still from SMK and the cars are empty but it does the job. Although its in 3D, I’m trying to get a 2D mode7 type handling feeling, really tight controls and simple graphics. I’ve already hit the performance wall of floating point operations in the compact framework on the Xbox so will need to spend some time optimising later. I will be replacing the Mario Kart track with my own design soon.
Below is a video of how its looking so far:
Vista and Windows 7 users: just unzip and run BigFlashCards.exe
Windows XP users: You need at least version 3.0 of the .NET Framework. Download it here.
For those that care, this was developed in Visual Studio C# 2008 solely on a tiny little Dell Mini9 laptop.
Windows 7 has been out for a few days for MSDN members and the public beta is due soon. One of the best new features is native DivX, AVCHD and mp4 video support. With the codec framework completely changed (as explained by Long Zheng here), usual MKV splitters for Windows Media Player no longer work and viewing HD MKV files now definitely requires VLC for now.
On my travels I found an application called TSMuxer on the doom9 forums – this has the ability to very quickly convert HD video files between formats with no quality loss whatsoever. This works by changing the container formats but keeping the video and audio streams the same.
The screenshot above shows the settings I used to convert an episode of Heroes into an AVCHD .m2ts file. The process took about 2 minutes and resulted in a file that plays natively in Windows Media Player 12, Windows Media Center and even better – streams and plays in HD to an Xbox 360 Media Center Extender. No stupid codec packs and no dodgy DirectShow filters. Lovely.
For the forseeable future I’m back in Japan since finally finishing my Uni course. After working full time since May I’ve decided to have a bit of a gap year style break before I settle down somewhere. Expect this blog to become a bit more of a personal one with some photos etc.
My phone is back in action and my keitai address is ed.andersen at softbank.ne.jp 🙂 Feel free to drop me a line.