I had been following a rather well-made youtube channel that highlights a modern game software development process. The channel aims to show how one goes about creating an online MMO game using available tools (as far as I can tell, they use free tools where possible.)
The following link is a video which from my perspective encapsulates many of the workflows that go into a modern online production software process. The creators had requested to Youtube to disable embedding.
Video - "MMO Update - Auto Updater Completed!"
http://youtu.be/YmPNdHS1GXo
Coming from an academic environment, where software development and deployment is significantly more adhoc, this is a real eye-opener for me. It is of course debatable if academic codes (even stable production ones) need similar deployment processes that allows such a smooth transition. Personally I'd argue that it does, having gone through much of the pain myself and having reflected on whether the adhoc nature of the codes significantly impact such workflows. I believe they are orthogonal - most academic software development projects already rely on many pieces of these workflows. These include:
The following link is a video which from my perspective encapsulates many of the workflows that go into a modern online production software process. The creators had requested to Youtube to disable embedding.
Video - "MMO Update - Auto Updater Completed!"
http://youtu.be/YmPNdHS1GXo
Coming from an academic environment, where software development and deployment is significantly more adhoc, this is a real eye-opener for me. It is of course debatable if academic codes (even stable production ones) need similar deployment processes that allows such a smooth transition. Personally I'd argue that it does, having gone through much of the pain myself and having reflected on whether the adhoc nature of the codes significantly impact such workflows. I believe they are orthogonal - most academic software development projects already rely on many pieces of these workflows. These include:
- code repositories to orchestrate modifications from many grad student development sources - these tend to be common to professional software development environments, like the use of git or web interfaces based on git;
- bug tracking and automated/semi-automated unit testing methods - these are also common, but anecdotally I have found academic environments to be fairly lax on this aspect. Tools from Kitware like CMake/CTest/CDash might help change this. Even so, I'm still trying to find out if something like CTest could automatically be linked to a bug-tracker like Mantis.
- code packaging and deployment - academic environments definitely lag behind professional environments in this department. It may be for good reason since academic codes tend to need to be flexible more than they need to be consistent to their users. In HPC for instance some older code versions tend to work (or work better) on some machine platforms. These forces prompt users of academic codes to be rather particular about specific platform optimizations. Given the platforms tend to be very transient (with 3-5 years operating life) it would probably be problematic (in terms of relative effort) for academic tools to stay highly tuned to ALL the platforms they support in EACH new version. Still, some tools like CPack from Kitware does try to provide a path toward a cross-platform deployment workflow. At the other extreme, MMO games with multi-user interactions pretty much force developers to ensure a simple, smooth, and consistent deployment workflow for all their clients to experience exactly the same game at all times. In the middle, I've noticed other professional tools like Flash Player and operating systems like Mac OS X, with workflows sitting somewhere in-between.
No comments:
Post a Comment