2013/03/24 Despite very busy times, here's a new update. Mainly new graphics by guinan,
plus lots of internal cleanup, which is all about preparation for the next changes.
Download 0.10.1.2 here.
Next changes will be about houses: Planned in up to level 20, which makes for many new images. Then there
will be an experimental thing about houses in 2x2 and 3x3 for the same type, just to see how that works out
(in terms of game play). With the many levels there come new goods to produce and consume.
2013/01/05 New version to play around with.
2012/12/30 Finally implemented a proper loading screen, showing some progress during
loading the game data, the map, savegame and whatever else is happening. Also a lot of reorganization
of code behind the scenes, some things are considerably easier to write down in code now.
Also, the improvements of the UI are complete, so there will be a new version to download soon.
2012/12/26 Upgraded lpng from 1.2 to 1.5 and freetype from 2.3 to 2.4, failed to
upgrade lua 5.1 to 5.2 because they changed how to access global variables.
2012/11/11 No big progress, but continuously working on improving the UI.
2012/10/16 TM announced a new city building game, also set in the Middle ages: Medieval Mayor.
I'm very curious how this is going to be... and how this will turn out in relation to Villages & Cities.
2012/08/16 More images made by guinan, some rebalancing, and minor bug fixes.
2012/07/27 Same thing can happen with other buildings, so there's also repair for
production buildings now. Please do not play with older versions, instead, use this one.
2012/07/22 Another bug fix. This one had a more complex root cause, but made certain
save games unloadable. Root cause is hopefully fixed, and a repair function has been added to be able
to load defect save games to continue building.
2012/07/15 Two more bug fixes: One change introduced a bug which allowed certain buildings
to be built onto water. Another fix is, that all walkers now use the new path finder, so it should not
happen any longer that walkers vanish because they are unable to find a path, if such a path exists.
2012/07/11 More changes to the balancing. It's highly recommended to start a fresh game.
Also, guinan has drawn a series of sheep, so sheep are now roaming around the shepherd's hut.
2012/06/28 Another bug fix, and more importantly, changed requirements for housing, for
a better balancing. This is to be play tested, of course. Save games are not compatible, so players have
to start a fresh game.
2012/06/14 Important bugfix for houses that level up to 3 or higher, but then level down
to 1 again, that will trigger an assert.
2012/06/13 Here we go, new version. Saves are not compatible, too many things have changed.
Most important change is the new builder: Most buildings wear down and thus need some build material every
now and then, distributed by the builder from his workshop. Buildings other than housing have material in
stock, so they will need a visit by the builder after some time. Houses however need material to level up,
so in the beginning it will be necessary to over produce lumber, just to give some hint.
The game uses the common directories now under Win XP etc, so the game should properly run without admin
rights. Saves and log files are stored in "My Documents/Villages and Cities".
Other smaller changes are that the healer does not need herbs, and there are many more things to produce
and consume. An additional service is the barber, which is needed for better housing.
One of the next big changes is the introduction of the world map and trade, the first traces of that can
be seen as the background of the menus...
2012/06/03 Builders and material distribution complete also for housing types. Now some
more testing and a few other planned improvements, like showing a world map on the main menu instead of
2012/05/28 Got a lot done during the long weekend. Material consumption is now enabled
in all building types except housing (which wirks differently), and normal upkeep works fine. There is
one todo left when things go down and a building is destroyed then, and of course the same has to be done
for housing now.
2012/03/31 Most of the new builders is in place now. Even if it's only for production
sites, once it's really running well, it's not too much work to put the new stuff into the other
building types as well, i.e. services, decoration, markets and of course housing.
Some people are porting the allegro library to Android, so there's some chance to port this game
to a tablet, too. I will definitely look into this later this year.
2011/10/30 Small fixes, updated graphics (courtesy guinan) and a large additional map
(by Kevin). Most probably this is the last of 0.9.5.*, as I'm working on some major next feature.
2011/07/31 Bugfix, you should not be able to build houses on top of each other.
2011/07/23 Savegames are now compressed, sand pits can be built on sand. Some images of
buildings look nicer.
2011/06/25 Bugfix which affects balancing: Houses did consume more than intended,
due to a rounding error. In extreme cases houses could consume 4 times the configured amount, in theory
it could even be more. Some production and consumption has been tuned, and storages send out 7 walkers
instead of 6 to help distribution. On the minimap, the really severe problems appear blinking, less
severe problems are just red.
2011/06/23 Bugfix which prevents hangups in long games. Screenshots can again be taken
using the Printscreen key, or the F4 key. Slightly increased production outcome of furrier and
2011/06/22 Add mini map, to be toggled with key 'M' or the new button at the top left.
More smaller performance fixes, and a lot of re-balancing, which should lead to fewer prod walkers
running around (i.e. goods). Making the individual goods more efficient not only reduces the number
of walkers, but also makes the storage system work better.
This version is built with Visual C++ Express 2010, so you need to install the
"Microsoft Visual C++ 2010 Redistributable Package" from
(if you don't have it already installed).
Known bugs: It seems that the "Printscreen" button does not work any more, I'll have to look after this.
If you build many storages, distribution of goods is not good, i.e. it may happen that goods are not
transported to where they are needed.
2011/06/07 Found performance bug, which affected path finding of walkers.
Should be considerably faster now.
2011/05/15 Added more output to the overview windows. Now you see the number of each
type of building and walker, and summaries of these.
2011/05/05 More bugfixes.
2011/04/30 One bugfix, one improvement: On a fresh installation, the msg.ini wasn't
correctly created. The improvement lets you see what you have on the tile where you point the mouse
at, by showing those images that would hide that spot transparently.
2011/04/21 Porting to Allegro 5 is done. The remaining problem about incorrect
phantom objects showing where the building is going to be placed was actually introduced earlier
and went mostly unnoticed, or better, tolerated to be fixed later. Which is now, but only with a
workaround: Instead of showing only the building at level 1, now the game shows the ground area.
So you don't see what you build (you have selected this a moment ago from the building menu), but
you see exactly how big it will be and where it will be placed. Red shade indicates that the thing
can't be built at that place, for whatever reason.
2011/04/03 Porting is almost complete. Everything works now, there are only minor
differences in how some things look like, which have to be changed a little bit. The new lighting
model of Allegro 5 makes some things more difficult, but other stuff becomes easier... I expect a
new version for some technical testing this month, before I go into adding really new features again.
2011/02/06 Working on porting everything to the fresh and new Allegro 5.1 library.
This is quite interesting, many things have changed, but it also opens a lot of nice opportunities:
Use all hardware acceleration one can get, use "real" 3D for the display of the landscape and all
the houses, maybe more graphical eye candy, as I see fit and learn to use lighting and shaders and
all that stuff.
2011/01/05 A fresh installer does not deliver outdated and unused runtime DLLs
any longer. Instead, you have to have Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
installed on your PC, which you can download from
2010/12/05 First version for 0.9.0 ready to try. Please uninstall a previous
version before installing.
2010/11/28 Long time no update... been busy implementing real maps, so the
map is now read from a color coded image file. This is mostly complete by now, so I think
I should prepare another version before Christmas.
And before I start changing everything, because the whole thing has to move from Allegro 4.4
to Allegro 5. The disadvantage is that it's a big change, virtually nothing remains like it
was before (technically). The big advantage however is that hardware acceleration is just built
into Allegro 5, so making good use of DX or OpenGL is very easy then.
2010/05/21: (Rev 248) Version 0.8.1.0 ready. Another important bug fix, another
localized language text.
2010/05/04: (Rev 242) Small but important bugfixes, and all dialogs for
the different building types completed, including possibility to request workers and
enable / disable individual goods at each market.
2010/04/03: (Rev 238) Busy implementing dialog boxes for each type of
building. It should be possible to enable and disable individual goods on a market to get
some fine control over what goods will be available in the vicinity of that market.
Maybe even more important is the possibility to request more workers at one building of
there are too few workers available and the player wants to make sure that the building
can operate as needed. Unfortunately this led to the discovery of some deeper bug in the
workforce assignment routines, which I have yet to find... so the next version will be
available later than I initially hoped.
2010/03/17: (Rev 233) Version 0.8.0.1 contains two changes. One is a
bug fix: Deletion of a tile which has a walker on it triggers an internal assertion,
causing a crash. Now the walker either can continue his path, or is deleted.
The other change removes the possibility to store water in the basics goods storage yard.
Water has to be fresh, to be used for the bakery or by the gardener.
2010/03/14: (Rev 227) Version 0.8.0 is available for download.
Storage walkers are now fully
functional, so goods distribution across the map, using a network of storage yards,
should work fine now. This enables 'real' building for the first time since I started
2010/03/07: Storage walkers implemented. This means that goods are
now transported between storages, across the map. Demand and supply are automatically
computed along the network of storages, and transported as needed.
Some rework of the path finding algorithms involved is needed, to make sure that walkers
target the 'right' buildings. Whatever that exactly means - it should make sure that
goods and services arrive where they are needed, and not too late.
2010/02: Family events.
2010/01/06: Extended the data model to use more than 50 different
goods to harvest, produce and consume in the game. Not counting weapons and such.
2009/12/29: (Rev 168) Version 0.7.3.1
introduces one little addition: right click on a building shows the info box,
another right click closes that info box again. Later, this box will give some
options to configure storage yards, or adjust certain parameters of a building.
2009/12/19: (Rev 163) Version 0.7.3.0 ready.
There is one notable change, on the main map, try to hold shift while you're
moving the mouse pointer to see the difference.
2009/12/06: Deco elements consume
goods now, which is necessary to produce attractivity. Without goods supply the
generated attractivity will be less. An example is a garden that needs water.
Services also consume goods now, walkers are only sent out if goods are
available, and these goods are used to 'produce' a new service walker. An
example is the healer who needs herbs, or a gardener who needs water and seeds.
implementation of storage yards. They can receive goods and send out prod
walkers to distribute goods in individual lots. The difficult part is to
connect all the storages with each other such that goods are distributed
automatically, even across the whole map... which opens more questions than I
have answers for now.
There will be another build in december, even if storage yards are not fully
implemented at that time.
2009/10/18: New property for
walkers: Each walker can be set to use only roads instead of using all walkable
tiles, with a preference of roads. So as a consequence, if some walker can only
use roads, the building that sends these walkers out must have road access to
2009/10/12: Some bug fixes:
0.7.2.1 to be downloaded.
2009/10/04: The improved version
is 0.7.2.0 ready for download.
2009/09/30: Currently I'm
working on an improved version, which contains an extended data model,
including various new goods, plus a few bug fixes. Meanwhile, the server has
moved and will be joined with the staedtebauen.de city building portal - there
are some pieces missing however, so that will take some time. We're also busy
giving the final touches to Heike's Rechenmonster project, so get ready for
some math trials soon.
2009/09/03: (Rev 121) A few
important bugfixes, found in early testing.
2009/08/31: (Rev 115) Many small
improvements, english translations and balancing. This should be the first
really playable version, at least the basics of the intended gameplay.
2009/08/23: Reimplementation of
triggers. This is something I learned from Caesar IV, and it's also much better
for other reasons: No different triggers for any sorts of events, but just one
trigger which is called in regular time intervals. This one trigger can then do
several things, depending on ingame data. The main important thing about this
way of doing triggers is that it should be completely determined by the exact
point int time, and that's only possible if the trigger is integrated into the
update queue mechanics as any other update which occurs ingame.
2009/08/09: Big milestone: Market
walkers are fully implemented now! Why is this a big milestone? Now goods are
consumed by houses, so the production loops are closed and there is a sink for
goods in the game. So I guess it's about time to prepare another downloadable
version, because this is the first really playable thing.
2009/07/12: Caesar IV contest is
over, and I learned a lot about what makes Caesar IV fun. In fact, they did a
whole lot of things right with that game. On the downside, there are a number
of plain bugs which are normally exploited during play and contests, which
reveals that doing micromanagement can be great fun. For some people at least.
Despite not working on Villages and Cities these days, I have been improving
the game framework a lot and started to branch off my own guichan version,
decoupled from the main development.
2009/04/26: Decided to play Caesar
IV contest. Main objective: learn about what makes Caesar IV such a good game
that it is. Will be great fun, but keep me away from programming...
2009/03/12: (Rev 61) New data
model and new type of graphics: generated as an additional way to read image
files. This has the big advantage of easily creating lots of placeholders in
all sizes and colors, which can later be replaced by more beautiful images.
2009/02/01: (Rev 42) Major
restructuring: Most of the game framework code has been moved into a separate
library, so other games may be built upon that. There are similarities to the
gfwk used for The Next Train, so this will be called GFW2. As a difference,
there are now elemts of fonts and guichan included.
2009/01/06: (Rev 35) Markets
implemented to receive goods. Markets receive and distribute all goods that are
consumed by houses. In contrast, storage yards will be able to receive and
distribute all goods, including raw materials and intermediate products.
2008/12/25: (Rev 20) New version
for download and testing.
2008/12/14: Finally different
speeds of walkers on different types of roads works as intended. Needs a bit
more testing now, then I'll put up another version to download and play around
2008/12/07: Switched to SVN on a
local server. This means that counting changes starts with 1 again...
2008/11/02: (CL1099) Several
localization improvements, houses and other buildings now show much readable
information about their state, what they need to level up, and so on.
2008/10/05: (CL1088) Hinterland is
out now, so I decided to put the current version up for inspection, too.
Service walkers should work nicely, no goods distribution yet. That will be the
next big task. Installer language now sets the corresponding language for the
2008/09/21: (CL1076) Service
walkers reserve their current targets, they use path caching instead of
recomputing everything on each tile, so I would consider service walker
complete now. Whoot! There are some reasons why things are going slow, one of
them is Spore. Another one is the upcoming release of Hinterland (by Tilted
2008/08/15: (CL1066) Lots of bug
fixing, some really hard to detect stuff... Now tested with two different types
of services, looks quite good. Walkers need to reserve their targets however,
at least for a short while, to avoid having all walkers always go for the same
2008/08/08: (CL1046) Walkers find
their targets now, so random walking is only needed as last resort, when a path
can not be found. No real optimizations done so far, so everything is
recomputed on every tile - nevertheless, a few walkers run around without any
problems. Further testing required now, but then it's a giant leap forward!
2008/08/04: (CL1030) First
complete implementation of path finding. There are no further optimizations
yet, and walkers only use this to fund their way home, but it works. Next steps
include target selection, so that the walkers do better than random walking
around to deliver services, proper caching to reduce computation and further
smaller tuning of the algorithm.
2008/07/27: Use upgraded versions
of libpng and freetype.
2008/06/29: Simcity Societies: Destinations
is out. Seems to be a really good expansion, so I'll do some more testing and
maybe write a review...
2008/05/01: No updates. Real life
is very busy, but I hope that I'll get to work on this again.
2008/03/22: (CL1009) Service
walkers do distribute their service to houses now, and houses depend on regular
visits to level up. As of now, they do not try to find paths, they just stay on
a road if they can, otherwise they are just random walkers: That will be the
next major implementation task. Happy easter!
2008/03/09: (CL999) Some bugfixes
in saving and loading games, walkers are walking correctly, next will be the
distribution and consumption of services.
2008/03/01: (CL983) Dropped
OpenLayer support. Using pure AllegroGL should be sufficient, and OpenLayer
just adds too much overhead. Also, some test machines do have problems with
OpenLayer, while they work properly with agl and pure allegro back ends. Add
support for other tile formats, like 4:3 and add functionality for resizing
images on load, so using tiles of different sizes becomes much easier.
2008/02/24: (CL968) More than
20000 lines of code by now. First walker movements, mostly random by now.
2008/02/10: (CL954) Switched to
allegro 4.3.10, started work on adding walkers.
2008/02/02: (CL943) Minor
improvements and internal restructuring.
2008/01/27: (CL937) Improved
screen menu for saving games, now including a delete button. Added counter for
screenshots and add configuration for screenshot directory and filetype.
2008/01/14: (CL916) Important
bugfix, adding current map view position to savegames. Changed major version to
0.4 since that reflects all the changes better.
2008/01/13: (CL912) Saving and
Loading is complete. Many checks to avoid loading outdated saves are added into
the loader. Reorganized the locations of files, and separated the data model
definition scripts from the actual new game creation scripts (which will
eventually lead to complete scenarios). There are now two screens with settings
and options, and a few of these are saved in a user specific ini File.
2008/01/06: (CL884) Saving and
Loading games is on its way. A save will only contain data about objects that
are actually used, so that part is not entirely trivial. Loading a savegame is
more difficult, though. The idea is to flexibly remap internal indexes if the
scripts have evolved in a compatible way, which mainly means that you should be
able to load a savegame when you are adding new types of buildings, new goods,
new walkers or change any of the trigger scripts. On the other hand, the loader
has to detect if you try to load a savegame that refers to buildings that are
no longer available and fail with a readable error message. Well, this is work
2007/12/28: (CL846) Many
changelists, few updates. Added a message system to the game. Now the game can
write messages to the player, either by dialog box, line at the top of the main
screen or not at all, this is configurable for each message type. A later
addition will be a complete diary where the player can review all messages and
change the configuration easily. The other big thing is the introduction of
something like a filesystem: Files are read using special functions which
search for the file in configurable directories: application-data, user-data
and development-data for those who wish to fiddle with the scripting without
wrecking havoc to their installed files.
2007/12/02: (CL802) Christmas
season comes closer, and thus all the preparations which are due. Nevertheless,
workforce assignment is mostly implemented now. Needs a bit more testing and
balancing, but works as intended and provides some interesting gameplay. There
will be a download before christmas, but for now I want to do some more testing
and some polishing.
2007/11/17: (CL785) Workforce
assignment started. Some restructuring was necessary, but now all notifications
work as they should. Service and production buildings can now require more than
one type of people to work there. This should make workforce much more
2007/11/15: Simcity Societies is
finally in store. Started playing...
2007/11/11: (CL775) Added
decorative elements, which also raise attractivity. Fixed openlayer display and
added preliminary allegroGL back end. Internal rework of game timing, now the
game clock supports at least 8000 years of game time to pass. Added noblemens
houses, variants for all houses, replaced graphics for the bakery and added
graphics for wood cutter and pottery.
2007/11/04: (CL764) Improved map
drawing now implemented. As long as all buildings have square dimensions, the
image will be correctly rendered (i.e. without incorrect overlaps).
Additionally, the area below the mouse pointer will be drawn transparent, so
that the player can see what's going on there, and where things can (or have
to) be built. Some restructuring of image and script files has been done, to
improve code structure and make additions easier.
2007/10/29: (CL755) Map
attractivity is now implemented, and people will immigrate when houses have
empty space for them.
2007/10/14: (CL718) No updates
here does not mean that I didn't work on the game. In the meantime I have
finished to implement the core game data structures and their relations, they
all can be loaded with scripts, built within the game and deleted again. There
are even some more hand-drawn placeholder graphics for the required objects!
2007/10/02: (CL705) Switch to
using lpng1.2.20 and freetype 2.3.5. You can make a screenshot using the Print
2007/09/23: (CL702) Minor changes
to the way the scripts work, and started to implement the game's core data
structures for all game objects. Since these are all related to each other, it
doesn't make too much sense to add them one by one, so this update will be a
2007/09/09: Started to draw some
graphics to use as place holders for the next development steps. See the
screenshot in the corresponding forum thread!
2007/08/31: (CL695) Lauch site
www.simcity-soc.de about SimCity Societies.
2007/08/26: Been visiting the
Games Convention 2007 in Leipzig to see SimCity Societies. Very promising! Made
a lot of friends there as well. Though this means that there's no immediate
progress with Villages and Cities, I'm motivated as ever to continue this work
here. Especially the multiplayer ideas seemed to cause some interest, so my
priorities have been shifted a little to incorporate networking and multiplayer
features in an earlier version of the game.
2007/08/20: (CL681) Added more
special mouse pointers. Houses and roads level up after some time and then
start again at lowest level, to show some of the other graphics. Some
additional range checks to prevent crashes when pointing to a location out of
the map. Scrolling is a little more restricted now, so it will happen that you
can't see the very edges of the map.
2007/08/15: (CL669) The
Delete-Button works now. The objects that will be deleted are highlighted in
red. Implemented custom mouse pointers and included graphics provided by
2007/08/07: (CL657) Roadbuilding
first version is there. Two types of roads, that will have different behavior
and costs, to be implemented in a later stage. Prepared graph implementation.
Road building works with dragging, the pathfinder is very simple but good
enough for now. Will later be replaced by proper pathfinding and optimization.
2007/07/31: (CL638) Started some
restructuring to prepare the next steps, and changed behaviour such that ESC
leaves the main menu, in addition to pressing 'q'. There seem to be problems
with the OpenGL implementation which causes problems on some PCs. So I have to
give this some higher priority along the road map.
2007/07/24: (CL629) Changed
version numbering, so this is 0.2.2 which contains build menüs, so you can
build houses. Building is not completely implemented, so don't complain about
invalid placements of houses. This version is mainly aimed to show images in
the game, you may look into the starting script to see how house types and menu
entries are defined, and it should be easy to modify these scripts to show
different images if desired.
2007/07/22: (CL628) I can build
houses now! There are some technical issues to solve, but after that it will be
time for another download to show all progress made so far.
2007/07/15: (CL619) On the path to
completing the dynamic building menus. This includes scripting, implementing
some basic data structures to represent houses in the game, and all the user
interaction, so this task is about to touch most other modules in the project
so far. That's why it takes some time to complete (but I have to admit that the
fine weather doesn't help either). Doing this right will help a lot for further
implementations of that type!
2007/06/23: (CL603) Switched from
using return codes to exceptions, even in code parts that are called from a
script. While this does not make much notable difference, it can produce much
better error messages if something goes wrong during script interpretation:
Detecting errors in a script should be much easier this way.
2007/06/17: (CL599) Implemented
ingame message console that displays informative and error messages during
script loading and similar. The text (which is also written to the logfile
allegro.log) is shown as overlay over anything else that is displayed,
including menu screens and even the game map screen.
2007/06/10: (CL596) Vacation is
over, and I didn't do much programming, but thinking about game concepts
instead. The changes to the current sources are preparations for the dynamic
menu which will be needed to implement all the building options. Lua is now on
version 5.1.2, and a number of additional settings are configurable from the
2007/05/01: (CL577) Map can be
scrolled with the right mouse button. While this does not seem to be
spectacular, it means that all preparations are done to be able to interact
with the map. All coordinate computations between screen and map coordinates
are in place and pixel precise. The current center tile and the current mouse
hovered tiles are outlined. The proposed map size of 30x30 tiles is minimal, I
have tested until 2000x2000 tiles, which is pretty large.
2007/04/15: (CL574) First display
of a map, smooth scrolling using keys, tiles are loaded from scripts so tiles
can be easily added and changed. Also changed tile height to 31 instead of 32,
which saves one line of transparent pixels. Included a first version of
2007/04/09: (CL564) Tiles can be
loaded from single files as well as from larger graphics as parts. Error
handling settled between script and main program, but the messages have to be
read from allegro.log with an external editor or viewer.
2007/03/11: (CL557) Added
scripting to load simple bitmaps into the game. Error handling is an issue
here, because the game should not simply crash or terminate with an exception
if there's a syntax or runtime error within a script.
2007/02/25: (CL 554) Added true
type font support to guichan for use with OpenLayer and Allegro with
GlyphKeeper. This proved to be some hassle, not because it's so much or
difficult coding, but to have these changes and enhancements be accepted by the
corresponding developers. Well, now that's almost finished, so I can at last go
back to the main subjects.
2007/02/18: (CL 525) First
milestone reached. This version shows the main menus and provides some moving
figures to estimate frame rates with different settings on different machines.
Entered this version into local source code control as changelist 525.
2007/01/24: The framework is
improving. By now, there's a menu, and instead of a game there are balls
jumping around. The missing features until I can upload something here are the
display of the actual framerate, and an adjustable speed for the simulation.
2007/01/15: There's not too much to report yet. I have
started active development just recently, after evaluating a number of
different libraries and possible approaches. Including the decision about going
3D or staying 2D.
The outcome is: I will do this game in 2D with isometric tiles, mostly because
the old games are done that way, but I also believe that it is simpler this
way. I haven't seen a decent game made by a very small team or a single person
in 3D. Of course I want to use as much hardware acceleration as possible, so I
will use OpenGL, through the abstraction OpenLayer provides. Currently I'm
setting up the framework which will host the game later.