Wednesday, July 13, 2011

Game development vs. Web development

As a reader of Hacker News, I have to say that the substantial majority of the content seems to be aimed towards web developers. I don't think this is on purpose; I think it just reflects the current state of technology.

For the last few years, even the last decade, we have been in a boom as far as web technology goes. The advancement of the state-of-the-art in software development, combined with the browser wars and subsequent arms race, has created an amazing array of technologies so advanced and comprehensive that Microsoft has chosen to base the GUI toolkit for Windows 8 on it. We have a range of programming languages and servers to choose from, combined with a huge amount of functionality on the client end thanks to innovations like HTML5, WebGL, and CSS3. This means we can now create real solutions to real problems using both client and server side processing in the browser. Where once there would have been dedicated terminals and a centralized mainframe, companies now use a web server and web-capable devices.

Games continue to push client hardware to the very edge, but games have also become a significant part of the web. Online game companies such as Popcap and Zynga command huge networks of players in online browser-based or flash-based games. Despite this, client-side games are still very popular, and when it comes to squeezing the very best out of hardware, native games still beat out browser-based games.

Game development as a profession is traditionally very desirable to young programmers. I may be over-generalizing, but the dream of most young programmers is to make it big creating games for studios like Epic, Bungie, and Blizzard. The reality is somewhat different. The industry has been rocked by reports of substandard work conditions and huge studio break-ups.  Because game development is such a desirable job, it is widely seen as an easy market to recruit new programmers in. This leads to problems like high burnout rates, high stress levels, and high staff turnover in some companies. I myself am at this stage as far as game development goes; the reality of long days and low wages has left me feeling burnt out and tired of game programming.

Web development is also a bit of a rock-star profession at the moment, because of the success of consumer-focused online websites, especially those in the social web space. Companies like Facebook, Google, and Microsoft are ready to pay top dollar to top-end web developers so they can compete head-to-head. At the same time, small scrappy startups are trying to offer developers a share of the pie and the chance to make it big, in exchange for long hours and low wages. At this point in my blog post, the two types of programming are really starting to sound very similar.

I guess in the end they are both similar professions in terms of the pressures applied to individual programmers. In reality to be doing anything at the extreme (and interesting) end of the technology spectrum, you have to be willing to compete with others by taking on risks like pay cuts and high-stress positions. In the end both high-end game developers and high-end web developers working with the latest technology both pay the price for their passion.

I sort of started this post aiming to let off some steam about how game development sucks because of the pressure and conditions (not that i'm really in "game" development), but i guess in reality, anything that pushes the boundary is going to come with high pressure. Competition is created by the mass of programmers who want to be challenged, who want to push themselves further. I suppose in reality, there are highs and lows in all sorts of development and programming, and in end end no matter what sub-field you choose, you will still get the full range of experiences, both the highs and the lows.

In then end, it's all just part of being a developer.

Thursday, May 26, 2011

The Next Console Generation

After reading through the news today and seeing that Sony has outed active development of a next generation console, I can't help but feel like we could actually be seeing a new console generation beginning next year (2012). Sony is the last console company from the current generation to publicly acknowledge that it is working on a new console, after Nintendo revealed Project Cafe and Microsoft put out an ad looking for hardware architects for a new console graphics system.

After thinking about this, I wondered what the lead time was between the Xbox 360 reveal and the actual release of hardware to the public. While researching, I found an article trumpeting the launch of the 360 and had to have a laugh at what had changed:
Every Xbox 360 game is designed for high-definition, wide-screen televisions. Regardless of the television Xbox 360 connects to, gamers will experience smooth, cinematic experiences that far exceed anything they’ve seen or felt in games before.
I think we can all agree that the current generation of consoles does not push our 1080p HDTVs to their limits; most high-performance games still run at 720p, or lower.
Xbox 360 also features software so smart it remembers what gamers have achieved, continually evolving and enhancing the game experience.
Achievements must have been such a huge thing at the time (I certainly don't remember), but these days such features are expected, thanks to their success as part of the Xbox platform. Since it's release the software on the Xbox 360 has continued to evolve; by the current standards, the original Xbox dashboard seems so quaint.
Players can express their digital identity through their Gamer Profile; connect with friends anytime, anywhere through Xbox Live voice chat; send and receive text and voice message; and access Xbox Live Marketplace to download demos and trailers along with new game levels, maps, weapons, vehicles, skins, classic arcade and card and board games, community-created content, and more to the detachable Xbox 360 hard drive — all right out of the box at no extra cost.
I don't think anyone could have predicted how much of a success Xbox Live would be with it's tiered pricing plan. The value proposition for gamers seems to have paid off, with the platform receiving regular updates and additions such as party chat and the various dashboard redesigns.

Overall I think Microsoft can chalk the 360 up as a success; they didn't beat out Nintendo on pure sales or profit this generation, but I believe they delivered value and quality through experience on their platform. The platform features that are still recognizable on the platform to this day, such as voice chat and the Live Marketplace, are a testament to the decisions that were made correctly on day 1. Progress since then has been supported through continual investment into the platform and community.

Back to my original point. the official announcement for the Xbox 360 was made in May 2005, and the console was released about 6 months later, in November. This gives a lead-time of about 6 months over their official announcement. Given the stage of rumors around development of the next generation console, it seems unlikely that Microsoft would announce and release a console this year. My bet would be on a possible hint this year at E3, even if just to give people something to look forward to, with a reveal at E3 2012 and possible launch before Christmas 2012.

Of course this is all pure speculation! As much as would all like to know when new hardware will be arriving, it seems for now we will simply have to wait.

Friday, January 14, 2011

Rooting/Flashing Samsung Galaxy 3

I have just finished flashing my brand new Samsung Galaxy 3 (New Zealand model) to the latest 2.2 firmware found on the xda developers forum.

Here's the complete guide from xda-developers:

It still took me quite a while to figure out how to flash the phone, there are quite a few little quirks. Here is the process I followed:

  1. Install the Samsung Kies application (comes with the phone on a CD), back up all your contacts, calendar, etc.
  2. Use the z4root easy root app.
  3. Install Titanium Backup for android, requires root access.
  4. Run Titanium Backup and back up all applications and settings.
  5. Shut down your phone.
  6. Hold the Home, Menu, Volume Down and Power keys until a "download" screen appears.
  7. Connect the phone to your PC via USB.
  8. Follow the instructions from xda-developers on updating the firmware for the I5800 (Europe firmware seems to work fine for New Zealand phones). 
Note: when using the ODIN downloader to update your firmware, wait approximately 10 seconds after loading each firmware file. If these files are loaded too quickly in succession (before ODIN has finished checking the previous one), ODIN crashes with an "ODIN has stopped responding" hang.
    Once you've completed the updating process you should be able to restore any apps and settings from the titanium backups.

    UPDATE:
    The latest firmware at time of writing (I5800XXJPF) turned out to be a bit flaky when trying to sync with the Samsung Kies utility, and in a few other places. Since I wanted to port my contacts over, this was less than ideal. The next most recent firmware does not seem to share this problem (I5800XXJPB).