Controller behavior vs PSX port #7132
georgelthomasee
started this conversation in
General
Replies: 1 comment
-
The PSX port changed how parts of the game works and did not maintain mouse support or network game support. One of the changes is that the players do not move on distinct tiles anymore. These differences probably explains some of the differences you are noticing. Thanks we have done our best to clean things up, though there are still things that could be improved. When you make a PR with changes its good to describe how it changes things compared to before. And to test it in different serious. Also feel free to join our Discord you might be better able to get feed back and exchange ideas in a live chat. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi all,
I have been playing DevilutionX for the past week and loving it. I used to play the PSX port back in the day and so I find myself comparing the two. There are three things I've noticed so far playing with the latest builds for Raspberry Pi w controller and Nintendo Switch (seems consistent across both)
For item 1 above, I think a possible improvement would be the following: Once the player collides with an obstacle while commanding movement in the direction of the obstacle, to not just stop the movement, but move the player in an adjacent direction if possible (e.g. if the user is trying to move west, and there is an obstacle to the west and northwest, but not southwest, we should move the player to the southwest.)
Looking at the source, I think one could add this logic to the
WalkInDir()
method inplrctrls.cpp
, replace the single check toIsPathBlocked(player.position.future, pdir)
with multiple checks (the direction the player is pressing plus the two adjacent ones), and if an alternative path is valid, send a delta position corresponding to the adjacent valid path in the call toNetSendCmdLoc(player.getId(), true, CMD_WALKXY, delta);
No ideas on how to tackle the other two things, though I haven't looked at the source for how these work. I may put some issues in for these unless someone sees a problem with this. I am feeling a bit humble here. I have never contributed to an open source project outside of work before and not familiar with how people usually get involved. I have experience building with cmake, etc, so I think I could tackle these on my own. However I don't think I will get to it very soon as I have a newborn and lots of deadline pressure at work. Assuming I am the one who would work on these, I would like to fix them and try to get some of my work friends to netplay with me on this. Any thoughts about tacking the other two? Anybody else see these as useful?
This project is very cool and given what little I've seen so far, the codebase looks to me like a work of art. Very clear, well written code, to the point where you don't need a ton of comments to make it readable.
All the best,
Beta Was this translation helpful? Give feedback.
All reactions