NOTE: To avoid wall of text complaints, I'm spoiler-ing each addendum. If you want to know what's going on, feel free to read each section!
So I was super psyched to find 31.01 yesterday with the site update. So psyched, in fact, that I was sure it was an April Fool's joke!
I grabbed my old 40d init file, my graphics, and my favourite tileset and configged 31.01 up all nice just to end up with a hang after selecting something on the main screen. I thought it wouldn't last long, but it lasted about a minute and a half and then a runtime error box popped up telling me that I had somehow killed DF with my insolence or whatever Microsoft is putting in those things nowaday.
I looked in the forums and it seems to have been the graphics set. Okay, so I turn that off. Well it gets to the world gen screen so I think all is well. It gets to around year 800 of history generation and then bam, another runtime error box.
I'm currently testing vanilla DF 31.01 to see if it still wants to crash. It's on year 430 or so, so I'll be back when it's done with my findings.
[ADDENDUMS 1-3]
[ADDENDUM 1]
Also, it's worth noting that I attempted to run it in the Win XP virtual machine to no avail.
[ADDENDUM 2]
Vanilla DF 31.01 does not generate worlds on Win7, apparently. It's set to run in admin mode, but I constantly get runtime errors when it gets near year 800. This time it crashed on year 780. If it's worth anything, it was still the Age of Myth, which may be something related to the megabeasts-lasting-far-too-long bug?
[ADDENDUM 3]
Now I'm running a completely vanilla DF 31.01 (this means absolutely no changes. Just unzipped into a folder and set to making worlds) which I will be using to perform some tests. I am aiming to generate one world for each of the presets and record my findings. Expect them below.
FORMAT: <preset> --> <finished?> --> {IF [finished = false] THEN [<year of crash>/<epoch>]}
LARGE ISLAND --> Worldgen = passed --> Successfully saved
POCKET ISLAND --> SAME
POCKET REGION --> SAME
SMALLER ISLAND --> SAME
SMALLER REGION --> SAME
SMALL REGION --> SAME
At this point, I have decided to terminate this test; obviously some configuration setting is conflicting somewhere. I will test further.
[ADDENDUM 4]
Adding the graphics files and new tileset (but not activating them) does nothing, as expected.
Now I turned the intro off, windowed mode on, activated my chosen tileset (guybrush 16x16), changed windowed display to 800x600 and turned black space on. With this setup, I can generate a pocket world with no trouble. Smaller world generated fine as well. Attempting a small world (as that has a full 1000 years of history). That worked fine. The problem does not seem to be here.
Attempted custom graphics both with and without custom tileset. Runtime error happened upon selecting any main menu item. Stock graphics without custom tileset did NOT cause runtime error. It appears that custom graphics cause the error, possibly due to handling creature graphics. I am going to attempt modifying the custom set I use to remove the creature graphics.
Modified custom set to remove creature graphics appears to remove the runtime error problem! Being unfamiliar with the elements involved, I'm not sure how this might have happened, but it appears that custom graphics and tilesets work just fine FOR DWARVES. Creatures, particularly the specific varieties, may simply be broken for the time being. Worldgen for a custom dwarf graphics on game worked fine.
I'm turning the graphics off and removing the custom graphics set for the remainder of my tests just in case. Resolution set to 1280 by 400 as it was annoying me to see everything all squishy. Worldgen worked fine.
All autosave functions turned on. Initial save turned on. Worldgen passed.
Only features I typically remove are invaders, so that is the only setting there I changed. Invaders are now off. Worldgen passed.
Embark rectangle changed to 6 by 6. Worldgen passed.
Nicknames changed. Dwarf is replace_all, adventure is replace_all and legends centralizes them. Worldgen passed.
[ADDENDUM 5]
So I am one stumped girl. Vanilla DF with these very same modifications didn't want to work properly. The only thing I haven't messed with is grid size, but I believe I am about to do that...
Custom tileset, stock graphics, grid changed to 85x40 with resolution changed to 1360x640. Worldgen passed.
Custom tileset, fixed (no non-dwarf creatures) custom graphics, grid changed to 85x40 with resolution changed to 1360x640. Worldgen passed.
This is confusing! I'm comparing my init files for 40d and 31.01 now.
Custom tileset, fixed custom graphics, grid is 125x40 with 1200x640 resolution. This setup forces the 16x16 graphics into a rough 8x12 shape, which I think looks pretty decent. I don't anticipate this impacting worldgen. It didn't impact worldgen. Still stumped as to where a worldgen crash came in.
Further reviewing my init settings, I turn caveins off. Worldgen passed.
In an odd attempt to recreate the original situation, I now have the original situation almost perfectly duplicated. I'm now genning a large island, like I initially did. History's running, so lets see.
BINGO! I broke it! It crashed in year 175. Init file follows. I don't think which graphics you use matters, nor does tileset. I had it working in the background, so I'm going to try running it in the foreground.
Change this to turn sound off.
[SOUND:ON]
The sound volume runs from 0 (off) to 255 (full). You can set the volume from the ESC options menu as well.
[VOLUME:255]
Change this to skip the wonderful intro movies.
[INTRO:OFF]
This lets you set the starting windowed/fullscreen setting. Can be YES, NO or PROMPT.
[WINDOWED:YES]
This is the size and font for windowed mode. Changing to 800x600 and the 800x600 font might make you happier.
[WINDOWEDX:1360]
[WINDOWEDY:640]
[FONT:Guybrush_square_16x16.bmp]
Full screen info.
[FULLSCREENX:800]
[FULLSCREENY:600]
[FULLFONT:curses_800x600.bmp]
If this is set to YES, the tiles will not be stretched, but rather the game view will be centralized, surrounded by black space. Tiles that are too large will always be compressed rather than running off the screen.
[BLACK_SPACE:YES]
Graphics info, most of it as above. Set GRAPHICS to YES to turn it all on. This will use the "raw/graphics" folder for tile information. Currently this is limited to whatever creature graphics you have downloaded. The game comes with a few pictures to demonstrate. As of April 2010, the Dwarf Fortress Wiki has graphical tilesets available at http://df.magmawiki.com/index.php/Tileset_repository.
[GRAPHICS:YES]
[GRAPHICS_WINDOWEDX:1200]
[GRAPHICS_WINDOWEDY:640]
[GRAPHICS_FONT:Guybrush_square_16x16.bmp]
[GRAPHICS_FULLSCREENX:1280]
[GRAPHICS_FULLSCREENY:800]
[GRAPHICS_FULLFONT:curses_square_16x16.bmp]
[GRAPHICS_BLACK_SPACE:YES]
This is the dimensions in tiles of the display grid. Minimum x is 80. Minimum y is 25. Maximums are 200. Make sure the window size or full screen resolution matches the grid/tile size if you don't want the display to be squashed or stretched. The default windowed font has tiles that are 8x12 pixels, for instance, so for a 80x25 grid, you use a 640x300 window, and for a 125x50 grid, you'd use a 1000x600 window. FULLGRID is used in full screen mode, whether graphics is on or not.
[GRID:125:40]
[FULLGRID:80:25]
Change this to YES to only refresh portions of the screen that need to be refreshed. This can have a significant impact on frame rate, especially for people that have slow frame rates on the title screen. The number refers to how many frames it will redo a printed tile before skipping it, so you might try increasing it a bit. PARTIAL_PRINT only works on certain systems, so you might have to disable it again if you notice your display isn't working properly. Fixes are being investigated.
[PARTIAL_PRINT:NO:2]
Change this to NO if you want to leave save uncompressed (you might want to do this if you are experience save corruption).
[COMPRESSED_SAVES:YES]
Change this to YES to keep the DF window on top of your other windows.
[TOPMOST:NO]
Change this to YES if you want to see an FPS counter at the top left.
[FPS:NO]
Use this to set the maximum frame rate during play. The movies are always capped at 100. A frame in this case is not graphical but related to the movement speed of a creature. A healthy, unencumbered dwarven peasant takes one step every 10 frames.
[FPS_CAP:100]
Use this to set the maximum graphical frame refresh rate during play.
[G_FPS_CAP:50]
This sets the applications vertical synchronization behavior. Changing this to ON can impact your FPS if your G_FPS is high. The other options are ON and DEFAULT. DEFAULT uses whatever settings you have your system at in general.
[VSYNC:OFF]
Change this to LINEAR if you want the texture values to be averaged over the adjacent pixels.
[TEXTURE_PARAM:NEAREST]
Change this to make the dwarfort.exe process have a different priority. From highest to lowest, the options are REALTIME, HIGH, ABOVE_NORMAL, NORMAL, BELOW_NORMAL and IDLE.
[PRIORITY:NORMAL]
Change this to NO if you don't want to have the mouse involved at all.
[MOUSE:YES]
Change this to YES if you'd like to use a BMP for the mouse cursor. The image currently lags when the game is lagging however.
[MOUSE_PICTURE:NO]
Use these to control the automatic saving behavior in the dwarf fortress mode of game. AUTOSAVE can be set to NONE, SEASONAL or YEARLY. This updates your save at these intervals, so that some of your progress will be saved in case of system instability. You can set AUTOBACKUP to YES if you want the updated save to be copied to another folder so that you'll have several copies of your world at different times. Set AUTOSAVE_PAUSE to YES if you want the game to pause every time it autosaves.
[AUTOSAVE:SEASONAL]
[AUTOBACKUP:YES]
[AUTOSAVE_PAUSE:YES]
Set this to YES if you want it to save the game when you start a new fortress. If AUTOBACKUP above is set to YES, it will also create a copy of this new save.
[INITIAL_SAVE:YES]
Set this to NO to make Dwarf Fortress remain in the saved pause state when you load an active game.
[PAUSE_ON_LOAD:YES]
Set this to YES if you want Dwarf Fortress to show the warning window on embark as a confirmation even if there are no issues.
[EMBARK_WARNING_ALWAYS:NO]
You can change these to ALWAYS and NO. More restrictive world parameter settings override these. ALWAYS lets you see the features in the Local view during embark, and NO stops you from looking for features in the site finder (though if you really want to stop the finder, it might be better for you to generate worlds that restrict the use of this feature completely, in which case you don't need to change the settings here).
[SHOW_EMBARK_TUNNEL:FINDER]
Use these options to remove features from the game. Permitted values are YES and NO. Removal might speed the game up in the case of temperature and weather.
[TEMPERATURE:YES]
[WEATHER:YES]
[ECONOMY:YES]
[INVADERS:NO]
[CAVEINS:NO]
[ARTIFACTS:YES]
[ZERO_RENT:NO]
[TESTING_ARENA:YES]
Change this to YES to output the reasons for world map rejection into a file.
[LOG_MAP_REJECTS:NO]
Change these numbers to make the embark rectangle start at a different size. The format is (EMBARK_RECTANGLE:<width>:<height>). Numbers may run from 2 to 16. The map size warning message will go by these numbers.
[EMBARK_RECTANGLE:6:6]
Change these numbers to set the default weights for traffic designations. If you make the last numbers too large, pathfinding might lag.
The format is (PATH_COST:<high>:<normal>:<low>:<restricted>).
[PATH_COST:1:2:5:25]
Alter these options to control how aggressively your dwarves place objects in a container with like items (rather than an empty container). The default options are very aggressive. STORE_DIST_ITEM_DECREASE controls the cap on objects it will consider -- for each object it finds in a container, one tile is removed from its apparent distance to the dwarf, up to this cap. The others control how many tiles are removed for each combination type for any match at all. For instance, if ITEM_DECREASE is set to 20, and SEED_COMBINE is set to 100, a dwarf carrying seeds will see a seed bag with 15 seeds as 115 tiles closer than it actually is (and thus pass up any empties within that distance), whereas a seed bag with 30 seeds would be treated as 120 tiles closer (because it hits the ITEM_DECREASE cap). Values from 2 to 1000 are permitted. Before these init options, the behavior was roughly ITEM_DECREASE 2, SEED_COMBINE 2 and the rest at 1000.
[STORE_DIST_ITEM_DECREASE:20]
[STORE_DIST_SEED_COMBINE:1000]
[STORE_DIST_BUCKET_COMBINE:1000]
[STORE_DIST_BARREL_COMBINE:1000]
[STORE_DIST_BIN_COMBINE:1000]
Change this to YES to disallow pets from coffin burial as the default option.
[COFFIN_NO_PETS_DEFAULT:NO]
Use these to set the color of wounded body parts. The format is <foreground color>:<background color>:<brightness>.
[WOUND_COLOR_NONE:7:0:1] No recorded active wounds on the part. Default = white
[WOUND_COLOR_MINOR:6:0:0] Any damage that doesn't have functional/structural consequences (might be heavy bleeding though). Default = brown
[WOUND_COLOR_INHIBITED:6:0:1] Any muscular, structural or functional damage without total loss. Default = yellow
[WOUND_COLOR_FUNCTION_LOSS:3:0:1] An important function of the part is completely lost, but the part is structurally sound (or at least partially intact). Default = bright cyan
[WOUND_COLOR_BROKEN:4:0:1] The part has lost all structural integrity or muscular ability. Default = bright red
[WOUND_COLOR_MISSING:0:0:1] The part is completely gone. Default = dark gray
This controls the display of areas that are far below outside. The format is SKY:<character>:<foreground color>:<background color>:<brightness>. The <character> can be either an ASCII tile number or a character in quotes, like '#'.
[SKY:178:3:0:0]
As above, for inside/subterranean areas.
[CHASM:250:0:0:1]
This controls the "IDLERS: <number>" that is displayed in dwarf mode. You can set it to TOP, BOTTOM or OFF.
[IDLERS:TOP]
You can set the maximum population of your fortress here. Keep in mind that your population must be at least 80 to get a king and 100 to obtain the current game features.
[POPULATION_CAP:200]
This allows you to control the number of babies+children in your fortress. The first number is an absolute cap on the number of babies+children. The second is a percentage of the current number of adults in your fortress (the default is the essentially meaningless 1000% here). The lower number is used as the cap. The cap only prevents further pregancies, so migrant children, multiple births and existing pregnancies from old saves can still push you over the cap. Setting either number to zero will disallow pregnancies in the fortress.
[BABY_CHILD_CAP:100:1000]
If you don't like the ,.`' ground, try setting this to NO. The ground will turn into periods only.
[VARIED_GROUND_TILES:YES]
If you'd like your engravings to start off looking the same (you can toggle them on individual later), set this to YES.
[ENGRAVINGS_START_OBSCURED:NO]
If you get annoyed by seeing items like *<*sword*>* you can
get rid of the outside ** by setting this to NO.
[SHOW_IMP_QUALITY:YES]
Set this to YES to display fluids as numbers indicating depth.
[SHOW_FLOW_AMOUNTS:NO]
If you'd prefer to leave the history behind every engraving for your adventurers to discover, then set this to NO.
[SHOW_ALL_HISTORY_IN_DWARF_MODE:YES]
This controls the number of milliseconds that must pass before a held key sends a repeat press to the game. You might need to adjust this.
[KEY_HOLD_MS:150]
This controls the number of milliseconds that must pass before input works again after the view recenters on an event in dwarf mode.
[RECENTER_INTERFACE_SHUTDOWN_MS:0]
This controls "more" in adventure mode. If MORE is set to NO, all announcements will be skipped. DISPLAY_LENGTH controls how many lines are printed before it gives you the "more" prompt.
[MORE:YES]
[DISPLAY_LENGTH:23]
Set this to YES if you want traps to affect you in adventure mode. This is not recommended -- there are lockup issues with cage traps, and you cannot disarm any of the traps yet, so they effectively stops you from exploring your old fortresses.
[ADVENTURER_TRAPS:NO]
Set this to NO if you want the game to recenter on your adventurer only when you've gotten close to the edge of the view.
[ADVENTURER_ALWAYS_CENTER:YES]
This controls the up/down views in adventure mode. The first parameter can be OFF, UNHIDDEN, CREATURE or ON. UNHIDDEN makes the view appear when it contains any unhidden square. CREATURE makes the view appear when it contains a creature. The second parameter is the size of the view. It can be 3, 5, 7 or 9. A smaller view lets it stack more of them in the column (3 at size 5, and 5 at size 3).
[ADVENTURER_Z_VIEWS:UNHIDDEN:9]
You can use these to say how nicknames are displayed in each mode
Options are REPLACE_FIRST, CENTRALIZE (between first and last), REPLACE_ALL
[NICKNAME_DWARF:REPLACE_ALL]
[NICKNAME_ADVENTURE:REPLACE_ALL]
[NICKNAME_LEGENDS:CENTRALIZE]
These are the display colors in RGB. The game is actually displaying extended ASCII characters in OpenGL, so you can modify the colors.
[BLACK_R:0]
[BLACK_G:0]
[BLACK_B:0]
[BLUE_R:0]
[BLUE_G:0]
[BLUE_B:128]
[GREEN_R:0]
[GREEN_G:128]
[GREEN_B:0]
[CYAN_R:0]
[CYAN_G:128]
[CYAN_B:128]
[RED_R:128]
[RED_G:0]
[RED_B:0]
[MAGENTA_R:128]
[MAGENTA_G:0]
[MAGENTA_B:128]
[BROWN_R:128]
[BROWN_G:128]
[BROWN_B:0]
[LGRAY_R:192]
[LGRAY_G:192]
[LGRAY_B:192]
[DGRAY_R:128]
[DGRAY_G:128]
[DGRAY_B:128]
[LBLUE_R:0]
[LBLUE_G:0]
[LBLUE_B:255]
[LGREEN_R:0]
[LGREEN_G:255]
[LGREEN_B:0]
[LCYAN_R:0]
[LCYAN_G:255]
[LCYAN_B:255]
[LRED_R:255]
[LRED_G:0]
[LRED_B:0]
[LMAGENTA_R:255]
[LMAGENTA_G:0]
[LMAGENTA_B:255]
[YELLOW_R:255]
[YELLOW_G:255]
[YELLOW_B:0]
[WHITE_R:255]
[WHITE_G:255]
[WHITE_B:255]
I am going to point out that I genned a pocket world before I genned the large island in a second test and the pocket world genned fine while the large world indeed crashed.
Keeping the gen of a large island in the foreground let me see that in several spots it hung for a while before continuing the gen. History had it gen very slowly and it paused several times. Finally it paused around 304, made it to 306 and then gave a runtime error. Something with the large maps is making DF crazy! However, with pure vanilla (no init changes) DF, there was no problem! I'm going to slowly revert the init options back to normal while genning large maps now. Previously I was genning small ones as they genned much faster and had full history. Let's see what I find.
[ADDENDUM 6]
It seems as if this is a memory issue. Every time I get a runtime error during worldgen, my memory usage is at 83%. I did some digging and a few people are reporting that it only happens with graphics on. I reverted to using the init file I posted in Addendum 5. I turned off graphics and noticed an immediate difference in memory use. I'm trying out genning a large island now.
Whew, it worked!
So, mem usage with graphics off... Before I started DF it was at 20%. With DF started after I chose the world gen choice on main menu, it was at 25%. At the end of world gen it was at 57%.
Mem usage with graphics on? Whew... Before I started DF it was at 20% again... Then I chose world gen. It skyrocketed to 68%. I already know it throws a runtime at around 83%.
It looks like this problem is some kind of memory leak. A quick workaround would be to disable graphics, gen your world, then re-enable them.
If DF is crashing with graphics on just from selecting a menu item, then it is probably looking to load the graphic set, yet encounters some problem when assigning graphics to specific creatures.