Tuesday, 19 April 2011

Gamasutra Programming Jobs Word Clouds

I compiled all 122 of the Gamasutra Jobs related to programming, excluding scripting that are listed today and used http://www.wordle.net/ to create these word clouds:


Based on the Job Titles of the 122 jobs (click for larger view):


Based on the Job Descriptions of the 122 jobs (click for larger view):

Based on the Platforms listed in the 85 out of 122 jobs (click for larger view):
Data used


Some interesting observations I found about the current state of the games industry:

  • Senior developers are highly sought after.
  • Gameplay programmers are in demand perhaps due to the fact that many companies have switched to engines and tools.
  • Console platforms seem to be hiring more than mobile ones. This could be due to the fact that mobile developers are mostly startups.
Disclaimer: this data is just based on Gamasutra alone and only for today, so this information could be outdated easily or biased towards only the Gamasutra community.

Saturday, 28 August 2010

Automatic posting of shared links from Facebook to Blogspot

(skip to summary at bottom to skip my rants)

It's been awhile since I posted. Since then, there have been many changes in my life including my graduation from university and the embarkation on the working world. I have also learnt many more things as well as met many more people. I also reluctantly started using Facebook a year ago but now check it everyday and share links from friends, which brings me back... well, here... I figured that if I was sharing so many links everyday, and was rather unhappy with the fact that Facebook currently does not allow me to search the links or organize them better. Occasionally when I wanted to refer to a link I posted a month back, I had to click the "Load New Posts" several times under the links section before I could find the link. What made it worse was that now is the mobile age and the Facebook Mobile iPhone App lacks text searching functionality so it makes it hard to find a link. Therefore, I felt that collating them on this blog would be better in the long run, so that is what I've set out to do.

First, I searched online to see if Facebook could post to this blog automatically. However very little information turned up and I was quite disappointed because that would mean that I either might have to copy links manually from Facebook or have to do the reverse which is post on the blog and have it sent to Facebook, preferrably automatically.

Being a programmer means that I'm lazy and will never settle for a manual solution so I started to see if I could find out how to get Blogger/Blogspot to post to Facebook automatically. I found that the common solution was to get Facebook to read the RSS of this blog and it will automatically convert posts into Notes. Here is a great tutorial on how to do so: http://everything.typepad.com/blog/2009/01/how-to-add-your-blog-feed-to-your-facebook-profile.html However, I still was not satisfied with this solution because the main way I used Facebook was just for sharing links. As you can probably tell at the start of this post, I gave up the whole blogging thing, so I did not want to keep posting into my Facebook notes. I wanted it to post into Facebook links instead of notes!

Having some spare time to kill, I tried looking for other ways to get around this. Unfortunately, I kept finding the Facebook notes solution and I decided to go back to trying to see if there was a way to get Facebook to post to Blogger/Blogspot instead, which is the ideal solution anyway. Then I logged into Facebook and started to see if there was anything in the links section at all that would give me a hint. Then I found it! Apparently, Facebook has RSS for the links section of a user. Then Google did the rest of the magic and I found out that if I could get this RSS to email me whenever I posted something, I could forward the email to the Blogspot posting email and that should do the trick. Then I checked the Help section of Gmail to see if there was some setting that I could use, but it turned out that Gmail does not support having an RSS email you even though you may have a Google Reader account, so I found out about http://www.feedmyinbox.com/ which is exactly what I needed.

