Studying Games Development

As you may well be aware, I’m currently studying computer games development via a study-at-home course. The course has been the victim of a lot of vitriol and doubt from the internet at large as towards it’s authenticity but from my own experiences so far it seems quite good. The course is question is the games developer course offered by train2game in association with TIGA.

It starts off assuming no knowledge of programming whatsoever so for me the early stages are a little pointless, though in fairness they do cover some of the thought processes that you’d need to familiarise yourself with both to be a decent coder and to work on games specifically. I’ve made sure to do everything in the books so far, whether or not I think it’s useless given my existing skillset.

This course is relatively new, something I’ve been stung with before when I did my foundation degree in computer and electronics interfacing, but the course tutors and staff seem extremely responsive and ready, eager even, to give help. The forums also are home to some good community information as well as frequented by a few unaffiliated members of the games industry which provide help and advice of their own accord which is amazing of them and much appreciated.

So far, I’m pretty happy with the course and I’m currently on the early stages of the C++ parts, where you learn the language and how to use it. Going through the material, I’ve been surprised by how much C++ I’ve forgotten over the 8 or 9 years it’s been since I last used it actively. The book has been a great help, as have my tutors, in getting back up to speed.

I’ve had some minor issues with the course material, sometimes the questions in the mini-exams are vaguely worded or terminology used isn’t 100% consistent which can course some confusion but the tutors have always been on hand to answer any questions and are eager to correct any mistakes in the material, putting out errata when needed.

I’m looking forward to breaking out into more complex territory soon as I reach more advanced subjects in the course. In the mean time I’m teaching myself how to use various 3D libraries (my eyes currently set on Ogre3D) and messing around with physics engines (chipmunk for 2D stuff and possibly bullet for 3D).

At this early stage in the course I can’t really lodge any complaints as for the most part I haven’t actually learned anything particularly new to me but as soon as I hit that stage I’ll keep things updated for all of you that are concerned this course might be some kind of scam. So far though, the effort put into it and the general quality of responses from both tutors and the community makes the whole scam scenario seem extremely unlikely. As to whether or not the qualification at the end becomes recognised by the industry remains to be seen.

Doing stuff

Okay, I wont deny it. Yes, I’m a miserable bastard. Even my own Dad has told me this on one occasion and rightly so, for it is most certainly true.

Generally I dislike pretty much everything, I enter into things expecting disappointment. I’m a natural pessimist, I guess because I really dislike the feeling of disappointment and so going in with extremely low expectations makes it far less likely I’ll be disappointed (or it will at least take the sting off).

I rarely watch new films nowadays. Why? Because I will be inevitably disappointed. I have a pretty eclectic taste in films and can’t really pin-point what it is about a film I find enjoyable but I know what it is I don’t like. I don’t like so called ‘blockbusters’ most of the time, since generally the idea there seems to be to tie together as many cliques and special effects as possible with just enough narrative to justify calling it a film. Once you’ve seen one set of flashy explosions and special effects you’ve seen them all. Sometimes, I do find those kind’s of films amusing when they bring something new to the table, or a also contain a particular brand of wit I enjoy but this seems to rarely be the case.

I rarely leave the house. There is very little I’m interested in actually doing outside that doesn’t require my own method of transport beyond merely walking to get there. There are places I enjoy going to but don’t because it’s either to difficult or expensive or just takes too damn long, by which time if changed my mind or become interested in something else.

It’s not even really about the money, though I am quite miserly and dislike what essentially amounts to gambling on the entertainment industry in the hopes I might get a payoff of enjoyment when I know the odds are not in my favour.

Consequently, I tend to play it safe, sticking to things I know and own because I have a reliable source of entertainment there at (after the initial investment) essentially zero cost which appeals to the miser in me as well as placating my fear of disappointment. This generally restricts me to reading – something I enjoy immensely, writing, roleplaying, watching films and TV I have already seen before, listening to music, programming, designing electronics hardware and playing computer games.

