ChangeLog
Contents
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