So in summary, in order to get Facebook to post to Blogspot, here's the steps you should do:
  1. Go to your Facebook profile
  2. Go to your links section ( This is not the same as your newsfeed section where you can see your friends' posts)
  3. Look for the "Subscribe to Links" area and copy the link of the "My Links" button. This is your RSS feed for your links posts from Facebook.
  4. Get Feedmyinbox to forward this RSS feed to your email account ( if you want a more direct route, you can also directly post to your blog, but beware that any admin messages from Feedmyinbox will appear publicly on your blog, so this is not advised!)
  5. Set up your Blogger/Blogspot posting email address. This should be under "Settings", then "Email & Mobile" tab.
  6. For Gmail users, you can set a filter to forward all messages from Feedmyinbox to your blog posting email address and this will effectively post the messages for you. For other emails, you have to figure out your own way to get the messages automatically forwarded.

Monday, 21 May 2007

Computer Graphics Lab 1 : Morph

Ok, this is another assignment from my computer graphics module. The first one in fact. We were to put in the code which could morph pictures.



How does it work? Well, first you got to watch the video once. Then notice the red lines near the end of the video? Those are the guides to the morph. What the program tries to do is move each red line in the source picture (cat) closer towards the corresponding red line in the alternate picture (dog). As it is moving the lines, it calculates the pixels which need to be stretched or changed during that frame according to a mathematical formula. Well, actually its abit more complicated than that but that's the gist.

For the video above, I am actually trying to show you the different modes of the program. What I did not show was the long computation time it took to calculate 24 frames for that second. It took about 3 to 4 seconds to compute each frame. So nope, morphing using this algorithm is not real-time! As for the modes, I first showed the source and target blended morph, then the source-only morph (cat), then the target-only morph (dog), then blended with the guides. Blended meaning an interpolation of transparency. So the cat is 0% transparent and the dog 100% on the first frame. The cat 50% and the dog 50% on the middle frame. The cat 100% and the dog 0% on the last frame.

I did not really find the assignment hard since we were given an algorithm to follow but I did learn alot from this assignment and was really amazed at how maths could be used to manipulate so many things. It was also only in this module that I realised Adobe Photoshop was all about powerful maths. Yup all your strange effects and tools are all essentially some kind of formula. Some are really complicated and thus the slow computation times and some are really straightforward and fast. Oh and I would also like to state that I did not do all the programming. Most of the framework was provided by the lecturer and we only had to fill up the morphing algorithm.

well that's all for today! (lucky i found out how to do the video stuff yesterday so this post only took a short time) Oh but i did find out more about the flv player today. A surprising fact that it can actually have a different frame rate from the swf it is contained in so that videos of different frame rates will all be played at its correct frame rate. This is unlike the rule where a swf contained in another swf will follow the frame rate of the parent swf. Also, the flvplayer can resize itself to fit the video it is play. This is a really wonderful feature because that means I can use one player for all my flv videos of different sizes and frame rates. Awesome.

More computer graphics stuff for the rest of this week! I have decided to make this week Academic-related Posts week.

Sunday, 20 May 2007

Computer Graphics Lab 2 : Fly text

This flying text animation was done in opengl. It was an assignment given to us during my computer graphics module and we had quite alot of fun with it. Our lecturer wanted to give us some freedom to express our creativity but was also surprised at what all the students came up with. For my assignment, I chose not to use any pictures and went for the ascii art theme, using only text in opengl. I think he was particularly pleased with the fireworks explosion of '@' symbols.

Everything you see in this video was programed by me. I used abit of procedural animation (the ball and the firework particles). If you're wondering what procedural animation is, it is animation which is done by program code or math unlike the normal animation where everything is placed manually via some editor and the positions are recorded and played back.

The scenes were done with a simple switch case statement with a timer clock to determine the start and end of each scene.

The colour changes were done by interpolating the color using the same clock by a mathematical formula.

here's the code snippet for drawing the ascii faces:


and here's the final product:



after-blog note: wow this post caused me more trouble than i expected. I found that the flvplayer component provided by flash could not load the skin for the buttons. ok let me explain. This blogger site does not allow me to host swf files so I am uploading my files to another server and linking to there. However, I found that the flv (flash video) could play but the skin could not load resulting in the entire playback button panel not showing up. So I added some code and found that the player for spitting out a skinError saying it is unable to load the file. After googling for some time, I finally found this (really hard to find) page from adobe.
But i did not like their solution because that brings me back to the problem of how to upload swfs to blogger. So what i did was instead use iframes. A quick guide by w3schools here.
And voila! it worked. Only bad thing about iframes is that if you size it exactly to the swf, the scrollbars may show up. So you may have to use trial and error to get the iframe size right. Here's and example of the iframe code I am using (i added back slashes to get the browsers to show the text instead on try to parse it as html code) :

\< src="http://yoursite.com/yourswf.html" align="middle" frameborder="0" height="270" width="420">

Wednesday, 16 May 2007

Creating Games in C++

Yeah.... I just finished my first book in a way long long time. The last book i read was on flash stuff but that was maybe a year back. I decided to read up on C++ stuff because I heading in the direction of console games. So I picked up this book and starting reading. I have some background in C++ from my junior college days but the special thing about this book is that it tries to teach you C++ while you are trying to build a simple game. Its an awesome idea I must say and I do like it as it shows you what you can do while you're learning the programming language. Its not like the normal boring code silly things books.


Category Score
---------------------------
Content: 9/10
Readability: 7/10
Usefulness: 7/10
Code provided: 9/10
Game Engine: 3/10
---------------------------
Average 7/10


First, I want to address the biggest problem with this book. And that is the game engine provided with the CD that comes along with the book. It does not compile out of the CD! and its awful because even with the errata provided on the publishers' site, its not fixed. There's even a forum which is a talking about the problem and though it seems some of them solved it, I still cannot solve it. At least not within an hour. That means that all game code you get in the book won't be able to compile and you may not only get very frustrated but you may feel like giving up (but don't!). The game engine is called llamaworks2D and it is missing a few steps on how to link up with openAL opensource sound library. However, I assume some of the other code which does not make use of the game engine would compile. I must admit I did not try it out because I already have C++ background. These include the chapters on vectors, inheritance, arrays, pointers and file input or output.

