PDA

View Full Version : Hello & a few issues.



daedlanth
January 4th, 2014, 20:25
Hello fellow dungeon keepers. I have been using keeperfx_ccp_0_43_complete with a Dungeon Keeper gold edition ISO disk. I'm running 7 pro x64 on a dual core with 4 GB of RAM and 4 GB of statically set VM. I have been experiencing in game crashes when I get a big battle going. Sometimes the crash occurs when I'm grabbing creatures out of the queue. The game worked fine during the earlier levels but has gotten progressively worse in the later levels. The problem got pretty acute during Wood Rhyme. The Blaise End level is worse.

I tried to take a look at the keeperfx_hvlog application. I got an error for file format mystery. :P Huh? Not an app after all? How do I view the mysterious heavylog I've read about? Should I get a GOG disc instead of this ISO from my bro? I just DLed keeperfx a few weeks ago. Is there a patch I've missed that wasn't rolled into that?

I had a pretty decent time with DK on a 98se Microsoft Virtual Machine. It will crash when you let the audio dialogue run during the level selection screen for some reason though. Any ideas? I also have a really sweet 98se box with an original DK install too. Are there any patches for that anywhere? I just have to get another sound card in it. You can't play DK without sound!

:dig: :heal: :dog:
daed

daedlanth
January 4th, 2014, 23:45
I figured out the heavy log app; must have mistakenly clicked the .map file instead of the app.

Here are the last few lines of that big text file:
Sync: tunnelling: Starting
Sync: good_find_enemy_dungeon: The creature WITCH index 451 cannot find an enemy
Sync: good_doing_nothing: No enemy dungeon to perform creature WITCH index 451 task
Navi: creature_can_navigate_to_with_storage_f: setup_person_move_to_position: Route for creature WITCH index 451 from 162, 15 to 163, 14
Navi: path_init8_wide_f: setup_person_move_to_position: Path from 41600, 3968 to 41856, 3712 on turn 112637
Navi: path_init8_wide_f: setup_person_move_to_position: Finished with 1 waypoints, start: (41856,3712), (0,0), (0,0), (0,0), (0,0), (0,0), (0,0), (0,0)
Sync: creature_choose_random_destination_on_valid_adjace nt_slab: Moving thing creature WITCH from (451,162) to (15,163)
Sync: good_doing_nothing: No enemy dungeon to perform creature BARBARIAN index 76 task
Navi: creature_can_navigate_to_with_storage_f: setup_person_move_to_position: Route for creature BARBARIAN index 76 from 202, 27 to 201, 26
Navi: path_init8_wide_f: setup_person_move_to_position: Path from 51840, 7040 to 51584, 6784 on turn 112637
Navi: path_init8_wide_f: setup_person_move_to_position: Finished with 1 waypoints, start: (51584,6784), (0,0), (0,0), (0,0), (0,0), (0,0), (0,0), (0,0)
Sync: creature_choose_random_destination_on_valid_adjace nt_slab: Moving thing creature BARBARIAN from (76,202) to (27,201)
Navi: creature_can_navigate_to_with_storage_f: setup_person_move_to_position: Route for creature VAMPIRE index 36 from 50, 35 to 52, 35
Navi: path_init8_wide_f: setup_person_move_to_position: Path from 12928, 9088 to 13440, 9088 on turn 112637
Navi: path_init8_wide_f: setup_person_move_to_position: Finished with 1 waypoints, start: (13440,9088), (0,0), (0,0), (0,0), (0,0), (0,0), (0,0), (0,0)
Sync: creature_choose_random_destination_on_valid_adjace nt_slab: Moving thing creature VAMPIRE from (36,50) to (35,52)
Sync: place_animating_slab_type_on_map: Starting
Sync: update_things: Finished
Sync: process_rooms: Starting
Sync: process_rooms: Finished
Sync: process_dungeons: Starting
Sync: check_players_won: Starting
Sync: check_players_lost: Starting
Sync: process_dungeon_power_magic: Starting
Sync: process_dungeon_devastation_effects: Starting
Sync: process_entrance_generation: Starting
Sync: generation_due_for_dungeon: Starting
Sync: process_dungeons: Finished
Sync: update_research: Starting
Sync: update_manufacturing: Starting
Sync: process_level_script: Starting
Sync: process_players: Starting
Sync: process_player_instances: Finished
Sync: process_player_states: Starting
Sync: process_players: Doing updates for player 0
Sync: wander_point_update: Starting
Sync: wander_point_update: Starting
Sync: update_player_objectives: Starting for player 0
Sync: process_action_points: Starting
Sync: update_footsteps_nearest_camera: Starting
Sync: process_armageddon: Starting
Sync: lights_stats_debug_dump: Lights: 132 free, 268 used; 252 static, 16 dynamic; for things:208,0,0,0,13,0,0,0,0,0,0,0,0
Check things: Creats140, Objs506, Bods17, Trps49, Drs34, Shts1, Effs0, EffEls81 Othrs10 Total838
Sync: message_update: Starting
Sync: update_all_players_cameras: Starting
Sync: update_player_sounds: Starting
Sync: update_3d_sound_receiver: Starting
Sync: find_nearest_rooms_for_ambient_sound: Starting
Sync: process_3d_sounds: Starting
Sync: update_player_sounds: Finished
Sync: update: Finished
Sync: keeper_screen_redraw: Starting
Sync: setup_engine_window: Starting for size (500,480) at (140,0)
Sync: redraw_display: Starting
Sync: process_pointer_graphic: Starting for view 1, player state 1, instance 0
Sync: set_pointer_graphic: Setting to 0
Sync: redraw_frontview: Starting
Sync: update_explored_flags_for_power_sight: Starting
Sync: draw_frontview_engine: Starting
Sync: setup_engine_window: Starting for size (500,480) at (140,0)
Sync: draw_frontview_engine: Finished
Sync: remove_explored_flags_for_power_sight: Starting
Sync: draw_overlay_things: Starting
Sync: draw_gui: Starting
Sync: update_fade_active_menus: Starting
Sync: draw_active_menus_buttons: Starting with 3 active menus
Sync: gui_activity_background: Starting
Sync: draw_active_menus_buttons: Finished
Sync: draw_gui: Finished
Sync: message_draw: Starting
Sync: draw_power_hand: Starting

