Open Taemporus opened 2 years ago
Hi,
the code for automatic movement of ac_horse
was implemented by Ronald Lamprecht. I do not quite remember his reasons ... actually, he did not have to state a reason, given that he was the project leader at the time. However, I think his motivation for implementing automatic movement for ac_horse
only, might have been:
That's how Oxyd handled it.
ac_horse
looks distinct enough for players to assume a different kind of movement behaviour (an argument akin to your reasoning about ac_top
and ac_rotor
).
If something was faulty in the code, it would affect only a very small aspect of the game, rather than all actors at once.
Personally, I would have implemented automatic movement for all actors from the beginning, including ac_rotor
and ac_top
(look at "Pac Marble" and you'll know why). However, I do respect Ronald's more conservative decision and would look at a change with more scrutiny than usual.
In my opinion, argument 1 has lost importance in the last 10 years. We are still interested in adding the missing parts of Oxyd emulation in Enigma, including riding, but it's not at the top of our agenda. Argument 3 ... well, if the code were faulty, we should have seen it by now. I guess, Ronald's code is indeed quite stable.
Argument 2 is more difficult to come by. I am a little unhappy about the sheer number of unexpected and surprising interactions in Enigma, as this complicates the game for beginners; then again, this is part of the very core of Enigma. "Unfair!" prepares the player via the initial it_document
. "FizzBuzz" uses visible gradients, so the movement is easy to understand for the player as well. And while marbles and pearls are inanimate objects in real life, bugs certainly are not, and autonomous movement can very well be expected.
I am open to a change, in particular regarding ac_bug
. I want to discuss this topic with some of the other developers and hear their opinions.
Cheers, Andreas
To begin with: this is not a bug report, rather a proposal for a feature (or an inquiry about design intent).
Right now, we have two passive, immortal actors —
ac_horse
andac_bug
— that have few characteristic features or interactions with the player. While it has long been stated in the reference manual thatac_horse
was/is planned to be rideable, that has never come to pass, and seemingly the only trace of that is the ability to set a path on which it moves on its own (via attributes likedestination
). This is indeed a unique feature, but in the current state, it feels arbitrary that onlyac_horse
should have it.ac_bug
ac_horse
st_break_bug
st_portal_horse
So aside from the relatively niche interactions in the fourth row, we basically only have the automation capability (where it is unclear why only the horse has it), and in particular
ac_bug
doesn’t seem to have really found its own place in the game.One of the most painless ways to remedy this somewhat would be to extend the attributes enabling movement automation (
destination
,destidx
,loop
,strength
,steady
) to certain other actors: this requires basically nothing other than copying a bit of code. In particular, there is no reason why a “bug” should be able to move around on its own any less than a “horse” would. While this would in fact makeac_bug
more similar toac_horse
, it would at least have more usability (and it being a smaller, visually distinct analogue with slight quirks is not necessarily a bad thing either for how the overall design looks).Of course, the question then presents itself whether other actors like
ac_killer
,ac_marble
, or evenac_pearl
should likewise have these capabilities (ac_rotor
andac_top
almost certainly should not, since they already have an expected behaviour in regards to movement). Right now, in levels where these actors need to move in preset ways (e.g. “Unfair!” and “FizzBuzz”), things such as slopes (hidden or otherwise) need to be utilized. It might make sense to have such on option to control them properly enabled, but if that were to be the case, it would eliminate the main differentiating feature ofac_bug
andac_horse
.In my opinion, the ideal scenario would be to add these attributes (
destination
etc.) to all actors that aren’t usually active on their own (so anything other than rotors and tops), implement the riding behaviour forac_horse
, and figure out an additional unique feature forac_bug
. However, this would of course be much less trivial of a change than simply adding the already existing functionality to another actor or two.Also, any part of these proposed changes might conflict with the design goals of the game developers. So mainly, I would like to know their thoughts on this (or that of anyone else interested): what part if any of all this might be worth considering in the short or long term.