Open hackerb9 opened 5 years ago
No one is forcing you to use the feature @hackerb9, Very unusual for you to open an issue ticket. Sourceports of many games have features such as this. This is a nonissue. Really weird.
I'll let @NagyD decide if it is an issue or not.
@ice44: Please remember that you are not the only type of person who will play this game. For many people, SDLPoP will be their first and possibly only experience of Prince of Persia. Cheats are great for veterans, but can spoil an experience for people just discovering a game. And adding "QuickSave" is not a small cheat.
At what levels you were allowed to save is part of the original game. It was actually a design decision that Jordan Mechner made when creating Prince of Persia. Take a look in the "Mods" settings in SDLPoP. It has customization options that are labeled
Saving Allowed: First Level Saving Allowed: Last Level
However, no matter what those are set to, even when all SDLPoP Customizations are turned off, one can still save at any point.
While it may not matter to you, @ice44, I think it matters to the developers who wrote SDLPoP. Why would people go to all the bother to make a perfect SDL port of Prince of Persia, and even add the ability to modify when saving is allowed, if they were just going to remove that element of the game?
Finally, @ice44, your suggestion that I not use the feature is misguided. I actually did double check before starting to play that the Setting labelled "Enable Cheats" was OFF. SDLPoP currently gives no indication that originally you weren't allowed to save on certain levels.
Thanks for the reply, @hackerb9. I appreciate the thoughtfulness and thorough nature of your response, you made your point crystal clear, I can respect that. I can only speak for myself and my own experience with sourceports and those akin to it. Never have I personally been confused by a feature or had an issue gauging whether or not it was a feature present in its release form. I believe the main issue the design philosophy of the port, it appears the main draw of this particular port is its enhanced features. @NagyD can correct me if I am wrong, but his intent was more than just one of preservation, or a 1-to-1 copy. You could just run the game through DOSBox to achieve that. I suggest you familiarize yourself with more sourceports, or ports of any kind, and the specific goal each developer has for them. Quicksaving is not a cheat. It's a feature of the port and already has an option in the menu to disable if you wish.
You both make interesting points. In my opinion, the issue is not really that quick saving is enabled (available) by default, but that players may be unaware that this functionality was unavailable in the original game.
Therefore I suggest three changes:
The "SAVE GAME" and "LOAD GAME" entries in the main menu that can be accessed with ESC could be renamed to "QUICK SAVE - F6" and "QUICK LOAD - F9". That is, removal of "GAME", because the player is playing a game, so it's already clear that loading and saving is about the game, and adding "QUICK" with its shortcuts will emphasize what exactly the entries trigger.
On the SDLPoP info screen at the start of the program, the line about quick saving could be replaced with a line that says an in-game menu is available via the ESC key. This provides the player with more information, because they learn about the menu, and the menu will tell them about quick saving.
On the main menu, one or two sentences could be added under the menu entries that explain that quick saving functionality was not available in the original game. That players who want to use traditional saving can use Ctrl+g to save, and then (during the title sequence) Ctrl+l to load.
This solution should be satisfactory to both players who prefer the traditional experience, and players who would like access to quick saving without having to enable it.
DOSBox - except for some SVN builds - does not have quick saving, but many emulators do (e.g. ZSNES, Mednafen). It can impact difficulty and tension, but can also prevent frustration. I think easy access to quick saving for PoP is good, given how (surprisingly) difficult the game is - guards are - for amateur players. Many players who use DOSBox can't even get to level three (ex, ex; I see this happen all the time).
Nowadays, the number of available good games is huge. Of the more than 2k free games on Steam alone, many are entertaining. I think immediate access to quick saving may be the only reason amateur players even persevere and go through the entire game.
That sounds like a satisfactory solution to me. While it'd be nice if there was a single "Original Mode" switch, my main issue was lack of information. I had made sure all mods, bug fixes, and cheats were turned off, so I thought I was good.
(I had also thought, "Boy, the people back in the 80's sure complained a lot for such an easy game. Maybe we're just better at playing games than they were?" Now that I'm playing it without Quick Save, I see what they were talking about. PoP is a lot more challenging --- and fun!)
Thank you for considering my bug report and coming up with a reasonable solution.
I still don't see a need to change anything. Quicksaving and Quickloading gives you a time penalty. It makes no sense to change something based on one person's ignorance, and I mean that with no disrespect. The only person who seems to have this issue is you @hackerb9. It's on you to familiarize yourself with the options menu, not the developer to hold your hand.
Changing the port to suit your needs alone seems massively self-centered. The reasons for doing so are illogical to begin with.
May I also repeat again. If you, @hackerb9, do not like the feature, don't use it. It's that simple. The option to toggle it on and off is right there in the options menu. It isn't at all difficult or hard to do.
"I've never played Prince of Persia before SDLPoP ..." This is the crux of the matter. If you had familiarized yourself with the game and not assumed so many things, you would not be having this problem.
This is, like the Reddit post @EndeavourAccuracy linked, a solution in search of a problem. There is no problem, only user error in this instance.
(emphasis mine)
It makes no sense to change something based on one person's ignorance, [...]
Two problems with your recent posts, @ice44.
The first is that you're ignoring the scope of my previous post, in which I acknowledged that there is an issue, namely that players may be unaware that the quick saving functionality was unavailable in the original game. It's the reason I suggested three changes be made to this remake. In other words, there are now two people who recognize there's a quick saving related issue.
The second is that you calling @hackerb9 ignorant is either unjustified or helps our case. Let me explain. As you know, PoP gameplay is characterized by obstacles that impede exploration. Gates that are open only temporarily, spikes, loose floors that fall, chompers, guards, gaps to jump over, high structures to climb, etc. With only limited heal potions to recover. Whether or not quick saving is available has a massive impact on the gaming experience. DOSBox playthroughs of PoP on YouTube can be emotional roller coasters, characterized by tension and, after perseverance and practice, relief and the sweet taste of victory. If quick saving functionality is available, virtually all obstacles no longer pose a challenge, which significantly alters the gameplay experience. The point that @hackerb9 made, is that players who are unaware that quick saving was unavailable in the original game are also unaware that their gameplay experience (thus) deviates from the (artistic) vision of the original game's creator. Since @hackerb9 has experienced first hand that this is happening, and articulated the problem, he's the opposite of ignorant in this context; he's aware of the relevant information/facts. Now, you could say, he's ignorant because he does not know quick saving was not available and that using it results in a time penalty, but all you're doing then is acknowledging that players are unaware of how quick saving is changing the gaming experience.
Did you fully read my post and @hackerb9's response to it, and did you understand that it suggests a compromise between his original suggestion and your initial feedback to keep the game as-is? By the way, I think your confrontational style of communication may not be very constructive. This issue and its discussion are not a battle, with only one of us emerging victorious.
Never was it my intent to fight or battle. By saying "and I mean that with no disrespect." I believed my intent would show through. I'm sorry I wasn't clear enough. Thank you for letting me know. It's hard to get across intent through the internet. I will do better to word my responses more carefully.
I did read your post @EndeavourAccuracy, and I humbly disagree. I think the situation is quite clear. I do not see a reason to change anything at all, that's just how I see it, but I am certainly not the developer.
I will not get into what your intent was, @ice44, but I will mention for your future reference, that your messages have come across as being dismissive and disrespectful.
"I've never played Prince of Persia before SDLPoP ..." This is the crux of the matter. If you had familiarized yourself with the game and not assumed so many things, you would not be having this problem.
Both novices and veterans will play SDLPoP. You suggest that novices should not be "ignorant". Yet, that's what novices are. We all start out not knowing things. That's why when one starts up SDLPoP, it has a friendly welcome screen that tells how to save and load the game. Veterans don't need that; it's only there to help people learn.
@EndeavourAccuracy's suggestion is a reasonable one in that it teaches novices without actually requiring any changes in the code or defaults. It just changes some text.
Personally, I still think SDLPoP should default to having Quick Save disabled because, while it may make the game less frustrating, the challenge is part of what I believe makes Prince of Persia such a great game. Yes, many would never complete Prince of Persia without Quick Save — I certainly haven't —- but I'm of the school of thought that that's a good thing. Giving people a better journey is more important than getting more people to the destination.
However, I can totally back what @EndeavourAccuracy said because I know I'm not the only type of player out there. I can see an argument for "nerfing" the game with QuickSave by default so that beginners don't just give up in frustration.
@NagyD: I have another suggestion. In addition to having a note at the beginning, as @EndeavourAccuracy suggested, I think it'd be perfect if there was also a note at the end of the game. If a player used QuickLoad even once in completing the game, they should get a message saying something like,
“Sorry, Mariko, but our Princess is another castle! Congratulations on beating the simplified version of Prince of Persia. Now try to beat it the way the game was originally designed: without QuickSave and QuickLoad!”
That way people would be reminded that while they did beat a game, it wasn't the original Prince of Persia.
I'm sorry for that @hackerb9, my intent wasn't to be disrespectful or dismissive, my intent was to address the issue as I saw it. I know now that it did not come across well, and I do sincerely apologize for leaving such a negative and nasty impression. I hope I have been able to clarify and rectify that somewhat.
I just now figured out how to beat The Shadow. It was on a level where you have many tricky jumps before you can even face it. You have to go through the whole thing again every time you try (and fail) to beat it. Right now, I feel elated and extremely satisfied: I finally did it! ☺
But QuickSave would have ruined that sense of accomplishment. There's no build up of tension without struggles and set backs. I would have simply hit F6 before fighting The Shadow, then easily learned its secret by rapidly restoring with F9 and trying something different.
Most importantly, this points out a fundamental problem with expecting novices to first familiarize themselves with the game: spoilers. If I had learned as much as would have been needed to know not to use QuickSave, as @ice44 suggests, I would have no doubt come across other hints, like how to beat The Shadow. That would have ruined the level for me even more than QuickSave. Inadvertent spoilers are why, when I play ancient games, I try to limit myself to learning only from the builtin text and (if needed) the original game manual.
I have forked the source code and made a branch which does some of the things we've been mentioning:
Changes splash info screen text to mention ESC key, Ctrl+G, and Ctrl+L.
Escape Menu's Save/Load now does the right thing depending upon if QuickSave is enabled or not. (Previously it silently failed). When disabled, it works just like Ctrl+G / Ctrl+R,Ctrl+L.
Defaults to QuickSave turned off.
I feel like this is not quite done yet, so any testing before I make a pull request would be appreciated.
My version can be found here.
(emphasis mine)
I have forked the source code and made a branch which does some of the things we've been mentioning: [...]
The above statement by @hackerb9 is misleading, because, with the exception of bringing up ESC, none of what their fork currently changes was mentioned or suggested by either me or @ice44.
As such, the fork appears to be an attempt at pushing through their personal preference.
We are now back at square one.
I'm done with this discussion, by the way. Good luck.
The above statement by @hackerb9 is misleading, because, with the exception of bringing up ESC, none of what their fork currently changes was mentioned or suggested by either me or @ice44.
As such, the fork appears to be an attempt at pushing through their personal preference.
What? There seems to be a misunderstanding. It is likely my fault. I knew I shouldn't have sent a message so late at night. I was trying to incorporate your suggestions.
- The "SAVE GAME" and "LOAD GAME" entries in the main menu that can be accessed with ESC could be renamed to "QUICK SAVE - F6" and "QUICK LOAD - F9". That is, removal of "GAME", because the player is playing a game, so it's already clear that loading and saving is about the game, and adding "QUICK" with its shortcuts will emphasize what exactly the entries trigger.
I started this, but ran into some problems. When QuickSave is disabled, the Save and Load menu options still show up, but silently do nothing. There was a comment in the source code saying that doing a normal save and load is a TODO item. I fixed that bug.
So, now SAVE and LOAD always work, but what they do can vary.
I tried to change the menu option to say QUICK SAVE when QuickSave is enabled and SAVE GAME otherwise. However, the string is currently statically allocated. I can think of multiple ways to solve that, but I want a clean solution that will work even if SDLPoP is complied without QuickSave (which I noticed is an option).
I do intend to fix that, but I wanted to ask for advice here first on what would be preferred.
- On the SDLPoP info screen at the start of the program, the line about quick saving could be replaced with a line that says an in-game menu is available via the ESC key. This provides the player with more information, because they learn about the menu, and the menu will tell them about quick saving.
You seemed okay with my implementation of the ESC mention. I want to point out that I also mention the keys for the normal PoP save and load. That had seemed uncontroversial to me. If it is a problem, that's okay. I was considering removing that line as it is unwieldy and replacing it with one that says "PRESS ? FOR A LIST OF KEYS". Of course, then I would have to implement that help screen.
- On the main menu, one or two sentences could be added under the menu entries that explain that quick saving functionality was not available in the original game. That players who want to use traditional saving can use Ctrl+g to save, and then (during the title sequence) Ctrl+l to load.
I looked to change that but didn't immediately find the code for adding explanatory sentences at the main menu. Is this functionality that already exists? If not, it may make more sense to put the explanation in the submenu option that enables QuickSave, which I believe does allow longer explanations.
If implemented at the main menu, as with having the menu read QUICK SAVE, it will need to change dynamically. As such, this would come after finishing suggestion number 1.
@EndeavourAccuracy Oh, shoot! I just realized what made you think I wasn't open to suggestions. I had turned off QuickSave in this version. I can totally see why that would come across badly. I apologize.
I had been thinking in my head that, now that I've finally finished PoP and know more about the replayability once one has already explored, I should advocate more strongly for the original version being the default, build consensus, and maybe eventually QuickSave will be an option people will be told about as something they can enable if they get frustrated.
But I was way too tired last night and forgot all that. This initial change shouldn't have had QuickSave disabled. I will revert that ASAP. [EDIT: Done.]
Sorry for the late reply.
I merged your branch into a new branch in my repo, so I can improve on it. https://github.com/NagyD/SDLPoP/commits/originalmode I've already made some changes, can you look at them?
I looked to change that but didn't immediately find the code for adding explanatory sentences at the main menu. Is this functionality that already exists? If not, it may make more sense to put the explanation in the submenu option that enables QuickSave, which I believe does allow longer explanations.
I'd say it's better to put it into the main menu, because a user might not look into the submenus before using QuickSave.
A question: Should the message appear constantly, or only when the quicksave/quickload menu item is highlighted?
I want a clean solution that will work even if SDLPoP is complied without QuickSave (which I noticed is an option).
The game currently won't compile at all with USE_QUICKSAVE
disabled, because some some parts of the record/playback code want to use parts of the QuickSave code.
I should fix this someday...
I merged your branch into a new branch in my repo, so I can improve on it. https://github.com/NagyD/SDLPoP/commits/originalmode I've already made some changes, can you look at them?
I will take a look.
I've also been busy making some other changes in separate branches. I'll see if there are any conflicts.
You don't need to look at them, but if you're curious they are:
?
. The reason for this is because the splash screen was getting unwieldy. Also, the original PoP probably came with a brief instruction card which this could replace. Note that this branch is not finished. (It writes some text and pauses the screen, but it doesn't yet render properly). I'd say it's better to put it into the main menu, because a user might not look into the submenus before using QuickSave.
Agreed. I ended up adding the information in the submenu only because menu.c makes it obvious how to add nice, little context-sensitive bits of information there. It is definitely sub-optimal as one would have to not only go to the submenu but select the QuickSave toggle switch before playing. (Highly unlikely!)
I think I have a solution which doesn't required modifying the main or sub menu. (See below.)
A question: Should the message appear constantly, or only when the quicksave/quickload menu item is highlighted?
Wouldn't it be too much clutter to constantly show it?
I would think it should be shown only when the user is about to use QuickSave / QuickLoad, but that actually brings up a point I've been thinking about. People use menus without expecting pop-up explanatory text to be important. Further, a context-sensitive message in the menu would not be seen at all if a person uses F6 / F9.
Which leads to an idea: Make the QuickSave routine itself, whether called from the menu or by hitting F6, inform the user and ask what they prefer the first time it is used. It could show text like:
Which would you prefer?
Note that you can change this choice later from the Options Menu.
Does something along those lines sound reasonable?
@NagyD I've been testing out your branch and it seems to work well. I put some comments on the individual commits about some minor tweaks. I think what you've got is a definite improvement and worthy of incorporating into the mainline.
There are a few areas that perhaps could be improved now or in the future. In particular:
If you think any of these are good ideas but you don't have time, let me know and I'll see about implementing them. Thanks!
Sorry for the late reply.
helpscreen: Shows a list of keys when the user hits ?. The reason for this is because the splash screen was getting unwieldy. Also, the original PoP probably came with a brief instruction card which this could replace. Note that this branch is not finished. (It writes some text and pauses the screen, but it doesn't yet render properly).
I fixed it in my repo: https://github.com/NagyD/SDLPoP/commits/helpscreen
I also changed the help key from ? to F1 for multiple reasons:
Also, the original PoP probably came with a brief instruction card which this could replace.
You can find the original manuals here (scroll down).
For layout independent detection of question mark, wouldn't SDLK_QUESTION work?
Something like,
if ( event-> key.keysym.sym == SDLK_QUESTION )
Having shift close the menu may be a problem still, of course.
I think F1 is okay for help. It might be nice to also accept something that would have worked on the Apple computers Prince of Persia was designed on. If question mark is out, perhaps H or CtrlH?
Thank you for the link to the original manual. I hadn't wanted spoilers, so I only learned about Prince of Persia by playing the game (SDLPoP).
It is interesting that the Apple ][ and IBM PC versions did not use arrow keys and had diagonal movement keys!
Here's the .
I presume the numeric keypad allows diagonal moves, but my computer doesn't have one so I can't use it. Are the original UIOJKL keys supported by SDLPoP? I think it'd be easy to have those work by making them aliases for the numeric keypad.
if ( event-> key.keysym.sym == SDLK_QUESTION )
The problem is that the value of key.keysym.sym
is the character which would be generated by the key if it was pressed without any modifiers (Shift, etc.).
As documented on the http://wiki.libsdl.org/SDL_Keycode page:
These values include Unicode values representing the unmodified character that would be generated by pressing the key,
So if "?" can be typed using Shift+/ or Shift+, then key.keysym.sym
will be SDLK_SLASH
or SDLK_COMMA
, and not SDLK_QUESTION
.
It is interesting that the Apple ][ and IBM PC versions did not use arrow keys and had diagonal movement keys!
The IBM PC (DOS) version did support the arrow keys, the manual just doesn't mention that. (I take you never played the DOS version. You should play it sometime to see what SDLPoP is based on.)
Maybe they omitted it from the manual because the buttons on numeric keypads have their non-numeric functions printed on them (arrows, Home, End, Page Up, Page Down, Ins, Del), so it was considered obvious that the non-keypad versions of these keys do the same.
I presume the numeric keypad allows diagonal moves, but my computer doesn't have one so I can't use it.
You can use Home for up+left and Page Up for up+right. (This is mentioned in SDLPoP's Readme.txt and it's also hinted on the manual page which you posted.)
Are the original UIOJKL keys supported by SDLPoP? I think it'd be easy to have those work by making them aliases for the numeric keypad.
They aren't, but I could add them. Here is my first attempt: 4140777122919a7b557b25f648dbd84b5077de57 There is a problem, though: if you try to step right, Shift+L will load the next level. (Shift+L is enabled on levels 1-3 even with cheats off, as in the original DOS version. It's documented in the manual as "Practice".) Maybe Shift should have some alternate as well?
Yes, I probably should play the original sometime, but right now I'm quite happy with SDLPoP.
I did see the "Home" and "Page Up" keys in the documentation but, again, my keyboard is lacking. (Well, technically I could use something like Fn+Option+Up, but that would be rather awkward. :-)
I see what you're saying about the problem with Shift-L. I wonder if the skip level option wouldn't be better if done in the same way as the original Apple II : type S K I P to skip.
As for the '?', I feel like I remember getting the processed keys through SDL in the past, but I'll have to take a look.
What keyboard layout do you use? I'd like to try and see if I can replicate the question mark problem.
I've updated my HelpScreen branch with a small patch that uses SDL_TEXTINPUT which is SDL's keyboard independent way of reading keyboard characters. It properly detects questionmark on my computer, but I'd like to know if it works for you. (Note, it still would have the bug you noticed before of shift immediately closing the window, but let's do one problem at a time.)
I've implemented the Apple ][ way of skipping a level by typing SKIP instead of Shift+L. This frees up Shift+L to work for movement. Please see my UIOJKL branch.
I've updated my HelpScreen branch with a small patch that uses SDL_TEXTINPUT which is SDL's keyboard independent way of reading keyboard characters. It properly detects questionmark on my computer, but I'd like to know if it works for you.
I tested it, it works for me as well.
What keyboard layout do you use? I'd like to try and see if I can replicate the question mark problem.
Hungarian.
I've implemented the Apple ][ way of skipping a level by typing SKIP instead of Shift+L. This frees up Shift+L to work for movement. Please see my UIOJKL branch.
That looks like a good solution.
I've never played Prince of Persia before SDLPoP and I found it surprisingly easy until I discovered that SDLPoP's quick save / quick load (F6 / F9) keys are not part of the original game. I'm not sure, but apparently in the original game, one could only save starting on level three and loading took you to beginning of the level no matter where you saved.
Since quick save makes the game so much easier, it would be better if it was only enabled if the user has turned on cheats with megahit. Could such a change be made, please?