Engineering Game Development

Lee Winder, Technical Manager at BlitzTech on Software Engineering, Game Development and Education

Browsing Posts in Education

Everybody who has had even a cursory glance at game degrees, whether they are technical, artistic or design based, knows that they come in for some abuse. You hear what can only be described as horror stories, people who have spent 3 or 4 years of their lives, racked up a large amount of debt, only to come out at the end with a piece of paper that not only doesn’t give them the skills to get into the Games Industry, but doesn’t give them the skills to get into any other kind of industry either.

Fortunately, not all of them are of the same quality, but with the general attitude towards them, its very difficult and daunting to try and find one that is not only worthwhile, but one which will benefit you if you find out the games industry isn’t the right industry for you.

SkillSet (or the ‘Sector Skills Council for Creative Media’) is a body that (amongst other things) works with Universities to monitor, recommend and guide course content, pushing it in a direction (if it isn’t there already!) that will provide students with the right skills, and experience, to enter the games industry and provide them with the talents to move into other industries if that’s where life takes them.

And it doesn’t work alone.  Working with companies and individuals from the games industry and Universities it can constantly check and discuss what is being suggested, what is needed and how best to get the required skills to those that want them.

Accreditation is one of the main ways in which SkillSet is able to easily and clearly indicate that a University course is, for want of a better phrase, ‘fit for purpose’ and while it can be a hard process to get through it is something that really benefits the Universities in the short and long term.

Accreditation is a process in which Universities apply to SkillSet with a set of documentation that covers, amongst other things, the following.

  • Course Content – Are they teaching what the industry wants.  Advanced C++ and math, team work and development (source control tools, cross discipline development, leadership and teamwork skills) and console development spring to mind
  • Equipment – When joining an industry that uses technology not available in any other industry, it helps if you have already experienced what it’s like developing for them.  Platform holders are happy to work with Universities to provide equipment for their students to use, and they should have good exposure to it.
  • Industry Involvement – Do they have guest speakers or work with companies to form their course content?
  • Outcomes – How many of their students get roles in the industry when they graduate and what roles are they filling?  Are they able to get jobs in other industries if they want to?

The documents that applicants complete are freely available here if you want to have a more detailed look.

Representatives from the Games Industry then take part in the accreditation process, reviewing the application content, and feeding back to SkillSet and the University before, if successful, moving onto a more detailed phase of presentations, visits and interviews.

And it should be stressed that it is these industry representatives, always from a development background, that have the final say.

There are currently courses that are accredited (and I stress courses, as a University who’s Art track is accredited may not have it’s Tech track accredited) and you can easily find out the content of their courses to see why these have been given a big thumbs up from the Industry.  Obviously as the process continues, gets more streamlined and improves, more courses will be added to this list, hopefully sometime this year and on a yearly basis after that…

I was originally going to end this post with a ‘what to look for’ and a ‘what to avoid’ paragraph for future students, but I want this to be about the work that SkillSet is doing, and how their process is not only useful, but is driven by the industry that is being fed into.  There will always be discussions as to how to improve the process and it’s encouraging to see how many companies and individuals take part in these talks (on both the University and Industry side).

So if you are looking at going on a ‘Game Degree’ in the near future, make sure you check out the current list of accredited courses, and if you can’t get to one of those, examine the course content in detail to see how it compares or to see if they are in the process of being accredited.  If you still can’t find the information you need, request more information from the University.  They benefit from you being there to, so it needs to be a two way street before you even think of enrolling.

Thoughts?

 

 

 

The Game Career Guide has posted an abridged version of The Elusive Demo Portfolio posts (parts 1 and 2) (edited by the editors of the the Game Career Guides website) – titled How To Make A Game Programming Demo Portfolio.  

Hopefully it will reach another audience who will find it pretty useful and the original has already been linked to a couple of times on the forums and has gone down well already (usually thanks to Steven Yau).

Give it a read and let me know what you think.

In the previous parts of this series, I covered what is generally regarded as good content for an entry level portfolio and then followed it up with suggestions and ideas on how your portfolio could be presented.  In this part I am going to take a look at some real world portfolio’s that have been created by people looking to enter the games industry as entry level programmers.  As you would expect the easiest way to do this is to use online portfolio’s that are publicly available so while this part does have a skew towards the online, the content will be just a relevant to a demo CD or any other presentation method.

For the sake of consistency I have included screen shots along with a web link to the real thing as portfolios tend to change as careers develop and people’s skills improve and grow.  I should also point out that these critiques are in no way meant to be in depth reviews of the portfolios.  Ideally you should make up your own mind as to how good you think they are and how they could help you develop your portfolio in the future.

Sean Carrica – http://seancarrica.com

Sean’s website is very clear and well presented.  Every page has a clear (very clear) link to each part of the portfolio which means you can easily dart around the site without having to move back to the home page once you have finished reading the current section.  The way the games are linked works quite well, especially as there are only a few and in this case you don’t need to really categorize them in any way.  If this was required, having smaller, easier to group images under a relevant banner would work quite well.

The CV is presented in multiple formats which always gives the reviewer the option as to how they want to view it.  As a user of OpenOffice I am often wary about opening Word documents so a .pdf file makes this much easier to manage.  Along with the CV is Sean’s brief bio, which really gives an impression of who he is and what he is looking for.  While this is easy to access, it would probably be more appropriate on the main page since it covers exactly who he is and would give a reviewer more information without having to look for it.

