What's new in the latest build?


Hi, folks! For the people currently testing MMORPG Tycoon 2, this is a changelog of the latest changes to the Steam version of the game. For those not testing, this is just a snapshot into development, so you can see what I’ve been working on on a day-to-day basis.

(Testers: Please note that the latest changes are on the “test” branch, and the main branch doesn’t get updated often at all. To get the latest build of the game, right-click on the game in your Steam library and choose “properties”. Switch to the “Betas” tab, and select the “test - Absolute latest codebase” option from the drop-down menu.)

When you run the game, the version number of the build you’re running is displayed in the top right corner of the main menu (inside the “Visit the forums!” box); check that version number to make sure you’re running the latest build of the game!

If you’d like to receive an e-mail about the new features of each new release, choose to watch this thread, using the ‘Watch’ box, below.


  • First testing version since passing Greenlight!
  • New “view modes” system; Map mode, Edit mode, Grid mode, each of which has a different set of abilities available, and a different view of the world.
  • New visual effects for the main menu & loading screen.
  • New building themes and building editing.
  • New models for lots of building types.
  • New models for trees, and models for a few other scenery types.
  • Players and monsters now flash when taking damage.
  • Players and monsters which have hands now carry randomly selected weapons. (TODO: these probably shouldn’t be randomly selected. Also, they should probably be sheathed when not in use)
  • LOD system, so objects which are very small on screen will no longer be drawn.
  • Buildings and other props now take on the general tint of the region they’re in.
  • Players can now cheat. At present, there are item dupers and speed hackers. Item dupers get much less benefit from activities which get them loot, since they pretty much can make whatever loot they want. Speed hackers travel much faster than normal. Both types of cheat are visible in the ‘Info’ panel for a player.
  • There is also a “cheat detection” tool available in the Analysis tab of Map mode which will show which players are cheating (gold farmers highlight in red, speed hackers in green, everyone else in white). Note that the “cheat detection” tool is very short-range, and is centered around the cursor. But it’s good for checking popular socialising areas.
  • When interacting with another player, cheaters sometimes “spread” their cheats to the player they’re interacting with. This can turn a small cheating problem into a large one. Note that people are much more likely to start cheating in this way if they’re feeling frustrated with the game.
  • New method of placing monster zones.
  • utf8 font rendering support.
  • New method of placing towns (this is still WIP in this build; only half-functional).
  • Players of wildly diverging sizes now place themselves more intelligently, when forming conversation circles.
  • Placeable ‘Dragon’ boss monster. (Don’t actually place it yet; it doesn’t really attack anybody yet. Also, it’s really distracting to your players, who will likely all go and try to fight it, even though it’s immortal. This model was dropped in earlier than planned, just to fill out the trailer video, but most of its functionality hasn’t been implemented yet. Once killed, a boss respawns after about ten minutes.)
  • The game is now using FMOD for sound. So far, only user interface sounds have been implemented.
  • Off-grid game-masters now only send one game-master to help when a trouble ticket is received. Previously, every off-grid game-master would go.
  • Adds volume controls to the options window.
  • Adds antialiasing option to the options window.
  • Pressing escape now disables the currently-active tool (if any), or else closes the frontmost window, or else opens the system menu.
  • Adds ‘kill’ command which works on living PCs and monsters. Adds ‘revive’ command which works on dead PCs.
  • Initial implementation of “story” and “puzzle” zones. PCs will visit these areas to fulfill their “scenery” and “advancement” needs, respectively. However, each subscriber will only visit them once, voluntarily, no matter how many characters they create.


