From:

Web Development vs Games Development

I spent 10+ years in the games industry and I have now been involved in web development for probably 5 years and I thought I would put down my thoughts on the core differences as I see them today.

New Technology
Right now the web industry has a staggering number of technologies that are constantly evolving. For a programmer this is like being a child in a candy shop as there is just so much stuff to play with. Most programmers will stick with their chosen web core technology (PHP,.NET,J2EE, ModPerl,etc..) but then there are layers upon layers of other complimentary frameworks/libraries/web services.
In comparison the games industry goes through long life cycles that match the release of new hardware. The first time you get hold of a new piece of development hardware is really exciting followed by intense learning of the new architecture and basically throwing away everything you previous understood. I do not mean forgetting how to program and there are lots of common programming practices that you move from platform to platform. Here is a rough list of what you always have to relearn.

  • Graphics - Every new platform has a different chipset each which has new ways to optimize it.
  • AI - Can this be programmed by the core CPU or is this normally CPU intensive task now splittable onto secondary CPU’s (e.g. PS3).
  • Networking - This can be either learning some new libraries (quick applause for Microsofts Xbox 360 live implementation) or having to write your own (PS3 Booo Hisss..). But in general terms it means a whole lot of new learning.
  • Storage – Each platform has a different format for its storage and each has its pros and cons to what it is good at. This can mean creating new tools for arranging the data on a CD to optimize reading from it. It can also mean writing new caching mechanisms for moving critical data onto potential hard drive storage. The platform may come with tools to assist with each of these mechanisms but again it is another learning process.
  • Peripherals – It seems there is always some change in the controller (Sony have done a reasonable job of slowly evolving their joy pad) which means new code. Beloved Nintendo seem to revel in creating new human interfaces and each of these has required a mental shift and lots of extra programming.

Turn Around of Projects
Even the larger web projects do not even come close to the 3-5 years timescales for the development for your average (360,PS3,Wii) game. Being able to see an end result within 3-12 months does keep things fresh. When programming on a large scale games project you go through a range of phases.

This is how I define an average game project

  1. Start (1-12 months) outright excitement at working on a new project
  2. Middle (1-24 months) utter depression wondering if it will ever end
  3. End or CRUNCH TIME (1-12 months) 70+ hour weeks back to back until the project is shipped, is this fun? I used to think it was fun until I went past age 30 and decided I liked my own time more.
  4. Post-Launch - Dazed staggering around wondering if it’s going to be a success

Entry requirements
The games industry can be really hard to break into, and especially so for programmers. Although recruitment tends to go in phases over the years as new blood is required as the industry expands and at this point developers will let in more raw recruits. But most developers will still only look at hardcore geeks who have a bedroom coding background. A high demand is made for candidates with very good math’s backgrounds / networking and AI (although the AI they teach at college really does not prepare you for the reality of games AI programming).

The web industry is rooted in big business so getting your first placement is a lot lot easier than the games industry. But it can be much slower to progress through the ranks. You are more likely to be given much more support including access to training courses and all the books you can eat.

Customers
If you are games developer you have 3 potential customers.

  1. Publisher - The typical model is that you come up with an idea and a prototype this gets (hopefully) picked up by a publisher who then basically owns you. Because they are paying for the development as you develop they have the final say on everything. This is a major generalization and you do get publishers who will trust you (if you deserve it) and give you space, but conversely there are publishers who will sit on you and turn the thumbscrews if they don’t like what they see.
  2. Publishers (model 2) - The second option is that you are self funded and able to finish your game before showing it to potential publishers. This then means the potential changes requested are minimal only generally only occur as part of final Beta / focus testing.
  3. Self Published - If you are big enough to publish your own game then apart from fighting with your own internal sales/marketing teams (and I really do mean fight) then as long as you get past the conception stage convince then generally the rest is in your own hands.