That’s not to say I don’t like trying new things is just that when I do, I like to do a proper assessment rather than just dive in only to find out I’ve wasted a bunch of my time and money. I consume media having never seen them before based on whether I have enjoyed other products by the same creator in the same genre, whether they are related (sequel/prequel) to things I have enjoyed before, whether I find the concept intriguing enough to take a gamble, whether the cost is low enough to justify such a gamble, whether or not there are already things I’m enjoying that will keep me occupied enough not to need yet another new toy right this instant, opinions from people with proven similar tastes as me on said media when they’ve consumed it and reviews from critics as well as the standard marketing material in the form of trailers, etc that are provided.

That might sound like a lot of work but really it amounts to maybe 30 minutes in total at the very most, usually I can make a snap judgement pretty quickly and then I just happen to change my decision later as new data becomes available and I happen to come in contact with it. It isn’t as if I sit down and exhaustively calculate whether or not I will enjoy something, rather I make a quick judgement on readily available information to me as to whether I’m interested enough at first glance to investigate further, after which (if I am) I then look for some extra info.

Most things don’t get past that initial first check because I have pretty exacting standards and wildly differing standards for exactly interests me. Most actions films like, say, Transformers 2, have very little information about the quality of the actual film instead giving short snippets of action sequences many of which just aren’t entertaining enough for me to want to invest my time in, considering I’m not much of a generic action film fan.

The last film I paid to see at the cinema was Watchmen, I believe and I only did that because of information I received on various news feeds I read, the fact that I like the comics (which I read based on recommendations from friends and based on my own research into comics since I wanted to see if there were any I might enjoy since I’m generally not a comic book fan but wanted to try something relatively new) and that the trailers and associated marketing material appealed to me, as they didn’t all seem to be portraying just another generic action film. Some material made me reticent to see it, such as finding out the ending was different to the comic, which I found somewhat unnecessary, but I felt that the information I’d gathered, plus the fact I could go see it with friends who wanted to see it as well meant that I’d give it a go. I was glad I did as I enjoyed it very much and have preordered it on bluray.

Musically, I like to try new things quite often, mostly because it’s very easy to do so at basically a zero cost in both effort and time (since I can do stuff at the same time as listening to music) via services such as last.fm and spotify. Occasionally I’ll come across music not available but from a band that sound interesting based on how similar they are to stuff I already like and reviews, etc and I might gamble downloading the mp3’s via amazon or occasionally buying an album if it’s cheap enough or I’m intrigued enough.

Books are very easy for me to ‘gamble’ on, they have an extremely low entrance point, since they need no other equipment to use, just my eyes and hands. They are portable and can be enjoyed pretty much anywhere. I also like reading because I like getting inspiration for my own writing and ideas elsewhere. Books generally inspire me, so intriguing me isn’t that hard, I essentially like books by virtue of them being books so, yeah, low entry barrier there. Saying that, there is an awful lot of books out there I will never read and for most of the reasons I’ve stated for other forms of media, being bad marketing material (cover art, blurb) and bad reviews or me simply not being aware of their existence.

So yes, I’m a miserably, miserly bastard because I do anything without weighing it up against several factors, some subconsciously, some consciously. I really do want to enjoy things, but I have such high standards for what qualifies as enjoyable and such a dislike for the feeling of disappointment that I rarely do anything new at all.

Titanium and other developments

I’ve been playing around with Appcelerator’s Titanium system and so far it’s been interesting. I haven’t done very much in the way of app development yet as I am still learning the APIs but I finally managed to get it to run under Linux (Ubunty Jaunty specifically) which is a plus!

How to get the Titanium Installer to run on Ubuntu Jaunty

Basically, I needed to run the following command:

sudo aptitude install libcurl4-openssl-dev

which installs the libcurl4 with OpenSSL library and associated development bits that the Titanium Installer needs to run. The error message that pops up isn’t the most helpful for working this out, complaining about a missing CURL_OPENSSL_3 symbol or some such thing. Perhaps some better explanation would be useful in their installer so it can suggest how you might fix these things.

I just need to install the android SDK under Linux now (I’ve already tested things out under OSX with both the android and iPhone 3.0 SDKs and it all seems good).

I might try working on developing Windows apps (which I need to do as part of my course) under Linux using wine for cross-compilation. That would be awesome.

Windows 7 Rant

Okay, so I’ve used Windows 7 a bit on and off and I’m fed up with it. Like all other versions of Windows it’s basically shite.

Why?