As for the projects themselves, there is a nice variety of skills on show and it also makes clear where Sean wants to work (game programming rather than tools or engine level you would assume) and the sizes of the projects are appropriate for the roles he would probably apply for.  Ideally the C++ projects would be completed (rather than On Hold) since this is the language he will most likely end up working with but the screen shots and code samples give you an idea of the projects and their scope.  If Apache was written and completed in C++ then the range of projects would be ideal.

I would also question the inclusion of the Code Snippets section, which by Sean’s own admission contains code that was designed for a specific purpose but then not actually used.  You would start to wonder why, what were the reasons for not using it yet still including it on the portfolio?

It’s a shame that not all the projects (even the on hold ones) have screen shots or demos.  Because there are no executables available I would really expect to see this for each one, giving the reviewer the ability to judge the games and assess what Sean could do.  Are the projects that do not have video or screen shots available simply not good enough for a portfolio – while I personally doubt this it will cross some peoples minds and reduce the impact of his work.

As you can probably tell, Sean’s portfolio is a solid piece of work that contains a good range of projects and is presented very well.  The use of a simple, clean URL is a real bonus too.  If there were a few things that I would expect to be done slightly differently it would be the following

  • Allow me access to the executables so I can actually play the demos – this goes a long way to impressing a reviewer

  • While the YouTube links are useful include the source files for download too as this gives more people access to the material and download speeds are generally not an issue

  • More completed C++ projects would be a real bonus rather than some incomplete ones that may appear to be tacked on

Michael Stowell – http://stowelly.co.uk

Michael has a very nice range of demo’s available for download on his portfolio, some of which are on actual pieces of next generation hardware (obviously a benefit from attended University but one which should be highlighted).  Content covering 2D to 3D work using a wide range of C++ API’s show that he is capable of working with new technology and new tools without too much trouble, and is also willing to try working in different areas rather than concentrating on what he knows.  Each demo provides downloadable executables all of which worked out of the box on my basic run of the mill development PC.  This is a real bonus and either shows Michael spent the time thoroughly testing his demo’s or is capable of writing good solid code from the off – both are desirable traits for an entry level programmer.

The only downside of the projects that are available is that some of them seem incomplete and unfinished so it may have been beneficial for Michael to concentrate on a couple less and adding polish to the remaining ones.  This wouldn’t have gone against him as he would still have had a good range of projects on show.  I would be tempted to say that the main project is possibly too big for a demo portfolio, especially when there is such a range on show and it isn’t a finished piece of work.  A more focused and complete main project would probably go some way to making this portfolio complete.

Unfortunately, Michael has presented his work in a format that is less than suitable.  While blogs are good for simple one off comments or projects they can be very difficult to navigate, especially when there are a multitude of links to other areas of his blog that are not, in the fullest sense, related to his portfolio.  There are a lot of links to the right and top of the portfolio that simply clutter the page and make navigation difficult.  This is only made more problematic by every project being in the same entry, so the reviewer has to scroll through multiple projects to get where they need to go – add to that the slim line formatting of a blog and there is a lot of information in a very small space.  This proves to be a problem when adding images (which could be linked to rather then embedded) as there is so little space that some of the images are simply to hard to see clearly.  As an example of the lack of clear navigation, it took a while but I eventually found links to videos for the various projects, which would only help Michael and should have been linked to with each project and each section.

As a quick over-view, Michael’s portfolio contains some very good work and shows off his ability in the field of game development.  Unfortunately the presentation is less than ideal and can make a good portfolio seem less that it’s parts.  If I were to suggest some improvements they would be the following

  • If you want your blog to be part of your portfolio, have a link to it and keep the portfolio separate

  • Categorize the projects – one project per page with clearer information and links to videos, screenshots and executables

  • Links to required API’s (if available) otherwise will downloadable executables run on everyones machines?

  • Link videos and screenshots with the projects (again this comes down to format of presentation)

Steven Yau – http://yaustar.no-ip.org

 

Steven’s presentation is remarkably clear and well laid out.  There is no additional ‘fluff’ that can make a portfolio hard to read and navigate, but with the inclusion of both strong colours and images the site has a really clear personality.  As with the other portfolio’s he’s included different versions of his CV for easy access (even including a text file version) and his home page gives a short, but detailed enough over-view of where he is in his career.

His projects are of a suitable size of an entry level programmer with the Dance2X being something slightly different that the norm but interesting never-the-less, and along with the other, more game related C++ projects, his portfolio is diverse and can really showcase his talent.  I think it makes it quite clear that Steven is interested in the game play side of game development and suits it’s purpose well.  It’s also nice to see an explanation as to why content (executables, source code etc.) is not available publicly rather than simply not being there.  I would argue that the ‘A Story In The Like Of Mike’ is simply not needed, this is a programming portfolio after all and this just takes up someones time when it is most likely irrelevant for the kinds of roles Steven is going for.

It could also be made clearer which projects were done as University work and which ones were done as side projects.  While it is possible to figure this out, some explanation by simply grouping the projects could help and make the portfolio slightly easier to navigate.

Steven is actually active on various education sites in relation to games and wrote an article on how to break into the Games Industry.  Unfortunately you wouldn’t know this from looking at his portfolio.  While it’s not physical evidence of ability, being involved in these kinds of activities is a real bonus and should be advertised clearly alongside his other work.

If I was to suggest anything that needed changing on a portfolio like this it would be the following

  • Direct video links along side the YouTube links

  • Categorizing of his demo projects into languages or type

  • Advertise the fact that Steven is active in the educational elements of the Games Industry

Jude Selvanayagam – http://www.jnselva.co.uk

 

