Difference between revisions of "ChangeLog"
Line 1: | Line 1: | ||
+ | ===Cluster 0.8.1.71 Experimental=== | ||
+ | NDA Only, not for production use! | ||
+ | *'''''Requires Server version 0.8.1.71 or higher.''''' | ||
+ | * | ||
+ | ===0.8.1.71 Experimental=== | ||
+ | NDA Only, not for production use! | ||
+ | *'''''Requires 0.8.1.71 Cluster''''' | ||
+ | * '''''Note:''''' This server build is really a 0.8.2 release rolled back to 0.8.1 as an updated client is not available currently. There maybe various oddities at work. | ||
+ | |||
+ | * Ability to obtain character names and userIds while given character/user is offline via GameObj:GetCharacterName(), GameObj:GetAttachedUserId() also now works for offline characters. This replaces User.Name that was often saved in globalvars and referenced in many areas. | ||
+ | |||
+ | * Region servers now support adjusting UserUpdateFrequency and SimulationTickRate via optional additions to ClusterConfig.xml. Defaults for these have been set to 100/250. Experiment with at your own RISK! | ||
+ | :<Performance> | ||
+ | ::<UserUpdateFrequencyMS>1</UserUpdateFrequencyMS> | ||
+ | ::<SimulationTickRateMS>1</SimulationTickRateMS> | ||
+ | :</Performance> | ||
+ | |||
+ | * Latest rollup of 0.8.1.x script changes mostly base game related. | ||
+ | |||
===0.8.1.60 Experimental=== | ===0.8.1.60 Experimental=== | ||
NDA Only, not for production use! | NDA Only, not for production use! |
Revision as of 22:31, 22 November 2018
Contents
- 1 Cluster 0.8.1.71 Experimental
- 2 0.8.1.71 Experimental
- 3 0.8.1.60 Experimental
- 4 Cluster 0.7.1.97
- 5 0.8.1.24 Experimental
- 6 0.7.1.97
- 7 0.7.1.96
- 8 0.7.1.95
- 9 0.7.1.44
- 10 0.7.1.43
- 11 0.7.1.37
- 12 0.7.1.36
- 13 0.7.1.30
- 14 0.7.1.27
- 15 0.7.1.18
- 16 0.7.1.15
- 17 0.7.0.6 Experimental
- 18 0.6.4.24
- 19 0.6.4.19
- 20 0.6.4.9
- 21 0.6.3.50
- 22 0.6.3.41
- 23 0.6.3f
- 24 0.6.3
- 25 0.5.1
- 26 0.4.9
- 27 0.4.8
- 28 0.4.7
- 29 0.4.6
- 30 0.4.0
- 31 0.3.5
- 32 0.3.4
- 33 0.3.3
- 34 0.3.2c Hotfix
- 35 0.3.2
- 36 0.3.1d
- 37 0.3.1
- 38 0.3.0
- 39 0.2.5
- 40 0.2.4
- 41 0.2.3
- 42 0.2.1b
- 43 0.2.1
- 44 0.1.14d
- 45 0.1.14c
Cluster 0.8.1.71 Experimental
NDA Only, not for production use!
- Requires Server version 0.8.1.71 or higher.
0.8.1.71 Experimental
NDA Only, not for production use!
- Requires 0.8.1.71 Cluster
- Note: This server build is really a 0.8.2 release rolled back to 0.8.1 as an updated client is not available currently. There maybe various oddities at work.
- Ability to obtain character names and userIds while given character/user is offline via GameObj:GetCharacterName(), GameObj:GetAttachedUserId() also now works for offline characters. This replaces User.Name that was often saved in globalvars and referenced in many areas.
- Region servers now support adjusting UserUpdateFrequency and SimulationTickRate via optional additions to ClusterConfig.xml. Defaults for these have been set to 100/250. Experiment with at your own RISK!
- <Performance>
- <UserUpdateFrequencyMS>1</UserUpdateFrequencyMS>
- <SimulationTickRateMS>1</SimulationTickRateMS>
- </Performance>
- Latest rollup of 0.8.1.x script changes mostly base game related.
0.8.1.60 Experimental
NDA Only, not for production use!
- Requires 0.8.1.24 Cluster
- Latest rollup of 0.8.1.x changes mostly base game related.
Cluster 0.7.1.97
Minor Release
- Requires Server version 0.7.1.96 or higher.
- Race condition fixed that can cause a CharDB crash, if a new character is created during a specific part of an active backup.
0.8.1.24 Experimental
NDA Only, not for production use!
- Requires 0.8.1.24 Cluster
- Server
- Logging timestamp format changed.
- ChatLog changed to JSON format.
- Security log added for speed hacking, and client floods messages.
- Redis removed as remote event datastore.
- SetObjectTag now is persistent.
- IPlugin Interface Changes: New paramaters for Init, new writer/reader functions for specific types, fix for dependency dlls causing issues (attempting to be loaded)
- Lua global variables ServerSettings.WorldName and ServerSettings.SubregionName and ServerSettings.RegionAddress and ServerSettings.DataDirectory automatically added to Global Namespace.
- Removed functions GetWorldName, GetSubregionName, GetRegionAddress.
- Overall Features WIP:
- Features PDF
0.7.1.97
Minor Release
- Requires 0.7.1.96 Cluster
- Server
- Fixed standalone server ChangeWorld aka /reloadglobals sometimes hanging, as well as skipping world backup files in the 0.7.1.96 build.
0.7.1.96
Minor Release
- Requires matching 0.7.1.96 Cluster
- Server
- Fixed a rarely occurring world/chardb backup crash condition involving player owned objects which contain additional objects. (E.G Pack horses/etc)
- Updated region backup file loads to only load region backups as new as the chardb backup. (Prevents loading of region data that is newer than chardb timestamp. Loading older region data is still supported, but should be done carefully, as this can create an unstable world state. Region Backup/CharDB backup timestamps should normally be synchronized.)
- Cluster/CharDB
- Inform region servers upon connecting of the CharDB's loaded time stamp.
0.7.1.95
Final 0.7.x Major Release
- Important: This server/cluster release combination changes the character database format. Rollback to a previous server/cluster release, will require a rollback of character database as well.
- Requires matching 0.7.1.95 Cluster
- Server
- Player characters no longer generate and send saves to the cluster/charDB every 5 minutes in addition to upon logout/region transfer. Instead characters and all of their associated items/pets/etc are sent to CharDB during a regular world backup event, and are thus at that save point in a consistent state with the given backup's timestamp. Characters continue to send save snapshots of themselves to CharDB on a logout or region transfer, however these snapshots are not written to the CharDB database until the next completed backup cycle. Player data is now cached similar to world data, and so servers may potentially see a memory increase, but may also see in general a processing load decrease during backups, as characters are serialized much quicker and all on the backup thread.
- Player character serialization format has changed, and the server should appropriately handle loading of old CharDB character formats, until they have been updated to the new format upon the next character save.
- There is no longer a 128 max player per region cap limit in place. Caps of around 200 or less are recommended however.
- New community requested server functions:
- GameObj:GetDest()
- GameObj:IsPathingToTarget()
- GameObj:GetPathTarget()
- New community requested server functions:
- Cluster/CharDB
- All CharDB database operations are now specific upon a given backup timestamp. Previously the only 100% guaranteed consistent state was upon a successful server shutdown, as operations happening during a backup window that modified the database would be written into the database during the backup window, and copied into the timestamp specific save. This was generally a small window of time for occurrences to happen, but it did mean that in the event of a server crash data could be in a semi-inconsistent state. (An example of this might be deleting a character in the middle of a backup, the backup finishing and then crashing the server. The player character in this case would be deleted from the CharDB, but there house would still exist on the region, as the region's save didn't include the character's delete and the delete of their house/etc. (This would of happened in the next region backup or server shutdown and not have been an issue, but the server crashed before that happened.)
- Previously the following operations could all potentially create inconsistent state during a backup window:
- 1. Globalvar writes/deletes.
- 2. Character creation.
- 3. Character deletion.
- 4. Character saves.
0.7.1.44
Minor release
- Server
- New LuaGameObj functions:
- GetIpAddress() - returns the IP address of the attached user if any.
- GetCurrentMoveSpeedModifier() - returns the current movement modifier in affect for the currently executing move if any.
- New LuaGameObj functions:
0.7.1.43
Minor release
- Server
- Fixed a bug where server rejected moves where sometimes placing you inside impassable terrain. Now in this case the server rubber bands the player back to the last passable node. This should decrease the occurrence of players getting stuck a good deal.
- Added new global lua engine function CreateCustomTempObj which spawns a new temporary gameobj by using a specified lua table as the template.
- Begin distributing a pdf version of the engine lua interface in distributions.
0.7.1.37
Minor release
- Server
- Fixed a bug where owned objects were incorrectly serializing some objects into the world saves as well as into character saves. This was usually temporary until a player logged out/etc at which point the objects would also be destroyed from the world saves. However, in the event of a server crash, it could lead to messages like “[GameplaySimulation][AddToContainerCache] Object is inside a container that does not exist in the world.” on server startup.
0.7.1.36
Minor release
- Cluster
- Optional upgrade available
- Addresses infinite wormhole tunnel issues.
- Additional hourly backups kept before being cycled out. (12 hours instead of 5)
- Optional upgrade available
- Server
- GameObj:PathTo move to closest location argument updated to actually move the target to the nearest reachable location to the target requested if a nearby destination can be found. Additional optional argument added that allows for specification of search radius to find a valid nearby destination node. (E.G clicking into a river normally will result in a 100% failure of PathTo, but if you provide a larger search radius, it’ll potentially find the solid bank nearby, and set that as the destination. Obviously the bigger the search radius, the more expensive CPU/Memory wise this is to do.)
- GameRegion now has an intersects method that accepts AABox2 type.
- New global lua function IsPluginLoaded() which returns true or false if a C# engine plugin of the passed in name, has been loaded.
- Additional hourly backups kept before being cycled out. (12 hours instead of 5)
0.7.1.30
Minor release / Security Release
- Server
- Fixed an item dupe bug that was possible when triggering flood protection windows.
0.7.1.27
Minor release / Security Release
- Server
- Fixed a potential tampered packet exploit that could result in a server leaking its access key to the attacker.
- Fixed a crash caused by race condition with region server startups and Remote Object Messages being sent to a region that hadn't finished starting up yet.
- LuaGameObj:PathTo now accepts a parameter to block client movement input during a server move or not. (This is disabled until a new client release, as it requires a packet protocol change, and isn't compatible with the old client.)
- Native C# plug-ins are now supported by the server, but are an advanced unsupported feature. (Documentation pending release)
- Cluster
- Fixed a potential tampered packet exploit that could result in a server leaking its access key to the attacker.
- Scripts
- Merchants selling limited stocks of stack-able items with no amount defined in the template, now default to a server setting amount.
0.7.1.18
Minor release, mostly scripts related bug fixes to 0.7.1.15
- Server
- Fixed a bug in server side decay component, that was not serializing decay to world backups. This meant any objects on the ground that should of decayed, but were still waiting to decay would persist if a server restart happened before they finished decaying.
- LuaGameObj:PathTo now accepts an additional boolean argument which moves the target to the closest available position to the requested destination, in the event no path to the destination exists.
0.7.1.15
Major release, client 0.7.1 is required, cluster upgrades to 0.7.1 are required.
- Cluster
- A cluster upgrade to 0.7.1 is required.
- Cluster now informs players connecting with an incorrect client version, the client version that is required.
- Cluster now supports "AllowedCharacterSlots" to specify allowed character slots on a server 1-4 currently. This functionality requires new config options that aren't available yet, but should arrive in the near future.
- Client
- New client script commands:
- SetCustomServerAction allows server to specify key binding and names for the CustomAction 1-5. (Send to player on login) E.G: SendClientMessage("SetCustomServerAction", "CustomAction1,M,OpenMap")
- ConfigurePathfinding allows server to specify various options in regards to click to path and click to attack when path finding is enabled.
- EnablePathfinding - Send to allow client the option of using click to move or not, cancels "DisablePathFinding"
- DisablePathfinding - Send to disallow client from using click to move.
- ForcePathfindingEnabled - Configures client to use click to path, regardless of client control settings.
- ForcePathfindingDisabled - Send to toggle off the above setting.
- EnablePathToMobile - Send to allow clicking on a mobile to trigger a path into range action or not. (Default behavior when clicking on a mobile with click to move enabled)
- DisablePathToMobile - Send to disable the above behavior.
- AllowMobileFrameDrags - Send with "true" or "false" to enable/disable the dragging of mobile health bars.
- SetCustomServerAction allows server to specify key binding and names for the CustomAction 1-5. (Send to player on login) E.G: SendClientMessage("SetCustomServerAction", "CustomAction1,M,OpenMap")
- New shared state entries:
- NoHealthBar - Set on a mobile to prevent any health bar from showing below the target.
- DenyPickup - Set on items/etc to tell the client they should not be able to lift or drag the object. Replaces setting items to -1 weight.
- Custom Asset Bundles/Maps:
- These now work correctly across region/world changes, and may publicly be used.
- Misc:
- Alpha component of Color is now supported, so it is possible to make objects translucent.
- Cloaks, Saddlebags, new mobiles foxes, crocodiles, new model art for bears and great harts.
- Torches no longer automatically turn off during the day.
- New client script commands:
- Scripts/Map data
- Removal of old hotfix/non-wipe supporting code from some scripts and some no longer needed scripts. (You will want to re-integrate some of these if using the base CS scripts distribution, and not wiping)
- Autofix.lua
- Player.lua
- base_mobile.lua
- blessed.lua
- cooking_crafting.lua
- globals/mobile_effects/buffs/spells/recall.lua
- globals/static_data/autofix.lua
- globals/static_data/wipe_notes.lua
- hireling_merchant_sale_item.lua
- house_control.lua
- incl_packed_object.lua
- world_map.lua
- House decay enabled again by default.
- Large amount of bug fixes, NPC merchant changes, and other bits. Corrected map region bounds for all regions, some static collision fixes, a lot of broken collision as well, Cloaks / Saddlebags. (See public update notes for list of details)
- NPC dialog can now be closed automatically if needed. Add close = true in response to close dialog window.
- Lots of scripts adjusted to use server supported decay component, instead of decay.lua.
- Removal of old hotfix/non-wipe supporting code from some scripts and some no longer needed scripts. (You will want to re-integrate some of these if using the base CS scripts distribution, and not wiping)
- ObjectTagDefinitions
- TreasureChests/Etc no longer default to EquipSlot of 'Bank', Bank Box template sets shared state property to 'Bank'
- Server
- Added UserLogin Lua Event
- Removed GetAccountProps global lua function
- Fixed GetTemplateData to no longer throw exceptions when objvars or lua module paths contain a "." in them.
- DeleteCharacter global lua function.
- SetName lua global function will now update character names in CharDB so name changes will be reflected on character select screen.
- Added support for NoWeather regions. (Fix weather inside caves/etc)
- New object searcher SearchExcludeRegion (Only safe to use on SingleObjectSearcher)
- New object searcher PermanentObjSearchRect (return permanent objects within a rect)
- Server now supports Decay component internally, this is more efficient than attaching decay scripts to objects that otherwise have no scripts.
- Standalone servers not running as part of a cluster now support /ChangeWorld and /resetglobals.
- New command ChangeWorld allows for a complete world/map change without restart of server or client re-login. All lua files/xml/etc are reloaded.
- New command resetglobals performs a ChangeWorld to the same map, and thus reloads all server data and lua files for that given map/world.
- StandaloneServerLauncher
- Now supports /ChangeWorld and /resetglobals from the GUI.
0.7.0.6 Experimental
- Experimental release, for early dev testing and integration. Many known bugs still.
- Server visibility is currently disabled for this release, in addition clusters will require a manual upgrade, and will no longer be compatible with 0.6.4.x servers.
- Client
- New client script commands:
- SetCustomServerAction allows server to specify key binding and names for the CustomAction actions 1-5. (Send to player on login) E.G: SendClientMessage("SetCustomServerAction", "CustomAction1,M,OpenMap")
- ConfigurePathfinding allows server to specify various options in regards to click to path and click to attack when path finding is enabled.
- EnablePathfinding - Send to allow client the option of using click to move or not, cancels "DisablePathFinding"
- DisablePathfinding - Send to disallow client from using click to move.
- ForcePathfindingEnabled - Configures client to use click to path, regardless of client control settings.
- ForcePathfindingDisabled - Send to toggle off the above setting.
- EnablePathToMobile - Send to allow clicking on a mobile to trigger a path into range action or not. (Default behavior when clicking on a mobile with click to move enabled)
- DisablePathToMobile - Send to disable the above behavior.
- Alpha component of Color is now supported, so it is possible to make objects translucent.
- Cloaks, Saddlebags, new mobiles foxes, crocodiles, new model art for bears and great harts.
- New shared object property "DenyPickup" used to specify if a client should be able to lift/drag an object or not. Replaces setting things to -1 weight. (Though this is also still checked in the client)
- New client script commands:
- Scripts/Map data
- Large amount of bug fixes, NPC merchant changes, and other bits. Corrected map region bounds for all regions, some static collision fixes, a lot of broken collision as well, Cloaks / Saddlebags. (See public update notes for list of details)
- NPC dialog can now be closed automatically if needed. Add close = true in response to close dialog window.
- Lots of scripts adjusted to use server supported decay component, instead of decay.lua.
- Server
- Added UserLogin Lua Event
- Removed GetAccountProps global lua function
- Fixed GetTemplateData to no longer throw exceptions when objvars or lua module paths contain a "." in them.
- DeleteCharacter global lua function.
- SetName lua global function will now update character names in CharDB so name changes will be reflected on character select screen.
- Added support for NoWeather regions. (Fix weather inside caves/etc)
- New object searcher SearchExcludeRegion (Only safe to use on SingleObjectSearcher)
- New object searcher PermanentObjSearchRect (return permanent objects within a rect)
- Server now supports Decay component internally, this is more efficient than attaching decay scripts to objects that otherwise have no scripts.
- Standalone servers not running as part of a cluster now support /ChangeWorld and /resetglobals.
- New command ChangeWorld allows for a complete world/map change without restart of server or client re-login. All lua files/xml/etc are reloaded.
- New command resetglobals performs a ChangeWorld to the same map, and thus reloads all server data and lua files for that given map/world.
- StandaloneServerLauncher
- Now supports /ChangeWorld and /resetglobals from the GUI.
0.6.4.24
- Minor bug fix release for scripts and templates.
0.6.4.19
- Scripts
- Massive combat overhaul, loot/spawn tables, and various fixes. (See public update notes for list of details)
- Server/Cluster
- Cluster now supports bans, suspensions, and IP bans, these are supported with new global Lua functions. (Requires cluster upgrade)
- BanUser
- UnBanUser
- BanIP
- UnBanIP
- ClearBans
- GetBans
- The StandaloneServerLauncher tool now includes an easy text box editor for setting global Lua script overrides. (See 0.6.3 changelog)
- Beginning functionality to work with accounts and characters via global Lua functions.
- GetCharacterListForUser
- Misc Admin Requests
- CanPathTo
- HasLineOfSightToLoc
- GetAllStats
- GetCurrentObject
0.6.4.9
- Requires new client and cluster versions.
- Secure trading for items and houses.
- World map via "M" key has been removed from players, but remains for gods. Map objects are now purchasable per region for players.
- The client controls window now includes hotkeys for “Custom Action 1-5”. These will execute a client user command event on the player with the name “customAction[1-5]”. This was specifically added so you could still have a map hotkey since we removed it from the base game.
- Player movement now cancels out any PathToTarget calls that are set on a player, instead of creating rubberbanding and server <-> client conflict. A PathingInterrupted event is sent back to lua when this happens.
- Changes to "SearchContainer" constructor and functionality. Check updated lua docs for details.
- Optimization pass on the server's networking and message system. This reduces the number of modifications and copies that were happening at times on messages/packets. It also sets up memory pools for re-use of memory instead of new allocations. This drastically reduces the .net allocated bytes/sec with higher player counts, and as such reduces .net garbage collection passes which slow down overall frame times and create frame spikes when doing deeper gen 2 collections.
- Updates to some of the lua interface documentation to correct mistakes, and explain in greater detail certain commands. (If you find a mistake please post in the admin forum thread dedicated to lua interface documentation)
- Aria script changes, optimizations, deletions, additions, and various updates. (See Gitlab for diffs, and publicly available patch notes)
0.6.3.50
- Minor ShardServer performance optimizations.
- Added DistanceFromSquared to LuaGameObj
- Updates to some of the lua interface documentation to correct mistakes, and explain in greater detail certain commands. (If you find a mistake please post in the admin forum thread dedicated to lua interface documentation)
- Aria script optimizations, and various updates. (See Gitlab for diffs)
0.6.3.41
- Change to build numbering to match the more frequent updates, and align with builds that will be available on the new web launcher.
- Continued work on ShardServer performance, further reduction in .NET garbage generations, optimizations for larger player counts in a single region, and object searchers.
- Modified Lua52.dll garbage collection mechanism, to be closer to a real time garbage collector instead of an incremental one. Optimized to favor finalization of userdata objects, so that the heavier C# objects get disposed of sooner aiding in reclaiming of memory used, and further reduction of .NET garbage collection times. Smoothed out some of the garbage collection frame time spikes that were happening in the old lua step model which attempted to reclaim X memory per step and as such had less predictable run times.
- Cleanup memory pools and some other static memory on soft server restarts that don't kill processes.
- New prey_ai.lua which in testing performs much better performance wise than the old one which was used for default animal spawns.
- /KickUser will now logoff the user in a manner that saves their character data, vs simply dropping the connection and no save being performed.
- Updates to some of the lua interface documentation to correct mistakes, and explain in greater detail certain commands. (If you find a mistake please post in the admin forum thread dedicated to lua interface documentation)
0.6.3f
- ShardServer performance enhancements featuring reduced .NET garbage collection generation, and further optimizations to the NLua p/invoke interface.
- Updates to some of the lua interface documentation to correct mistakes, and explain in greater detail certain commands. (If you find a mistake please post in the admin forum thread dedicated to lua interface documentation)
0.6.3
- Added ability to hue items in game by an index into the hue image (Client Hue Table)
- All pre-existing items will have color 0 (Black). Autofix script will fix all items on characters and in houses. World reset will fix non NoReset items. NoReset items must be fixed manually
- Player autofix will also destroy all legacy gear and attempt to replace them with a semi equivalent in the new system (see table in globals/static_data/autofix)
- Guild tags are now stored in a global var so we can enforce uniqueness. Run /patchglobalguildtagtable to enter existing guilds into that system
- Ore veins now have new visual states (IronVein, BronzeVein, CopperVein, SteelVein, ObsidianVein)
- All PlayEffect function calls that have the last argument need to be replaced with PlayEffectWithArgs
- All male/female mobs and weapon and armor are grey by default. Need to put a Hue tag in each template with a good default hue.
- All loa_ templates are removed (legacy gear) use the table in globals/static_data/autofix for mappings
- Many resources templates were renamed
- Added check for file "global_overrides.lua" in working directory of server. This file is included after globals and allows you to override any global function regardless of mod. This is useful for setting debug variables and overriding server settings.
0.5.1
0.4.9
Toolkit
- Progress bar when downloading custom assets
- Better error handling when loading asset bundles and maps
- Static collision support (tutorial video coming soon)
0.4.8
Engine
- Custom object library tag definitions fixed (Allows for harvestable custom objects)
Toolkit
- Fix MapDefinition not being set when custom map is built
- Fix SeedObjects not saving/loading correctly on custom maps
- Allow Custom Camera Image Effects
- Added a few of the terrain ground textures used in NewCelador
- Fix loading default maps from the Toolkit scene
0.4.7
Engine
- Custom Map support
- Custom Object Library support (no equipment or mobs yet)
(See tutorial videos no documentation is available yet)
- Possession /possess
- Memory leak fix
0.4.6
Engine
- General server performance optimizations
- Messages and setting obj vars now always happen synchronously. New function SendMessageAsync will cause the message to be processed on the next frame.
- Subregion support (Wiki section on Subregions coming soon)
- Server prefab support. Server prefabs are a collection of objects created from a relative position. A list of default prefabs can be found in Prefabs.xml. Editor coming soon. Command: /createprefab <PrefabName>
- CreateCustomObject function allows you to load a template, modify values and then use the modified table to create and object. You can also build custom objects on the fly from scratch.
- Some objects support multiple variations. Search the base templates (Find In Files) for Variation to see what objects support variations.
- New engine callback function GetSpawnPosition(playerObj) which allows you to customize where initial player objects are created.
- Archery, Mount support
- Add ability to set RTS camera position from lua
- Fix requiring files with dot notation in object modules
- AddHotbarAction function adds a draggable hotbar icon to a dynamic window (see documentation or examples in hud.lua)
- Players can remap keymappings for hotbar slots 1-30
- New SystemMessage category "info" appears just above the center of the screen
- Remove Meta function support from LuaGameObj (See Update Instructions page)
- New statemachine implementation that does not rely on AI. Also allows for multiple statemachines in the same module. See globals\lua\statemachine.lua
- RequestClientTargetAnyObj function allows the user to select a permanent or dynamic object in a single request (used for resource gathering) (see lua reference)
- RequestClientTargetLoc also returns a gameobj if one was clicked. This allows you to have commands that work on both locations and dynamic objects (used for the command ability for animal taming)
- New sneak button sends user command sneak with the argument "on" or "off"
- New IsSneaking object property causes the player object to play the sneaking animation while walking
- Lots of new ClientObjects including mobs (See ClientObjectReference.txt)
Default Rules
- Changeform command now has UI
- Mount equipment slot added. Mountable Objects: Horse, Warg, Wyvern
- Hud UI has been moved to dynamic windows (See globals/dynamic_window/hud.lua)
- Weapon abilities and prestige abilities use a new system called MobileEffects (Search for StartMobileEffect)
- Add grid spawner. This is a variation of the spawn controller that uses a grid instead of regions to give a uniform distribution of mobs Grid Spawner Maps (Tutorial coming soon)
Known Issues
- Memory leaks
- There are problems with the free fly camera
- Prefab dyanamic camp spawner is disabled (Going to be re-written)
0.4.0
Engine
- 64 bit server released (see forum download post)
- Server now uses UDP protocol for all packets. All port forwarding and firewall settings will need to be switched from TCP to UDP
- Add ConnectionTimeOut section to NetworkSettings in ClusterConfig file
- Autorestart now has an option to do a complete shutdown (see example config)
- Fix Whitelist Required option
- We have begun the process of adding support for localization. This means some strings in the server Lua files have been replaced with string codes. In your mods you need to continue to use plain strings until we complete the implementation. In the next build you will be able to add entries to the string table.
- Added support for dot notation (subfolders) in AddModule and DelModule functions.
- Add ability to tag objects (in template or using SetObjectTag)
- Add FindObjectWithTag and FindObjectsWithTag (see lua docs)
- Fix players positions and facings going out of sync
- Server no longer allows people to connect while starting up. Clusters require the starting region to be online before it will accept users.
- Servers that are not accepting users no longer appear on the server list
- Added resetwindowpos command. While debugging DynamicWindow screen positions you can use this command to stop the client from remembering the window position.
- You now can send a CompleteLogout game obj function to speed up the process of logging out. (See EventType.UserLogout in player.lua for example)
- Add StopObjectSound function (see Lua docs)
- Fix objects not appearing sometimes when you walk in range
- Fix "Entering Unknown" bug when switching characters
Default Rules
- Many strings have been converted to use string ids in preparation for localization.
- Lua looks for emailsettings.cfg. When properly configured you can send emails from lua using the SendEmail global function (defined in luaextensions_email.lua)
- Added IsBoss SharedObjectProperty. Gives bosses special health bar
0.3.5
Engine
- Seed engine system has been overhauled to support overriding of individual seed
groups
- WriteGlobalVar and DeleteGlobalVar now takes an optional identifier as the second
parameter. You can now listen for the GlobalVarUpdateResult event type which fires when the write completes. (see docs)
- Fixed DeleteGlobalVar: it was completely broken in 0.3.4
- Scripts subfolder dot notation support: You can now put scripts in subfolders and require
them using dot notation aka java.
- The client now handles a message called “EditObjectTransform” which allows you to
move,scale, and rotate objects. The result of the transform comes back in a ClientObjectCommand event called “transform”. See the Push command in scriptcommands.lua for an example.
- Lots of new icons have been added to the game. See the “custom” window.
- Several new dynamic window widgets have been added. (See Lua Interface Docs) for
more details.
- GetScale/SetScale now take vectors
- SetScale now works on objects
- Seed groups can be excluded from the initial world reset
- Seed groups can dynamically be excluded from the initial world reset in the
engine_callbacks.lua function GetInitialSeedGroups
- GetAllSeedGroups global lua function gives you a list of all groups based on the filter
provided. (See Lua Interface Docs)
- GetSeedGroupData global lua function gives a list of seed data for the given group.
includes template, position, rotation, scale, and objvar overrides.
- New lua global SERVER_STARTTIME which is a DateTime of the cluster startup.
Synchronized across all regions
- Made tents on outlands dynamic objects
Default Rules
- All static global lua files have been moved to subfolders to support the dot notation
- Broadcasts are now cluster wide.
- Reorganized celador seed objects
- Move all npc speech tables to globals to save memory (see
globals/static_data/npc_speech.lua)
- Master controller: One cluster_controller object will obtain the master controller status.
This allows for code that you want to run once for the entire server
- Search window now has map view option.
- Added StopMusic function.
- Fix search command HasModule option
0.3.4
Engine
- Added Map Markers to the AddMap function for Dynamic Windows
- Added HasEvenHandler GameObj function. Returns true if any module on that object is
listening for the message.
- Added PlayMusic GameObj function to tell a specific user to play a music track
- Release window is now server driven and moddable
- New client message “UpdateChatChannels” allows you to make server defined chat channels.
They will appear in the chat entry dropdown on the client.
- Lots of new icons available
- Over 100 new client objects (See CliendIdReference.txt)
- New Local Effects
- ScreenShakeEffect * configurable shake effect
- Blood Spatter Effects * 4 different ones available
(BloodSplatter1Effect*BloodSplatter4Effect)
- Lots of new particle effects
- Add “NoInteract” shared object property. When set to true, object will not highlight when
moused over.
- Add CallFunctionDelayed global function (see docs). This will call a function after a period of
time. NOTE: Will not fire after a server restart!
- Initial implementation of "God View" which is an RTS style camera. See controls window for
hotkey
- Users are now logged out before the server completes its final backup upon shutdown
- DateTime objects can now be stored in an objvar
Default Rules
- Improved whod window
- Map marker support for quests (See data_quests: search for MapMarkers to see an example)
- Add bad word filter support. (See globals_badwords)
- Combat overhaul * modded combat systems will need to be reimplemented in the new system.
(I don’t suggest trying to merge)
- Fixed several issues with changeform command
- Added savehotbar and loadhotbar commands which allows you to store hotbars by name.
These hotbars are saved in xml files in the "savedhotbars" folder of the region's working directory
0.3.3
Engine
- Prototype of cluster support (Documentation coming soon. Until then, watch the video in the
admin forums)
- Limbo area moved to its own map
- Global Variable support added * variables accessible to all regions in a cluster (See lua
interface documentation under Global Functions)
Default Rules
- Housing ownership and Guild data moved to Global Variables
- Enhanced mod has been removed since guild support now exists in the default rules
0.3.2c Hotfix
Engine
- Large memory leak fix in NLua
- Fixed the way IP addresses are resolved when external IPs are used in the ServerAddress
field
Default Rules
- Object Search (/search) window has been significantly improved
- Add profiling functions in globals_debug
0.3.2
Engine
- Server can now load the following maps: Limbo, Celador, Outlands, TwoTowers, Catacombs,
Uaran. NOTE: Only Celador is officially supported at this time.
- Starting templates are now set in the config file. The global function "AddStartingTemplate"
has been removed (See ClusterConfig in zip)
- Lots of new client objects (See ClientIdReference.txt in base folder)
- PathToTarget no longer spams Arrived messages when failing to path
- ReloadSeeds now takes an optional category argument which causes it to only create the
objects in that category.
Default Rules
- Goto window has been revamped
- Teleporter script now has a Set Destination radial menu option for gods. You can /create
teleporter and set its destination now.
0.3.1d
Engine
- Added (optional) advanced network settings options to allow admins to tweak their network
performance. See ClusterConfig.xml in the build for details
Default Rules
- Crafting window no longer shows recipes for items you do not have enough skill to craft. This
is a bandaid optimization since the crafting window was sending very large packets to the client. We will get a better fix for this soon.
0.3.1
Engine
- If a template does not have a script engine component and something attaches a module
using AddModule, it will now automatically add the component.
- Fix SkillGainMultiplier server setting
- Fix for calling new stat functions on a mob other than this
(SetStatValue,SetStatMaxValue,SetStatRegenRate,SetStatVisibility,SetRestrictedStatUpdateLe vel)
- Fix Collision on Two Towers map (now usable in mods)
Default Rules
- Quest System: Now supports repeatable quests
- Protect the Great Tree content has been disabled
0.3.0
Engine changes
- SendMessage, ScheduleTimerDelay, and all CreateObj functions now support argument lists.
You no longer have to send multiple arguments as a table
- Temporary objects * You can now call CreateTempObj to create an object that is not stored in
the world backup. Be careful with this as these objects can still be stored on players if they log out with them in their possession.
- Object stats engine support
- many can now be stored on the objects
- you can set the stat visibility of any stat
- Global * shared with every user in update range
- Restricted * shared if the users attached object is in the restricted update list
- Private * Only shared with the attached user (default)
- stats by default have a regen value of 0, if you set it to a non*zero number, it will
automatically update the CurValue over time on both server and clients
- stats by default have a very large max value
- See the new stats functions in the lua documentation for more info
- Add support for custom context menus opened directly by the server see
OpenCustomContextMenu in the lua docs
- Add radial menu support for alternate object interactions.
- The ruleset specifies the options for any given object by defining a function in the global lua
environment called GetObjectInteractionList (see globals_engine_callbacks.lua in base for the default implementation)
- The default interaction (what happens when you double click on an object) for any object is
defined by the DefaultInteraction shared object property (in the default rules this is set automaticaly when you call AddUseCase with true for the second parameter)
- AddButton now supports a list of custom sprite names for each of the button states
(default,hover,pressed,disabled). We still need to provide you with a sprite reference so you know what sprites are available.
- Add Invisible button type that allows you to make any part of dynamic window clickable
Default Rules
- Moved all multiple argument calls to SendMessage, ScheduleTimerDelay, and all CreateObj
functions from tables to argument lists
- Added support for creating packed and temporary objects from the create menu
- Added /portal command (pass a location and it opens a two way portal from your location to
that location)
- Updated dialog windows to use dynamic windows
- Added lots of convenience functions in incl_dialogwindow for buttonmenus, progress bars, and
simple text fields
- Move Str/Agi/Int/Hp/Mana/Stamina to the new object stats system
- The UseObject message now sends a second parameter which is the type of interaction. This
must be checked in any script that handles this message in case multiple scripts add additional use cases.
0.2.5
Engine Changes
- Added RegisterSingleEventHandler which auto unregisters itself after the event is fired, moved
all ModuleAttached and LoadedFromBackup handlers to use this
- Add GetTemplateData function which returns all of the data for a template in a single lua table
- Add SearchRect object searcher (See API)
- Added new spell effects (See EffectReference.txt)
- Fixed lots of bugs with changing the appearance (body type) of a mobile
- Fix text fields that are in a window not using TopLeft anchor
- Fix text field positions with small screen resolutions
- Fixed Dynamic windows that were not TopLeft with position 0,0 were not appearing in the
correct location
- Fixed issues with equipping custom heads/skins
- Stability and memory leak fixes
Default Rules
- Updated create window to include categories and use scrollbars
- Complete revamp of the object info window
- Move master recipe table to global data file
- Added support for dynamic abilities specified in templates (see creatures in halloween mod)
- First pass on questing system (roundtable on this system soon)
Enhanced Mod
- Quick fixes for guild windows
Halloween Mod
- We’ve removed the Infection mod from the build since it has become outdated. The halloween
mod is now our showcase mod. Watch the roundtable where Supreem goes over the mod (https://youtu.be/WIyg*f*NsHQ)
0.2.4
Engine Changes
- More DynamicWindow improvements (see lua docs)
- Rock4A now has collision
- Fixed male versions of new armor/equipment
- Added new particle effects see EffectReference.txt
0.2.3
Engine Changes
- Added many enhancements to the DynamicWindow system (see lua docs)
- Added GetIconId function which returns the id of a given object for us in dynamic window
Images and UserActions
- NOTE: Buttons in dynamic windows were not taking the title bar width into account so you
might need to fix all your button positions
- Added frame time debugging output to Verbose logging (NOTE: you can turn this on with the
luadebug command)
- Added server collision for lots of objects
- Added Enhanced mod to release which includes the guild functionality from the
collaboratorium
Default Rules
- Modders can now add items to the users hotbar. See AddUserActionToSlot message in
base_player_hotbar (I'll probably make a video about this soon)
- You can now reinitialize a mobile's base_mobile (Stats,Skills,Equipment) using the
ChangeMobileToTemplate message
- New crafting window, conversation window, ability window
- Crafting system has been fairly overhauled, many recipes require learning before player can
use them
0.2.1b
Engine Changes
- Added GetAttachedUserId function (see lua reference under GameObj)
- Fixed 3 memory leaks in LuaVM. Should now be able increase autorestart up to 5 hours (300).
- Fix logging for chardb module.
- Backup files now compact and should be much smaller.
- Add SingleObjectSearcher to track the state of a single object using AddView (see lua
reference under Object * Searchers)
- Reset world now resets permanent objects (trees/rocks) as well. Until we get a new client, you
need to log out and back in to see the rese
- Add luatools folder in base. Modders can add lua extensions to the engine by putting the
lua/dll files in this folder. See luaxml as an example
- Add luaxml library (http://viremo.eludi.net/LuaXML/). See dump_to_xml function in
base/scripts/globals_debug.lua for an example
Default Rules
- Fix “nil source info” error message
0.2.1
Engine Changes
- Changes to support new server list
- Add ServerDescription to ClusterConfig
- Fix fog for fly camera on Uaran
- Add lots of missing collision to npc pathing
- Move log message for object at 0,0 warning to Verbose setting
0.1.14d
Engine Changes
- Add ability for public servers to have ServerListVisibility option
- Fix but with autorestart causing commands to fire multiple times
- Added Simple Memory Debugging with /luagc mb and /luagc me (/help luagc for details)
- Added Object id to lua exception messages
- Moved data_ files to globals (saves memory), Note: this means you must restart your server
for changes to data_ files to take effect
- require 'default:globals' in a modded globals.lua now works as expected
- changed backup format to fix a critical crash bug
- /resetworld now ignores objects with the NoReset objvar on them. Note: if it is a seed object
you will end up with duplicates (right now)
- ServerIndex config variable works properly now
Default Rules
- Made more of the gameplay settings work commented out the ones that arent used yet
- Added extended Goto window use with /goto with no arguments
- Village content is about 30% implemented
Mods
- Infection: Add overrides for welcome dialog and motd
0.1.14c
Engine Changes
- Fix servers not working on non US locales
- Fix server side issue with invisible objects
- Fix SetHue not persisting across server restarts
- Add AutoRestart and BackupFrequency settings to ClusterConfig (0 means no auto restart or
backups)
- Fix lua errors showing wrong module name
Default Rules
- Fix spelling of resurrect command
- Improve /whod command