Hi there
I propose to change how things go when char tries to build something or land a lifted object.
Lifting.
Suppose we have character with a boat above his head. We want to place it somewhere
How it is done now
1 User right-clicks on a place where you want to place it
2. Character walks there
3. Tries to place a boat on the ground
4. Server checks is there enough space or not
5. If no - character stops.
So - time wasted to walk to invalid place. And now character is the obstacle for placing the boat - so user has to move it back and then retry.
Tons of time wasted.
My proposal
1 User right-clicks on a place where you want to place it
2. Server checks is there enough space or not.
If no - send a message 'Cannot be placed'. Or send nothing just leave character where he is
If yes - continue
3. Character walks there
4. Server checks is there enough space or not again (something could change while char is walking)
5. Boat is placed or not depending on check result
As a result - player does not waste time for character walking to wrong destination, walking back to free destination from himself.
Building
Currently
1. User selects some building from menu
2. User clicks on the ground
3. Character walks there
4. Server checks is it possible to build there (needed range of cells is free)
5. If yes - building sign is placed. If no - building process is reset
And again - to build player move character back to free space, go through all menus (or drag and drop shortcut), click, walk to destination. And repeat again if failed. After 3-4 times it's like FFFFFUUUUUUUUUUU!!!!!
My proposal
1. User selects some building from menu
2. User clicks on the ground
3. Server checks is it possible to build there (needed range of cells is free)
4. If no - process is stopped. BUT! building is still selected. So player can click again and retrying to build is performed immediately
After few clicks that precise spot which is valid and satisfies user is found and process continues
5. Character walks there
6. Server checks is it possible to build there again (if something occupied the place)
As a result - player economies lots of time and clicks and gameplay becomes smoother. Look how it is implemented in strategy games to make better understanding what i mean.
P.S. All pieces of code are already there. All what has to be done is just reordering them a little bit. And trust me - user friendliness wil increase drastically.
P.S. It will optimize performance too (no need to calculate char movement(redraw distance, objects etc) in cas when action will fail and player will have to move back.