From a quick glance at Jude’s portfolio you can tell he is primarily interested in technology based development rather than game side programming.  The demo projects included in his portfolio are all feature based and don’t include any games what so ever (well there is one…) but for Jude that does exactly what it needs to do.  Each project shows an aptitude for different techniques and areas of engine or tools development from physics to special effects and each one is finished to a good level showing the ability to follow through what he started.

Navigation around the site is very simple, though I would avoid calling something a ‘Code Dump’ or similar, as these are still valid projects and while not the flag ship ones for the portfolio are still present and should be highlighted in a positive manner.  It’s good to see each project, from the main ones to the lesser ones, being given a short description and screen shots, but the particle system and cloth simulation projects should really have a collection of videos, especially as there are multiple downloads to go through if the reviewer wants to look at everything – and to protect against the demo’s not running on the host PC.

It’s quite interesting to see a ‘Highlights’ section on the main page, which again pushes you in the direction Jude wants you to go, showing off the projects that are the stars of the set and the ones that will hopefully land a good position at a games company.

I’m obviously going to comment on the art work which while absolutely stunning really has no place on a programming portfolio.  Stress that you are interested in art and sketching on a CV and even provide a brief link to a showcase website but I would be tempted to remove it for the sake of this portfolio.

So if there were a couple of points I would probably recommend changing it would be the following

  • Could the projects be highlighted as University work and personal work to make the distinction clearer?

  • The tools used for each project should be clearer.  Language, API’s and methods used should be obvious and at the top – do we know what they were developed in without downloading the source?

Greg Santo – http://www.gregsanto.com/

Before I start I will admit that I think Greg’s portfolio is an excellent example of what a portfolio should be and how it should be presented.  The first thing that is obvious is how the site is laid out, with the main page giving a good description of who Greg is and what this site is for.  In a portfolio like this, which contains a lot of demo’s written in a variety of languages categorizing the titles by language is a real winner and allows people to go exactly where thy need to go, which means this could be used not only as a gaming portfolio but also one for a more traditional industry.  As for relevant projects, while there is only one project that would spark an interest (it’s the Go! Kart one by the way), it’s of such high quality that other ones are simply not needed.  All the required elements of a game are there from menu’s, music, level select screens and split screen multiplayer.  But, and this is a big but for anyone reading this, creating such a big project is a risk.  What if after a years development the project simply didn’t come together or was simply not of a good enough standard.  In this case that obviously didn’t happen but for people looking to create portfolio work this is a big consideration to take when embarking on a large project.

As for the layout and presentation of the project, the main project page has everything you would expect, from nicely laid out code samples, a large amount of screen shots (this almost makes a video redundant but I wouldn’t ever go that far!) and something that I think really stands out, which is the challenges faced throughout development.  Studios are always interested in people who can learn and tackle new problems, and this clearly shows that Greg has that ability.

Is there anything that could be improved?  On the main page the line “you like what you see, or even if you hate what you see” is not a good one.  You are selling yourself  to everyone who sees your work, so while it can be a throw away line, always assume your work is excellent and assume everyone else will think so.  Don’t go over-board, but never put yourself or your work down, no matter how tongue in cheek or light hearted it is.

So would there be anything I could possibly suggest should change?  If there was it would be the following

  • If the main C++ project was smaller, it would obviously be nice other game related projects were present, but in this case that is probably asking to much!
  • The current project (the Physics Playground) would definitely benefit from some screen shots of work in progress, if they are available

And Finally…

So that’s it.  I’ve finally finished what turned out to be a rather long look into what makes a programming demo portfolio, something which I originally thought about writing back in February.  Hopefully it has been worth it for people reading this and that it clears up some of the misinformation and crazy rumors that generally circulate about what is required when looking for an entry level programming position in the games industry.

I’d obviously like to thank the above people who gave me permission to critique their work and their portfolios – without these, this part of the series would be a bit of a dead fish and wouldn’t have been as useful as it could be.  And just to clarify what a good portfolio can do for you, here is a quick update as to what these people are doing right now (as of July 2008)

Again, thanks for taking the time to read this, hopefully the next few posts will be a lot smaller, if only for my sanity.

In the previous article (which I admit was a long time ago now – been remarkably busy recently) I wrote about what people should consider including in their demo CD, which from a developers point of view is the most important aspect of a juniors application. In this part I want to cover how this could be presented in a way that can really showcase what you have created.

I’ll admit before I start that some people will say this part comes down to personal preference or possibly even goes beyond what is needed, but you have to understand that companies are looking for the best applicants, and the best applicants always add the finishing touches. If your demo is placed next to someone who has taken on board elements listed here, then it will look like the other applicant wants it just that little bit more. And if your demos are of a similar level, well you can imagine where I am going with this…

What’s So Important About The Presentation
So you finally have your demo work, fully tested and everything you need to include, ready to be sent off to the companies you dream of working for. The presentation will be the final touch, showing people you care about what you are showcasing and that you’re willing to finish what you started.

A good presentation allows people to actually find your work. From the previous article your demo might contain executables, screen shots and videos along with a collection of source code – all that for each project that makes up your portfolio. Unless you present it in a way that allows the reviewer to easily find this content, some of it can be easily missed or simply glossed over especially when the reviewer has a few portfolios to look at.

A presentation also allows you to group relevant information or projects. You may have a couple of projects that showcase your technical side (physics or AI demos), a couple more that show the development of gameplay and maybe some university projects. Being able to group these together allows the reviewer to see the most relevant demos to the job you are applying for, meaning you look better suited to the job than someone else.