Now in the ‘test’ branch:


  • Experimental change to try to trigger NVidia Optimus systems to launch MMORPG Tycoon 2 using their NVidia GPU, rather than their Intel chipset (which generally doesn’t support the functionality we need). Need feedback on whether this change works! Click here for patch details. (follow-up: feedback has been that this did, in fact, work!)
  • Fix for yxxxx’s reported crash bug when placing a town (which required, I believe, a very specific set of circumstances). Could also have happened for monster zones. This build fixes both situations which could cause this.
  • Fix for “couldn’t find key??” message if OpenGL failed to start up. Instead, we now show an error dialog which explains the actual problem.



  • Fixes crash when loading saved games from the MS10/MS10.1 builds. (Thanks, Daniel!)
  • Fixes multiple-devs-trying-to-do-the-same-job timing crash. (Thanks, yxxxx2003!)
  • Fixes the clock panel to show the correct day number. (Thanks again, yxxxx2003!)
  • Fixes the cursor to remain in place when turning (Windows-only). (Thanks, Corv!)



  • In the event of a crash, we now save out a crash log. On Windows, this is saved as “MT2.RPT”, inside the game directory. On Mac or Linux, this is saved as “crash.rpt” inside the application support directory. (on OSX, this is ~/Library/Application Support/VectorStorm/MMORPG Tycoon 2/. On Linux, this is ~/.local/share/VectorStorm/MMORPG Tycoon 2/.)

Hopefully this should help me track down any remaining crash bugs! Please include the contents of this file in any future crash bug reports. Thanks! :slight_smile:



  • Checks for an unset “last game” variable, which yxxxx managed to get to happen while testing across multiple computers with Steam Cloud Saves. This used to cause a hard freeze, and is now caught and handled if it should ever happen again.
  • General hardening of the codebase against extraneous directories left where I was expecting to find files, and vice-versa. (Thanks, Daniel!)
  • Better assert messages if I do something silly, regarding trying to load a directory as if it was a file. Should make that sort of programmer error much easier to diagnose in future.
  • We now support attaching any number of paths to an intersection. Previously, the software would (for no reason) decide to make a big fuss if you tried to attach more than four paths to a single intersection. I’ve now removed that restriction. (Thanks again, Daniel!)
  • If you move a player around while they’re a ghost, they now realise that they’ve been moved and will repath to the nearest respawn point. (Previously, they would sit around forever, not awake enough to notice that they’d stopped moving) (And once more, Daniel!)
  • Paths are now drawn more nicely. (Or at least, I think so). Especially on terrain types where there’s no cover to disguise their borders, such as in deserts.
  • Slightly adjusted window skins again, and the window transition effect. Windows now have a dark border, instead of a light one. Light borders are now only used for clickable objects.
  • Build number in title screen now shows the timestamp of when the build was compiled. Except on Linux, because of annoying reasons.

There is still a “out of range” vsArray error which has been seen by a couple people, but nobody yet has been able to provide me with a crash log for it. If you see this error, I’d very much love to get a copy of the MT2.RPT file, which will be in the same directory with the MT2.exe file.

Thanks so much for all your efforts on testing, everyone!

(Edit: Okay, build server drama is over, and the build has now been uploaded to Steam!)



There is no build 0.12.26. Build server ate it. I’m not even kidding. I’m expecting to have a v0.12.27 in about a half hour, though.



  • A crash reporter is now built into the game. If the game should crash, the next time you launch it you’ll be asked whether you want to submit your crash logs to me. This should be heaps easier than going in search of the right files manually and sending emails! (These logs get submitted via an unencrypted HTTP request, which then turns around and emails the data to me. There is no personal information in the data; only callstacks and the game log. All data is shown to you before being sent, to get your permission to send it.)
  • Fixed an assertion failure about trying to create a zero-sized rendering buffer, regarding the town grids and the cursor grids… which was reported by somebody and I’ve totally lost track of who. Sorry!
  • Adjusted puzzle zones and story zones to have a much bigger reward, and to deliver that reward faster. Previously, they were a bit of a bottomless hole; players desperate for feeling like they were making progress would go to them, but it’d take so long and they’d get such small benefits that they’d decide to stay and solve more puzzles in the hopes of quick wins, rather than go do anything else, because they were underestimating how long the puzzles would take to solve. Now players stand still while solving puzzles, and make an attempt once per second, instead of once per walk. Net result: you shouldn’t wind up with all your subscribers unhappily standing around in puzzle zones any more. Still not properly balanced, but at least not quite so catastrophically broken any more.


