Drawing Board: Disasters
As you might expect, recent events here in Japan have had me thinking a great deal on the subject of disasters, and with the immediate crisis receding I thought I'd take the opportunity to talk about the role of disasters in the game. Disasters have been a part of city builders since the very first Sim City (Cities XL was a notable exception to this trend). While at first glance they might seem like something of a tacked-on feature, a way to experience the perverse enjoyment of tearing down what we just built, disasters, if executed properly, play a larger role than is immediately apparent in shaping city development. In fact, allowing disasters requires a good deal of forethought in almost every area of the simulation, and is probably one of the trickiest things in the game to model.
Tools: Integrated Plugin Manager
From the beginning, one of the goals for Metropolis has been to create a game that is not only "friendly" to modders, but is actually built from the ground up with moddability and extensibility in mind. To that end, part of the goal for the Metropolis Project is to create not just the game, but a set of tools which make modding and configuration accessible to players. Naturally, being open source, the game will be open to modification by anyone, but in practice simply packaging the source code with the game limits modding to those with the technical expertise to not only code, but to make sense of what already exists. By providing utilities that open modding and asset creation to as many people as possible, we can encourage a robust ecosystem of player-created content like the one that exists for Sim City 4.
Procedural Lot Design and Modular Lot Elements
In today's Drawing Board post I want to expand on the ideas I covered in a couple of previous topics: namely Lots and Structures, Procedural Generation, and Services Coverage. Specifically, I'd like to look beyond structures and talk about the other parts of a lot. While buildings might make up the most noticeable features of our urban landscapes, a lack of attention to what constitutes the space between them can thoroughly negate their visual impact, no matter how much care we lavish on their details. But let's not get ahead of ourselves, lest we outrun the Disclaimer:
Charter: The Board
Having already covered membership and voting, I'd like to finish up the last major piece of the project charter draft and talk about the Board of Directors. The board is a vital component of the project: they oversee management, make top-level decisions about the project's direction, and in general serve to make sure the interests of the project members are being represented. I've already touched a bit on the board's role in selecting a developer previously, but today I'd like to establish more clearly how the board will be structured and its more general responsibilities.
Charter: Voting
Continuing on with the project charter, today I want to outline the sections related to voting mechanics. As discussed in several previous articles, the voting is going to be split up into three main areas: general votes, design voting, and leadership voting. There's still a lot that's open to change for these, particularly the exact voting methods used in each section; But we can always amend them later once something basic is in place, and we get a better sense of the overall voting dynamics.
Charter: Membership
Recently I've been planning some new features for the website; but before putting too much new infrastructure in place I want to have some clear guidelines in place for the project's overall structure, and make sure the website corresponds to them. To that end, I'd like to get at least a draft version of the project charter down in writing. In the next couple articles I'll be drafting a section at a time and posting them, in case anyone has last minute input or comments. To start, I want to sum up what's been discussed so far about membership: how to become one, what the conditions and privileges are, and what different levels there will be.
Option Trees for Roads, Zones, and Objects
In today's addition to the Drawing Board series (which incidentally, I decided to stop numbering; I have a ton of ideas for these articles, and I think it will get a bit unwieldy to be writing "Drawing Board XXXVII" before every title) I want to look in more detail at a feature which I touched on briefly back in my article about accessibility: a system for creating and editing presets for roads. But rather than just being limited to roads, I think this same system can also be applied to other network types, and even to zones, parks, and any other kind of object in the game. I call this system "option trees", as it mainly consists of a nested series of options (either number values, on/off toggles, or selectable line items.) As I mentioned in the Accessibility article, there is nothing particularly revolutionary about option trees, but they have the potential to add depth and power to the UI while retaining a high ease of use. But before I get started, the Disclaimer:
Incorporation and Taxes
As we move towards formally incorporating the project, I've been looking into a couple issues surrounding taxes and non-profit status. While I'm still convinced that a non-profit organization is the best setup for the project, there are a couple hurdles to clear if we want to reap the full benefit of that status.
Release Criteria
A complaint that's become increasingly common with new games is that they don't feel "finished". Look around the forums of almost any newly released game and you'll find a post to the effect of "I paid for a complete game, not a beta!" Reviews of "has a lot of potential, but feels like a work in progress" are not uncommon, even for high-profile, big-budget games. While I think part of the blame for this trend lies with publishers who push games out the door too soon and developers who don't spend enough time on testing, it's also an inevitable result of increasing complexity, both in terms of games and of hardware. It's simply impossible for a game to run perfectly on the nearly limitless combinations of hardware and software that make up the PC landscape. Game companies have to make some sort of compromise in order to release a game in a timely manner at a price people are willing to pay. An open source game, on the other hand, is always considered a work in progress. Short release cycles and small iterations foster the feeling that the end product is a continuous process of improvement rather than a monolithic single product. There are bugs, of course, but user tend to be more tolerant of them: they know that bugs are (at least in theory) in their power to fix, without being hostage to the original developer for changes to the code.
Metropolis falls somewhere in between these two cases. The game itself, being open source, will be improving continuously; In a sense it will never be "finished". But the development model we're pursuing, which asks users to fund the game by "buying" shares, also demands that there be a definite release, where a final product is delivered to the "buyers". The question I want to address today is, how do we determine what constitutes an acceptable point for an official release?
Drawing Board X: Moddability, Modularity and Backward Compatibility
Today's article was a little hard to categorize; I was thinking a bit more about modularity (which, if you've been paying attention, you'll be aware I never shut up about.) More specifically, I had some thoughts I felt I should record on how the kind of modularity we want to achieve could be accomplished from a technical standpoint. So, while I did eventually decide to file this under "Drawing Board," since the actual implementation is open to change, I also want to note that the underlying principles here are important; namely, that the game should be modular, that it should be easily moddable, and that it should be easy to upgrade without breaking older modules (in other words, backward compatible). One other caveat: In addition to the standard Drawing Board disclaimer, I want to add a further one that I'm not a by any means a software designer and what I'm talking about here might be laughably naive to a professional; If that's you, please chime in and set me straight, I'd love to hear some technical insights! Oh, and speaking of the Disclaimer: