View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002478 | FSSCP | cutscenes | public | 2011-08-01 18:40 | 2012-07-02 01:06 |
Reporter | jon118 | Assigned To | Goober5000 | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | Macbook Pro (7,1) | OS | Mac OS X "Snow Leopard" | OS Version | 10.6.8 |
Product Version | 3.6.13 | ||||
Target Version | 3.6.14 | Fixed in Version | 3.6.14 | ||
Summary | 0002478: "No Debriefing for mission: SM3-10.fs2" screen and ending cutscenes will not play if player reaches jump node successfully | ||||
Description | This has been reported before by other users on Mantis, but was closed due to lack of a complete bug report and log file. So here is a complete thorough report of the problem as I reported on the support thread here: http://www.hard-light.net/forums/index.php?topic=76521.0 Here is a thorough and exhaustive description of the problem: See attachments for the saves (pilot files, before AND after the end mission), and "fs2_open.log", and screenshot. Here are the details of what I'm running: - Build 3.6.13 - nightly build FS2_Open-Inferno (debug)-20110728_r7384 - System: Macbook Pro (7,1) - Intel Core 2 Duo - 2.4 GHz - 4 GB RAM - Graphics System: NVIDIA GeForce 320M - 256MB VRAM - OS: Mac OS X "Snow Leopard" 10.6.8 --- Effects of bug: 0000001 - Causes a "No Debriefing for mission: SM3-10.fs2" screen to be displayed. 0000002 - Causes the ending movies "End Game" and "End Game Part 2a" not to play or be added to the Cutscenes list in the Tech Room--making the end of the game very unsatisfying to the player. --- Please let me know if there is anything else I can do to be of help. The only part of the log file that seems to be relevant is the very end. So to just make things even more convenient, here is that part: Logfile after "winning" the last mission and successfully making it to the node and the movies not playing: ... ... ... Frame 29128: Could not create debris, no more slots left Frame 29128: Could not create debris, no more slots left Frame 29128: Could not create debris, no more slots left ANI Head-TP3b.ani with size 160x120 (6.2% wasted) ANI Head-CM5c.ani with size 160x120 (6.2% wasted) Frame 31786 too long!!: frametime = 0.372 (0.372) ANI Head-TP1b.ani with size 160x120 (6.2% wasted) Frame 32570 too long!!: frametime = 0.372 (0.372) Frame 33066 too long!!: frametime = 0.406 (0.406) Got event GS_EVENT_PLAYER_WARPOUT_START (41) in state GS_STATE_GAME_PLAY (2) Got event GS_EVENT_PLAYER_WARPOUT_DONE_STAGE1 (44) in state GS_STATE_GAME_PLAY (2) Hit target speed. Starting warp effect and moving to stage 2! Got event GS_EVENT_PLAYER_WARPOUT_DONE_STAGE2 (45) in state GS_STATE_GAME_PLAY (2) Hit warp effect. Moving to stage 3! Got event GS_EVENT_PLAYER_WARPOUT_DONE (46) in state GS_STATE_GAME_PLAY (2) Player warped out. Going to debriefing! Got event GS_EVENT_DEBRIEF (33) in state GS_STATE_GAME_PLAY (2) Unloading in mission messages Storing stats now Frame 33628 too long!!: frametime = 0.332 (0.332) Frame 33628 too long!!: frametime = 0.269 (0.269) Got event GS_EVENT_MAIN_MENU (0) in state GS_STATE_DEBRIEF (27) Got event GS_EVENT_QUIT_GAME (5) in state GS_STATE_MAIN_MENU (1) Freeing all existing models... ... Log closed, Mon Aug 01 08:30:45 2011 Also, here is the important part of the logfile after "losing" the last mission and NOT making it to the jump node, and the ending movie playing (and no "No Debriefing for mission: SM3-10.fs2" screen being displayed): ... ... ... Frame 27556: Could not create debris, no more slots left Frame 27556: Could not create debris, no more slots left Frame 27556: Could not create debris, no more slots left Beam couldn't find a good object model/type!! (0) Beam couldn't find a good object model/type!! (0) Beam couldn't find a good object model/type!! (0) Beam couldn't find a good object model/type!! (0) Killing beam at initial fire because of illegal targeting!!! ANI Head-TP3a.ani with size 160x120 (6.2% wasted) ANI Head-CM2a.ani with size 160x120 (6.2% wasted) ANI Head-CM5b.ani with size 160x120 (6.2% wasted) Frame 30225 too long!!: frametime = 0.373 (0.373) ANI Head-CM2c.ani with size 160x120 (6.2% wasted) Frame 30904 too long!!: frametime = 0.387 (0.387) ANI Head-VP1a.ani with size 160x120 (6.2% wasted) Got event GS_EVENT_END_CAMPAIGN (59) in state GS_STATE_GAME_PLAY (2) Unloading in mission messages Storing stats now MVE: Buffer underun (First is normal) MVE: Buffer underun (First is normal) Got event GS_EVENT_MAIN_MENU (0) in state GS_STATE_END_OF_CAMPAIGN (45) SOUND: /Users/cliffgordon/fs2open_0/projects/Xcode/../../code/sound/ds.cpp:698 - OpenAL error = 'Invalid Name' Frame 32510 too long!!: frametime = 225.258 (225.258) Got event GS_EVENT_QUIT_GAME (5) in state GS_STATE_MAIN_MENU (1) Freeing all existing models... ... Log closed, Mon Aug 01 09:59:02 2011 | ||||
Steps To Reproduce | Procedure to reproduce problem: As far as I can tell, just play through the game to the end (or load my "before" pilot) and successfully get to the node, using the 3.6.13 build on a Mac. (I don't think you need my specific OS version, graphics chip, or nightly build to reproduce). If you make it to the jump node, then a debriefing screen will display showing "No Debriefing for mission: SM3-10.fs2" and right above that in the debug build: "[name: SM3-10.fs2, mod: 08/18/09 at 13:30:00]" and the ending movies ("end game", "end game part 2a") will NOT play, and the movies will NOT be added to the list of cutscenes playable in the Tech Room. However, If you DON'T successfully make it to the jump node, then the end movie, and pilot death movie ("end game", "end game part 2b"), WILL both play and be added to the playable cutscenes (though the "end game part2a" cutscene will still NOT be played or added, or course). | ||||
Tags | cutscene, Mac, SM3-10.fs2 | ||||
related to | 0002482 | closed | Goober5000 | After you complete sm3-10.fs2 the campaign does not "end" |
2011-08-01 18:40
|
|
2011-08-01 18:42
|
|
|
Please ignore the "0000001" and "0000002" links under the section "Effects of bug" above. They were automatically added by mantis erroneously because I numbered the bug effects with a number symbol. |
|
Also, look inside the "Saves.zip" for the complete logfiles. |
|
Also, I just noticed Mantis didn't include the steps to reproduce the bug that I gave it. So here it is again: Procedure to reproduce problem: As far as I can tell, just play through the game to the end (or load my "before" pilot) and successfully get to the node, using the 3.6.13 build on a Mac. (I don't think you need my specific OS version, graphics chip, or nightly build to reproduce). If you make it to the jump node, then a debriefing screen will display showing "No Debriefing for mission: SM3-10.fs2" and right above that in the debug build: "[name: SM3-10.fs2, mod: 08/18/09 at 13:30:00]" and the ending movies ("end game", "end game part 2a") will NOT play, and the movies will NOT be added to the list of cutscenes playable in the Tech Room. However, If you DON'T successfully make it to the jump node, then the end movie, and pilot death movie ("end game", "end game part 2b"), WILL both play and be added to the playable cutscenes (though the "end game part2a" cutscene will still NOT be played or added of course). |
|
Does the same thing happen with an Antipodes 8 build? |
|
I'm working on testing that right now. I'll let you know in a few days. |
2011-08-04 15:25
|
|
|
The same thing happens with Antipodes 8 if I use my saved pilot (from 3.6.13 at the final mission). But that also happens with 3.6.12 also (if I use my saved pilot from 3.6.13). So I don't think that test is very helpful until I can play from the beginning using a new pilot. With Antipodes 8 I wasn't able to start from a new game and play to the end, due to it making my Sidewinder Joystick go nuts (ship continuously rotates to the right uncontrollably in Antipodes 8, but not in regular 3.6.13 builds--but that's another issue). So I used my saved pilot from the regular build and played the last mission with the keyboard. But because the saved pilot from 3.6.13 seems to ALWAYS trigger the bug, regardless of the build used, it appears something may be corrupting the pilot file at some other point in the game. Once I can actually play Antipodes 8, I'll try playing through to the end. But for now, it's simply unplayable for me due to the aforementioned joystick calibration problem. I'll have to play through 3.6.12 again to be sure, but I believe the bug did NOT happen when using a clean install of 3.6.12 and starting from a new pilot. In case it's helpful, I uploaded a logfile from Antipodes 8 above (using my saved pilot from 3.6.13). Though it doesn't appear to show anything different than the 3.6.13 logfile. It seems to me that it should be at least a little easier to figure out what's causing this, considering that my saved pilot always causes the bug in a 100% repeatable and predictable manner, regardless of build (hopefully?). |
|
And just to be clear: Playing through to the end on the 3.6.13 builds ALWAYS causes this bug for me (at least in the Mac version). I've played through twice, using a clean install of everything, and a new pilot each time. 100% repeatable on my end. |
|
Well, this sounds more and more like pilot file corruption. Which is something Antipodes 8 fixes; however if you import an old pilot file (a process that _isn't guaranteed to work_), corruption may import over as well. My question was more "Can you recreate this bug using a completely new pilot file with AP8?". Sorry for not being clear. In the end, this is pretty much pointless. Noone will really look at pilot file issues with the old pilot files, because there's a replacement already on the horizon. the best option, if you encounter it, is to create a new pilot, as onerous as that may sound. |
|
Just for completeness sake, here is the solution to this bug (though I'm sure everyone is aware of this by now): Re-Adding the following code to the "case GS_EVENT_DEBRIEF" section of "freespace.cpp" fixes the bug completely: if (Campaign_ended_in_mission && (Game_mode & GM_CAMPAIGN_MODE) /*&& !stricmp(Campaign.filename, "freespace2")*/) { gameseq_post_event(GS_EVENT_END_CAMPAIGN); } else { gameseq_set_state(GS_STATE_DEBRIEF); } Problem is unrelated to pilot file corruption, and is caused by the lack of logic leading to a "GS_EVENT_END_CAMPAIGN" state when the player warps-out while in the jump node in the last mission. Re-adding the above code fixes the bug. Though a more elegant code solution may be preferable. |
|
Also, I have confirmed that this bug is still present in 3.6.14 RC4 and Antipodes. |
|
How did I miss this ticket? Thanks for the thorough testing. Can you compare it with retail as detailed in the other ticket? |
|
No problem. This bug did *not* happen in retail (or in any FSO branch before 3.6.12), as the below code was still present up until, and including, FSO branch 3.6.10--in 3.6.12 it was mistakenly commented out (in 3.6.13, the comments themselves were completely removed; so please see the "freespace.cpp" of the 3.6.12 branch for the code I'm referring to). So, just to be crystal clear: If you go to the "case GS_EVENT_DEBRIEF" section of "freespace.cpp" in the 3.6.12 branch and copy the commented-out code (see below), and then paste it into the same place in the "freespace.cpp" of the 3.6.14 RC4 branch (and un-comment it), then it will fix the bug and return the behavior of the final cutscene to the *original retail* behavior (in other words, the cutscene will work again. Right now it *never* plays under any circumstance, since the logic doesn't exist to make it play). In the "freespace.cpp" of branch 3.6.12 it says this: case GS_EVENT_DEBRIEF: // This IF block isn't needed because it's not part of the end-campaign logic. // The supernova code and end-campaign sexp handle it all. - G5K // // // did we end the campaign in the middle of a mission? // if (Campaign_ended_in_mission && (Game_mode & GM_CAMPAIGN_MODE) /*&& !stricmp(Campaign.filename, "freespace2")*/) { // gameseq_post_event(GS_EVENT_END_CAMPAIGN); // } else { // gameseq_set_state(GS_STATE_DEBRIEF); // } // gameseq_set_state(GS_STATE_DEBRIEF); //Player_multi_died_check = -1; break; So, in the 3.6.14 branch, it needs to be changed from this: case GS_EVENT_DEBRIEF: gameseq_set_state(GS_STATE_DEBRIEF); break; To this: (or to something similar/better/less-hacky, if you want): case GS_EVENT_DEBRIEF: // This IF block isn't needed because it's not part of the end-campaign logic. // The supernova code and end-campaign sexp handle it all. - G5K // Edit: Woops! Actually this IF block *IS* needed in order for the final cutscene // to play properly, and is a vital part of the final campaign logic--though a // bit of a hack that has been present from the original Volition code, // and that could probably use some improving. // Did we end the campaign in the middle of a mission? Play final "victory" cutscene. if (Campaign_ended_in_mission && (Game_mode & GM_CAMPAIGN_MODE) /*&& !stricmp(Campaign.filename, "freespace2")*/) { gameseq_post_event(GS_EVENT_END_CAMPAIGN); } else { gameseq_set_state(GS_STATE_DEBRIEF); } break; Thanks for looking into this Goober! |
|
One additional note regarding this bug's (2478) relationship to Mantis issue 2482: Once this bug (2478) is fixed and the cutscenes once again work like retail and *do* play for both the "good" and "bad" ending, it then causes the campaign to not be ended (just like in retail), as there is no "GS_STATE_DEBRIEF" after the cutscene finishes playing. Which then leads to the minor "bug" mentioned in 0002482 However, if the player did *not* get to the node before the supernova, and dies, and gets the "bad" ending, they may not *want* to have the campaign end and have to start over! As they probably would want to be able to play the end again and actually get to the node in time! This may be why the Volition developers left the campaign un-ended. Though that's something to be addressed in the 2482 Mantis issue. |
|
Okay, finally got back to looking at this. As it turns out, the code follows two different paths depending on how you leave the mission, which is what was confusing me. If you die, it goes through the normal supernova screen which worked as you would expect. But if you jump out successfully, it goes to the debriefing screen, which is where I erroneously removed code. I'm now putting the code back in. |
|
Marking as fixed. Thanks to jon118 and Yarn for their detective work. |
fs2open: trunk r8806 2012-05-20 15:25 Ported: N/A Details Diff |
restore code that was inadvertently deleted, fixing Mantis 0002478 |
Affected Issues 0002478 |
|
mod - /trunk/fs2_open/code/starfield/supernova.cpp | Diff File | ||
mod - /trunk/fs2_open/code/parse/sexp.cpp | Diff File | ||
mod - /trunk/fs2_open/code/mission/missioncampaign.h | Diff File | ||
mod - /trunk/fs2_open/code/mission/missioncampaign.cpp | Diff File | ||
mod - /trunk/fs2_open/code/freespace2/freespace.cpp | Diff File | ||
fs2open: fs2_open_3_6_14 r8942 2012-07-01 21:07 Ported: N/A Details Diff |
Backport: Trunk r8806; restore code that was inadvertently deleted, fixing Mantis 0002478 |
Affected Issues 0002478 |
|
mod - /branches/fs2_open_3_6_14/code/freespace2/freespace.cpp | Diff File | ||
mod - /branches/fs2_open_3_6_14/code/mission/missioncampaign.cpp | Diff File | ||
mod - /branches/fs2_open_3_6_14/code/mission/missioncampaign.h | Diff File | ||
mod - /branches/fs2_open_3_6_14/code/parse/sexp.cpp | Diff File | ||
mod - /branches/fs2_open_3_6_14/code/starfield/supernova.cpp | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-08-01 18:40 | jon118 | New Issue | |
2011-08-01 18:40 | jon118 | File Added: Saves.zip | |
2011-08-01 18:42 | jon118 | Tag Attached: cutscene | |
2011-08-01 18:42 | jon118 | Tag Attached: Mac | |
2011-08-01 18:42 | jon118 | Tag Attached: SM3-10.fs2 | |
2011-08-01 18:42 | jon118 | File Added: No-Ending-Debriefing.png | |
2011-08-01 18:46 | jon118 | Note Added: 0012751 | |
2011-08-01 18:48 | jon118 | Note Added: 0012752 | |
2011-08-01 19:05 | jon118 | Note Added: 0012753 | |
2011-08-02 12:29 | The_E | Note Added: 0012754 | |
2011-08-03 20:41 | jon118 | Note Added: 0012755 | |
2011-08-04 15:25 | jon118 | File Added: Antipodes_8_fs2_open.log | |
2011-08-04 16:06 | jon118 | Note Added: 0012756 | |
2011-08-04 16:10 | jon118 | Note Added: 0012757 | |
2011-08-04 16:42 | The_E | Note Added: 0012759 | |
2011-08-04 16:43 | The_E | Status | new => closed |
2011-08-04 16:43 | The_E | Resolution | open => won't fix |
2011-10-30 07:58 | Goober5000 | Relationship added | related to 0002482 |
2012-01-30 20:52 | jon118 | Note Added: 0013201 | |
2012-01-30 20:52 | jon118 | Status | closed => feedback |
2012-01-30 20:52 | jon118 | Resolution | won't fix => reopened |
2012-01-30 23:26 | jon118 | Note Added: 0013202 | |
2012-01-30 23:26 | jon118 | Status | feedback => new |
2012-01-31 05:42 | Goober5000 | Note Added: 0013206 | |
2012-01-31 05:42 | Goober5000 | Assigned To | => Goober5000 |
2012-01-31 05:42 | Goober5000 | Status | new => acknowledged |
2012-01-31 05:42 | Goober5000 | Description Updated | |
2012-01-31 16:20 | jon118 | Note Added: 0013209 | |
2012-01-31 16:34 | jon118 | Note Edited: 0013209 | |
2012-01-31 16:36 | jon118 | Note Edited: 0013209 | |
2012-02-01 15:42 | jon118 | Note Added: 0013223 | |
2012-02-01 15:47 | jon118 | Note Edited: 0013223 | |
2012-02-01 16:17 | jon118 | Note Edited: 0013223 | |
2012-02-04 20:53 | jon118 | Note Edited: 0013209 | |
2012-05-20 19:23 | Goober5000 | Note Added: 0013575 | |
2012-05-20 19:23 | Goober5000 | Changeset attached | => fs2open trunk r8806 |
2012-05-20 19:25 | Goober5000 | Note Added: 0013576 | |
2012-05-20 19:25 | Goober5000 | Status | acknowledged => resolved |
2012-05-20 19:25 | Goober5000 | Resolution | reopened => fixed |
2012-05-20 19:25 | Goober5000 | Fixed in Version | => 3.6.14 |
2012-05-20 19:55 | Goober5000 | Target Version | => 3.6.14 |
2012-07-02 01:06 | Zacam | Changeset attached | => fs2open fs2_open_3_6_14 r8942 |