I took today as a day off, so there isn’t much new in the build today. But I noticed a pattern in the crash reports I’ve gotten in the last day, which were almost all showing people crashing inside the “mouseover” handler for windows, so I spent some time adding some extra sanity-checking in there. If you were one of the ones getting these crashes while moving the mouse over a window, it’d be great if you’d get in contact and let me know which window you were mousing over, and what sort of things you’d been doing when the game crashed!


  • Improve safety of window “mouseover” logic; specifically, make sure to throw away the current mouseover focus if it’s a floating element that gets removed from the window, and also when the window hides. Not sure if this will actually fix the issue, but it’s a lot better than it was before!
  • A bunch of new icons for various action bar functions.


0.12.32: Cleanest Build Ever.

Build 0.12.29 had a couple serious problems (like not creating all of the map), so I revoked it from Steam within a couple minutes of pushing it up. Build 0.12.30 was crashing on Linux during game exit, complaining about memory corruption, so I revoked it from Steam within a couple minutes of pushing it up. I’m pretty sure that the Linux build was the only one actually crashing, but when any build complains about memory corruption, you stop the whole production line, drop everything, and fix the problem immediately, because that sort of thing is a serious problem and just gets worse and harder to locate if you don’t address it immediately.

So I broke out my suite of memory analysis tools, and learned about a few more. Most useful in this case were valgrind and AddressSanitizer, which eventually located about a dozen (probably harmless) uninitialised variables, a couple of once-only leaked blocks of memory (definitely harmless), and two tiny writes to already-freed memory during game shutdown (12 bytes in total), which was what was actually triggering the memory alerts on Linux.

0.12.31 had that fix, but I’d accidentally left some really spammy log messages in place, to help track down those memory issues, so I’ve pushed up 0.12.32 to remove those.

So without further ado, here’s the new stuff in 0.12.32:

  • UI Windows no longer accept clicks or other mouse interaction while transitioning out. (They still accept clicks while transitioning in, though). This probably fixes a lot of bugs, many of which could be crash bugs.
  • It’s now much safer to quit the game in the middle of the loading screen; it will abort out just as soon as it finds a safe stopping point. Note that if you quit early in the loading screen, it won’t actually exit until it finishes parsing your save file, which might take a couple seconds. But at any time after that, it should cleanly exit immediately)
  • Lots of extra sanity checking around situations where the user deletes their saved games; if they delete all their MMORPGs and/or saves, they’ll be dropped back into the “New Game” dialog, with no “cancel” option to get back to the main menu.
  • Don’t crash the crashreporter if someone removes its files while it’s running. Just don’t upload the crash result.
  • Fix for a reported crash involving trying to complete a request when no requests were outstanding. (I suspect this was probably caused by the “allowing clicks on a window which is closing” bug, but this is a separate fix, just in case it wasn’t.)
  • No longer print pathfinding failures to the game log. They were just cluttering it up, and nobody but me cares. :smile_cat:
  • Fix for a crash when copying a polygon shape from one spot in memory to another. This was seen in about three crash logs over the past few days, but I’ve still been unable to actually reproduce it myself. But in theory, this fix should fix that, however it was being triggered.


