Alright, most of you have read that I've sort of been working in Ue4 recently. I've got a lot of stuff on my plate, what with doing HVAC repair this summer at about 40 hours a week and a number of pressing concerns on my mind about things that I always meant to write down that I know about DM that I've never taken the time to do.
That said, Movement is one of my biggest issues with DM as an engine that is pushing me away. It's certainly good enough to create solid games, but it's one of the biggest issues to a power-user that wants to craft something that controls well and isn't hacked together.
We're in for a long journey. If you can't read code and don't understand the built-in movement system, here's a basic rundown of how it all works:
density - density affects how objects determine what is "solid" or not. Two solid objects cannot move through one another by default. A non-solid object can move through solid objects by default. In other words, BOTH objects must be dense in order for blockages to occur.
locality - locality refers to the property of having a discrete location.
/atom does not have locality
/area does not have locality
/turf does not have locality
/atom/movable has locality
/obj has locality
/mob has locality
/image has locality
every other type in DM does not have locality
spacial - spacial refers to the property of being a space where things are laid out in reference to one another. Objects with a spacial property will exist with reference to one another when in a spacial atom. Atoms that are not spacial can contain other objects, but the objects that they contain have no spacial correlation to one another. We can call this "on map".
/turf is the only spacial atom subtype.
null space - Any atom without locality is in null space. Null space is an empty area where all objects live if they lack locality or they are merely not currently assigned a location. We can call this "off map"
unsafe movement - Movement contains a series of hooks that make your life easier for tracking ingress and egress of objects with locality or spacial properties. An unsafe movement is a movement that does not call any of these functions. A safe movement is one that calls all of these functions.
step - A step is a movement by less or equal to the number of pixels defined on a movable's step_size variable.
jump - A jump is a movement by greater than the number of pixels defined on a movable's step_size variable.
teleport - A teleport is a movement between disconnected localities. This means that it is a jump between Z-levels on the map, or from the map into the contents of an object that lacks locality, or from a non-locality object onto the map, or from null space to the map, or from the map to null space. A teleport is only distinct from a jump because I say so. The hook structure of Move() calls is different in this case. This is why I say it is distinct.
gliding - Gliding is a client-side animation that attempts to smooth out tile-based movement, making stepping objects slide according to glide_size every visual frame. Every movable object can only be gliding one at a time. This means that any movement or change in positional appearance (glide_size, dir, loc, step_x, step_y, etc.) may override the existing glide and cause the movable to instantly teleport to their final destination. Glides can only occur over a single tile and thus can only occur in exactly 8 distinct angles.
bounds - Bounds refer to what portion of the movable atom is dense. The visual area of an atom can be larger than its actual physical coverage. bound_width, bound_height, bound_x, and bound_y can be changed to make this bounding region occupy a different space relative to the bottom-left corner of the movable.
translation - Translation refers to moving something according to X,Y offsets in either pixels or tiles.
projection - Projection refers to moving something according to an angular and distance component, using trigonometry to retrieve the X,Y coordinates of the final translation.
movement delay - movement delay refers to how long between movements the character is prevented from moving.
self movement - self movement is a concept of a movement that occurs when something attempts to move by itself (A fish swimming or a person walking, etc.) under its own power. This is distinct from a directed movement.
directed movement - directed movement is a concept of a movement that occurs by the power of another object (A person being dragged, a boulder being pushed, an object slipping on ice, etc.). This is distinct from a self movement.
directional step - a directional step is a movement that takes a direction (N, S, E, W, NE, NW, SE, SW) and a distance as an argument. This is transformed into a translation using simple logic.
Bump - a bump is when an object fails to finish a movement because it reached an object or location that would not allow overlap or entry.
Bumped - when an object fails to finish a movement because of an obstacle, the object that was the obstacle is considered to have been "Bumped".
Cross - when an object attempts to overlap another one in a spacial area. Antonym of Uncross
Uncross - when an object attempts to stop overlapping another one in a spacial area. Anytonym of Cross
Crossed - when an object successfully overlaps another one in a spacial area. Antonym of Uncrossed
Uncrossed - when an object successfully stops overlapping another one in a spacial area. Antonym of Crossed
Enter - when an object attempts to move into a spacial location or container. Antonym of Exit.
Exit - when an object attempts to move out of a spacial location or container. Antonym of Enter.
Entered - when an object successfully moves into a spacial location or container. Antonym of Exited.
Exited - when an object successfully moves out of a spacial location or container. Antonym of Entered.
Enter - when an object successfully moves into a spacial location or container. Antonym of Exit.
walk - A movement that repeats regularly.
peek-in - when an object peeks over the edge of another object from the inside. Antonym of peek-out.
peek-out - when an object peeks out over the edge of another object from the outside. Antonym of peek-in.
envelop - when an object fully overlaps another object. Antonym of escape.
escape - when an object fully stops overlapping another object. Antonym of escape.
edge-slide - when an object fails to move but continues to slide along the edge of its blockage.
Jun 16 2016, 2:20 pm