Because Microsoft seems to want, for the most part, to not actually be in the computing industry, but more in the ‘computing appliance’ one. Windows 7 I’m sure works great if you have a box built out of 100% certified and Microsoft-approved hardware and you just want to load stuff onto it and use it without a moments thought.

I don’t. I’m running it on a Black Macbook, I want and need to be able to fiddle with various settings and dig under the surface for when things go wrong. I want to understand how my machine is actually doing what it is doing so I can optimise things. I’m a developer, I want and need to access to the tools to tune my system and monitor it, not just from a coding perspective but from a user’s one as well.

Windows 7 just gets in the way, like all the Windows OSes before it, trying to dress things up, hide them away or just refuse to acknowledge they exist so they don’t have to put them in the hands of users. It’s incredibly frustrating.

Yes, Windows 7 is in beta so it can’t be expected to have full driver support for everything but if my linux install can do it, so can Microsoft. I mean seriously, people have to pay for this shit.

Nothing I’ve done has managed to get everything to work on Win7. The performance is abysmal, the sound doesn’t work and the brightness and volume controls don’t work, which is very annoying when suspend turns off your backlight and there is no obvious way to re-enable it. It’s shit like that which I find mindnumbingly irritating. Surely if you could turn it off, you have enough access to the device to turn it on again, why wont you let me?

I’ve tried multiple versions of the boot camp drivers, hacked up drivers, custom drivers. Nothing bloody works and the so called ‘troubleshooting wizard’ just flails around impotently like a blind idiot, flailing at the walls in the hope it might hit something to make things better.

I take back all the nice things I said about Windows 7. It’s nice if you want to buy a computing applicance, not if you want a computer. Then it sucks and it sucks hard.

Disk Recovery

Well, that was pretty cool, I just managed to recover the data off of a dying 30GB hard drive on my friends laptop. It was surprsingly easy, all I really needed was time.

First of all I downloaded and burnt off the latest beta of SystemRescueCD. After booting from that on the laptop, I set up the networking on it and downloaded dd_rhelp from freshmeat. I then mounted I directory on my main desktop machine via sshfs on the laptop and ran the following command:


./dd_rhelp /dev/sda1 /mnt/ssh/backup.img

That command basically uses the dd_rescue tool on the SystemRescueCD to copy the first partition of the first hard drive into a file on my desktop computer (via the sshfs mount point at, you guessed it, /mnt/ssh). dd_rhelp is nice because it makes the process faster apparently but leaving all the bad sector, I/O error retrying till the end, instead skipping over errors when they happen in order to copy the actually working stuff first. Then it goes in and fills in the blanks. I left this running for about 16 hours after which it had all of the drive except for about 0.5MB which just would not copy. I cancelled the copying at this point and went to work on the backup image on my desktop.

First of all I backed up the backup image. Some of the things I might do to it could be destructive and I don’t want to wait another 16 hours to grab the data again, if the drive will even work. On the backup, I then ran the following command:


fsck.vfat backup.img -rw

This scanned the filesystem in the backup image (in this case FAT32) for errors and asked me to choose a way to fix them. I basically told it to not mess around with anything except broken filenames and incorrect cluster sizes under the assumption that if this could actually see files to mess around with, chances are I didn’t need to play with the actual FAT table on the disk.

After running that and writing the changes to the image, I mounted the file into my system and copied off all the data my friends would most likely want (the entire Documents and Settings folder in this case) and burnt it all onto a DVD for them. I’ll keep the hard drive image around in case they discover there is something else they need in the next few weeks but yep, that was it. Easy.

I must say I was damned impressed with SystemRescueCD, it’s chocablock full of very useful tools and it’s ability to do networking and it’s provision of ssh tools makes it very nice to work with indeed. I could not have done this without it. Well, actually that’s a lie, I was prepared to burn a customised copy of DSL with all the tools I needed compiled and built into it but luckily I found SystemRescueCD before I wasted my time on that.

Fun stuff.

Windows 7 So Far