So we’ve been having a lot of builds, lately; pretty much one per day. I was going to wait a little longer between them, but when I find memory corruption bugs, I pretty much want to push those through immediately. So here we have:


  • If a social circle disbands while someone was on their way to join it, that player will get in a huff about it and decide “Well, I’m not going to try to join that social circle again.” While doing that, they were illegally accessing a few bytes of destroyed memory, which could have caused unexpected behaviour. Now fixed.
  • Similarly, if a building or other activity area was destroyed, it was possible that a player might retain a reference to the advertised activity, and under certain unusual circumstances, might try to access some information about the activity. This also could result in unexpected behaviour, including crashes.
  • Fixes the “mouse over” window crash. Windows weren’t correctly clearing their “mouse over” focus when the mouse moved away from the window, or when UI elements were removed from them. The main place where this was a problem was on the request status window in the top right corner of the screen. (It’s transparent and has no border, so it doesn’t look like a window, but it actually is one from the code’s point of view). If the user moved their cursor over a request in that window, completed the request, accepted another request, and then moved their cursor over that window again, that could cause a crash.
  • Fixes a small memory leak when creating a town.
  • “Kill” tool now actually kills players. Previously, it revived them. Even though they weren’t dead. Oops.
  • I messed up the timing of the loading screen sequence in builds 0.12.30 through 0.12.32. That has now been reverted to match the timing from 0.12.28 and earlier.



  • Replaces old “Day results” window with a new, non-modal one. This new window shows more-correct information, doesn’t stop you from doing what you were doing before, and is accessible at any time from the “Reports” tab in Grid mode. (I feel like this requires one too many clicks to get to, so I’ll probably move it at some point). Note that the data is currently only being updated at the end of each day, so it won’t be set properly until you’ve reached the end of a day, during your current play session. This needs to be fixed!
  • Adds a “Developer Management Window” and a “Game Master Management Window”, also in the 'Reports" tab in Grid mode. These allow you to hire and fire developers and game masters, and to view information about how much work they’ve been doing.
  • Game clock now gets saved and restored. Oops.
  • Your game’s buzz level is now saved and restored. Oops again.
  • Reworded game’s buzz level to be “positive buzz” and “negative buzz”; removed the “forum” word, since I felt that was less useful in the limited space available. Remember: positive buzz and negative buzz don’t cancel each other out! Both count as buzz, when it comes to attracting new players. (Although yes, positive buzz is better than negative)
  • Improved request progress tracking code when loading old saved games; we’re now better about noticing if progress tracking settings for a request has changed between the game build which saved a file and the new game build, and reset progress if so.
  • New games now create correctly-sized game worlds again. Oops once again.



  • Fix an infinite loop which could happen when adjusting the terrain height by a large amount, when it happens to be under a waypoint in a character’s path.
  • Fix for zones and towns not being placable after starting a new game (rather than after loading a save from that new game).
  • “+version” button is now a UI3 button, instead of a UI2 button. Looks less awful.
  • Shrunk the action bar a little. Interested in people’s opinions on this; did this go too far? If we keep this sizing, I’ll shrink the system buttons in the bottom right side of the screen, to match.
  • Fixed a whole bunch of issues around placing roads and walls, including a crash if the user double-clicked on an intersection, with the road-placing tool active.
  • Improved the path tool’s behaviour when removing path nodes (currently mapped to alt-click).
  • Default roads are now narrower; they are calibrated to match the width of the roads in Goldshire, in World of Warcraft. But adjustable-width roads are coming soon.
  • Fixed a bug which caused money to not be being received or charged for anything.
  • Player now actually gets charged the displayed upkeep fee for active regions.
  • When a path is moved into an invalid configuration, it fades into its “failure” color over a quarter second, instead of a full second. This makes it much easier to see when you’ve done something invalid.
  • Fix for a possible crash when deleting an intersection.
  • Bump up the number of pathfinding nodes available; increases the practical number of subscribers who can be signed in at once. Still need to make this more robust, but it at least increases the cap of how many subscribers can be in a game while the simulation remains stable.

(Caveat: It’s about 3AM where I’m at, so I’m just pressing the build button and falling into bed. The build ought to be up on Steam in about fifteen minutes or so, but if something goes wrong I’ll fix it in the morning!)


New buildings in this build: Taverns now (probably) work, Shops and Blacksmiths are now placeable. Inns now have a limit to how many residents can set them as their “home” at once. Dungeons almost work, but I chickened out at the last minute and delayed them. :slight_smile:

