ID:136940
 
319 (notes)

Here are some fixes for 318. We know of a few remaining (minor) bugs, and may have another patch later tonight or tommorow. This one should be better than the last, so please try it out.
It would be nice when you uninstall something it removes the enviroment from the "recent enviroments" list in Dream Maker.
Tom wrote:
This one should be better than the last, so please try it out.

Here's my 10 minute try-out report:

- Some long-standing timing thing has been fixed, it seems. Suddenly my mobs are moving around much more quickly, not to mention smoothly! That "jerk, stop, jerk" thing seems to be mostly gone. This is a major improvement for L&D. Now you are actually having a real chase, not something that looks like it's a bunch of folks from a retirement home chasing each other.

- The SYNC_STEPS functionality has taken care of about 90% of the multi-tile synchronization problems. However, sometimes the lead mob still gets out of synch for a split second, especially if a direction change has occurred (dunno if there's any way to get around that one...perhaps a reason to use offset icons in the future).

- Objects jumping a long distance at once have changed their behavior...now (at least in one repeatable case in L&D), they slowly slide in place from half way across the screen, sometimes from a somewhat random location (not their starting point).

- When you change levels, the map sort of slides into view, and there is a new drawing distortion that occurs. Here are two screenshots of the effect:





Bugs aside, this is clearly a major advance that is going to make games feel much more responsive.

What's up with the new smooth timing?
In response to Deadron
Deadron how in the world did you get that isometric view?
I am somewhat confused about the SYNC_STEPS option. How do you get it to Synchronize steps.
In response to Exadv1
Exadv1 wrote:
Deadron how in the world did you get that isometric view?

That's been a long-term collaborative effort between Guy and myself. We both spent many weeks figuring out the details...how to draw it on his end, and how to place the objects and get the layering right on my end.

I have libraries for it that I was considering releasing someday when I get them to be simple enough. But the latest icon offset technology means that I'll probably want to do a new generation approach that takes that into account.


I am somewhat confused about the SYNC_STEPS option. How do you get it to Synchronize steps.

Set all but one of the objects for a multi-tile object to SYNC_STEPS.
In response to Deadron
Then (sych_steps) how do you actually connect the mobs? That has always eemed to confuse me.
Yeah, that would be a GREAT library.
In response to Exadv1
Exadv1 wrote:
Then (sych_steps) how do you actually connect the mobs? That has always eemed to confuse me.
Yeah, that would be a GREAT library.

Just have them next to each other on the map, and BYOND will figure it out.
In response to Deadron
Interesting. Now will that part be tied in forever. What happens if I use a Move proc on the lead. What if ther are two lead mobs by each other. I really like this option and wish to learn more about it.
In response to Exadv1
Exadv1 wrote:
Interesting. Now will that part be tied in forever. What happens if I use a Move proc on the lead. What if ther are two lead mobs by each other. I really like this option and wish to learn more about it.

You have to do your own movement. All SYNC_STEPS does is, if you move a bunch of objects that are next to each other at the same time, it checks to see if they are supposed to be synchronized. If some have SYNC_STEPS turned on, they will move at the animation speed of the nearest object moving at the same time that does not have SYNC_STEPS turned on.

While my libraries for this aren't public at this point, if you hunt around you'll find other libraries on the subject.
I retried the timer and it hovers at arround 18% difference in time (stopwatch is 18% faster than it). I then tried it using spawn(8) (instead of 10) and it was about 4-5% faster than my stopwatch which is an error range that is fine. Just to make sure my stopwatch wasn't being strange I started two stopwatches (one on a clock actually) along with my byond timer and both my stopwatches were in synch so they should be fine.
In response to Deadron
I get the exact same type of map distortion if I change client.dir to something other than NORTH, then scroll the map. This bug goes back to at least 318, possibly earlier.

-AbyssDragon
The IP address bug I reported is not fixed--and the one reported fixed isn't actually what I was referring to.

My IP ban verb doesn't take an IP address as a verb parameter (though it can be supplied one if called through the mini-browser, and that works fine)--it pops up an input() box from a list of its own. I think it might not have been clear because of the nature of the error message:<FONT COLOR=#FF0000>
Sorry, the following is not valid: 1.2.3.4
usage:  [ parameter]

</FONT>The word "parameter" is misleading and I have no idea where DS is coming from with that, because all I'm doing is selecting a text string from an input() box with a list. This isn't a verb problem; it's an input() problem.

The behavior of my IP ban verb has changed, however, since the update: Instead of crashing the verb entirely, I get the same error message but the input() box is re-created. (This isn't inside a loop, so I assume some internal behavior has changed.)

This is the code for my IP ban verb:
IPban()
set category="Host"
set name="IP Ban"
set desc="Ban/unban someone by IP address"
set src=usr
var/theIP
if(args.len) theIP=args[1]
else if(temp_IPban.len)
theIP=input("Which IP address would you like to ban or unban (this session only)?",\
"Ban IP Address","<Ban new IP>") \
as null|anything in temp_IPban+"<Ban new IP>"
else theIP="<Ban new IP>"
while(theIP=="<Ban new IP>")
theIP=input("Please enter an IP address to ban during this session, \
or the name of a user to ban by IP:"
,\
"Ban IP Address","1.2.3.4")
if(!theIP || (theIP in temp_IPban)) break
if(namelist[ckey(theIP)] && IPlist[namelist[ckey(theIP)]])
theIP=IPlist[namelist[ckey(theIP)]]
if(!theIP) return
if(theIP in temp_IPban)
temp_IPban-=theIP
usr << AdminMsg("You have unbanned the address <B>[theIP]</B>.")
else
temp_IPban+=theIP
usr << AdminMsg("You have banned the address <B>[theIP]</B>. \
Anyone entering under that IP address for this session \
will be added to the permanent ban list."
)

The only place I encounter a problem is with the first input() call, which selects from the temp_IPban list. (I realize my while() loop is a little funky, but it's sort of a holdover from an earlier version of the code, and was easier to leave in than change.)

Lummox JR
There stands a good chance of a DWO update this weekend, and SilkWizard tells me that he is going to compile it under the newest version of BYOND. So, Mr. DWO hoster (me) will be in need of a upgrade for the Linux client sometime quite soon.
In response to Deadron
Deadron wrote:
[snip]
- Objects jumping a long distance at once have changed their behavior...now (at least in one repeatable case in L&D), they slowly slide in place from half way across the screen, sometimes from a somewhat random location (not their starting point).
[snip]

I am also experiencing this while using a multi-tile mob (obj-mob-obj). If I turn around, the part which was in front slowly glides across the middle part. If I run in circles, that part will play catch up, never aligning itself until I stop and wait.
In response to Deadron
Deadron wrote:
- When you change levels, the map sort of slides into view, and there is a new drawing distortion that occurs.

This may be realized to moving the client.eye. I just realized that in the cases where I'm seeing it, the mob entered the map level near an edge, which in the game causes their client.eye to jump so that they don't see the edge. During this process is probably when the distortion occurs.