The good thing about this book is its content. Not only does it teach you programming in C++, it also teaches you several tips on how to optimize your game code while you code it. For example, it teaches you when to use inline functions, inherited sprites versus contained sprites, when to use you the squared magnitude of a vector versus the actual magnitude of the vector and many more. Optimzation is always a good thing. That's how complex games work. They will never run properly if its not optimized. Furthermore, the book does teach you about game design which is very important in my opinion. Game design gives games life. If you have good graphics, great sound but bad game design, people will play your game but will give up and say it sucks. Although the design stuff in the book is quite brief, he does cover the more important aspects. Another good part of the book is that it gives you several options and references to good tools you can use in games.

When it comes to readability, I only have one test which is whether it makes me sleep. I sleep very easily when I read books and that hinders my progress a lot. For this book, it made me sleep a few times but otherwise its actually very readable. The chapters are well separated and most of it is concise and to the point. However, I notice that there are a few occasions where I am reading something which I know and can get past easily without explanation. I am not very sure whether those sections pose a problem to a reader who is new to programming.

As for usefulness, I find the book very useful even though i have background in C++. I'd recommend it to all new programmers who want to learn C++ as well as build games. I'd also recommend it to game designers. In the book there is a line saying, "it's something of a truism that the more game programmers know about game design, the better they can do their jobs". I feel that the opposite of this is also true. That is, the more game designers know about programming, the better they can do their jobs. It helps because you know what it takes to get the game running but please do not twist my words and say that you need to know programming if you are a designer. Well, I also think that game designers should not always be constrained by programming problems in some cases so that they can be more creative in their designs.

The code provided is good. As said above (under content), there are many tips on optimization and stuff. So that's a good thing but this is undermined by that fact that the game engine does not compile so some code will not be able to work though it is technically correct.

I do think this book is good and it is a real pity that its game engine doesn't run, if not it would have been a highly recommended book. But yes, I did learn alot from the good content provided. I must admit that its is easy to tell that the writer has alot of experience in game programming and he shows it well. Best of luck to all those out there who are going to try it.

Get Adsense

Want to earn money like me? Get Google Adsense now by clicking this