For the sake of clarity, most buildings which provide player services are now using programmer art again (until I can get custom models made). In particular, Inns, Taverns, Shops, Blacksmiths, and Dungeons are in this basket right now. Graveyards and Landmarks are still using their custom models.


  • Newly placed inns and taverns are now using programmer art buildings again (Inns placed in earlier versions using procedural buildings will retain their set procedural building models).
  • You can now place generic buildings using the “Add Block” tool on the Towns page. (Note that there is not yet a cost for placing or editing these generic buildings)
  • Inns now can support only up to 100 residents. If you need to provide “homes” to more people than that, add more inns within the region. As before, players will slowly grow unhappier if they’re unable to find an inn with available spaces to set as their home. If you select an inn, the selection box will show how full it is.
  • Players now keep track of “loot” and “gold”. “Loot” is trash items typically dropped in combat, “gold” is money, which is typically earned from completing quests. You can see a player’s loot and gold level in their ‘Info’ panel.
  • Taverns now advertise to players to come and socialise outside of them. In theory, this should mean that players are more likely to congregate around a tavern, rather than just deciding to stand in the middle of nowhere in the hopes of someone coming over to talk to them. This hasn’t been tested at all, but in theory it ought to work.
  • Adds “Shops”. Players can go to a shop to convert their loot into gold.
  • Adds “Blacksmiths”. Players can go into a blacksmith to purchase a weapon using their gold. Note that we only show players as holding a weapon if they have a level-appropriate weapon; if their weapon is lower-level than the player, then we simply don’t draw them as holding a weapon at all. (Needs some thinking about how to present this). Weapons only provide a combat bonus if they’re level-appropriate. Combat bonus is probably too small right now; this will need tuning.
  • When a player is travelling to do something, their selection box would often just say “In transit”, until they actually arrived at their destination. Now, the selection box tells you what the player is planning to do once they arrive at their destination, instead.
  • Fixed issue which was causing subscribers not to log out. Subscribers have a 3-to-6 hour window of time in which they were supposed to be playing each day. At the end of their play time, they were to return to their home inn and log out, to return the following day. Now they actually do that successfully.
  • Rez-in effect on players, monsters, etc. now obeys the game speed setting.
  • Fixed a potential crash if a player was to unsubscribe while waiting for help from a GM.
  • Fixed rez effect on newly subscribed players as they spawn.
  • Adjusted action bar tab sizes, and adjusted the tabs; buildings are back into their own “Buildings” tab, and roads are in a “Paths” tab.
  • Players no longer follow road paths so precisely.
  • Players now slightly cut corners, when they’re following a path through an intersection and onto another path.

Please note that none of these systems have been exhaustively tested, and are likely poorly balanced. In particular, I’m nervous about whether players will actually reliably go buy weapons, since they haven’t been specifically told to want them, yet (although in my testing thus far, it hasn’t been a problem).

Also note that players do need to have gold in order to buy weapons, and they initially spawn with neither gold nor a weapon. So if you want your players to get a weapon before they start combat (in order to give them the best chance of victory), then you may want to give them an easy fetch quest to begin with; that will earn them some gold, and they’ll then be able to use that gold to buy the weapon.

Right now, every weapon costs one gold. The idea is that in a future build, you’ll be able to set a price for weapons on individual weapon shops. Do note that weapon shops will only sell weapons of the level of the region they’re in, and only players of those levels will purchase those weapons.



  • Fixed a bug which could sometimes cause players to run in place while trying to cross an intersection. (Introduced in 0.12.36)
  • Intersections no longer have grass growing on them, when placed in grassy areas.
  • Allow camera to move a little lower, when fully zoomed in. (Moves down to 0.5m above the ground, instead of 2m above the ground)
  • Fixed a few potential issues around destroying paths or intersections, when players were traveling over them.


This is either a tiny or a gigantic update, depending upon whether or not you’re a developer. :wink:


  • MMORPG Tycoon 2 is now linked against the Steamworks SDK, and performs some minimal Steam functionality. Most notably, the title screen now presents a couple of buttons:
    • “Grant achievement” will immediately award you with a Steam achievement named “Test Achievement”.
  • “Revoke achievement” will revoke that achievement. (Note that Steam doesn’t seem to immediately update the achievement status in the game overlay when you do this; you probably won’t be able to tell that the achievement has been revoked until the next time you start the game. Or unless you award it to yourself again immediately.)
  • “Log Steam data” will print some information about your current Steam status into your log file. Note: If you click on this button and the game crashes later during that run, this data will be included in your crash report (if you send it). I don’t think there’s anything particularly privacy-damaging in here, but I wanted to mention it.

