Post news RSS Beta 0.8.0 / 0.8.1 released!

Beta 0.8.0 and 0.8.1 released. Changes include improved standalone client, color palette editor updates, offline play, arc power improvements, easy crafting recipe discovery option, chat filters, better client reporting, npc naming enhancements, multiple appearances per NPC definition, biomes, procedural world generation, procedural dungeons, phasing, new items and effects, patch release support, quick linking accounts / worlds / characters, and bug fixes.

Posted by on

Beta 0.8.0 and 0.8.1 released. Changes include improved standalone client, color palette editor updates, offline play, arc power improvements, easy crafting recipe discovery option, chat filters, better client reporting, npc naming enhancements, multiple appearances per NPC definition, biomes, procedural world generation, procedural dungeons, phasing, new items and effects, patch release support, quick linking accounts / worlds / characters, and bug fixes.

Improved Standalone Client

A new standalone client has been released with much improved stability, as well as support for both 32 and 64-bit on Windows and Linux. As always, download links for all platforms are available here.

Color Palette Editor Updates

The color palette editor was one of the first UI elements created for Lugdunon over 4 years ago, so an update was sorely needed. In order to provide an easier, more intuitive method for editing sprite palettes and ui colors a complete rewrite of the color editor with a focus on extendability was needed.

Refactored Color Picker Window

Offline Play Enabled

Offline play has been one the most requested features for a while now, and it is finally here. In the event that the auth server goes offline or for some reason a player cannot connect to the internet at large, playing on select servers is now possible.

Offline Toggled

If the client is unable to establish a connection with the auth server, the client will present the player with a dialog notifying them of the fact and allowing the player to login with just an account name. Given that the auth server is unreachable, no verification can be made against the account name's actual validity. With that in mind the server operator has three new server options that can be employed to manage the risks:

  • server.connect.password - this option allows the server operator to supply a password that is required to connect the server.
  • offline.supported - if set to true, the server will be able to run in the absence of a valid auth server connection.
  • allow.offline.clients - if set to true, the server will accept clients (via account name only) without a valid auth server connection.

Offline Server Support

Password Protected Server

Arc Power Improvements

Several new items have been added that draw on new Arc Power engine improvements. These improvements center around allowing arc-powered items greater ability to interact with the world environment, specifically in damaging placed items, player, and non-player characters.

The first new arc-powered item to look at is the loot siphon. This item comes in four grades (copper, bronze, iron, and gold) and on the surface, functions much like a chest or barrel container. However, what makes the loot siphon stand apart, is that whenever a resource gathering operation or NPC death occurs within range and there is no PC directly responsible, the loot / resources will be 'sucked up' by the loot siphon and deposited in its inventory. The items can then be pumped out to another location just like traditional containers.

New Arc Powered Items (Electrifryer and Loot Siphon)

The second new arc-powered item is the Electrifryer. It comes in two flavors: regular and stealth. The Electrifryer, when powered, will deliver a strong electrical shock to any NPC or PC that comes within range, potentially leading to the death of the NPC or PC involved. The stealth model is particularly useful in designing boobytraps for use against other players, but is more expensive to craft than the non-stealth version. In addition to serving as a boobytrap for unsuspecting players, the Electrifryer is also useful(in conjunction with a loot siphon) as a means of automated farming of NPCs.

In addition to the above enhancements, arc switches and pressure-plates are now capable of switching up to 5 inputs to their respective outputs.

More New Items and Effects

  • Tents - A new housing item, Tents allow you to make a smaller, more portable, and easier to craft housing.
  • Mistletoe - Harvested from oak trees using a sickle, this mystic plant is now necessary in the crating of all spells.
  • Stone Fencing and Gates - One more flavor of fencing!
  • Bronze Rod, Bronze Sheet, Bronze Horn, Gold Rod, and Gold Sheet - These intermediary crafting items are used to make some of the new Arc-Power items.
  • Rat Bite - Yep, Rats now bite you!
  • New Sword and Bow - These two new weapons are some of the rewards for completing the upper difficulty dungeons.

