The biggest challenge in modern game development is the rising cost of content. Consumer grade systems now allow for so much detail that the amount of work required to create a game world has skyrocketed, making open-world games nearly impossible for a small studio or team. Today even large, experienced teams struggle to capitalize on the power of modern video game platforms. (Link) Players complain that games are getting too short or the worlds too limited, but at the same time are demanding visuals which are exponentially more detailed than before. Titles released during the Playstation 1 era were rendered at a resolution of 640×480 or lower (Link) as compared to most modern games which render at 1280×720 or 1920×1080. The exponential increase in pixel resolution has also exponentially increased the potential level of detail in content, as well as the effort to produce it.
The Playstation 1 Final Fantasy games (VII, VIII, IX) featured large, open roaming sections and towns which could be explored in a free-form manner. Despite a development time of 4.5 years, in Final Fantasy XIII for the Playstation 3 players spend “…the majority of the game … negotiating very limited environments with just a few branching routes, following a yellow arrow to get to your next destination and fighting a myriad bunch of enemies as you do it.” (Link) The Final Fantasy series is only the most recent series to follow this pattern, in 2008 we saw a similar reduction in world-size going from the Playstation 2 era Grand Theft Auto games to first high definition release, Grand Theft Auto IV. According to Ars Technica, “In many ways, the slight regression of the series from San Andreas is surprising: there are fewer vehicles, weapons, and story missions, less character customization, and even the size of the city itself is smaller.” Expanding teams has not been enough to combat the rising cost of production, developers have had to make their games smaller.
Reducing the scope of game-worlds is one solution to escalating content costs, but not one which resonates with consumers, who are ultimately the ones who determine the success or failure of a title. A more effective solution would be to combat the increased level of detail required by architecting the world in a more efficient manner. Today video game spaces are designed in much the same way they were 15 years ago, by hand both on paper and in the game engine. This hand-crafted approach provides control which is essential in action titles like Unreal Tournament or puzzle games such as Braid, but for games with larger, free-roaming sections, the same precision is not required in the environment design. For example, the exact layout and structure of buildings in Assassin’s Creed or Grand Theft Auto does not matter nearly as much, the player spends so little time in a single place that the city acts mostly as a backdrop during transit. Key locations need to be designed to support the gameplay experience, but these are a small number of areas compared to the overall world provided.
Some games have filled in their worlds using generative algorithms, such as Diablo II by Blizzard Entertainment, which creates a random environment for each play session, with only key set-pieces being statically defined. This works well when the structure of your environment doesn’t need to be static, and can be simplified to a tile-based representation, both elements uncommon in modern hi-def titles. Creating a algorithm for laying out rich, realistic game-worlds is an engineering task far out of the budget or scope of most game teams.
A solution which provides a logical and static frame to craft a world without laying it out brick by brick is to use an environment which has already been defined. A wonderful source of existing city environments is open government data. Initiatives such as the open data catalogs in Washington DC and Vancouver provide all the required data to create the framework for a game environment, including roads, stop lights, building shapes, block outlines, shorelines, bodies of water, parks and more. This data is often released without any practical restrictions, such as in Vancouver. “The City of Vancouver (City) now grants you a world-wide, royalty-free, non-exclusive license to use, modify, and distribute the data-sets in all current and future media and formats for any lawful purpose.” (Link)
Since January, my team has been working with Microsoft and the City of Vancouver on a project called TaxiCity (taxicity.ca) which uses the data provided in the city’s catalog. In the beginning we planned on created game version of Vancouver by hand, using a set of template buildings and a trace pulled from Bing Maps, but looking through the catalog we found it would be possible to create a model of the city from freely available data.
Using an open source project called SharpMap (Codeplex Site)we were able to put together a quick prototype tool which reads geo-data into layers and outputs our collision maps and game-world art. . After a few tweaks allowing for better color selection and scaling, we can now render a rather rich worlds such as the map of Washington DC shown here. Since the data is stored in real world units and in vector form, once you have a parser you can easily combine different data sets. Most cities currently are missing some data required to create a complete model, but in my experience this is mostly because people have not used the data for this purpose before. In our interactions with the City of Vancouver, we have found more often than not data is unavailable only because no one has asked for it before, and the City has provided it upon request.
Flat, top-down maps are all well and good for a student web-game, but how is this a solution for companies looking to compete with AAA titles like we discussed earlier? Transitioning from our 2D maps to a full 3D world is simply a matter of creating a parser that can output in a 3D model format like OBJ rather than PNG. This allows the development team to skip the initial blocking out of the city geometry and move straight to texturing, adding detail and tweaking the space to enhance gameplay. With the right tools in place a developer could have playable, untextured game environment ready to test in weeks rather than months. Creating the tools, while not too difficult, is not necessary, CityScape is a piece of middleware shown off this year at the Game Developers Conference which supports rendering ESRI data. As a quick experiment I took the same data we use to render our 2D world and loaded into the CityScape demo to create the above render. Vancouver does not have the height information for buildings stored in the current building traces, so I adjusted a few of the building heights based upon reference photos, but such data could be stored within the ESRI files and is available in some regions.
Regardless of how the data is converted to a standard model format, once this has been accomplished artists can design the look and feel of the city. If correct geo-location is not important to the game world, multiple data sets can be merged together, taking some blocks or road segments from one city and slicing them into another. Any procedural tool is not going to get you 100% of the way to a detailed, hi-def game world, but getting 30-60% of the way there in a few weeks is a good start. Open data can provide a launch point which can be “hacked” upon by designers and artists, much like using an open source software project and expanding upon it. The open data movement provides something which has not been available before, truly free real-world data stored in a format which can be tweaked and repurposed. Learning to capitalize on this new resource will be a valuable skill in the next phase of our information economy, and much as the code hackers guide software development, a new group of data hackers will shape our future content.