Specifically, this prints out the following pieces of data:

  1. How many Steam Controllers are connected to your computer.
  2. Whether you have a valid key to play the game. (Should be “TRUE” for everyone)
  3. Whether you have rights to play the game because it’s a free weekend. (Should be “FALSE” for everyone).
  4. Whether the game is set to “Low Violence” mode. (Should be “FALSE” for everyone, since there is no such thing for this game)
  5. Whether you are connected from a Cybercafe. (I’m not sure why I’d care, but Steam tells me this)
  6. Whether your account is currently VAC banned.
  7. Your currently set Steam language.
  8. Whether or not your account has been secured using a telephone number (TRUE/FALSE).
  9. Whether or not your account has been secured using two-factor authentication (TRUE/FALSE).
  10. Your account level.

Note that it does not log your account name. This is just a temporary feature, as a way to prove that the Steam integration is working. You absolutely do not need to ever click on the button, unless you’re curious to see what sort of data Steam games have easy access to, when you run them. And honestly, if that data did get included in a crash log, I’d probably never see it anyway; I mostly only look at the callstacks up at the top of them, since that’s where the useful information is for tracking down crashes.

  • Related to the above, if you’ve launched the game outside of Steam’s control, it ought to relaunch itself via Steam, instead. Although testing that now, it doesn’t seem to be working on Windows for some reason; seems to just hang, instead of exiting and relaunching? Interested in whether other folks have the same problem. Regardless, if you launch the game through Steam it should be just fine.
  • Fixed up a few issues if you set up quests to send players to puzzle or story zones. (Right now, I feel like presenting puzzles and stories as “zones” doesn’t feel right, and so those zone types are eventually going to go away, once I have something to replace them with. But until they do, they really shouldn’t crash the game, right? :blush: )
  • Related to the above, when editing quests, the arrows that point to destinations which are “zones” now point precisely to the ground level at their target, instead of trying to point to water level.

And that’s it! Back to game mechanics tomorrow.


And mere hours later, I updated to 0.12.39, with another attempt at that whole startup thing.

Turns out that the reason it’s not working is that the game is (currently) wrapped in Steam’s DRM solution, and that’s just how that works. And it explains why my test builds (executed without the DRM wrapping) worked, while the wrapped ones don’t.

