BYOND 5.0 Version 514 Release Notes
Build 514.1589
Fixes (More Info)
Dream Daemon
- Calling an external library would not decrease the refcount of the arguments that were sent, except when the call()() used an arglist. (Luber)
- The server could hang if it received a profile request from Dream Seeker (only using the profiler window, not the browser-based version), if the server had more than 64K procs defined. (GoldenAlpharex)
Dream Maker
- /image in lists defined at compile time for vars could cause a crash in the map editor. (Bravo1)
Dream Seeker
- Turfs in images' visual contents on a different Z level showed a turf from the player's current Z level at the same XY coordinates. (LemonInTheDark)
Build 514.1588
Fixes (More Info)
Dream Maker
- The use of multiple ?. or ?: operators on the left-hand side of an assignment, or with any other side-effect operator like ++, did not compile correctly and caused the null check not to work as it should. This was caused by a fix to an earlier bug but was still being masked by old code that should have been removed. The problem appeared in build 514.1586 when the old cruft masking the issue was taken out. (LemonInTheDark)
Build 514.1587
Fixes (More Info)
Dream Maker
- gradient() could compile incorrectly when given a bad set of arguments, resulting in proc stack underflow at runtime. (Redmooogle)
- Dividing a matrix by a numerical constant at compile time compiled the result incorrectly as the number 0. (AffectedArc07)
Dream Seeker
- Regression: Plane masters with blend modes other than the default did not display correctly. (Anturke)
Build 514.1586
Fixes (More Info)
Dream Daemon
- Saving a filter that used aliases for some of its var names caused a crash. (Luber)
- Some memory leaks were discovered with the handling of filters, especially in mutable appearances and animation. (Luber)
Dream Maker
- A subtle bug with string concatenation in the compiler caused some complex projects, particularly when Unicode was involved, to get stuck during compilation. (Valtosss)
- The use of . in expressions in a return statement could sometimes cause the entire return to be optimized out. (Lumipharon)
Dream Seeker
- When drawing a plane master to a render source, if the blend_mode was not BLEND_OVERLAY and there was some visual aspect of the plane requiring a temporary surface (alpha, filter, etc.), the blend mode was inappropriately applied to the render_target slate. (LemonInTheDark)
Features (More Info)
Dream Maker
- Some compiler speedups intended for BYOND 515 got backported to 514 in the process of solving some bugs, so large projects can reap some of those benefits early. Even more speedups appear in 515.
Build 514.1585
Fixes (More Info)
Dream Daemon
- Trying to convert a /database or /database/query object to a string caused a hang. (James)
Dream Daemon & Dream Seeker
- world.timezone and client.timezone didn't adjust for DST properly. E.g., Eastern Daylight Time should have a value of UTC-4 but appeared as UTC-5 instead. (Dajinomight)
- Some animations that changed directions between parallel stages could see weird "flipping" behavior. The same was true of other copy-only appearance attributes like icon_state. This is mostly a client fix but also impacts the server. (NitrogenZone)
Dream Seeker
- The CENTER keyword did not work correctly on secondary maps controls. It has been changed to act like LEFT+50% and/or BOTTOM+50%. (LemonInTheDark)
- A turf with visual contents whose appearance was updated while it was out of view could sometimes not show that update on the client once it came into view. (LemonInTheDark)
- The client sometimes sent the wrong mouse params, mistakenly using new-style params (for worlds compiled in BYOND 514 or later) with older .dmb files. (Kaiochao)
Build 514.1584
Fixes (More Info)
Dream Daemon
- In some situations, a client might try to use verbs before it had received them and couldn't parse them correctly. In the particular case tested, the client was aware of the existence of a verb but did not have its name and parsing data. The server now keeps track of which verbs a client knows and sends their info to the client without the client having to request them. (Ter13)
- In some complex cases where a turf was included in visual contents, adding another object to the same visual contents list could result in an infinite recursion and crash. (JohnWildkins)
- Procs used in regex replacements didn't have usr set. (James)
Dream Maker
- The recently used fonts dropdown in the skin editor's font selection button had stopped working as expected after the skin editor was updated in BYOND 513. (Dayoak)
- Expressions such as istype(a?.b) did not correctly infer the var type. (Asche)
Dream Seeker
- Embedded winsets didn't work in winsets initiated by JavaScript. (Ter13)
- Setting the command parameter of an input control to ".output" or ".output control" did not work as expected. (Ter13)
- The decision to turn off a movement state when done gliding/stepping was based on the old tick-based method of calculating glides, and could result in a movement state staying on long after the movement ended if the client ticks bogged down. (Kaiochao)
- In situations where appearances were recycled frequently, their reuse could screw up animations and other situations that used them. (Azrun)
- Multiple issues with mouse macros were fixed, including: mouse move being called within the same (upscaled) pixel, wrong screen coordinates, wrong coordinates in drag operations. (Kaiochao)
Build 514.1583
Fixes (More Info)
Dream Daemon
- Regression: Case-insensitive regular expression matches were broken. (Jaredfogle)
Dream Seeker
- input() lists did not show characters such as Cyrillic properly. (Valldimus)
Build 514.1582
Fixes (More Info)
Dream Daemon
- replacetext() sometimes doubled up the first character in the replacement text when it was supposed to capitalize that character instead. (Luduk)
- Unicode handling has been improved across the board. In particular, the Unicode replacement character � is used now in situations where text2ascii(), copytext(), or splicetext() encounter bogus encoding. (Alexkar598)
Dream Seeker
- Special handling for some upper-range Unicode characters in the output control was much slower than it should have been. (Ondrej008)
- Parallel animations didn't handle dir changes properly in many cases. This also would have applied to other copy-only changes like icon_state. (Azrun)
Build 514.1581
Fixes (More Info)
Dream Daemon
- Text handling was working incorrectly when trying to determine if a word was a proper or improper noun, when the word used non-English letters. (Lummox JR)
- Dream Daemon was sometimes crashing on reboot, or on a second startup after not closing the application. (Vallat)
Build 514.1580
Fixes (More Info)
Dream Daemon
- The typesof() change had an issue in certain cases that wasn't immediately obvious in testing. (Aregrued)
Build 514.1579
Fixes (More Info)
Dream Maker
- Setting luminosity over a value of 7 at compile-time could cause an overflow into other appearance bitflags. (Willox)
Dream Seeker
- Using an embedded winget in the form [[parent.control.parameter]] didn't work correctly and would especially fail in cloned windows. (Ter13)
- Embedded wingets in macros were causing crashes or hangs. (Ter13)
Features (More Info)
Dream Daemon
- istype() lookups and generation of typesof() lists have been optimized to use O(1) lookup time instead of O(depth). The only exception is that typesof() for mob types work the old way.
Build 514.1578
Fixes (More Info)
Dream Daemon
- Code relying on flist() was acting inappropriately in Windows. (LeahTheTech)
Dream Maker
- Regression in 514.1576: the spantext() family of procs all compiled incorrectly. (Willox)
- Regression in 514.1576: Compilation sometimes failed in Linux due to an incorrect method for checking filename matches that sometimes got caught on directories with names too similar to other files. (Lavenblade)
Dream Seeker
- Using a screen_loc on a plane master with one of the edge keywords (TOP/BOTTOM/LEFT?RIGHT) caused incorrect mouse hits for objects on the plane. (Tacurumin)
Build 514.1577
Fixes (More Info)
Dream Maker
- Regression: Static vars defined in procs didn't compile correctly if their default value was a string. (KylerAce)
Build 514.1576
Fixes (More Info)
Dream Maker
- Projects with a lot of resource files could compile very slowly, especially with automatic FILE_DIR entries and a very large number of resources in the same directory. (Lummox JR)
- The compiler sometimes crashed in rare situations involving operations done on string literals. (Lucine)
Dream Seeker
- The vis-x and vis-y params in mouse handling were wrong for some transformed atoms. (Fikou)
Build 514.1575
Fixes (More Info)
Dream Seeker
- In some games, the timer changes in 514.1573 and frame skips caused a lot more jitter than before. That wasn't the case for all games, but the timer has now been adjusted to use something closer to 1572's behavior with some of the new stuff as a fallback for high-stress scenarios. (Vallat)
Build 514.1574
Fixes (More Info)
Dream Seeker
- Regression: One of the memory leak fixes wasn't quite right, but the problem only showed up in certain situations, resulting in a crash. (Kumorii)
Build 514.1573
Fixes (More Info)
Dream Daemon
- Outputting a color generator as a string produced incorrect results. (Sovexe)
Dream Maker
- In some cases, loading an environment and interacting with it in any way (e.g. selecting text) then compiling, then doing the same with a different environment in the same session, could cause a crash. (Kumorii)
Dream Seeker
- The high-precision timer behavior has been improved a little more to deal with situations where the client undergoes too much stress. (Lummox JR)
- Memory leaks were discovered with visual bounds calculations and filter animations. (Lummox JR)
Build 514.1572
Fixes (More Info)
Dream Daemon
- Using a generator to get a color value on the server produced bogus text. (Sovexe)
- When a matrix was used for particles.transform, it was sent to the client transposed, producing incorrect results. (Pali6)
- When converting a generator() to a string, sometimes the resulting text was wrong. (Pali6)
Dream Maker
- Error and warning messages sometimes spit out garbage data where type paths were supposed to be. (KubeRoot)
Dream Seeker
- The renderer for icon-based particles was not handling Z ordering correctly. (Pali6)
- Particles were drawn to the wrong position when KEEP_TOGETHER was on and an object had any overlays, causing them to get cut off. (Sovexe)
- Decreasing particles.count had no effect. (Sovexe)
Build 514.1571
Fixes (More Info)
Dream Daemon
- A fix to turf and area appearance changes not always showing up on the client caused a nasty crash when changing an area's appearance while hosting. (Vallat)
Build 514.1570
Fixes (More Info)
Dream Daemon
- When a turf that was out of bounds but otherwise visible, e.g. with a big icon, changed appearances in such a way as to not impact is visual bounds, that update was sometimes not sent to the client. (Lummox JR)
- Tile movers were not properly blocked by objects not aligned to the tile grid when moving west or south. (Exxion)
- Client animation messages were sent in advance of map updates in some cases, which caused "jumping" when animating client pixel offsets. In addition, the server calculated "spillover" bounds for the viewport incorrectly in cases where client pixel offsets were animated, resulting in some tiles disappearing prematurely. (Marekssj3)
Dream Maker
- glide_size could not be overridden as 0 at compile-time. (NataKilar)
Dream Seeker
- When movable atoms were continually moving, entries built up in a client-side list of movers, causing major progressive slowdowns even with just a few objects. Normally this was not visible because most objects stop moving at some point. This issue is very old and probably had a small but occasionally noticeable impact on many games. (Zamujasa)
- The previous build's maptext fix caused smaller line-height values than default to stop working correctly in maptext. (Repo82)
Build 514.1569
Fixes (More Info)
Dream Daemon
- When moving a movable object from a turf into another movable, sometimes the old bounds weren't detected correctly, causing Uncrossed() to often not be called or possibly be called for multiple unrelated turfs. (Mport2004)
- The eye sync information used for recent gliding fixes was not set correctly in cases when client.edge_limit was used. (Marekssj3)
- Setting a particle set's icon value to a list produced no icons at all in most cases. (Gomble)
- animate() wasn't working correctly for pixel offsets with /client. This issue was on the server side. (Comicao1)
Dream Seeker
- Maptext miscalculated line height in some cases, causing the last line to be cut off in certain situations. (Rotem12)
- The red and blue channels of atom.color were sometimes swapped when the color was applied to maptext, in specific situations. (James)
- Transformed plane masters did not set their visual bounds correctly, which caused items to get cut off. (Mport2004)
- The motion blur filter sometimes caused objects to disappear. (Albro1)
Features (More Info)
DM Language
- Implied types for new() and locate() can be used alongside all assignment operators now, not just the = operator. Therefore, A ||= new is a perfectly valid statement if A has a defined type.
Build 514.1568
Fixes (More Info)
Dream Daemon
- Regression: A reorg to some of the internal structures accidentally removed initialization of atom/movable/particles, causing junk IDs to be used and bogus calls to DecRefCount(). This in turn caused some datums to deallocate prematurely, which was more likely to occur in bigger projects. (Lummox JR)
Build 514.1567
Fixes (More Info)
Dream Daemon
- Changing an appearance's internal bits (e.g. changing density, gender, etc.) could accidentally remove newer high-order flags like TILE_MOVER. (Exxion)
- Adding an object to all turfs' visual contents and then later setting its vis_locs to null caused a massive slowdown, which was bigger on larger maps. While there is still a bit of unavoidable grind involved in removing the same object from the visual contents of every turf on the map, the speed of the process has been greatly improved. (James)
Dream Maker
- Certain complex expressions with the null conditional operators didn't compile correctly. (DamianQ)
- Using a raw string with the long-form delimiter @(...) could cause a hang in the compiler when it occurred within an #if preprocessor block that got skipped. (Lummox JR)
Dream Seeker
- Generators with the "box" type produced the same random number for Y as for X, instead of giving them independent values. (Gomble)
- The JSON output for debugging mapicons was malformed for some projects. (Shifty_rail)
- When using screen_loc with the edge keywords TOP, BOTTOM, LEFT, or RIGHT, or any combination thereof, the coordinates could be wrong if other HUD elements stretched the map (e.g., an item at "-1,-2") or when using a secondary map control. (Lummox JR)
- Animations on an image object or client, which send messages differently, were misbehaving in newer versions. (Jaredfogle)
- The "sin timer" designed to deal with situations where mouse/keyboard input was getting buried in the queue by an aggressive high-res timer, was itself too aggressive. This resulted in unnecessary stuttering when it would have been easier to give the queue a chance to catch up on its own. A new balance has been struck to avoid this problem. (RootAbyss)
Build 514.1566
Fixes (More Info)
Dream Daemon
- Using animate() on world start with time=0 could cause the server to hang. (Kumorii)
Dream Seeker
- Recently expired animations were not fully purged, causing odd behavior in some cases. (RootAbyss)
- Starting in 514.1562, clients were misreading animation messages from older 514 servers. This could result in crashes and broken animations. (Sovexe)
Build 514.1565
Fixes (More Info)
Dream Daemon
- animate() was causing heap corruption in rare intermittent cases, resulting in a server crash. (Zewaka)
Build 514.1564
Fixes (More Info)
Dream Daemon
- Appearance references were getting mangled by the new server-side animation code, causing visual glitches and sometimes crashes. (Kumorii)
Dream Seeker
- Added filters didn't appear until previous animations were finished, if ever. Additionally filter animation in general was incorrect with the new animation system. (Repo82)
Build 514.1563
Fixes (More Info)
Dream Daemon
- Regression: Multiple new issues with animate() with appeared on the server end. (RootAbyss)
Dream Seeker
- Some animations were broken on the client. (RootAbyss)
Build 514.1562
Fixes (More Info)
Dream Daemon
- An earlier fix to TILE_MOVEMENT_MODE and TILE_MOVER that prevented incorrect sliding behavior also accidentally caused all moves over 1 tile to be jumps for tile movers, even if that move was within step_size. (Exxion)
Dream Daemon & Dream Seeker
- Creating multiple animations in rapid succession could cause problems with the transitioning between them. This was an issue on both the client and server ends. (NSBR)
Dream Maker
- The transparency option for label elements had been removed from the skin editor, when it should have been removed from button elements instead. (NSBR)
- The compiler did not produce an error when trying to use the particles var for image objects. (TiviPlus)
- Button controls in skins have an undocumented stretch parameter that doesn't actually do anything. It has been removed from the skin editor as a result. (NSBR)
- The "Size to image" option for windows and panes in the skin editor caused the window to expand to fill the screen (usually) when no image was selected. (NSBR)
Dream Seeker
- The previous fix for high-resolution timers was at best only partially effective, and didn't solve the problem properly, so there could still be lag for mouse and UI input. (Somepan)
- atom.step_size was still limited to integers at compile-time, even though at runtime it can take decimal values now. (Ter13)
Build 514.1561
Fixes (More Info)
Dream Seeker
- In some situations, the input fix for high-speed timers caused an intermittent issue where it could randomly cause Dream Seeker to close, mistakenly believing the user had quit. (MrStonedOne)
Build 514.1560
Fixes (More Info)
All
- The url_encode() improvements actually messed up some URLs in a way that didn't get noticed in testing. This appears to have impacted not just the server, but also the pager and its ability to connect to the hub. (Zewaka)
Build 514.1559
Fixes (More Info)
Dream Seeker
- Clicks were being lost when right-click context menus were open. (Vallat)
- A previous fix to the alpha mask filter caused a regression for cases where the mask was an icon rather than a render source, resulting in a crash. (RootAbyss)
Build 514.1558
Fixes (More Info)
Dream Daemon
- When TILE_MOVMENT_MODE was used, movable movement was always treated as a slide, instead of treating it as a jump when the distance exceeded step_size. (Dayoak)
- Changes to particle datums didn't cause the objects that used them to send updates to the client, requiring that the objects had some other change such as appearance or location first. (Vallat)
- When client.eye is inside a movable, the topmost movable should be treated as the eye instead for gliding purposes. This is a server-side fix. (Exxion)
Dream Seeker
- Changing a sound's frequency caused future frequencies on the same channel to be incorrect if the sound remained playing. (Bravo1)
- If an object was transformed using anything but translation matrices, and then used as a render source for an alpha mask filter, the filter positioned the mask incorrectly. (Y0SH1_M4S73R)
- More gliding issues were discovered. As before, there is a server component as well so the server also needs to be updated. (RootAbyss)
- Alpha masking didn't correctly cut off the mask on some sides, if the mask was based on an icon rather than a render source. (RootAbyss)
- The alpha mask filter with the MASK_SWAP flag caused a crash when given a bogus render source. (Ninjanomnom)
- High-precision timers could cause major issues for input handling, which were even worse on clients connected to remote servers, if the client lagged behind due to an overloaded map. (F0lak)
Features (More Info)
All
- BYOND is now compiled as large address aware, so it can in theory use closer to 4 GB than being limited to just under 2 GB as before.
Dream Daemon
- Various text routines like url_encode() have been improved considerably and should perform much better than before.
Build 514.1557
Fixes (More Info)
Dream Daemon
- json_decode() would create multiple list entries when given a technically malformed JSON object with duplicate keys. (Alexkar598)
- Regression in 514.1555: Clearing a movable's vis_contents didn't update the object visually. (Sovexe)
- Rebooting Dream Daemon didn't clear out SendMaps profile data. This diminished the usefulness of data over time in long-lived processes. (Zewaka)
- The savefile parser could fail in some cases where the data was a file not in the world's cache, due to improper parsing of base64 encoding. (Pali6)
Dream Maker
- The DM parser choked after reaching too many unique symbols, causing wraparound of outdated 2-byte values and subsequently a crash. (Funce)
Dream Seeker
- The new browse_rsc() enhancements had a bug where after a small number of waiting files in a row, new files weren't added to the waiting list and therefore weren't requested by the client. (Exxion)
- Gliding speed was incorrect in games using tile movement when the player's mob had a different object as the eye and no glide_size was assigned. There is also a server component to this bug in which servers did not send the correct eye information (for the new data sent from 514.1553 onward), so the server will need to be updated as well. (Deity Link)
- Alpha mask filters behaved incorrectly in several cases, especially when using MASK_SWAP. (RootAbyss)
- The new client eye syncing behaved incorrectly in certain cases. This is actually two bugs, one of which is on the client and the other on the server. For a complete fix the server must also be updated. (RootAbyss)
Build 514.1556
Fixes (More Info)
Dream Daemon
- Regression in 514.1553: In some worlds that used a different client.eye besides the player mob, the mob info message was sent incorrectly and therefore the client got garbage data, which could cause crashes on the client. (Devourer Of Souls)
- Changing only the dir of a movable atom didn't update it visually on the client. (Johan411)
Dream Seeker
- Accessing .x and .y of a size or pos value (etc.) in embedded wingets didn't properly change the value to a number format, which caused the various formatting types like "as arg" and "as escaped" to produce incorrect results. (Ter13)
- Atom visual bounds were transformed incorrectly (mostly on the client) when transform was applied, resulting in mouse hit problems. (Sovexe)
Build 514.1555
Fixes (More Info)
Dream Daemon
- A typo existed in the results of world.Profile() for SendMaps in JSON format. (Zewaka)
Dream Maker
- Changing src in a proc by assigning a new value could cause some subsequent var accesses from src to happen incorrectly, by the compiler assuming src hadn't changed. (RootAbyss)
Dream Seeker
- input() as password didn't work correctly when given a blank password, causing future inputs to fail. (Dajinomight)
- Mouse hit detection was incorrect for overlays of objects within plane masters. (BurgerBB)
Features (More Info)
Dream Daemon
- Various operations related to the internal SendMaps() function have been optimized based on profiling data.
Dream Seeker
- Client profiling is more accurate, and the improved data has been used to make further optimizations to the pre-render process.
Build 514.1554
Fixes (More Info)
Dream Maker
- Regression: the ?. operator stopped working correctly with lists, throwing a bogus compiler error. (Zewaka)
Features (More Info)
DM Language
- The new SendMaps profiling can be accessed from world.Profile() as: world.Profile(command, type="sendmaps", format=...)
Build 514.1553
Fixes (More Info)
Dream Maker
- Using an expression like ++a?.b on a line by itself threw a "statement has no effect" warning incorrectly. (Spevacus)
- The ?: operator could sometimes get confused and call a global proc with the same name as a datum proc, and so could ?. when given a var with no type. (Willox)
Dream Seeker
- Unicode characters in URLs were mangled in link(). (NSBR)
- Embedded wingets such as [[*]] parsed incorrectly in certain cases when surrounded by quotation marks and when no format was explicitly specified. (Ter13)
- Images in maptext could cause crashes in some situations. (F0lak)
- Gliding has been improved on the client to keep the mob and eye in better sync. This requires an updated server as well, which will send additional information used for the sync. (FKI)
Features (More Info)
Dream Daemon
- The time spent in SendMaps() can now be profiled roughly, using an old-style topic URL such as ?debug=profile&type=sendmaps with an optional output or window parameter. A better interface will be added in the future.
Build 514.1552
Fixes (More Info)
Dream Maker
- The null-conditional ?. ?: and ?[] operators compiled incorrectly as of build 514.1550 in a way that caused major problems at runtime with some cases, and some really esoteric cases were incorrect or inefficient before that. The operators now have the correct precedence and association to behave as expected. (Zewaka)
Build 514.1551
Fixes (More Info)
Dream Daemon
- Limited-time animations of a client or image could crash the server. (F0lak)
- Non-ASCII strings in the compilation could cause a world not to load. (TXTi)
Dream Seeker
- Blur filters didn't expand their drawing box enough and could get cut off. (F0lak)
Build 514.1550
Fixes (More Info)
BYOND Pager
- Local database creation by the pager was being handled incorrectly. (Bobbahbrown)
Dream Daemon
- rgb2num() failed with alternate color spaces in cases where the hue was ambiguous. (Taitz)
- The null-conditional operator could cause the proc stack to grow if it caught a null and was used in a right-hand-side expression, e.g. calling a?.b() without assigning the result to a var. (Pali6)
Dream Maker
- sha1() with a constant string compiled incorrectly. (GinjaNinja32)
- The ?[] operator didn't chain correctly with the [] operator in all cases, resulting in code failing to compile. (TiviPlus)
- Compiling rgb2num() with a non-string constant for the color could cause a crash. (Spookerton)
- The chaining dot/colon operators and the [] and ?[] operators didn't play together nicely, owing to the chaining operators having a lower precedence. They actually should have the same precedence, and now they do. (TiviPlus)
Dream Seeker
- Starting a parallel animation stage for images or clients with time=0 could cause the new stage to end prematurely and also break already-running animations. (This fix impacts the server as well.) (The peoples republic of china)
- The displacement filter didn't work when the displacement mask was an icon instead of a render source. (Repo82)
Build 514.1549
Fixes (More Info)
Dream Maker
- rgb2num() could crash the compiler in some cases. (Taitz)
Dream Seeker
- Filters with color matrices did not animate them correctly. (Qustinnus)
- Alpha premultiplication was done incorrectly for some situations like drawing maptext or anything with KEEP_TOGETHER, which especially caused problems for fade effects. (Vallat)
Features (More Info)
DM Language
- client.GetAPI() and client.SetAPI() have been added to improve Steam integration support, and CheckPassport() can now handle Steam DLC (in theory). This applies only to games built with the proper Steam credentials via BYONDexe.
- Windows and panes now have an on-status event so you can implement a custom statusbar or simply respond to status text changes.
Build 514.1548
Fixes (More Info)
Dream Daemon
- Movables with fractional step offsets sometimes failed to handle collisions properly. (Linkenclick)
- Calling rgb() with non-constant values for non-RGB color spaces caused a proc stack underflow and often a crash. (Taitz)
- The server calculated visual bounds of some objects incorrectly in some cases. Mainly this was when a turf was in visual contents. (Lummox JR)
Dream Maker
- The ?. operator when used on the left-hand-side and before a list index, e.g. a?.b[c] = d, did not compile correctly. (Vallat)
Dream Seeker
- The client was reading animation messages incorrectly, which resulted in errors that appeared and disappeared in waves as more animations were created. (Vallat)
- The threads used for particle effects had a small memory leak. (Lummox JR)
- When particles spawn count and lifespan was so high that there was no more room to spawn new particles, the count of pending particles to spawn would keep rising. Now the pending count resets to under 1 if there is no more room for new particles. (F0lak)
- An object with no icon, even if it had maptext or KEEP_TOGETHER visual contents, was not recognized as having extended visual bounds. (Lummox JR)
- Uppercase U was sometimes mistaken for a whitespace character in maptext wrapping. (Azrun)
Features (More Info)
Dream Seeker
- Rendering performance has been slightly improved.
- The performance of multiple particle calculation threads in the pre-render stage has been dramatically improved. Additionally, there is also client profiling information available for particle performance in the pre-renderer.
Build 514.1547
Fixes (More Info)
Dream Seeker
- Client ticks were less precise when Dream Seeker was connected to a remote server, unless it was first started as a server itself and then later link()ed to the server. (The peoples republic of china)
- Mouse operations on grid controls mistakenly copied the grid cell into the "control" argument. This also impacted new mouse macros. (Klirix)
- Using plane masters caused non-HUD objects not to clip when outside the normal map area. (The peoples republic of china)
- Particles with icons appeared behind of the sprite belonging to their parent object, instead of in front. (Lummox JR)
- When no other icons on the screen were animating, deleting a particle set or detaching it from an object was not enough to make the map draw a new frame, resulting in apparently frozen particles until the next update (such as an object moving). (Lummox JR)
- Creating a new skin control at runtime but giving the winset() call a fully decorated name (e.g. winset(usr,"window.thing","...;parent=window")) caused the control to be created incorrectly by including the window name twice. (Crazah)
- Because new particles reused empty slots in the array left behind from dead particles, they could draw out of sequence. (The peoples republic of china)
- The "unlit sprite" used for SEE_BLACKNESS and SEE_PIXELS didn't load correctly. (Ter13)
- Objects that used a render_source from a plane master were positioned incorrectly relative to their parent object. (The peoples republic of china)
- Objects in visual contents should have inherited the micro-layer of their parent if they used FLOAT_LAYER. (They did correctly inherit if using the VIS_INHERIT_ID or VIS_INHERIT_LAYER flags.) (Ter13)
- Icon particles were drawn at incorrect positions, causing artifacting at their edges. (The peoples republic of china)
Features (More Info)
DM Language
- Particle values were inconsistently based on either client ticks or BYOND standard ticks. All of the timing has been adjusted to use BYOND standard ticks. This will impact any particle effects you already have: spawn count should be divided by tick_lag for instance, and friction and drift in particular may need to be updated (which in turn would affect gravity).
- A grow var has been added to particles to change their scale over time.
- The value of particles.spawning can now be fractional, allowing finer control over spawn rate.
Build 514.1546
Fixes (More Info)
Dream Daemon & Dreem Seeker
- Eye gliding was broken in newer movement modes. (F0lak)
- A new 514 feature intended to make animation transitions easier to detect was implemented incompletely, resulting in some failed transitions. (Bravo1)
Dream Seeker
- Icons could become corrupted after garbage collection due to problems with texture atlas handling. (Anturke)
- Alpha masks using an icon instead of a render source failed in most cases. (The peoples republic of china)
- Browser controls with on-show commands didn't work correctly, causing a problem with non-popup browse() commands applied to the default skin. (LordAndrew)
- The "measurement" phase of the bloom filter was handled incorrectly, resulting in very strangely broken results for some cases. (Crazah)
- A display flag indicating an icon had a particle set attached stayed active in any of the atom's overlays or image objects, resulting in more pixels being drawn. (Vallat)
Features (More Info)
Dream Daemon
- Limitations in the timers used to measure tick usage meant that world.cpu, world.tick_usage, and world.map_cpu weren't very precise. These have been updated to be much more precise.
Build 514.1545
Fixes (More Info)
Dream Maker
- The TILE_MOVER flag did not save when set at compile-time.
Note: This fix changes the .dmb format for projects built with BYOND 514. (Exxion)
- When using the spin arrows in the color selection dialog, the new color preview below did not update. (F0lak)
Dream Seeker
- Dream Seeker could crash in some cases when trying to fill a texture atlas. (Vallat)
- The alpha mask filter could cause Dream Seeker to crash when it didn't have an icon or render source. (F0lak)
Features (More Info)
DM Language
- Particles now have a fade_in parameter.
Dream Maker
- The spin-arrow buttons for hue in the color selection dialog now allow movement past 0 or 360.
Build 514.1544
Fixes (More Info)
Dream Maker
- NORMAL_RAND was mistakenly still called GAUSS_RAND (an earlier name for it) in the stddef.dm file, in conflict with the documentation. (Vallat)
- The particles var could not be assigned a value at compile time. (Zewaka)
- Generators could not be assigned to particle datums at compile-time. (Zewaka)
- JUMP_EASING was defined incorrectly in stddef.dm. (Zewaka)
Dream Seeker
- Particle effects didn't cause the map to redraw if no other icon animations or changes were in use. (Klirix)
- Icons being unloaded could cause a crash. (Vallat)
- Alpha mask filters were broken. (Vallat)
Build 514.1543
Features (More Info)
DM Language
- The new gradient() proc can blend between colors.
- animate() can now interpolate between colors using color spaces other than RGB. (Note that this does not currently apply to color matrices.)
- rgb() now allows you to specify a color space, so it can be used to create colors from HSL, HSV, and HCY numbers. There is also a new rgb2num() proc that will reverse the process, producing a list of numbers.
- A new filter type, "bloom", causes halo effects on all pixels above a certain RGB threshold.
- A new proc called load_resource() has been added, to make it possible to preload an icon/sound asset and change how long to it stays loaded.
- splicetext() and list.Splice() have been added, which do a cut and an insertion at the same time. For instance, splicetext("banana", 3, 6, "laclav") becomes "balaclava". For text in particular this should be a benefit since it avoids multiple changes to the string tree (using the old method of copytext() + string + copytext()) in favor of a single change.
- browse_rsc() behavior has been improved so that files can be sent through the regular resource download system, which can 1) check for whether the client already has a file, and 2) batch-send any needed files. The old approach was not scalable and resulted in delays in some games.
- time2text() now takes another argument for the time zone. Additionally, client.timezone and world.timezone vars have been added.
- ||= and &&= shortcut operators have been added.
- BYOND now supports better control over the use of tile or pixel movement with world.movement_mode, and a new appearance flag called TILE_MOVER. This controls the behavior of things like turf.Enter() and can be used to sidestep old legacy behavior, impacts gliding, and objects in TILE_MOVEMENT_MODE or with the TILE_MOVER flag are locked to the tile grid.
- A new "assign-into" operator := has been added, which can be overloaded. This allows more flexibility in advanced datum types.
- List access now has a ?[] operator. If the list is null, the list access will do nothing and fail without an error.
- world.map_cpu has been added to help track CPU usage for map-send operations. This is not a full profiler but it should help some games gauge how server performance is impacted by map complexity and player load.
- Client-side particle effects have been added! The particle system allows for a massive amount of flexibility with special effects (which is likely to be expanded in future builds). These effects are purely visual, run on the client, and should not impact server performance.
Dream Seeker
- The renderer now uses texture atlases to keep more sprites on the same texture, which should improve rendering performance slightly for many games.
- Embedded winget syntax [[...]] used in client macros and client-side commands such as .winset, has been greatly improved. Now all embedded winget parameters can have the parameter name followed by a format type, for instance [[map.size as json]], to make it easier to include this info in various command formats.
- Client macros can now be bound to mouse actions, and provide data to the attached server verb via a [[...]] syntax similar to embedded wingets.
513 Release Notes | View All