Been using Windows 7 a little bit and hit a few snags. It didn’t detect the Macbook hardware very well but sticking in the OSX Leopard Install Disc and installing the drivers sorted that out. The two-finger scrolling isn’t very smooth and to right click you need to hold two fingers on the touchpad then press the mouse button. Weird. I’ve installed a bunch of security updates and done everything it recommends (install anti-virus, run a Windows Defender scan, etc) and I’m just waiting for the anti-virus scan to finish. So far it’s not been too annoying though and most of the dialogues have actually been useful and helpful. The only thing that I’ve been annoyed by so far is the autorun functionality. The Windows Explorer program displays your devices (when clicking on the Computer link) as a bunch of icon button things and clicking them only does autorun it seems, to actually look inside the disk I had to open the tree view of the computer tab link thingy and browse into the disk. Didn’t seem very intuitive. Also, the autorun popped up asking whether I wanted to run the autorun programs but when the autorun programs actually run, it asked again about whether or not I would like to allow them to modify my computer which was kind of annoying since I’d already agreed to run them. I get that running the program and allowing it full system access are two different things but it would be nice if perhaps they could detect it was an installer or something and ask me this all at once rather than have two similar questions asked separately in quick succession.

Aero seems to run a little slowly which is quite disappointing considering compiz under Linux seems to run very well now I’ve applied the changes I mentioned in my last post. Perhaps the drivers or graphics card needs driving in some better way similar to the changes I made under Linux but no idea how I’d make them, sounds like I need to do some searching on that one if it’s even possible.

IE8 is still as horrible as IE7. I hate it’s interface, I hate the way it does things and it renders stuff weird in some cases, such as the TinyMCE controls on Wordpress’ Post Entry box. I just find it a chore to use and it UI just seems to get in the way of what I want to do. I haven’t used it for doing anything complicated like debugging a javascript app or anything like that but I don’t imagine I’d be in for a fun time if I did given my previous experience with older versions of IE.

I found the font rendering looked pretty shitty by default, but playing around with the ClearType tool made it all render much better and I can’t really complain now, though I think the rendering under Linux looks better.

Conclusions

So far though, no major complaints, most things seems fairly easy to find and fairly well explained by the help text. I think generally the actual system maintenance and customisation tools are much easier to use and far more friendly to new users than they used to be in older versions. Not a bad operating system as far as they go so far, but not tried to do much stuff yet, still only really had some basic usage out of it, not tried developing anything or messing with multimedia of any kind yet so the jury is still out on that one.

Macbook Triple-Boot with OSX Leopard, Windows 7 and Ubuntu 9.04

Well, since my macbook decided to screw up after a failed software update under OSX (thanks Apple) I decided to rebuild my system from scratch.

Since I’ve been considering doing this study-from-home Games Development course, I need Windows and I don’t too much fancy paying for it, Windows 7 is available legally for free, so I decided to use that. Since this was a new build, I upgraded to Leopard since my old OSX install was Tiger and my old linux install was an old Intrepid install that had been dist-upgraded to Jaunty so this time I decided to use Jaunty from scratch.

First of all, I booted off of the OSX disks and partitioned my 120GB hard drive into two sections. The first was 30GB for OSX, the rest was free space.

Once OSX had finished installing, I used Disk Utility from within OSX to further partition the drive’s free space to give me a 20GB partition for Windows 7, a small 1GB partition at the end of the drive for swap and the rest was given over to Jaunty. I formatted all 3 of these partitions as FAT or MS-DOS format. I couldn’t actually format them this way from the partitioning tool s after I created the partitions with the Mac filesystem, I reformatted them with Disk Utility individually. I probably didn’t need to format them at all, but what the hell.

Why didn’t I just use BootCamp? It seemed annoying. The BootCamp Assistant insisted on not letting me have control over my paritions and seemed very Windows-centric, not offering any mention of Linux. It also didn’t mention Windows 7, just XP and Vista so I decided since it didn’t seem to be supported anyway that I’d go with other methods instead rather than try and force it to work how I wanted and pray it worked.

Next, I did all the system software updates for OSX so that they wouldn’t interfere with any later steps. I then downloaded and installed reFIT, a nice EFI bootloader that made everything else very easy.

After that I rebooted and installed Windows 7. Windows 7 insists on a NTFS formatted partition so I formatted my previously FAT formatted 20GB partition and let it use that. The install went quite smoothly without any issues. After each restart, the reFIT bootloader should display a Windows symbol with a harddrive overlaid on it in it’s menu. Boot from that until you are finally at a working Windows 7 desktop.

