So, there is a manifest.
I read through a lot of the material, Nick. Thank you for sharing that (again).
I'm not a coder, but I know enough to be dangerous. As my high-school math teacher put it, I'm likely to take the expression (x + y)^2 and come up with x^2 + y^2.
I concur the vanilla code needs a serious overhaul. I think the maintainers up to now have done a stellar job keeping the code as well documented and classified as it really can be. As your(?) manifesto points out though (and as one can generally glean from perusing the code in search of answers), there's too much inter-twined complexity. Certainly, a lot of potential amendments are curtailed by the complexity of the code.
Re-writing the V-code, starting anew like Pyrel, is probably the best long-term solution. Having dabbled only in C for the past two decades, I can say that C is easiest for me to follow, though I'm hardly adept at coding in it. While I understand that python is a decent language, I know very little about it (at the moment). Perhaps countless hours have been spent discussing this in this forum and on IRC, but, allow me to interject a few thoughts.
C is not a dinosaur language. Aside from the fact many college kids are no longer learning C, I don't see this as a reason to discontinue using C in future modifications of the core. The user interface, however, I think is a different topic.
One of the main gripes I have with java interfaces, there does not seem to be a buffer holder for one's typed prose. Classic HTML pages, such as these forums offer some type of buffer protection if one happens to hit the wrong key and go-back to the previous page, there's a good chance these typed characters are still in the buffer in one returns forward. Saved state. Java-based web-interfaces, from my experience, does not permit this. Everything is encapsulated and when an object dies/disappears, so does all that encapsulated data. How many times have I had to re-type my all important opinions because of Java? But, would that be an issue with a java based user interface or a python based user interface to Angband?
If the user interface were all written in Java (or python, which I'm not familiar with) and the code base maintained in C, then we could potentially see greater & better things for the game with more clarity. Ideas, game amendments, et. al., would not ... ok, should/ought not have to modify either one or both of those distinct code bases. Introduction of a new mob type with a new attack type should not require modification of 6 or 7 files in monster/*.c/h, plus possibly an addition/modification to z-msg.c/h, plus an addition/modification to spellsx.c, and any rework of the ui code to display it properly, and then a modification to edit/monster*.txt.
If I wanted to try to modify the effect of say GF_PLASMA, I would go to edit monster/list-spell-effects.h and try to permit RFire, double-RFire, or ImmFire to reduce the likelihood of GF_PLASMA causing a player to be stunned. I would most likely end up breaking the code and causing a seg-fault. Eventually, I might get there, but it will take me a while just to accomplish that one thing.
The edit/ files are great in this regard - easily readable, easily editable. Somehow, though, we have too many inter-dependencies in the code, that a new mob attack is not definable in those files. A re-write of the c-code is necessary, and, hence a recompile which tends to break and previous savefile data a player may hope to retain through upgrades.
I'll stop drivelling on here - I'm sure I'm sounding like the amateur I am here.
I read through a lot of the material, Nick. Thank you for sharing that (again).
I'm not a coder, but I know enough to be dangerous. As my high-school math teacher put it, I'm likely to take the expression (x + y)^2 and come up with x^2 + y^2.
I concur the vanilla code needs a serious overhaul. I think the maintainers up to now have done a stellar job keeping the code as well documented and classified as it really can be. As your(?) manifesto points out though (and as one can generally glean from perusing the code in search of answers), there's too much inter-twined complexity. Certainly, a lot of potential amendments are curtailed by the complexity of the code.
Re-writing the V-code, starting anew like Pyrel, is probably the best long-term solution. Having dabbled only in C for the past two decades, I can say that C is easiest for me to follow, though I'm hardly adept at coding in it. While I understand that python is a decent language, I know very little about it (at the moment). Perhaps countless hours have been spent discussing this in this forum and on IRC, but, allow me to interject a few thoughts.
C is not a dinosaur language. Aside from the fact many college kids are no longer learning C, I don't see this as a reason to discontinue using C in future modifications of the core. The user interface, however, I think is a different topic.
One of the main gripes I have with java interfaces, there does not seem to be a buffer holder for one's typed prose. Classic HTML pages, such as these forums offer some type of buffer protection if one happens to hit the wrong key and go-back to the previous page, there's a good chance these typed characters are still in the buffer in one returns forward. Saved state. Java-based web-interfaces, from my experience, does not permit this. Everything is encapsulated and when an object dies/disappears, so does all that encapsulated data. How many times have I had to re-type my all important opinions because of Java? But, would that be an issue with a java based user interface or a python based user interface to Angband?
If the user interface were all written in Java (or python, which I'm not familiar with) and the code base maintained in C, then we could potentially see greater & better things for the game with more clarity. Ideas, game amendments, et. al., would not ... ok, should/ought not have to modify either one or both of those distinct code bases. Introduction of a new mob type with a new attack type should not require modification of 6 or 7 files in monster/*.c/h, plus possibly an addition/modification to z-msg.c/h, plus an addition/modification to spellsx.c, and any rework of the ui code to display it properly, and then a modification to edit/monster*.txt.
If I wanted to try to modify the effect of say GF_PLASMA, I would go to edit monster/list-spell-effects.h and try to permit RFire, double-RFire, or ImmFire to reduce the likelihood of GF_PLASMA causing a player to be stunned. I would most likely end up breaking the code and causing a seg-fault. Eventually, I might get there, but it will take me a while just to accomplish that one thing.
The edit/ files are great in this regard - easily readable, easily editable. Somehow, though, we have too many inter-dependencies in the code, that a new mob attack is not definable in those files. A re-write of the c-code is necessary, and, hence a recompile which tends to break and previous savefile data a player may hope to retain through upgrades.
I'll stop drivelling on here - I'm sure I'm sounding like the amateur I am here.
Comment