I’m as yet unconvinced about whether to actually ship using Steam’s DRM; I suspect it’s probably not worth the bother to do so. But I wanted to keep a tighter hold on these early builds, as much as possible; not have them get out before I’m ready for a wider audience to see them. :slight_smile:



  • Your Steam username is now included in any crash reports (and all other potentially concerning and unnecessary information has been removed). This is just because I’ve finally realised that I really need a way to be able to figure out who to contact to try to get extra information about these crash reports.
  • Players now completely max out their “achievement” need when gaining a level. (That is, they won’t feel a need for any more achievement for a while, after gaining a level, so are more likely to go and do something else for a while)
  • If players somehow lose a level, this resets their “achievement” need to minimum. (That is, they’ll feel that re-gaining that level is urgently important). I don’t think there’s a way this can happen right now. But if it somehow can, this is what will happen.
  • Landmarks now satisfy a player’s “scenery” need about 10x faster than before. This seems like it’s closer to the right ballpark.
  • Completing a quest now satisfies the “achievement” need by 40 points, previously was 10.
  • Removed “context matrix” UI element, like I’ve been threatening to do for literally years. There is now an “information” icon on the selection header which lets you get to the Info window for whatever you have selected.
  • Players now have a custom, tabbed info window, which presents information in (I think) a more easily-digestible form. (Note that there are no icons in this window yet; everything uses text labels right now. Icons will be coming, once this interface starts to settle down!)
  • Each player can now have a separate ‘info’ window. (Previously, there was just one ‘info’ window which would display information about whatever was currently selected) If you have a large screen, you can now have a dozen or so different windows open, simultaneously showing the status of lots of different players. I’m interested in how people feel about this! I was initially uncertain, but I’ve been coming to like it more and more, particularly since each window has a “focus” button that will re-select that player, so it becomes pretty easy to keep tabs on a couple of favourite players at once, this way.
  • Players now keep memories of what they’ve done in the past, and you can view those in the info window’s “History” tab. This will also show their path on the map screen.
  • Changed simulation time scale. Previously, a simulation day was 12 minutes of real time (or 1.2 minutes, at 10x fast forward). Now a simulation day is 12 HOURS of real time (or 1.2 hours at 10x fast forward). I’m not sure exactly what the best value will be, here; presumably the previous was too short, and this is too long. The problem we were having was that players are playing at approximately a realistic real-world speed, but we’re pretending that days are absurdly short. So a player would log in, thinking they had three hours of (simulated) time to play (about 2 minutes of real time), and would go to do something, but by the time they walked from their home to their destination, those three hours of simulated time would have long since passed, and so they’d rush back home to log out. And by the time they’d reached their home, it would almost be time to log back in on the next simulated day, so they’d then almost immediately log back in, and repeat. Lowering the difference between real time and simulation time now gives players a chance to actually play a reasonable amount before deciding to log out. Downside of this is that it means you’re getting each day’s finances much, MUCH less frequently. This needs design work! Maybe give finances hourly, instead of daily? Anyhow, for the moment, I needed to solve the AI behaviour problem, which meant lengthening the duration of a simulated day so that the AI had time to play before needing to log out.
  • Players who are ghosts returning to respawn points now correctly appear as ghosts after a save/load cycle.
  • Fix characters not setting their model positions correctly when coming into view while the simulation is paused. (They’d appear to still be in an old location until the simulation was unpaused)
  • Related to the above, continue to update animation state of characters which are out of view. This solves the “literally every character jumps all at once, if you run the game for a while with characters out of view, then hit ‘pause’, then move the camera so that they’re in view again, and then unpause”.
  • Disabled the bottom layer of grass clutter, which used to be displayed when the camera was really low to the ground. I sort of like the middle layer more than the bottom layer, even when the camera is at ground level. Will consider this more later; will be easy to revert if we decide we want to.
  • The spinlocks used in certain multithreaded functions are now implemented using atomics. ATOMICS.
  • Removed unnecessary logging messages from release builds.
  • Main and selection headers no longer count as “windows”, and don’t get in the way of the window stack, so you can repeatedly press ‘escape’ to close windows, even if you’d clicked on the headers in between other windows.
  • Minor optimisation to animation calculations.
  • Fix for upgrade from MS10.1 save file format.
  • Fix mouse wheel to not zoom the camera in and out when the cursor is over a non-modal UI element. (This was most annoying when the cursor was over a scrolling UI element, so the camera would zoom whenever you tried to scroll that UI element)

(edit: the game does check your Steam username, but doesn’t write it into the logfile that gets uploaded with crash reports. I might start including that in a future build, but it’s not in this one. Please let me know if you have concerns about this, and we can discuss it!)