At this point I rebooted and tried to access my OSX install using the option on reFIT, it worked fine, much to my surprise, and it seems thatinstalling Windows no longer trashes your bootloaders.

After that, I booted my Jaunty install disk (I used the alternate install disk because my normal one wouldn’t even boot in the computer). Installation was easy but there are a few things to watch out for. Make sure to select custom partitioning at the partitioning stage and then select the large empty FAT partition as the main / parition for Linux. I used ext4 as my filesystem but use whatever you like. Then select the small 1GB FAT partition for swap. I am assuming you have a basic grasp of how to partition and format things with the Ubuntu installer which for the most part is fairly self-explanatory anyway. Another thing to watch out for is the bootloader installation. With my paritioning layout of EFI, OSX, Windows 7, Linux and Linux Swap, I opted to install the GRUB boot loader onto (hd0, 3) or directly into the linux partition. Once the installer finished, I checked I could still boot into each system and everything worked fine, no hassle. The reFIT menu now had three icons an Apple, Windows and Linux one, each with harddrive overlays and they all worked fine.

At this point you have a working triple-boot system. However, the linux install doesn’t perform very well out of the box. I followed the very good instructions to improve my Linux experience on my macbook here: https://help.ubuntu.com/community/MacBook2-1/Jaunty

UPDATE!!!

I was having quite a few driver issues and things such as sound wouldn’t work. However thanks to the advice of Jonas Wisser I decided to download the BootCamp drivers from the Snow Leopard prerelease. These worked a treat and basically fixed everything as far as I can tell so far.

Some words of warning:

  • My original system got trashed because an OSX update died, I’m guessing it tried to update the EFI firmware which I had replaced with reFIT. Having reFIT installed could make your system unbootable after you do an OSX update so I’d recommend keeping the reFIT installer around so you can reinstall it after doing updates before rebooting, just in case.
  • Windows 7 is a free release candidate until March 2010 where it will apparently degrade until you either pay for the full version which should then be released or it stops working all together.
  • Some stuff in Linux doesn’t work perfectly on the Macbook, such as the iSight having a green capture issue. This is discussed more on the page linked to previously.

Conclusions

So far I’m very pleased with my new install. Nothing has exploded yet, no weird errors, the installation was flawless. Basically nothing has really gone wrong or broken. I’m not much of a fan of Windows and I’ve barely even touched my Windows 7 install but I’m quite impressed by it, it seems pretty stable so far and it’s not done any of the things that normally annoy me immensely about Windows yet, so for the time being I think Microsoft might have finally released a decent version of Windows. I wont be switching any time soon, or ever, but so far I can at least tip my hat to Microsoft on what so far appears to be a job well done. I haven’t played much with Leopard yet, so I can’t really say how I feel about it other than it’s not very much different to Tiger so far, except with a little more polish in some areas. Jaunty I had running on here before and so far it’s working nicely. Just need to fully test out all the changes I made as recommended via that link I posted earlier to see if I can make it even better.

Minor Rant

Haven’t posted in a while. I’ve been crazy busy, not quite sure what with but it seems like I’m always doing something else and never have enough time for anything recently.

Anyway, the main thing I wanted to talk about was the ridiculous prices of some books I’ve been looking at recently.

As some people might already be aware, I’m working on designing a computer architecture from scratch in my spare time. I’m using Verilog to synthesise the hardware because it’s prohibitively expensive to play around with this kind of thing with discrete logic chips, not to mention difficult and unwieldy. Now, I don’t really know Verilog very well so I’m learning it as I go, I also don’t know much about some kinds of optimisations you can make to do things like binary multiplication happen quickly in hardware. With that in mind, I thought I might buy some books on the subject.

Or not, because they are all over £100!!!

What the hell!? I can understand that there would be a premium on specialist knowledge like that, but what about hobbyists? Self-learning materials are either non-existent or prohibitively expensive or aren’t self-learning materials at all and are instead reference guides for people who are already experts. There are tons of cool things I’d like to learn but don’t have the time or inclination to sit down with a tutor and learn properly. Besides, so far everything job-wise that’s gone right for me has happened as a result of things I’ve taught myself, so paying for education from someone else isn’t something I’m too hot on.