Easy Mode for Crafting Recipe Discovery

A new world.cfg option "default.compendium.crafting.recipe.easy.mode.enable" has been added. When set to true, all crafting recipes in the Compendium Lugus will become available for viewing regardless of whether or not the player has previously learned the recipe. It is also now enabled by default.

Easy Crafting Discovery Mode

Chat Filters

Chat filtering has been added as a settings option to allow players to filter out unwanted log entries by category. Enabling / disabling a specific category's notifications is a simple as toggling that category's button in the "Chat Filtering" settings UI pane.

Chat Filter Settings Window

Better Client Reporting

Two new dialog types have been added to provide the player with a little more information as to what is currently happening in the load process, or if an error has occurred.

The WaitWithLogDialog will show a indeterminate progress bar with a text log above it. This dialog is useful in letting the user know specifically what is happening during a lengthy process. It is currently employed in the standalone client's code update check.

Update Progress Window

The CopyableLargeTextDialog presents the user with a large text field, with the added ability to copy the text with a single button click. This dialog is currently employed in the standalone client when an unrecoverable error occurs with a child process.

Error Log Window

NPC Naming Enhancements

A new API, via the interface INonPlayerCharacterNameProvider, has been added to allow for mod-writers to supply custom NPC name generation schemes. This encompasses not only the custom naming rules, but also supplies the name filter and filter description needed by the UI when a GM gives an NPC a name during NPC template creation.

The default implementation allows for NPCs to have names that will vary at runtime depending on various placeholder values, and built from a dictionary of names and titles that resides in the etc/nonPlayerCharacterNamesList.json file. This file presents a group of name categories that are each composed of a list of names. For instance, an NPC definition with the name property set to "{GAULISH_NAME}+{SUFFIX_FIRE}" will be replaced with a random entry from the GAULISH_NAME category, followed by a space character, and then a random entry from the SUFFIX_FIRE category, thus producing a final name like: "Pixtilos the Flamebinder".

New NPC Editor Features (2/2)

The basic structure of the various naming rules in the default implementation are:

  • + - indicates a joining rule and will join the generated text on either side of the + with a space.
  • | - indicates a in-line list of name parts from which one will be chosen at random. For instance "Pixtilos|Obalda|Adgenos" would indicate that one of the three name variants "Pixtilos", "Obalda", or "Adgenos" be chosen for the final NPC name.
  • {CATEGORY_NAME} - indicates that the final name part is to be chosen at random from the category CATEGORY_NAME in the naming dictionary.

Support for Multiple Appearances per NPC Definition

NPC definitions now support the ability to add multiple appearances. This allows for the ability to add variations to spawns without having to add a separate, identical, npc definition for each appearance. In the case of an NPC definition with multiple appearances, an appearance will be selected at random when an NPC is instantiated.

New NPC Editor Features (1/2)


Biomes are now present in Lugdunon. Their primary use is in determining the terrain, elevation, item, and NPC placement in the new procedural world generator, but they do also add a certain flavor to the world at large. Also, the /loc command will now tell you the biome you are currently in, if that location has one assigned.

Support has also been added to the /loc command to report the biome of the current location.

/loc Enhanced Output

Procedural World Generation

Procedural world generation now allows for players to create an entire, populated world at the click of a button.

Campaign Creation Progress Window

The default implementation of the procedural world generator allows for automatic, random terrain world and cave generation using the diamond-square algorithm, dungeons, biome generation with location appropriate vegetation, resources, caverns, and ruins, as well as NPCs.

8km x 8km Procgen World Map

Customization of the generation parameters are possible (with more fine-grained adjustments coming soon) as well as the ability to preview the terrain, elevation, and biomes.

Procgen World Preview Modes

Procedural Dungeons

The new procedural world generator also comes with randomly generated dungeons, complete with fog of war, bosses, and reward chests! The underlying mechanism for generating each dungeon's layout, and difficulty is accomplished via the excellent Metazelda library created by Tom Coxon for use in his game Lenna's Inception.