mefistotelis
January 5th, 2014, 02:08
Sync: draw_power_hand: Starting

Interesting. It is clear that the game crashed during power hand drawing, but it's hard to tell where exactly it was inside. This function draws the hand, but also small glyphs of creatures held in it and the last picked creature hanging below it.

Try updating to latest nightly build.
Try lowering your screen resolution.

If you will still experience crashes, please look at the log time each time - sometimes KeeperFX is able to write additional information about address of the crash and call stack; it's a series of hexadecimal numbers, so it's not very helpful for you; but I can narrow the area where crash occurred based on this data.

daedlanth
January 5th, 2014, 21:09
Thanks for the quick response! I didn't think I would get the author responding; how cool is that!

I did not change the resolution. It is the standard default that you set. 600x480ish? I'll poke around for the nightly too.

I beat Blaise End last night while saving a lot. That's a tough board IMO.

Obviously you're a programmer mefistotelis so I'll mention another problem I'm having. It is somewhat similar but on another game I really like. I have a sneaking suspicion that something is awry with my hardware. The game is called Pacific Storm. It also crashes on my rig when I'm in a battle or getting out of battle. The game has an auto battle option but the AI stinks and the battle mode is most of the fun anyway. The really crappy part is that it takes a long, long time to set up the strategic side of the game. By the time I get to the juicy part I've got a week of play into the game. It is very annoying as I'm really looking forward to burning San Diego to the ground.

On another note I'm an IT guy too. Network Administration type stuff in private mode. I would like to ask you about your skillset. If you could give me some direction I'll get into some programming. I would like to fix game bugs and help people out too. I would also like to write some fuzzers BTW. Gotta have some 0 day, right? I know hex and binary very well already from college so I have some understanding of where you're going with this. Does Address Space Layout Randomization from M$ make this a little more hairy?

Have a good one & thanks again,

daed

mefistotelis
January 6th, 2014, 00:05
I did not change the resolution. It is the standard default that you set. 600x480ish? I'll poke around for the nightly too.
Yeah, try the nightly.
The simplest way to check in-game resolution is by looking at the right panel - it doesn't scale up, so in higher resolutions it leaves a black rectangle below. If the rectangle is small - that's 640x480. If it's taking half of the screen or more - then your resolution is definitely higher.


I have a sneaking suspicion that something is awry with my hardware. The game is called Pacific Storm. It also crashes on my rig when I'm in a battle or getting out of battle. The game has an auto battle option but the AI stinks and the battle mode is most of the fun anyway.

Hardware problem usually comes out in more random moments. If it's always in the same place - then the application most likely does invalid memory write. If it writes to something irrelevant (ie. currently unused) - game will continue; if it overwrites something important - you have a crash.


I would like to ask you about your skillset. If you could give me some direction I'll get into some programming. I would like to fix game bugs and help people out too. I would also like to write some fuzzers BTW. Gotta have some 0 day, right? I know hex and binary very well already from college so I have some understanding of where you're going with this.

Well, a good start is to try writing a separate tool for something. About language - it depends on which project you'd like to help. As an admin, you may feel closer to PHP/JS/MySQL - open-source projects need sites too, and being able to fix programming error in a site would be a nice addition to your resume. Same goes for Python, Perl or Ruby - those are perfect for writing CRON scripts or back-ends to web-based applications. There aren't many open-source games in these languages, but they are very helpful, especially when searching for job. Also, with this you could start making your own startup.

C and C++ are less often used for admin-related job, so they would actually open a second path for you. If you can keep expanding in two separate branches, this may be a good idea too. This is what you need to work as a programmer or tester.
After enough practice, this may even merge with the scripting language skills - but that does require patience and determination. For example, a big strength of Python is its easy integration with C/C++ modules - making critical parts of the code in C leads to major performance improvement. Largest portals, like Google, Amazon, Yahoo, Facebook - are written in C and C++ in a major part. Why? They spend thousands of dollars on only power required for their servers - every day. Boosting efficiency of a script by 10% by making it half-C saves them tremendous amount of money.

Every portal which gets large enough needs programmers which can merge C/C++ with web server software - those are best-paid programmers.



Does Address Space Layout Randomization from M$ make this a little more hairy?
For KeeperFX - no, there's a complete relocation table in the DLL so OS can load it whenever it wants and wherever it wants. I link to the functions from DLL by exported names, and those are assigned to correct addresses by the OS, so that's not a problem.

Also, I think this functionality is only enabled for modules which have correct flags set - I doubt the OS would force this on a library which was compiled by an old compiler and may contain code which expects linear load.

daedlanth
January 6th, 2014, 19:24
Thanks again Mesto, great advice. I played Mistle last night and it never crashed. There was a tremendous battle at the end too and I was frying everything in sight with lightening; not a single glitch.