Finally, by controlling the presentation you are controlling how the reviewer approaches your work. Do you want to guide them directly to the best content or do you want to start with your earliest work and guide them through the development of your skills showing your ability to learn? If you have a well presented portfolio you know what is being looked at and can control how it is being viewed.

One of the most important parts of a portfolio is understanding who you are presenting to. This is designed to be a professional portfolio being presented to other professionals for a valued role in their company. You need to tailor the way you write to contain a suitable level of technical language, but you don’t want to go over-board – be careful you don’t come across as a term dropper or someone who may be trying to hide behind big words. Humour is always welcome but you need to be aware that what you find funny isn’t necessarily to everyone’s taste – be careful here and only include it if it is natural and not forced.

The following is a description of different methods that can be used to present your work and while there are others these are the most widely used and easiest to put together.

A Collection Of Zip Files
The simplest way to present your work is to compress each project and send them via e-mail or via a large file hosting website (YouSendIt.com for example). While this is definitely the quickest way to get your work out to companies it is without doubt not the best and something that should be avoided. The following are just some of the problems that can crop up when using this method

  • Many companies will have strict attachment file size limits so you either have to send multiple e-mails (which can easily be mislaid or mixed up in a large organisation) or limit what you send. If you are trying to impress someone with your work, removing some of that work to try and fit in a 5Mb limit it not the way to go, and referring to Part 1, there is no way you can include everything you need to in an e-mail attachment (broken up or not).
  • File hosting websites often have a time limit on how long they will store your files. I have received links to sites like these where the attachment is no longer valid or has timed out. This will happen more than you think. Busy schedules, holidays or late viewing of CV’s can mean that your work won’t be looked at, or even downloaded, a week or two after you upload it.
  • Once your zip files have finally reached a reviewer, how they view the contents will greatly depend on the way you structured your files and folders. Chances are the small read-me file attached won’t be read before diving in because it’s so easy to ignore. So how do they find your best work?
  • Some zip files or e-mail systems will strip executables from the package. This usually happens if the sender doesn’t test their work but I have received small portfolios with no executables even though the sender assumes they are there!

A well organised structure can help here but this often seems to be at the bottom of people’s lists. If you really want to send your files this way, then taking into account the content discussed in part 1, you really need a structure like the following:

  • 01 Project Name 1
    • Executable
    • Source Code
    • Screen Shots
    • Videos
  • 02 Project Name 2
    • etc. etc.

One thing that that I would really stress here is if you want to use this method is to make it obvious where the executables are. Many times I have had to root around simply looking for something to run only to give up and try and compile the project myself (which isn’t usually that easy!).

As you can probably tell sending your work as a collection of zip files is not something I recommend and really can break what would otherwise be an excellent portfolio. Would you expect any other professional developer (in any line of work) to do something like this? Then why would you?

A Demo CD
This has generally been the most traditional way to showcase your work and is still one of the most versatile ways to send your work in. Even if you send a CD to a group of agencies they will duplicate that CD and send it on, meaning you lose none of the impact that your initial one had.

CD’s also allow you to store everything your portfolio needs (executables, videos, installs and screenshots) and to make it even easier you can set the CD to auto boot so the reviewer goes directly to the good stuff (be that an html file or a .net front-end application). By taking the presentation further you can add custom labels to both the CD and the case stating exactly what’s on the CD and whose work it actually is.

Since the structure of a demo CD can be very different, this will be discussed later in the article.

A Portfolio Website
A website is the easiest way to pass your portfolio around to companies across the globe. A link on an e-mail or on your CV means your content can be sent anywhere quickly and to the correct people. While the structure of the website will be covered later (since both the demo CD and website can follow very similar patterns) there are a few things that can be included to make it more professional.

  • Get a suitable domain name. These are not expensive and makes it easier to access your work and makes you more memorable. The address www.leewinder.info is much easier to read and remember than www.lee.myfreewebs.yahoo.co.uk for example.
  • If you have a personal website keep it separate. A portfolio is meant to be your professional front and shouldn’t be side by side with pictures of your last holiday or of you drunk and off your face in Spain. Trust me, it does happen!
  • Link to everything you need. This might be direct links any required installs or libraries but this information needs to be easy to access and may be quicker to download off other websites rather than your own host.

There are of course issues with website portfolios but they are becoming less of a problem as technology gets more efficient and reliable. Your website might not be accessible because your host has gone down (make sure you have a reliable server) or the reviewers internet access has dropped. While this is something that happens occasionally it’s not something you need to worry about.

One thing to note is that while links to sites such as YouTube will give you direct links to videos of your work, some companies will restrict access to community sites through the work day. It’s better to include the source videos along with any links just to make sure your work will be seen.

Presentation Of Your Portfolio
As you can imagine, a website or demo disk portfolio can be very similar. Whether the CD boots up a .Net application or a webpage, the way this is structured can be very similar to an actual website. The following are a few examples or pointers that can make this presentation clear and concise while directing the reviewer to your work in the way you want them to see it.

  • Try to keep your pages direct. A main introduction page covering your portfolio, who you are and what you are looking for (game programming roles, technical roles etc.). Keep to one page per project as this allows your screenshots, videos and executables to be easily accessible and more likely to be read before the demo is actually run.
  • Keep the different sections separate so your work is appropriately grouped. Game or tech demos followed by (if applicable) University work are all suitable groupings for your work. This will allow people to concentrate on the sections that are important to them without having to root through less important aspects.
  • Have a contact page which contains links to your CV (in both Word and PDF format), phone numbers and e-mail addresses. While these details will also be on your CV, it doesn’t hurt to have this information more visible and easier to access.
  • Try not to include links to your MySpace or FaceBook pages unless they are being used solely for professional purposes. As mentioned before pictures of you wasted are not going to impress a potential employer.
  • Make the information clear and easy to read. Simple colours and clear fonts make a presentation much easier to navigate (please no pink and yellow!). Flash can be nice but you are not showing off your website design skills and over-adding Flash will be the death of any website.

