Server Version 1.5 Release Notes

From Multiverse

Jump to: navigation, search

Contents

Platform Requirements

Minimimum requirements for the Multiverse servers are:

  • Operating System: Windows XP / Vista or Linux (tested on Fedora core 4)
  • Processor: Pentium 4 - 2.5GHz or greater
  • RAM: 1GB or more

Upgrading to version 1.5

See Upgrading to Version 1.5

Creating your own world based on Sampleworld

To create your own world based on Sampleworld, follow the instructions in Getting Started. Additionally, you must do the following:

  • In world editor, create a marker called "spawn" that will be the player spawn location.
  • Edit mv-home/config/world-name/startup-instance.py and change sampleworld.mvw to the name of your world file, for example myworld.mvw.

Update release 1.5.1

The update release fixes the following bugs:

  • Sample asset Brax problem.
  • Sometimes when you log out, a "stuck login" remains in world (seen in demo Times Square).
  • ExtensionMessages were not sent to the client properly.
  • Bug in multiverse.mars.behaviors.ChatResponseBehavior.
  • Method InstanceClient.objectInstanceEntry() does not work.
  • Error logs contain spurious instancing-related errors.
  • There are world-specific plugin dependencies.
  • Startup script specified extensions_mobserver.py in config/common rather than config/<worldname>.

Also:

  • Support overriding the machine specific local host name (used to identify the proxy host)

New features and changes

Instancing

The servers now support instances. See World Instancing.

Startup scripts

By default, the startup scripts will start the voice server. To disable the voice server.... (TBD)

The functionality of the world reader plug-in has been subsumed into the new instance server.

Marker support

The server now has APIs providing complete access to markers defined by the World Editor. Markers have a location, orientation, and properties. Previously, the server only provided access to the marker location. The term "waypoint" is now deprecated and will be removed from the server API.

This means you can control:

  • The direction player faces when spawning (both login and instance entry)
  • The orientation of spawned-gen'd NPCs

See:

Region support

The server now has APIs providing complete access to regions defined by the World Editor.

Region Entry Triggers

You can register custom code to run when a player enters a region (defined in the world editor). Region properties control which code is run and what it does.

See: Custom Region Triggers.

Login and logout messages

When a player logs in, the proxy server sends a login message; when a player logs out the proxy server sends a logout message. The proxy server sends the messages using broadcast RPC so all subscribers must respond. The proxy waits for all responses before proceeding with login or logout.

For more information, see Proxy Server - Login and logout messages.

Object search framework

The server has a framework for performing server object search. A single API can be used to find different types of objects matching some criteria.

See: Server Object Search

Object system improvements

The object system now supports object unload and delete. In addition, changes have been made to object persistence.

Run Python via JMX

The Engine JMX MBean includes an operation to run a Python script and return the text it outputs.

See: Monitoring and Managing the Servers#Python_Scripting

Remote API to create spawn generators

The mob server supports creating spawn generators dynamically via MobManagerClient.createSpawnGenerator(). Also, there are many changes to the way the mob server is configured, see Upgrading to Version 1.5.

See: Managing Mobs

Proxy extension message handlers

The proxy will run registered handlers for client-originated extension messages.

See: Proxy Server#Proxy_extension_hooks

Log file names

The default names of some of the log files have changed:

  • World Manager log file wmgr1.out changed to wmgr_1.out
  • Proxy server log file proxy.out changed to proxy_1.out

Advertisement file names

The advertisement file names are now constructed from the agent type like this: <agent-type>-ads.txt This resulted in one file name change from 1.1: wmgr1-ads.txt changed to wmgr-ads.txt

See: Configuring Agents and Plugins

Plugin dependencies

Plugin dependencies are now expressed in terms of plugin types. See: Configuring Agents and Plugins

MARS

There is now a MARS Experience System for advancing skills and training abilities.
See also: Mars Trainer Plugin, Mars Professions