Procedural Dungeons!

With this in mind, the layout follows a Zelda-like approach, with the room difficulty increasing the further away you get from the entrance and with a final boss and reward room pair as the final challenge and payoff.

When you first enter a dungeon, only the initial room will be lit. Additional rooms will light up when you open a door / gate adjoining that room. Also, the color of the room's light will give some indication of its difficulty.

'Fog of War' In Procedural Dungeons

Dungeons are where the player will come to harvest resources needed in spell casting, such as arcane tome pages and runesources. The final reward chests will also contain powerful weapons and armor not obtainable by any other means.

Dungeons will also 'reset' when unoccupied for more than 15 minutes. The reset dungeon will be different each each time, with unique layouts, bosses, and rewards.

Items can be tagged as a 'dungeon item' and operate under the same restrictions as 'quest items'. This is currently not used but will be in the future. Think keys. ;)


Initial support for phasing has finally been implemented! Phasing allows for the game world to present itself differently depending upon which player character is currently logged in. Full API support is available for modders to use this new feature to create some interesting scenarios. For instance, depending upon how a quest chain progresses, entire villages or other areas of the map could be altered to reflect the player's choices (that are visible to that player only). Currently this allows for shipwrecked cargo instances to only be looted once per player character.

Patch Release Support

Patch release support allows for incremental updates of server, client, and mod resources without causing incompatibility issues. Release versions will now take on the form of 4 dot-separated integer values ( with the least significant value denoting the patch release number. If the three most significant values match, then the two release versions are considered compatible. For instance and are compatible, but and are not.

Support For Version Incompatibility

Quick-Linking Accounts / Worlds / Characters

URL parameters are now supported which allow for auto selection of servers, accounts, and characters:

http ://

  • server (the server ip / host name and port if it is nonstandard)
  • account (the account name to auto-populate the user name field with)
  • character (the character name to automatically load)

If the account name/value pair is omitted, the client will auto login a guest account.

In future releases, this functionality will be integrated into the UI to facilitate faster logins.

API Improvements

  • Created API to allow for currency to be easily converted to and from currency items.
  • Added enhanced support for console fired commands in net.lugdunon.command.core.CommandRequest.
  • Added net.lugdunon.math.Point.subPoint(Point p) to the server-side API.
  • Added net.lugdunon.math.Point.add(Point p) to the server-side API.
  • Added net.lugdunon.math.Point.sub(Point p) to the server-side API.
  • net.lugdunon.state.World.seed is now a String value, instead of a long
  • net.lugdunon.state.World.getSeed() now returns an Object.
  • Added net.lugdunon.util.FastMath.randomFromSeed(Object seed) to the server-side API.
  • Added net.lugdunon.util.FastMath.boundedRandomValue(int min, int max) to the server-side API.
  • Added net.lugdunon.util.FastMath.diff(double i, double j) to the server-side API.
  • Added net.lugdunon.util.FastMath.diff(int i, int j) to the server-side API.
  • Added net.lugdunon.util.FastMath.indexToChunkPoint(int i,int w) to the server-side API.
  • Added net.lugdunon.util.FastMath.indexToChunkPoint(int i,int w,Point p) to the server-side API.
  • Added net.lugdunon.util.FileUtils.fileExists(String fileName) to the server-side API.
  • Added net.lugdunon.util.FileUtils.fileExists(String fileName, boolean absolute) to the server-side API.
  • Added net.lugdunon.util.FileUtils.resourceAsStream(String resource) to the server-side API.
  • Added net.lugdunon.util.FileUtils.imageToDataURL(BufferedImage image) to the server-side API.
  • Added server.logging.level property definition. Set logging level for the server process. (ERROR,WARN,INFO,DEBUG,TRACE)
  • Added client.logging.level property definition. Set logging level for the client process. (ERROR,WARN,INFO,DEBUG,TRACE)
  • Server mods can now override (add/remove/modify) individual entries in etc/ files.
  • Placeable item loot drops are now moddable via the loot drop strategy API. This will allow modders to develop custom loot drop rules.
  • Items can now specify an 'overrideExpireProtection' boolean property that will allow GM-placed items to expire.
  • Added Array.concatUnique() to the client-side API.
  • Standalone client will now report any server sub-process startup error to the client (with copyable stack trace).
  • Added net.lugdunon.command.CommandProperties.getAudioDefinition(String key, AudioDefinition defaultValue) to the server-side API.
  • Added net.lugdunon.command.CommandProperties.getAudioDefinition(String key) to the server-side API.
  • Added net.lugdunon.command.CommandProperties.setAudioDefinition(String key, AudioDefinition value) to the server-side API.
  • Added net.lugdunon.state.item.Item.setSoundEffect(AudioDefinition soundEffectDefinition) to the server-side API.
  • Added game.clearLeavePrompt() to the client-side API.
  • Added game.getQSParam(key) to the client-side API.

Bug Fixes

  • Fixed an issue that was causing bridges to not expire when destroyed.
  • Fixed an issue in net.lugdunon.states.tiledGame.PointerInputEvent that was allowing quest interaction with dead NPCs.
  • Fixed an issue in net.lugdunon.ui.advancements.AdvancementsDialog that was causing advancement icons to not display in the standalone client.
  • Fixed an issue in net.lugdunon.util.Color that could result in improperly formatted color strings.
  • Fixed an issue in Namespace.instanceOf that could result in improper return values.
  • net.lugdunon.ui.Dialog now properly sets empty content.
  • Client live log messages now use a more optimized method of fading out.
  • Fixed a typo in net.lugdunon.command.core.player.ApplyEffectCommand.getName().
  • Fixed an issue with net.lugdunon.server.mod.ServerMod not instantiating an empty etc structure.
  • Fixed an issue with net.lugdunon.state.item.trigger.player.InstanceTransitionPlayerTrigger that could cause portal destinations to be improperly set.
  • Resolved several issues with net.lugdunon.util.ArtifactUpdater that were producing undesired results.
  • Fixed an issue where quest NPCs were still 'quest interactable' when dead.
  • Fixed an issue with sprites not correctly updating hen palette is changed.
  • Fixed an issue with NPCs not correctly re-initializing their quest giver state when responding.
  • Fixed an issue where the terrain to image console command could cause a crash if it was invoked with a non-existent instance id.
  • Fixed an issue with net.lugdunon.state.item.arc.handler.matter.MatterPumpArcHandler not properly setting its powered state.
  • Fixed an issue with item worth determination in net.lugdunon.state.item.Item.
  • Fixed an issue that was allowing multiple instances of the same updatable to be registered with an instance.
  • Fixed several issues that were causing incorrect tile indexing in chunks.
  • Added versioning support to Terrain files now contain a version number to identify the specific format version for correct parsing.
  • Fixed an issue with the crafting grid not reporting the correct contents of its inventory slots.
  • Fixed an issue that was causing shared container inventory status updates to not be shared among clients.
  • Fixed an issue that was causing radial menu button tooltips to persist when a dialog is opened.
  • Fixed an issue that was causing ambient sounds attached to placeable items to ignore the sound volume settings.
  • Fixed the description text on bows.
  • Fixed an issue that was causing placeable item access level changes from being recognized by other clients.
  • Fixed an issue that was causing placeable item access level restrictions from being recognized by other clients.
  • Fixed an issue with character / item access checking that could result in an NPE on some occasions.
  • Fixed an issue with the expirable check on a placeable item that failed to account for expiry conditions only when specific inventory items are used to interact with the placeable in question.
  • Fixed an issue with several settings panes that was causing display errors.
  • Fixed an issue with several settings panes that was slider labels to nit display.
  • Fixed an issue with the macro editor that was causing cursor drift.
  • Fixed an issue with the LargeListState that was causing line item button labels to persist in certain cases.
  • Fixed an issue that was causing characters to be placed in 'the void' if the instance transition completed before the character was done pathing.
  • Fixed an issue that was resulting in an empty repository list in the standalone client settings.
  • Loading required libs now correctly loads and caches the lib for future reference.
  • Populated world checking now looks for an etc structure instead of the world.cfg file. This will allow for easier custom configs on standalone servers.
  • Artifact updating now has more intelligent checking on version numbers. An update will now only be attempted if the repository artifact's version number is higher than the local artifact.
  • Fixed an issue with the biome image data acquisition requesting biome configuration data from the wrong metadata location.
  • Fixed an issue in net.lugdunon.asset.DoubleBufferedAudio.setVolume(volume) that was causing exceptions in certain cases.
  • Fixed to return the proper value.
  • /getAvailableServerConfigProps/ REST call now also returns the extended properties defined by loaded server mods.
  • /getAvailableWorldConfigProps/ REST call now also returns the extended properties defined by loaded server and world mods.
  • net.lugdunon.client.runner.Runner will now only launch a sub-process in headless mode if it is required.
  • Fixed an issue in net.lugdunon.server.worldgen.BaseWorldGen that was causing null pointer exceptions when loading server mods.
  • Fixed an issue that was causing harvested resources to regenerate faster than expected.
  • Exit portals and npcs should no longer spawn in walls.
  • Fixed an issue with shovels not working on flowers and trees.
  • Fixed candle on reliquary from shifting position on state change.
  • Fixed lighting and reliquary placement in ruins instances.
  • Fixed ruins resetting problems.
  • Fixed initialization error in NonPlayerCharacterManagementCommand.
  • PlaceableItemInstances now evolve properly.
  • Fixed ownership with respect to seeded vs transplanted flowers and trees. Seeded implies ownership, transplantation does not.
  • Crafting discipline used to create an Anvil changed from Blacksmithing to General in order to avoid a circular dependency (thanks again Brash for initially pointing this out and then for the reminder).
  • Fixed key/value of default.compendium.crafting.recipe.easy.mode.enable in initial seeding of world.cfg entries.
  • The AssetManager should no longer cause a client crash if the current instance definition does not contain any biomes.
  • Fixed issue that was allowing players to damage placed items that were placed by GM.
  • Fixed an issue that was allowing players to sell quest items to vendors.
  • Fixed an issue that was causing quest items to not be re-instantiated as quest items upon server restart.
  • Fixed an issue that was causing windows clients and servers to not properly update their server code.
  • Fixed an issue with health change event occurring while client is still loading.
  • Fixed an issue with player zoning into the void caused by incorrect instance id mapping when new instance created.
  • Fixed an issue with client hanging in Safari on initial load.
  • Fixed an issue with invalid pathing not correctly terminating.
  • Campfires can be used as a cooking crafting station again.
  • Buckets of water will again put out campfires.
  • Hammer and anvil crafting station recipe now requires a stone hammer in place of steel. This remove the circular dependency / deadlock condition.
  • Broad spectrum color picker now shows an indicator of the current color's location if the current color is represented in the broad spectrum map.
  • Fixed an issue in net.lugdunon.states.list.ServerList that was causing version mismatch server errors to display incorrectly.
  • Fixed an issue in net.lugdunon.states.list.ServerList that was allowing clicks/actions on servers with server errors.
  • Fixed an issue in net.lugdunon.command.core.player.PlayerStaminaCommand causing a client crash on initial load if player character receives a stamina update before player character has actually loaded.

Other Changes of Note

  • Rats are now capable of attack, and grant experience when slain.
  • Streetlamps are now configurable with the wrench.
  • Flowers and trees now have layer restrictions (Dirt, Grass, and Snow).
  • Arcane Reliquaries now require less energy to harvest.
  • Arc-stabilized teleporters now have a proper description.
  • Added a dungeon item indicator icon (for items used in procedurally generated dungeons).
  • Added /ip/ REST service to the auth server for retrieving a client's externally accessible ip address.
  • Added total activated accounts to the /fullReport auth server REST service.
  • Added net.lugdunon.command.core.logging.ClientLogCommand to introduce the ability for clients to log messages to the server as part of the logging overhaul.
  • Added net.lugdunon.command.core.console.GetPropertyCommand to allow clients to query server or world property values from the server.
  • Added net.lugdunon.ui.Dialog.waitWithLog(title,context,callback) to the client-side API.
  • Added closeDelegate argument to net.lugdunon.ui.Dialog.smallDialog(title,w,h,closeDelegate) in the client-side API. Close delegates need to implement an onclose(dialogueId) function.
  • Added Namespace.cssRuleForClass(className,rule) to the client-side API. This function will return the value of a css rule defined for a given css class name.
  • Standalone client process now supports custom REST handlers.
  • Standalone client process /updateClientProgress/ REST call. Provides progressive status updates to web client on client update.
  • Standalone client process /createWorldProgress/ REST call. Provides progressive status updates to web client on new world creation.
  • net.lugdunon.client.util.WebClient now supports svg files.
  • Updated net.lugdunon.server.worldgen.WorldGenerator to support a stateless mode that will operate with pre-provided caches and definitions.
  • World config property accesses will now only log on the initial access.
  • Added dungeon.timeout.interval world property definition. The interval in which an unoccupied dungeon will reset.
  • now generates a biome image, in addition to the terrain and elevation images.
  • net.lugdunon.command.core.console.LocCommand now reports the elevation and biome at the player's current location.
  • NPCs that are assigned a biome at spawn can not path out of that biome.
  • AoE spells can now be triggered by placeable item instances.
  • Removed access control block from main container sub panel. Access control on containers must now be accomplished via the standard configuration menu item.
  • Added support for removing specific entries in /etc config files when merging.
  • Removed white, blue, and black plate armor set recipes when using the procedural world gen. These armor sets will obtainable exclusively as dungeon drops.
  • Item and AreaOfEffect classes now support multiple target effects.
  • Durability on dungeon drop weapons increased greatly.
  • Damage on dungeon drop weapons decreased to be more in line with current item progression.
  • Added support for server-side character effects.
  • Changed ui layers on cave and ruins/dungeon portals from foreground to background.
  • Tuned resource nodes in the overworld by reducing the amount of certain nodes.
  • Added shipwrecked cargo resources to the beach biome. These resources will allow players access to seeds and animals for farming. Once gathered, these items will not respawn.
  • Added support for programmatically toggling the lighting state of non-arc controlled lights.
  • net.lugdunon.command.core.console.LocCommand now logs the top layer tile score for debugging purposes.
  • Support for ambient audio for biomes added.
  • Environment layer now affects character labels, targeting circles, and most other UI effects.
  • Adjusted exp rewarded and health for ghostly scholars.
  • Ghostly scholars are now hostile to player characters.
  • default.compendium.crafting.recipe.easy.mode.enable is now on by default.
  • All trees and flowers ignore ownership when replanted.
  • Default world name changed from "No World Name" to "Shadow of Moritasgus".
  • Active World Generator value now pulled from world.cfg, if present.
  • Button labels can now be specified as part of the content argument for ok and confirm dialogs.
  • Added support for notifications in the client and main website to alert users when a new version is being deployed.
  • Added palette index indicator.
  • Added middling and strong zombie melee attacks.
  • Added three new NPC definitions: Lowlands, Midlands, and Highlands Troglodytes. Each of these is capable of several different appearances, chosen at random on spawn.
  • Skeleton spawns in caverns have been replaced with the appropriate level troglodyte.
  • Client code refactored to account for new jCEF API.
  • Added mobile client bitbucket repository.

As always, the full change log for 0.8.0 is available here,
and the full change log for is available here,
and the full change log for is available here,
and finally, the full change log for 0.8.1 is available here.

fstltna - - 8 comments

Looks great

Reply Good karma Bad karma+2 votes
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.