Once Again Please
So, a quick over-view of what I’ve discussed so far…

  • Presentation is important because it adds a final touch to your portfolio, making it easy to find the work that matters and allows you to lead the reviewer to what you want them to see
  • The people you are pitching your work to are technically minded who know what is happening in the industry so you can use technical language. Just make sure you don’t come across as just trying to impress or over-talk the talk.
  • Sending a collection of zip files is the easiest way to send your work but can cause problems and make it difficult for the reviewer to look at your work. If you need to send zip files make sure it is well structured, clear and consistent.
  • A demo CD or website allows you to structure your work clearly and provide all the required files easily and in one place.
  • By structuring your presentation appropriately you can lead the reviewer to the best of your work, showing them various skill sets easily without them having to root for the best bits
  • A portfolio is meant to be a professional piece of work designed to showcase you to potential employers. Getting a job in the games industry is not easy and every little helps.

In the next and final part (which I hope will be out quicker than it took for this one!), I’ll go through a collection of real-world portfolio’s showing the various points made here. This should give anyone a good impression of what’s out there and what you are competing with. Thanks for reading, this was a long one!

Whether you are a graduate or someone who is self taught, your demo portfolio is the key to getting your foot in the door of the games industry. As a junior applying for their first position it doesn’t matter if you graduated with honours from the best University in the country, without a good portfolio you will not even be considered for an interview let alone be offered a job. Unfortunately it’s one of those questions that gets asked again and again, with rarely the same answer given by two different people.

Recently I have been working through a University Module specifically designed to answer some of the questions often raised about demo portfolios (and hopefully to raise the standard of job applications) and thought it would be appropriate to post that information here so people who do not have access to these modules aren’t left at a disadvantage.

This topic will be broken up into three parts. The first will cover the content of a demo portfolio, the second will cover the presentation of this content (which can be just as important) and the final part will look at real portfolios to see what went right and what went wrong.

What Should Be In A Portfolio?

The first and most important element to decide on is what exactly needs to go into a portfolio. The main thing to remember is that this demo is meant to impress the person who will eventually offer you a job, so it needs to be your best work. There is no point including half-finished, broken pieces of work as it will do nothing to push you forward. You also need to think about how you want to be viewed. Are you interested in general game play programming or are you really interested in special effects, physics or one of the other many things people can now specialise in?

If you are interested in specific area’s then you need to include multiple demos’ to prove you’re not just a one trick pony. Physics for example could include technical demos that feature…

  • Dynamic cloth
  • Rigid body physics
  • Deformation

It’s even better if these technology demos are elements of a game included in your portfolio, but that’s usually just a bonus and not usually a requirement.

If you are interested in general game play programming (and this is usually where most juniors start) then you can do nothing better than include a range of different but complete games, both 2D and 3D. What kind of games would be expected though is usually the hardest question to answer. One thing you need to understand is that, regardless of whether you have a degree or not, you are not expected to make something as playable as Halo or as good looking as Crysis.

From a recent quote on a popular Game Development forum

In modern days you will basically not get through the door without a college degree unless your portfolio is truly astounding. (By astounding I mean you are able to do things that no one can do in realtime; or you have developed an entirely new technique for ).

This is simply not true, your demo portfolio needs to be good, but even some of the best studio’s in the world won’t have technology that produces the kind of output that that statement alludes to.

Complete and Finished Work

So what kind of completed games would be expected for a standard junior entry level position? Try some of the following:

  • Asteroids clone (full of special effects, explosions and particle effects)
  • Simple 3D death match (AI bots, 3D character models etc.)
  • Simple TBS Game (2D like Advance Wars or even 3D with the effects and environment to go with it)

Now obviously that is a very limited list, and you can make up any kind of game to go in a portfolio but hopefully that gives an example of what it expected. Well thought out, 2D and 3D titles showing a variety of different features (special effects, AI, terrain generation etc.). Go down this road and you are definitely on the right track.

The thing to note is that you do not need to have games that are huge and that take months to complete. People understand that you have a life outside your hobbies and that you like doing other things. And taking that further, chances are if you over-stretch, you simply won’t achieve what you want, meaning nothing will be finished and your portfolio will not be as good as if you concentrated on smaller, manageable demos.

Now it’s worth pointing out that in both cases, I stated that you needed a complete game. A complete game is just that, something that has the flow of a full game, from the menus to the game and back out again. Other things that you can include in a complete game would be

  • Front End – Start new game, options, exit game etc.
  • Loading Screens
  • High Score Tables – People love these
  • Pause Menus

Why is it better to have a set of complete games rather than just diving into the game when the reviewer boots it up? Simply put it shows you have an appreciation for what a game is and what else is needed other than ‘the fun’ part. This will stand you out as someone who knows what to expect and knows what goes into making a game from start to finish.

Graphics, Style and Good Looks

Another question asked is how good these games should look. If you read my previous post you are expected to be a programmer, nothing more. Programmer art is more than acceptable for demo portfolios. If you have friends who can help you out then all the better, but you will not be viewed in a negative light because you are not a fantastic modeller or pixel artist.

