Addition of diagonal GeoEngine.
This commit is contained in:
67
L2J_Mobius_C6_Interlude/dist/game/config/main/GeoEngine.ini
vendored
Normal file
67
L2J_Mobius_C6_Interlude/dist/game/config/main/GeoEngine.ini
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
# =================================================================
|
||||
# Geodata
|
||||
# =================================================================
|
||||
# Because of real-time performance we are using geodata files only in
|
||||
# diagonal L2D format now (using filename e.g. 22_16.l2d).
|
||||
# L2D geodata can be obtained by conversion of existing L2J or L2OFF geodata.
|
||||
# Launch "GeoDataConverter.bat/sh" and follow instructions to start the conversion.
|
||||
|
||||
# Specifies the path to geodata files. For example, when using geodata files located
|
||||
# at different folder/harddrive ("C:/Program Files/Lineage II/system/geodata/"), default: ./data/geodata/
|
||||
GeoDataPath = ./data/geodata/
|
||||
|
||||
# Player coordinates synchronization, default: 2
|
||||
# 1 - partial synchronization Client --> Server ; don't use it with geodata
|
||||
# 2 - partial synchronization Server --> Client ; use this setting with geodata
|
||||
# -1 - Old system: will synchronize Z only
|
||||
CoordSynchronize = 2
|
||||
|
||||
# =================================================================
|
||||
# Path checking
|
||||
# =================================================================
|
||||
|
||||
# Line of sight start at X percent of the character height, default: 75
|
||||
PartOfCharacterHeight = 75
|
||||
|
||||
# Maximum height of an obstacle, which can exceed the line of sight, default: 32
|
||||
MaxObstacleHeight = 32
|
||||
|
||||
# =================================================================
|
||||
# Path finding
|
||||
# =================================================================
|
||||
|
||||
# When line of movement check fails, the pathfinding algoritm is performed to look for
|
||||
# an alternative path (e.g. walk around obstacle), default: true
|
||||
PathFinding = true
|
||||
|
||||
# Pathfinding array buffers configuration, default: 100x6;128x6;192x6;256x4;320x4;384x4;500x2
|
||||
PathFindBuffers = 100x6;128x6;192x6;256x4;320x4;384x4;500x2
|
||||
|
||||
# Base path weight, when moving from one node to another on axis direction, default: 10
|
||||
BaseWeight = 10
|
||||
|
||||
# Path weight, when moving from one node to another on diagonal direction, default: BaseWeight * sqrt(2) = 14
|
||||
DiagonalWeight = 14
|
||||
|
||||
# When movement flags of target node is blocked to any direction, multiply movement weight by this multiplier.
|
||||
# This causes pathfinding algorithm to avoid path construction exactly near an obstacle, default: 10
|
||||
ObstacleMultiplier = 10
|
||||
|
||||
# Weight of the heuristic algorithm, which is giving estimated cost from node to target, default: 20
|
||||
# For proper function must be higher than BaseWeight and/or DiagonalWeight.
|
||||
HeuristicWeight = 20
|
||||
|
||||
# Maximum number of generated nodes per one path-finding process, default 3500
|
||||
MaxIterations = 3500
|
||||
|
||||
# =================================================================
|
||||
# Other
|
||||
# =================================================================
|
||||
|
||||
# When a character falls, he takes damages.
|
||||
# Default: True
|
||||
FallDamage = True
|
||||
|
||||
# The zones with water are enabled.
|
||||
# Default: True
|
||||
AllowWater = True
|
||||
@@ -1,87 +0,0 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# GeoData
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Pathfinding options:
|
||||
# 0 = Disabled
|
||||
# 1 = Enabled using path node files
|
||||
# 2 = Enabled using geodata cells at runtime
|
||||
# Default: 0
|
||||
PathFinding = 2
|
||||
|
||||
# Pathfinding array buffers configuration
|
||||
PathFindBuffers = 100x6;128x6;192x6;256x4;320x4;384x4;500x2
|
||||
|
||||
# Weight for nodes without obstacles far from walls
|
||||
LowWeight = 0.5
|
||||
|
||||
# Weight for nodes near walls
|
||||
MediumWeight = 2
|
||||
|
||||
# Weight for nodes with obstacles
|
||||
HighWeight = 3
|
||||
|
||||
# Angle paths will be more "smart", but in cost of higher CPU utilization
|
||||
AdvancedDiagonalStrategy = True
|
||||
|
||||
# Weight for diagonal movement. Used only with AdvancedDiagonalStrategy = True
|
||||
# Default: LowWeight * sqrt(2)
|
||||
DiagonalWeight = 0.707
|
||||
|
||||
# Maximum number of LOS postfilter passes, 0 will disable postfilter.
|
||||
# Default: 3
|
||||
MaxPostfilterPasses = 3
|
||||
|
||||
# Path debug function.
|
||||
# Nodes known to pathfinder will be displayed as adena, constructed path as antidots.
|
||||
# Number of the items show node cost * 10
|
||||
# Potions display path after first stage filter
|
||||
# Red potions - actual waypoints. Green potions - nodes removed by LOS postfilter
|
||||
# This function FOR DEBUG PURPOSES ONLY, never use it on the live server !
|
||||
DebugPath = False
|
||||
|
||||
# True = Loads GeoData buffer's content into physical memory.
|
||||
# False = Does not necessarily imply that the GeoData buffer's content is not resident in physical memory.
|
||||
# Default: True
|
||||
ForceGeoData = True
|
||||
|
||||
# This setting controls Client <--> Server Player coordinates synchronization:
|
||||
# -1 - Will synchronize only Z from Client --> Server. Default when no geodata.
|
||||
# 1 - Synchronization Client --> Server only. Using this option (without geodata) makes it more difficult for players to bypass obstacles.
|
||||
# 2 - Intended for geodata (at least with cell-level pathfinding, otherwise can you try -1).
|
||||
# Server sends validation packet if client goes too far from server calculated coordinates.
|
||||
# Default: -1
|
||||
CoordSynchronize = -1
|
||||
|
||||
# Default: False
|
||||
AcceptGeoeditorConn = False
|
||||
GeoEditorPort = 9011
|
||||
|
||||
# When a character falls, he takes damages.
|
||||
# Default: True
|
||||
FallDamage = True
|
||||
|
||||
# The zones with water are enabled.
|
||||
# Default: True
|
||||
AllowWater = True
|
||||
|
||||
# Geodata files folder
|
||||
GeoDataPath = ./data/geodata
|
||||
|
||||
# Pathnode directory
|
||||
# Default: data/pathnode
|
||||
PathnodeDirectory = data/pathnode
|
||||
|
||||
# True: Try to load regions not specified below(won't disturb server startup when file does not exist)
|
||||
# False: Don't load any regions other than the ones specified with True below
|
||||
TryLoadUnspecifiedRegions = True
|
||||
|
||||
# List of regions to be required to load
|
||||
# eg.:
|
||||
# Both regions required
|
||||
# 22_22 = True
|
||||
# 19_20 = True
|
||||
# Exclude region from loading
|
||||
# 25_26 = False
|
||||
# True: Region is required for the server to startup
|
||||
# False: Region is not considered to be loaded
|
||||
@@ -1,3 +1,41 @@
|
||||
################################################
|
||||
# L2j Geodata #
|
||||
################################################
|
||||
##############################################
|
||||
GEODATA COMPENDIUM
|
||||
##############################################
|
||||
|
||||
Comprehensive guide for geodata, by Tryskell and Hasha.
|
||||
|
||||
I - How to configure it
|
||||
a - Prerequisites
|
||||
b - Make it work
|
||||
c - L2D format
|
||||
II - Addendum
|
||||
|
||||
##############################################
|
||||
I - How to configure it
|
||||
##############################################
|
||||
|
||||
----------------------------------------------
|
||||
a - Prerequisites
|
||||
----------------------------------------------
|
||||
|
||||
* A 64bits Windows/Java JDK is a must-have to run server with geodata. Linux servers don't have the issue.
|
||||
* The server can start (hardly) with -Xmx3000m. -Xmx4g is recommended.
|
||||
|
||||
----------------------------------------------
|
||||
b - Make it work
|
||||
----------------------------------------------
|
||||
|
||||
To make geodata working:
|
||||
* unpack your geodata files into "/data/geodata" folder
|
||||
* open "/config/GeoEngine.ini" with your favorite text editor and then edit following config:
|
||||
- CoordSynchronize = 2
|
||||
* If you do not use any geodata files, the server will automatically change this setting to -1.
|
||||
|
||||
----------------------------------------------
|
||||
c - L2D format
|
||||
----------------------------------------------
|
||||
|
||||
* L2D is a new geodata file format. It holds diagonal movement informations, in addition to regular NSWE flags.
|
||||
* Heavier file weight (+30%), but the pathfinding algorithms are processed way faster (-35% calculation times).
|
||||
* L2D files can be converted from L2OFF/L2J formats without losing any information. Converter is part of the gameserver.
|
||||
* Keep in mind to convert new geodata files, once you update your L2OFF/L2J ones.
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
################################################
|
||||
# L2j pathnode #
|
||||
################################################
|
||||
@@ -31,7 +31,7 @@ import com.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import com.l2jmobius.gameserver.datatables.SkillTable;
|
||||
import com.l2jmobius.gameserver.datatables.sql.NpcTable;
|
||||
import com.l2jmobius.gameserver.datatables.sql.SpawnTable;
|
||||
import com.l2jmobius.gameserver.geodata.GeoData;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.instancemanager.GrandBossManager;
|
||||
import com.l2jmobius.gameserver.model.L2Skill;
|
||||
import com.l2jmobius.gameserver.model.L2World;
|
||||
@@ -621,7 +621,8 @@ public class Antharas extends Quest
|
||||
final int rx = Rnd.get(175000, 179900);
|
||||
final int ry = Rnd.get(112400, 116000);
|
||||
final int rdt = ((_antharas.getX() - rx) * (_antharas.getX() - rx)) + ((_antharas.getY() - ry) * (_antharas.getY() - ry));
|
||||
if (GeoData.getInstance().canSeeTarget(_antharas.getX(), _antharas.getY(), -7704, rx, ry, -7704))
|
||||
final Location randomLocation = new Location(rx, ry, -7704);
|
||||
if (GeoEngine.getInstance().canSeeTarget(_antharas, randomLocation))
|
||||
{
|
||||
if (rdt < dt)
|
||||
{
|
||||
|
||||
@@ -29,7 +29,7 @@ import com.l2jmobius.Config;
|
||||
import com.l2jmobius.commons.concurrent.ThreadPool;
|
||||
import com.l2jmobius.commons.util.Rnd;
|
||||
import com.l2jmobius.gameserver.datatables.SkillTable;
|
||||
import com.l2jmobius.gameserver.geodata.GeoData;
|
||||
import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
||||
import com.l2jmobius.gameserver.instancemanager.GrandBossManager;
|
||||
import com.l2jmobius.gameserver.model.L2Effect;
|
||||
import com.l2jmobius.gameserver.model.L2Object;
|
||||
@@ -487,7 +487,7 @@ public class Baium extends Quest
|
||||
{
|
||||
if (obj instanceof L2Character)
|
||||
{
|
||||
if (((((L2Character) obj).getZ() < (npc.getZ() - 100)) && (((L2Character) obj).getZ() > (npc.getZ() + 100))) || !GeoData.getInstance().canSeeTarget(obj, npc))
|
||||
if (((((L2Character) obj).getZ() < (npc.getZ() - 100)) && (((L2Character) obj).getZ() > (npc.getZ() + 100))) || !GeoEngine.getInstance().canSeeTarget(obj, npc))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user