Pixel Movement in Feature Requests
|
|
Resolved
Native pixel movement has been implemented. The following major changes have been made:
- All movables have a bounding box (bound_x/y/width/height) and can be positioned with the new step_x/y vars. By default, all atoms still use the old tile system.
- Movables have a step_size var that says how fast they move. The step and walk procs have been updated to take a speed argument as well, but default to the mover's step_size.
- A new var, locs, says which turfs a movable is actually covering with its bounding box. If a turf is in a movable's locs, that movable is also in the turf's contents.
- The Move() proc now takes two new arguments, the target step_x and step_y. A move can now "slide" or "jump", and if it slides then it can succeed even after a Bump(). A slide returns the number of pixels moved if successful; jumps return 1 if successful.
- Within Move(), the Enter() and Exit() procs (and family) can all be called for multiple turfs now.
- A new family of procs has been added to cover cases of movables trying to overlap each other. They are Cross(), Uncross(), Crossed(), and Uncrossed(). They are similar to Enter(), Exit(), Entered(), and Exited().
- turf.Enter() no longer pays any attention to items in its contents that do not cover the entire tile. Items that cover the whole tile still count, so old games will work the same.
- Bump() will only swap two mobs in the same group if neither one of them uses pixel movement. If either one uses pixel movement, Cross() will allow them to overlap instead.
- New procs have been added to ease the use of working with bounding boxes: bounds(), obounds(), and bounds_dist().
- Gliding has been deprecated. It only occurs now when atoms do not use pixel movement and move by full tile increments.
|
|
|
| Status: |
Resolved (490)
This issue has been resolved.
|
|
|
How is there not a request for Pixel Movement on the tracker?
Everyone vote this up so that they can no longer deny what a necessity it is!
My Demands!
- Well... pixel based movement for starters. Instead of moving an entire 32-pixel-tile from a single button press. The current methods make games feel unresponsive, and look graphically inferior.
- The map editor could work generally how it does now, but you should be able to hold a key (Shift?) to place things free of the 32x32 grid. Regardless of pixel movement, this could be a useful implementation.
- If you want to take the map editor a step further, grid sizes could be supplied, to make tiles 8x8, or whatever other size(s) we provide.
- Procs, like walk(), should be able to take a degree as the direction, and move the object off at that angle.
- get_angle() would work somewhat like get_dir(), but provide a more specific angular measurement between the targets.
- The size of pixel steps should be easily adjustable by a variable on movable atoms
- Graphically pixel based hit detection (is this colored pixel touching that one!?), as well as hit-boxes (this mob is 16x32, regardless of him only being a small pair of floating eyes!).
- Things like get_step() should function based on hit-boxes.
- Backwards compatibility/implement-ability, as functionally as possible. If all existing games could easily be brought into using pixel movement, this would be an even greater advancement for BYOND
- I'm sure various technical issues and new ideas, that I haven't considered, will arise as the systems are worked on, and once they are implemented and put to use. Roll with the punches!
- Other stuff! Post your own in the comments below =o
|