University Course Work

Graduates will also have work they did as part of their University program (yes, the content covered so far is generally assumed to have been done in your spare time), and there is every chance the quality of this is high and suitable for the portfolio. One thing I would recommend if adding this is to make a clear distinction between your course work and work you did off your own back. More on this in part 2, but it is worth noting that here.

Making Sure It All Works

So now you have an idea of what to include, there is still a lot more to do to make sure your portfolio is complete and ready to be put together. Your games and demos probably use a wide range of external libraries and API’s (DirectX, OpenAL and OpenGL to name a few). Unfortunately, your PC is probably the only one that has the right combination of installs to make your demos work. So it is vital that you include (or provide a link to) the relevant installers that will be needed. This will mean the reviewer has instant access to what is needed and can install things easily instead of rooting around for one missing library (at which point they may well just decline your application).

Right, so we should have everything we need now and everything is perfect, right? Wrong. Imagine what happens when the reviewer tries to run your demos and (even though you tested it on machine after machine) it fails to run. None of your demos do in fact. This is another reason a lot of applications get rejected. So how can you avoid this? The simple answer is that you can’t as chances are your game will crash on someone’s machine no matter how much testing you do, so the trick here is to make sure they still know what you can do even if they can’t run your work.

So for each demo and each game you need the following

  • High quality screen shots of all major features of the portfolio
  • Videos of each demo showing the good bits (nobody wants to sit through a video showing 2 minutes of menus!)

With those in your portfolio, you are pretty much guaranteed that the reviewer will have the chance to see and admire your work.

Source Code – A Window into A Programmers Mind

So, anything else? Just one more thing and this can be one of the most important parts of a good portfolio. You need to include the source to all the demos included in your portfolio, and it needs to be easily readable and accessible (this is where free copies of various .net IDE’s come in handy).

But why is the source code important when you have the most amazing demo’s ever seen? A lot of the time, the journey is more important than the destination. People like to see how you approached a problem, and how you worked around common dilemmas but most importantly that you write consistent and safe code. The source code will also open up another line of questions if you get to the interview stage which can help you shine even more.

You need to make sure that the source code is clean and suitable for other people to read. Take that to mean that any abusive or inappropriate comments and variable names need to be removed (though they should never exist in the first place), and it needs to be well structured and laid out. Best to do this from the start rather than the day before you build your portfolio, as you wouldn’t believe how easy that is to spot.

The source code also allows people to find out one of the most important aspects of any demo. What part of it is yours and what parts were done by someone else. This needs to be clear in the code (and in the portfolio itself) as you do not want to be seen as someone taking credit for someone else’s work – this will get you nowhere.

Say That Again?

So that’s it when it comes to content. To recap quickly what was mentioned

  • A collection of small complete games and/or technology demos
  • Include all the required installs for all demos
  • Provide screen shots and videos of everything in case they don’t work
  • Include the source code to everything
  • Make sure elements carried out by other people are clearly noted

Now I know some people will be saying that this is going overboard, and not everyone will produce portfolios that have everything mentioned here. And they are correct, most people won’t. But the best people will, and it is these people that will get jobs in the games industry and it is the bar they set that everyone is judged against. It is these people you are competing against and it is these people that you need to stand out against, second best simply won’t do.

In the next part I will talk about the various ways in which you can present your portfolio so that your work can been seen and appreciated in the way you want it to be.

Following on from my previous post on the state of Education and Game Development (Are Universities Teaching The Wrong Things?), I wanted to look at what I see is the other main problem with most Game Degree courses… That you come out at the end with experience in game programming, design, animation, modelling and probably many others, but still don’t have the skills necessary to do one of them at a professional level.

To start, let’s get a few things straight. As a game programmer, I will not:

  • Write the design document for our next title
  • Create the models that are described in the design document
  • Texture those models, or create the textures for someone else to use
  • Animate the model for the various situations it will find itself in
  • Create the music and sound effects that will populate the world

Take any other profession in the games industry, and the sentiment will be the same.

As a hobbyist, then this list is exactly what you would do, but people do not go to University to study for their hobby, they go to learn the skills necessary to follow the career they are interested in (well, most do anyway!).

So what is the problem with a course that covers all the various roles available to someone when they start out? Isn’t it good to have an appreciation for the roles your fellow team members are carrying out, and what about those who don’t yet know where their strengths lie?

The first point, an appreciation for your fellow workers is a valid point, but as a junior in the games industry, that appreciation will be thought of for you. The tasks you will be given to complete will have been thought out and will have all the facts already mapped out (or at least they should have been!). You will obviously still have a lot of work ahead of you, but you shouldn’t be making decisions that greatly affect other people on the team. As your experience grows and your responsibility increases, your appreciation for the work other people do will grow along side it, meaning you will have that knowledge through experience, not academia, which is worth a lot more.

As for the people who don’t really know where they want to go, then it’s a hard lesson to learn. Most people either lean towards an artistic temperament or in the totally opposite direction. There are those lucky few who have a talent for both, but for most people to excel in one area they have had a tendency for that since childhood. Most of the time it’s a clearer choice than they realise.

But why isn’t it enough to study the different disciplines, and why don’t students come out at the other end with the relevant skills? It’s all down to time spent working with the tools you intend to use when you graduate. Today’s games are deeper and more complex than ever before. They require a quality of in-game assets an order of magnitude larger than any previous generation. Unless a (lot) of time is spent honing those skills, then they simply will not be good enough when compared to another applicant who has, and at the end of the day that is where the competition for junior positions comes from.