If you are a web developer

  1. Non-Business customer - I will not rant too much about this segment because it has been done before. But as another sweeping generalization customers who do not understand the job you are doing for them are a nightmare. This normally includes any project with a budget of $0->$20,000
  2. Business customer - Your average business customer will have a larger budget understands what they want in the first place and understand general business processes involved in a development lifecycle.
  3. Developing For yourself - This luckily is my current model and you have only yourself to blame if the projects you develop fail or succeed. Of course you have to self fund (or find funding) but the benefits are that any service you develop you have the chance to reap the rewards if it does turn out to be a massive success.

Success
Defining success for a web development can be counted in so many ways but seeing your creation move up the rankings (alexa ,hitwise ,etc..) does give me a buzz but not all sites you build are the kind that have mass appeal. Only 1 in 10 games every makes a return on the investment and far far fewer make it really big. This is why most programmers do it for the love of the industry because the fact is that unless you are very lucky and have a top hit you are unlikely to receive that pot of gold at the end of the rainbow.

Fame
As my Top 10 Programmers post has shown more and more programmers are becoming recognized for the work they are doing (and btw thank you to the 4 people who voted for me) but only in recent years has the games industry started to hold award ceremonies which are starting to get some more mainstream press. The web arena is certainly an easier place to get your name out there but to get global recognition still takes a hell of a lot of effort to self publicize.

When it came to writing the credits for any games that I was involved in I made sure that I was given the most prominent placement that I could as I saw it as one of the major rewards for all the hard work (that and the first physical copy of each game).

Recognition
Your typical web programmer will not get recognized for his work but maybe they should? a credits page for each website would be a great reward and a way to globally document what everyone has worked on. If we standardized the format and the location it could be something that is indexed and collated.

Related Articles

Relatd Projects

XSTM

What is XSTM?


XSTM
is a n open sourcelibrary which enables high performance object replication between processes. It is an object oriented Distributed Shared Memory, or a Distributed Object Cache.

XSTMhas similarities with technologies like Adobe Flex Data Services , JBoss Cache, Terracotta, Tangosol Coherence , ScaleOut , or IBM's ObjectGrid .

Our model is based on object shares, which work like file shares. When an object is added to a share, it appears on the other machines which have the same share opened. Modifications done to the fields of the object are from this point replicated between machines.

Read more in the project overview.


XSTMis made of three projects. The Java implementation is called JSTMand is the base from which the other versions are derived. An adapted version made with Luciano, the author of GWM , is available for GWT . It allowsthis library to be used in a browser. NSTM is a .NET port based on IKVM.

All implementations are compatible with each other so object replication can take place e.g. between a Java server and a .NET Smart Client.

Facebook API

This JavaScript client library allows you to make Facebook API calls from any web site and makes it easy to create Ajax Facebook applications. Since the library does not require any server-side code on your server, you can now create a Facebook application that can be hosted on any web site that serves static HTML. An application that uses this client library should be registered as an iframe type. This applies to either iframe Facebook apps that users access through the Facebook web site or apps that users access directly on the app’s own web sites. Almost all Facebook APIs are supported.

AJAXInterceptor
Project Description
Just by adding this small JavaScript module to the end of your web pages, you get your form's submissions intercepted and, instead of sending request to the server in the usual way, they are done asynchronously and in an AJAX-style smooth way.

As long as it is a client-side library it will work with any server technology: ASP.NET, PHP, JSP, Classic ASP... and even with local HTM files.

I've included extensibility so that you can add easily your own progress indicators (several included) and show error messages the way you prefer (by default it shows an alert).

It's transparent to your server code and could be used to add AJAX capabilities to some applications without writting a single line of code.

Documentation is included.



Features summary

• No-code AJAXification of web apps
• Supports any server technology, including ASP.NET, JSP, PHP, ASP 3.0...
• In ASP.NET it supports all kinds of postbacks: direct and by code.
• Works in any modern browser that supports AJAX.
• Supports cross-posting of forms, that is, you can send the information to any web page in the same domain. If all your web pages have AJAXInterceptor included (for example, you include it in your master page or template) you can hace
• Respects your custom onsumit event handlers.
• Supports browser history so that your users can hit the previous button and get the last rendered page.
• Two versions of the module:
- AJAXInterceptor.js: full commented one. Useful for debugging purposes.
- AJAXINterceptor_r.js: reduced-size version. It downloads faster as it only is 2.6 kB in size. It's better to use this on production apps.
• Automatically show/hide custom progress indicators.
• Support for cancelling operations.
• Support for custom message displaying.
• Supports any form in your page