With these issues in mind, I’m going to do my best to document my learning process so that others can follow it. Hopefully someone will find it useful or entertaining in some way.

Stuff

Wow, things have been a little crazy recently. Work has been ish and we’re down to just me and the boss for the time being which is pretty sad. Hopefully thing’s will pick up again soon and we’re taking this as an opportunity for a company reboot so we’ll see.

My WiiFit exercise regime isn’t happening. I’m always busy with something it seems so I never get time. I’ve not actually used it for exercise in about 3 weeks now. Terrible I know. At least my body seems to be pretty happy hovering around 15.5st rather than still ramping up the pounds of fat :)

I’ve still been trying to write as much as possible and have managed to get Dru to start contributing more to protagonize which I am now a moderator of! So now I get to abuse my power for evil good. Woohoo!

I’ve been trying to keep the Bournemouth.rb Ruby Group up and running recently. So far we’re only small, but we’ve managed to run a few meetups so far. Currently we’re trying to find some projects to hack on together – if you have any ideas post them up on the Bournemouth.rb wiki. I’m quite enjoying this whole community lark. Let’s hope it lasts! If you are a rubyist in Bournemouth or if you’re just interested in the Ruby programming language and looking to get into it then try coming along, signup on the Bournemouth.rb mailing list for more info.

Writing, Reading, Listening, Speaking

I’ve been bitten by the literary bug recently. Badly. As you probably already know I try and write on Protagonize, a cool online writing community. I’m currently collaborating on a really amazing story with some fantastic authors, namely Eloosive, Archi Teuthis and Bill Hartzia (not forgetting to mention the brief but awesome accompaniment of Cheshiregrin!) called Tagged which I’m sad to say I haven’t put as much work into as I would have liked, though this is something I am working on changing.

I also recently started up another story called This Polaroid Truth, you can read more about in on the site. So far I’ve posted a new chapter every day I think, as well as also adding some more to some stories I’ve left dormant, such as Her Ladyship’s Wife. I’ve got a real hunger for writing at the moment but not only that, reading too.

I read a lot of books as my spare bedroom can attest (it’s stacked full of them!) but sadly I’ve never read very much on Protagonize. Yes, I read the odd thing that pops up on the front page but generally I find the site hard to engage in when looking for things to read. I’m not sure what it is about it but I find browsing through it looking for things to read quite arduous. However, I’ve been putting in a special effort recently and have pledged to myself to try and comment on everything I read. Often I find I have nothing to say because I’m not really interested in the story or it’s good, but doesn’t really give me anything in particular to comment upon. I’m forcing myself to write at least something, even if it’s just ‘That was okay’, just to get me into the habit. I’ve said many times before on the site that commenting is something that’s extremely valuable and I don’t want to be a hypocrite. Short meaningless comments don’t help others much but getting myself into the habit of commenting at least will make me more likely to make decent comments in the future.

Apart from writing and reading, I’ve been making use of Spotify a lot. Spotify is a cool relatively new service similar to last.fm. It’s a streaming music service with a certain social aspect (shareable, communal playlists) but unlike last.fm you can choose exactly what tracks/albums/artists you want to listen to. Unlike last.fm, the radio stream has adverts injected into it for free accounts, but they aren’t too bad, essentially just like listening to the radio over the airwaves. It also integrates with last.fm to scrobble your plays so you can benefit from both. Their client software doesn’t exist for windows yet but I’ve found it very easy to setup using WINE. I typically use last.fm to find new bands to listen to and now spotify fills the gap with the ability to actually listen to them without needing to commit to buying an album without knowing whether I’ll like them or not. Great stuff.

My talk for the next BUNIX meetup is coming up soon. I’ve been writing some software for it but need to sit down and bulk out my slides a bit. There are a couple of extra things regarding DSLs I want to talk about now, such as the awesome Cucumber and how it uses ‘treetop’ to make it’s DSL with a parser rather than interpreting actual ruby code. I’m not the greatest public speaker but I guess I need to get over it some time or another and now is as good as any. Besides, I’m trying to get more into the Bournemouth geek community and going to Barcamp Bournemouth, even though I didn’t actually speak there has given me the confidence boost I needed to make me at least attempt that.