Fortunately, there is a trend towards discipline specific degrees being provided, such as Computer Games Programming (BSc) and Computer Games Art (BA), which obviously focus more on the specifics rather than the whole, which is an excellent start. As these start to take on elements of the more traditional courses (Computer Science or Graphic Arts for example) they start to become the courses that will produce graduates that are perfect for the Games Industry and still attractive to the undergraduates looking to participate in them.

XNA Ireland

I was lucky enough to be invited to the Games Fleadh (pronounced Fla) ‘08 event being held in Thurles, Ireland on the 13th March. While there were other events being run at the same time at the festival, I was there as a member of the XNA Ireland judging panel, which was based around the 30th Anniversary of the original Space Invaders game by Taito.

As the event was primarily in conjunction with Microsoft the event was tied to XNA, with all entries being required to base their work on a given XNA Framework while being asked to expand on the original concept of Space Invaders. Many Universities from all over the country were in attendance, with 7 teams (of 1-3 people) up for the main prize and there were some excellent projects on show. The eventual winner, Finn Krewer, who is only 17 and worked on his own, managed to show a real passion for programming and game development, and I only hope that he eventually makes his way into the industry to take what is a real ability and develop it as far as it can go.

Now before I say anything else, I just want to cover what some people will already be thinking. With my previous posts in the suitability of XNA and University Courses, how can I being on an XNA judging panel be anything other than hypocrisy?

Unless you are involved in events like this, looking at work that is being produced by the students on Game Development courses, discussing the courses that are being taught and talking to the students about what they are learning, you simply cannot comment with any authority on the subject of games education. The competition was also open to Universities that do not teach XNA as a primary tool and the groups had to use this (possibly new to them) API in ways they may have not used it before. Whether this is XNA or any other development API, experiencing a situation like this can only benefit the students who are participating in the competition.

I was also excellent to hear some the new (or future) Game Development courses acknowledging and teaching C++ as their primary programming language. This can only benefit the Games Industry, and hopefully other courses will see how successful these Universities are and begin to follow suite.

It was an excellent event, and the people contributing and competing in the whole festival were obviously having a great time. The organisers did a great job of bringing so many people of different ages and interests together for a day dedicated to games and programming and hopefully sparked interest in the games industry that may not have been there before.

There was quite an interesting response to my previous post with some very fair and valid points being raised here and in forums across the Internet. Rather than try and respond to them individually (it might take a while!), I though it would be appropriate to list and discuss some of the more common points that were brought up.

Studios Prefer People Who Know How To Make Games
Something that was mentioned in numerous places stated that games studios should prefer graduates who know how to make games (and have tried various techniques that may or may not be used in games), or have a good awareness of the game development process.

Simple answer to that is no, it is not preferable to have a graduate who ‘knows how to makes games’ than someone who knows how to program and program well. If someone is a great engineer, has a excellent understanding of how languages work and how to use the tools available to them, then learning the ‘development’ process of a game is not going to be a massive undertaking. A few days in a functional studio will give them all the ideas they need to build on in that respect.

Besides, there is generally no process to making games. Every studio (sometimes every team) will have their own processes and ideas on what is the best way to develop their titles. What is taught in Universities may not be applicable in the studio you end up in, but you will be using a general set of tools and languages wherever you end up.

*Just a note regarding the last point – I am not at all against team based exercises on Games Courses, in fact I think they can be the most beneficial aspect of them. I just wanted to stress that it is not a replacement to learning the tools of the trade.

Is The Technology To Blame?
No, not at all. The fact is I have a great respect for XNA and C# , have seen some fantastic things come out of them, and use C# personally when developing tools to work alongside out tool chain. I totally agree with the point that was made, in that it is the responsibility of the University to point the students in the right direction, showing them the tools that they need to better understand the environment and technology they want to eventually working with.

The amount of support that is provided by C# and XNA means they are doing exactly what they were designed to do. Just in this case I don’t believe it is in the most appropriate environment for them to be used.

Games Are About Fun, Nothing More Nothing Less
This was also mentioned in a few places, in that game development and making games should be fun and about making them fun, not about boring programming practices.

Games are (or should be at least!) about fun, and developing them should be fun too. A programmer on my team may be a great game designer, and have some fantastic ideas which improve the title drastically. Unfortunately, no matter what area of the game they are working on (effects, character controls, graphics or animation for example) they will need to use the same skill set, just in different ways and with a different amount of practical knowledge. Just because people are working on the ‘fun’ aspect of the game doesn’t mean they don’t have a hard programming job in front of them.

If you will allow me to geek out for a minute…
Game Programming != Game Design

Engineering Principles Don’t Apply To Game Development
This point is worth a whole discussion on its own, and I’ll respect that by not going into to much detail here, but hopefully this should cover the basics.

This was mainly in response to that idea that understanding the basic principles leads you to have a better understanding of and awareness of Software Engineering principles. It’s not always true in the strictest sense, but having that backbone of education allows people to apply the ideas presented to them in an efficient and useful way. There is a reason that development principles have been a mainstay in the world of large scale application development and there is no reason why they don’t apply to game development either.

Hardware can be a nightmare to work with especially when you’re developing across multiple platforms each with their own quirks. Combine that with the sheer scale of game development projects today, and you have a recipe for disaster if you don’t plan for and use ideas that have a solid base and are understood by more people than just yourself. Engineering ideas and practices enable software to be structured and organised in a more efficient manner, allowing them to be better understood and maintained by multiple people, something which is getting more and more important every day. Without the education to back that up, graduates are simply not in a position to work with and develop games in a way they need to be developed.

