Baccayarro / Movecraft-3

The original movement plugin for Bukkit. Reloaded. The releases feature isn't working, so here is a link to the latest dev version:
https://dl.dropboxusercontent.com/u/11164014/movecraft_beta.zip
GNU General Public License v3.0
15 stars 21 forks source link

[Suggestion] Craft length limits and direction-based speed #51

Open Firecore- opened 9 years ago

Firecore- commented 9 years ago

A maximum limit we can choose for how long/wide/tall a craft can be depending which way the pilot sign is facing. Possibly a minimal limit too.

If you are able to detect sides, depending on which way the pilot sign is facing, perhaps moving to the side and/or rear can be slower than moving forward.

Baccayarro commented 9 years ago

So, I'm thinking something like craftwidthlimit and craftheightlimit could be useful, but I don't like systems that impose limitations based on the facing of the pilot sign. Because it's too easy to circumvent, plus so many crafts have pilot signs that don't face forwards. I would welcome more discussion on the subject though.

Pocketkid2 commented 9 years ago

Based on direction of a cruise sign?

TylerS1066 commented 9 years ago

I do like the idea of cruise sign direction, that would also allow us to implement a forward only cruise sign

mwkaicz commented 9 years ago

Just one question: how many ships you have where the is wide bigger than length? Why Just don't add optional detection what's bigger?

mwkaicz commented 9 years ago

Detection must have some bigger diference offset. Or interresting could be also something like counting simple aerodynamic

Baccayarro commented 9 years ago

One of the more famous ships that is wider than it is long is this one: http://www.planetminecraft.com/project/working-air-warship-silver-empire-assault-craft-with-adjustable-arc-cannons-and-aa-guns/

With its wide body it has more lift, and is able to carry heavy frontal armor. Also, in my humble opinion, it looks cool.

Anyway, the point is that if I base ship direction sensing off of geometry, I will get dozens of complaints about it "not working properly". Even if I went with the "longer than it is wide" assumption, it still doesn't give us which way is front.

Probably the best idea is to base it off the cruise sign like Tyler said.

Although, I have some other ideas I am working on. On our survival server laggy ships have become a problem. I thought I could limit it based on size and be fine. But the fact is that some 4k ships are much more laggy than a 10k ship.

Now the theory is to make it so that if moving the ship is taking a long time, it automatically slows down its movement. So instead of the whole server lagging, the ship slows down.

That actually is kind of based on aerodynamics. Because the movement engine can handle long aerodynamic shapes better than spread out non-aerodynamic ones, so they will naturally go faster. For a similar reason, ships will automatically go faster straight forward than side to side. Turning will be particularly slow, as it should be.

It's an interesting idea and I hope I can get it to work.

mwkaicz commented 9 years ago

Problem with differences between 10k and 4k ship comes from structure of the ship and the direction where it's going. Because is diffrence if you are overwriting a block with other material or with the same. Also holes in the ship are taken as other material. Best speed has simetric cube.

But back to the topic: As @msummers123 said, it's too much easy to remove pilot sing and put it in another direction. We must use some system which will not be easy to rebuild. (also in some ships is just only option where put a pilot sign and it's side way. (I suggested second "main helm" in the past, but it's still simple to rebuild) ... and some protection with timeout will be also a problem after /release command.

About dynamic speed: It's good idea, but how you can detect, that slowing down causes that concrete ship? Yes, you can make some ratio between blocks count and the time between start and the end of translation task. But you must also count map updating process and nothing can tells you if the source of delay is the ship or some other thread/service running on the server ... just my opinion [EDIT]: taking back, there is the way, but hard and result brings only less count of lags, but they will have still same size.

Another option: If we will be able to detect sails direction (some engine block isn't problem for ships without sails), we can take the ship direction from sails or engine. As I know, there are only two types of sails and both of them can be detected just only from the mast and yard structure T (from front view) and L (from side view) ... i know L should be also from front view but it's not accustomed to build sails in minecraft by this way) ... and the sail is necessary in T just only for detection which side is front side. ... for engine powered crafts must be still used something like [main helm] because you can build engine in the corner, but it's not simple to rebuild it :)

Then the craft file can contains this: sailsMaterial: WOOL _engineMaterial: REDSTONEBLOCK frontEngine: true/false (false means rear engine only when engineMaterial is set)

One question for all: should have a ship same speed to backward as side-speed? f.e: Forward - Side - Backward 1 - 1/2 - 1/2 or something like these: 1 - 2/3 - 1/2 1 - 1/2 - 1/4

What you prefer? Maybe optional speed limit for each direction in .craft file will be best, right? :)

Pocketkid2 commented 9 years ago

What about repair signs? Nobody wants those to change direction. Oh by the way I heard that you can use those to clone ships (in a way)

mwkaicz commented 9 years ago

It must be something necessary, not optional. This causes dependency on WE.

Baccayarro commented 9 years ago

Yes, it would be more accurate to say you can use repair signs to mod a ship, because the repairs are limited to 25% of the ship's size. But you can, for example, manufacture small ships using a big ship. To me that's reasonable. You still have to have the component parts, and you still have to pay a per-block fee.