There is now a MARS Group System to allow the creation of groups with a group chat channel.

Other

  • This release uses Jython version 2.2.1. Previous releases used version 2.1. The Jython "cachedir" is now located in $MV_HOME/other/cachedir/ (the previous location was $MV_HOME/bin/cachedir).
  • The Python module search path is now '../other/Lib' which is usually MV_HOME/other/Lib
  • Many Entity methods have been moved to EntityManager. The methods remain on Entity, but are marked deprecated and will be removed in the next release.
  • PerceptionFilter supports adding targets after the object has spawned. Previously, targets had to be added before the object was spawned.
  • Exceptions thrown inside RPC handlers now flow back to the caller where a runtime RPCException is thrown. Previously, an RPC handler exception caused the caller to block forever.
  • Throw exceptions NoRecipientsException and MultipleRecipientsException as appropriate when sending RPC messages.
  • NamespaceFilter moved from ObjectManagerClient to multiverse.server.messages
  • Changed PerceptionFilter.setMessageTypes() to PerceptionFilter.setTypes()
  • The WorldEditorReader (plugin and process) has been replaced by the InstancePlugin and instance process
  • Free region-generated objects when player despawns
  • Add ObjectManagerClient.fixWorldNode() to change an object world node (in the db) without loading the object
  • Removed deprecated functions: WorldManagerClient.getObjectProperty(), WorldManagerClient.setObjectProperty()
  • ScriptManagers now operate within a single namespace/module. Use ScriptManager.initLocal() to get the old behavior.
  • Add ObjectManagerClient.getTemplateNames()
  • Removed WorldManagerClient.spawnStructure() -- structures can be created with ObjectManagerClient.generateObject() and spawned with WorldManagerClient.spawn(); same as all other objects.

Bug fixes

  • Fix WorldManagerClient.setWorldNode()
  • Fix spawning structures after player spawn

Known issues

  • Kill quests do not work.
  • If you shut down the servers when a client is connected, the client will not exit.

Mob patrol behavior takes priority over attacking

Mobs inappropriately move out of an combat situation due to patrol behavior taking priority over attacking.

No event class for parseBytes

This causes the following error in the proxy log file.

ERROR [2008-05-05 16:39:10,110] RDPCallback          found no event class foroid 1421634175308, id 333
ERROR [2008-05-05 16:39:10,112] RDPCallback          Event.parseBytes, dumpingstack for thread RDPCallback
       at multiverse.server.engine.EventServer.parseBytes(EventServer.java:40)
       at multiverse.server.plugins.ProxyPlugin.processPacket(ProxyPlugin.java:731)
       at multiverse.server.network.rdp.RDPServer.callbackProcessPacket(RDPServer.java:1243)
       at multiverse.server.network.rdp.RDPServer$PacketCallbackThread.run(RDPServer.java:1200)
       at java.lang.Thread.run(Thread.java:595)
ERROR [2008-05-05 16:39:10,112] RDPCallback          Engine: event server returned null event

WorldManagerClient APIs fail if oid does not exist

The following APIs will fail if the oid does not exist. The hook will throw a run time exception which will cause the caller to block forever.

  • WorldManagerClient.getWorldNode()
  • WorldManagerClient.getObjectInfo()
  • WorldManagerClient.getDisplayContext()

They should return 'null' if the object does not exist.

Audio track still plays after instancing

When an instance contains a video, you hear the audio track even after leaving an instance.

Player does not drop on collision volume after instancing

Sometimes the player does not get dropped on collision volumes when instancing.

Positional voice carries through instances

When you have been near enough to hear voice chat from a player, then you go into another instance, the players can still hear each other, even though they are in different instances.

Mobs move after dead

When you kill a mob when it's in motion, it does not stop until it reaches the end of its path.

ExtensionMessage sent to client as property event

ExtensionMessages sent from server to client are actually sent as property messages. This bug does not affect TargetedExtensionMessage.

Personal tools