XNA Logo

Ever since their inception, there has been a lot of discussion regarding the viability of Game degrees, but instead of looking at them as a whole, I thought it would be interesting to look at various elements of them and discuss their relevance to the games industry and in producing graduates that are progressive and well rounded.

This idea for this thread came about due to the number of game degree and placement students I have had to review over the past few months, plus having been asked to look over a couple of degree course descriptions to feed back my impressions of them (luckily I didn’t have to do this alone!). I was also involved with carrying out practical interviews for a large number of students looking for placement or graduate work at the end of the year, and it was these experiences (plus many little things over the past few years) that made me think this was a necessary discussion.

The main thing that constantly stands out, in both currently taught and prospective modules is the fact that it is generally Java or C# that is taught as the primary language. And with XNA becoming more and more widespread (in both academia and the general indie scene), many courses see C# coupled with XNA as a valid combination for their principle tools. I think the reasons for this are pretty easy to spot, and unfortunately not so easy to change

  • C# (and specifically XNA) allows people to get nice things on screen easily. This might only be a simple spinning teapot, but it’s a lot easier to do that in XNA than DirectX or OpenGL!
  • By making it that much easier, people may see it as more fun, and the more fun they have the more likely they are to join the course and stay on the course
  • More people on the course means the University is getting additional funding for both that course and research linked to the department (as this is one of the fundamental ways Universities are funded, there is nothing wrong with that in the slightest).
  • People teach what they know, and a lot of Lecturers are experienced in Java and feel an affinity with C#. Being experienced in a language makes you a better teacher, so it makes sense to proceed with these languages.

Making these languages the language on which these students base the majority of their learning is, unfortunately, flawed, and that is becoming more and more obvious with every graduate that sends a CV my way (and it’s not always student’s game degrees).

Wherever you go you can always hear the phrase “A good programmer can program in any language” (easily taken from ‘Real programmers can write Fortran in any language’), but that claim is nearly always based on programmers who have been working with (especially compared to today’s tools) languages that are hard to use, hard to understand and most importantly hard to write well. I fully agree, a good programmer can (generally) program in any language, but it’s that disclaimer, a good programmer, which is where these courses fall over.

It all boils down to the sheer amount of support that tools like XNA give developers and how that stops people from learning what is really happening. XNA (and to a lesser extent C#) does a lot of things for you, and it does it under the hood, through calls to a few simple functions (lighting, animation and online spring to mind). A student might be able to knock together a pretty decent piece of work in a couple of weeks, but I would be surprised if the majority of the demo’s weren’t collections of calls to high level library functions, with the student at times fumbling around looking for the right package until they found something that worked. Unless they have thorough groundings in more low level languages (I am mainly talking C/C++ here but other languages are just as good), then they never really understand what is going on in the background, things like garbage collection, pointer arithmetic or true encapsulation and modularisation. They also manage to bypass some of the (possibly less glamorous) elements of game development and as a result struggle with things like basic vector maths, trigonometry and C fundamentals.

Without this basic foundation using languages that force you to do things the hard way, allowing you to make and learn from you mistakes, it is difficult (if not impossible) to take the skills and transfer them into different environment and different situations. This is, to put it simply, a core skill that is needed by every game developer currently in the industry. Unique hardware, new APIs, incomplete or incorrect compilers and multiple development environments are all problems that these skills allow you to navigate around making the developer an attractive proposition to any game company and an asset to any team.

This is a real shame, because due to their experience of using XNA, their demo’s might look pretty good and create an impressive demo reel which gives them (and an interviewer) an over-exaggerated impression of their skills and a real awakening when they find they don’t have the skills to do the job they want to do (the real shame here is that it is simply not their fault). Without a more realistic approach to basic programming skills on these courses, this will continue to be a problem as the distribution of these high level tools gets wider and deeper into academia and the indie scene in general.

So what should these students be using? C/C++? Well yes, that is pretty much an industry standard but concentrating on those would cause exactly the same problems. Try C/C++, try Lua, Prolog, Lisp, SML and a variety of scripting languages. Keep working with C# and XNA, but make sure the syllabus contains a variation on the skills, and then the students, if they really do have a desire to work in the games industry, can concentrate on the things they find interesting and become experts in the languages and areas of their choice as their experience grows, not as their tuition fees are paid.

If you’re a student that is…

Microsoft have announced that they are going to offer VS 2008, Expression Studio, Server 2008 and XNA Game Studio 2.0 absolutely free if you can prove to them you are a student in a small set of countries – under the name of Microsoft DreamSpark.

Ignoring the fact that this is a blatant push by Microsoft to make sure the next generation of programmers are indoctrinated by there (in my opinion fantastic) tools, and that they are obviously trying to position Expression Studio as a direct alternative to Adobe’s powerful application suite, this can only be good news for all those companies that regularly work with Universities or have a past history of hiring graduates.

Whether you like it or not, Visual Studio is an industry standard when it comes to development IDE’s, and having a raft of students who are experienced in the nuances of the tool and the way it can be integrated with source control tools or network development for example can only help them fit into their role faster than before.

Of course it’s not without its problems, pushing XNA will cause issues for students especially if they start to rely on that as their primary development platforms, and I’m waiting for the day when I get demo after demo of Visual Studio 2008 projects and I have to rush around finding a copy as we’re still working with 2005.

For a bit more information on DreamSpark, have a read of this interview with Joe Wilson of Microsoft about the initiative.