This is a fairly minor bugfix build; the big changes are happening in a separate branch, and will (hopefully) be coming in version 0.12.42, later this week. This one has the following fixes:

  • Experimental change to try to fix a freeze during the initial game startup, which is happening as we load the Steam API. This is very rare (I’ve seen it once, and I’ve heard from two other users who have seen it), but when it happens, it seems to stick around. In my case, I had to restart Steam. In another’s, he had to restart his computer. In a third, neither of those have worked. I’m just going to try this, and see whether it sorts out the problem; moving the crash reporting functionality to be initialised after starting up Steam, instead of before. It’s the only thing that was happening before starting Steam, so it’s really the only thing I can think of which might have been conflicting. Let’s give it a try and see if anybody gets this problem ever again!
  • Adds a 100x speed control. Which is probably silly, but it’s there for you to play with.
  • Adds a “Real Money Shop”, where players can spend their real cash dollars on fripperies that give them no in-game advantage, but satisfy their “get loot” need. Right now, the cost for a player to use the “Real Money Shop” is $50, which will be transferred to you instantly. Note that there is not yet any negative feedback for having Real Money Shops, and players aren’t yet really thinking very hard about whether purchases are worth the money. This means you can really abuse them right now. But note that that’s coming soon, and so player satisfaction is likely to crash and burn if you’re abusing them, once those AI systems are added to the game! (again, should be in the very next build, later this week)
  • Game volume has been switched from [0…10] to [0…100], and is now on an exponential curve. Every 10 points on the scale is equivalent to a 6 dB drop in volume (apart from the range [0…10], in which it goes from absolute zero to -54dB). Net effect is that you’ll need to go into your Options screen and turn up the volume, since it will have saved at a value of 10 or lower, which is probably so absurdly quiet that you won’t be able to hear it at all, otherwise.
  • Fixed a potential crash when loading saved games from a very specific build version.
  • Minor fixes to the shape of the ends of 2D line strips.


#0.12.41 - 0.12.45

These were builds debugging startup freezes experienced by some folks, related to Steam integration. Seems to die if I retrieve the user’s Steam account id number, for some reason. Only on Windows, and not 100% of the time. So for the moment, I’m not fetching that piece of data. (I wasn’t using it for anything anyhow)

I’ll look into why this was causing problems at some point. But for right now, back to work on more important stuff. :slight_smile:


(Whoops, didn’t mean to click ‘Post’ yet! This build hasn’t gone live yet; should be up on Steam in about 15 minutes.) This build is now live on Steam!

I really wanted to have this before the weekend, but it’s finally here!

  • Adds some audio ambiance in the map view.
  • Adds an “info window” for buildings, in which you can see how many users are interacting with the building over time, set the price which a user must pay in order to use the building, see recent user thoughts about the building, and so on. Additionally, each type of building has a standard “synchronised” price. If you modify the service price at a synchronised building, that price will be mirrored to all other synchronised buildings of the same type. Or if you turn off the “Sync prices” checkbox, then a building can have a different price than other buildings of its type. Prices may be set to in-game gold values, or to real-world dollars.
  • Players now have a real AI system for deciding whether or not to make purchases. If prices are low, they’ll become happier. If prices are high, they’ll become less happy. Players are more willing to overlook overcharging if they’re addicted to the game.
  • Relabelled “+version” button as “Upgrade”, and changed its appearance.
  • Ground clutter (such as grass) now does a better job of respecting paths.
  • Checkboxes now contain actual checkmarks, instead of eye-searing glowing whiteness.
  • More minor fixes to make loading of old save files work more reliably.
  • Subscribers now remember every building they’ve noticed during the last day. They will always consider those buildings, for their potential actions. Subscribers now remember the prices of every building they’ve visited during the last day. They will not visit those buildings again unless they have enough money to pay the price they remember. (or until they forget the price by not visiting the building for a full day)
  • 1 simulated day now lasts for 1 real hour. (Or 6 real-world minutes, at 10x normal speed. Or 36 seconds, at 100x speed).
  • If a subscriber is frustrated for any reason, and their satisfaction with the game is already at its minimum value (-10), that subscriber will immediately disconnect, without first returning to their home. And they may immediately unsubscribe as well. This handles situations where the player has decided to put a price on respawning using graveyards, or similar practices which might thoroughly block a player; the player is unable to do anything else, and is unable or unwilling to pay the respawn fee, and so logs out and likely unsubscribes as well.
  • Real Money Shops now operate as ‘gold’ stores. They sell packs of 100 gold, at a user-settable price (defaults to 1 dollar). Not sure if this is the right thing to do with them, but they’re really just here to prove out the general concept; they may go away entirely.