|
We chose to use the Microsoft Foundation Class Library so that we
could build the editor to function like a standard Windows application.
While this decision had a lot of benefits, there were some challenges
to overcome. The fact that the editor has many similarities to the game
created one of the biggest challenges in that we needed to take many
of our drawing routines and make them work in the editor as well. Also,
whole systems like the world builder needed to be used within the editor.
In order to integrate all of these things into the editor, we physically
shared the code for them. This gave us an added benefit of synchronizing
changes, so whenever something was updated for the game, it was automatically
updated for the editor.
After the initial editor application was implemented, we started working
on the editing tools themselves. The first thing we implemented was
the rules editor. This may not, at first, seem like the most logical
choice. However, in order for the world builder to function, it needed
to know the rules for the terrain, the resources, etc. It didn't really
make sense to just hard-code the rules so we searched the game engine
code and extracted as many rules as possible. Once this was done, we
were able to implement the map editor, which completed the overall package
and made the game editor quite fun. At this point the game was complete
yet there were still a number of things we wanted to do to create a
fully loaded editing suite. Rather than hold up the release of the game
we shipped it with a functional editor and continued to work on adding
the features that would set this editor apart.
As we continued to work on the editor after the release of Civilization
III we faced the added challenge, of making sure the functionality of
the game didn't change when we made changes to the editor. Some features
that still needed implementing were a mini-map, the ability to place
units, cities, colonies, starting locations, and some method to customize
players. Implementing these features required some parts of the game
to be retrofitted to work for scenarios. The most challenging aspect
of the entire editor was getting the concept of a "player"
into the editor. Note that this is different than the concept of a "civilization."
Scenario-editing required the two concepts to be separated so that a
scenario could (a) allow players to choose their civilizations when
the game starts (i.e., the scenario consists of objects placed for several
players regardless of the civilization chosen by the player) or (b)
force players to play using specified civilizations and objects (i.e.,
a World War II scenario where players are assigned to specific civilizations
like the Germans or the Americans). Because the concepts had to be separated,
we had to make the code generic enough to handle both cases and this
proved to be enormously challenging. Once this hurdle was overcome,
the ability to place objects and assign them to either players or civilizations
followed quickly.
Once the major features were implemented, we turned to the fans for
input. We searched forums on various fan websites for things they wanted
to be able to do with the editor. The fans also helped immensely by
way of the beta testing team, which voiced numerous suggestions. This
code update showcases the largest number of new features to date, almost
all suggested by our fans, as well as the most robust iteration of the
code. This editor update, in addition to some new features and unit
sets that will ship in CivIII: Play the World, will continue to support
and encourage the amazing creativity displayed by Civ fans around the
world.
|