Obviously this is not substitute at all of full-fledged APIs like Microsoft's ASP.NET AJAX, PHPLiveX or AJAX.NET, but will let you add AJAX support to your apps in a few seconds and without writing any code. Just give it a try!

In the ZIP you will find teh module, a working sample with ASP.NET and a PDF with the help documentation.

This project is just for fun :-)

I will be very glad if you drop me a line in case you use AJAXInterceptor in any real-world application or if you enhance it with new features.

Visit my .NET blog (Spanish) at http://www.jasoft.organd my e-mail marketing blog (English) at http://www.theemailingexperience.com
newjs

A simple command-line tool to create the folders and helper files for a new JavaScript project/library. As a bonus, you can quickly create a website to promote your project.

When you start a new JavaScript library, how do you layout the source files, the tests, the distribution files? Do you have support scripts to generate distributions from source files? Run your JavaScript unit tests? Generators to create new unit test HTMLfiles?

mapper.js
mapper.js 1.2 allows you to add automatic area highlighting to image maps on your webpages (inc. export to SVG). It works in all the major browsers - Mozilla Firefox 1.5+, Opera 9+, Safari and IE6+. On older browsers, it can use "jsgraphics" from Walter Zorn (if installed), else it'll degrade and your visitors won't notice a thing.
google caja

Using Caja, web apps can safely allow scripts in third party content.
The computer industry has only one significant success enabling documents to carry active content safely: scripts in web pages. Normal users regularly browse untrusted sites with Javascript turned on. Modulo browser bugs and phishing, they mostly remain safe. But even though web apps build on this success, they fail to provide its power. Web apps generally remove scripts from third party content, reducing content to passive data. Examples include webmail, groups, blogs, chat, docs and spreadsheets, wikis, and more.
Were scripts in an object-capability language, web apps could provide active content safely, simply, and flexibly. Surprisingly, this is possible within existing web standards. Caja represents our discovery that a subset of Javascript is an object-capability language

GWT(Google Web Toolkit)

Google Web Toolkit (GWT) is an open source Java software development framework that makes writing AJAX applications like Google Mapsand Gmaileasy for developers who don't speak browser quirks as a second language. Writing dynamic web applications today is a tedious and error-prone process; you spend 90% of your time working around subtle incompatibilities between web browsers and platforms, and JavaScript's lack of modularity makes sharing, testing, and reusing AJAX components difficult and fragile.

GWT lets you avoid many of these headaches while offering your users the same dynamic, standards-compliant experience. You write your front end in the Javaprogramming language, and the GWT compiler converts your Java classes to browser-compliant JavaScript and HTML.

JSJaC

JSJaC is a jabber/XMPP client library written in JavaScript to ease implementation of web based jabber/XMPP clients. For communication with a jabber server it needs to support either HTTP Pollingor XMPP Over BOSH(formerly known as HTTP Binding). JSJaC has an object oriented design which should be quite easy to use. Communication is done by using the XML HTTP Request objectalso refered to as AJAX technology. Your browser must support this.

script.aculo.us
script.aculo.us provides you with easy-to-use, cross-browser user interface JavaScript libraries to make your web sites and web applications fly.
Highslide JS
Highslide JS is an open source JavaScript software, offering a Web 2.0 approach to popup windows. It streamlines the use of thumbnail images and HTML popups on web pages. The library offers these features and advantages:
  • No plugins like Flash or Java required.
  • Popup blockers are no problem. The content expands within the active browser window.
  • Single click. After opening the image or HTML popup, the user can scroll further down or leave the page without closing it.
  • Compatibility and safe fallback. If the user has disabled JavaScript or is using an old browser, the browser redirects directly to the image itself or to a fallback HTML page.