L2J 서버는 L2j 게임 서버와 L2j 로그인 서버의 두 가지 구성 요소로 나뉘고, 동시에 L2j 게임 서버는 코어와 데이터팩으로 나누어져 있습니다.코어는 게임 메커니즘, 지속성 및 통신 메커니즘을 정의하는 Java 코드이고, 데이터팩은 상호작용, 퀘스트 스크립트, AI 등 게임 플레이와 관련된 파일로 구성됩니다.
서버를 설치하려면 먼저 추가 소프트웨어(Java, 데이터베이스, Git 등)를 설치한 다음, 소스 코드를 가져와서 소스 코드를 컴파일하고(Build), 데이터베이스를 설치하고, 컴파일된 서버 파일을 배포하고, 최소한의 구성을 거친 후 서버를 시작하면 됩니다.
웹 개발자라면 다 아는 백엔드 프론트엔드의 개념이 게임에서도 똑같이 적용 됩니다.
자…! 시작해볼까요?
필수 구성요소
- OS
- Java
- MariaDB 또는 MySQL
- Git
설치할 디렉터리 준비
- 폴더든 드라이브든 어느 곳이든 상관 없다. 본인의 경우엔 USB 드라이브를 선택 함 ^^
- 디렉터리에서 Windows PowerShell 실행
OS 업데이트
wuauclt /detectnow /updatenow
Java 설치
우리가 설치하려는 L2J 프리서버는 Java를 사용하여 만들어졌고, 서버를 빌드하기 위해서는 Java JDK (Java Development Kit)가 필요하다.
winget install EclipseAdoptium.Temurin.21.JDK
설치가 되었는지 확인한다.
java --version
Git 설치
L2J 프리서버는 버전 제어 시스템으로 Git을 사용하기 때문에 소스코드를 다운 받기 위해서는 Git 설치가 필요하다.
winget install -e --id Git.Git
설치가 되었는지 확인한다.
git --version
데이터베이스 설치
데이터베이스 서버를 설치하고 사용자를 생성한다.
MySQL도 호환이 되지만 L2J에서는 MariaDB를 권장하고 있다.
winget install -e --id MariaDB.Server
데이터베이스 버전 확인
winget show -e --id MariaDB.Server
데이터베이스 실행
mariadb -u root -p
데이터베이스 사용자를 생성하고 권한 부여
CREATE OR REPLACE USER 'l2j'@'%' IDENTIFIED BY 'chocoding';
GRANT ALL PRIVILEGES ON *.* TO 'l2j'@'%' IDENTIFIED BY 'chocoding';
FLUSH PRIVILEGES;
exit
소스 코드 다운로드
서버를 설치할 디렉터리로 이동하여 git 디렉터리 생성
mkdir L:\git
cd git # Change Directory 중요
로그인 서버 다운로드
git clone -b master https://bitbucket.org/l2jserver/l2j-server-login.git
Cloning into 'l2j-server-login'...
remote: Enumerating objects: 805, done.
remote: Counting objects: 100% (805/805), done.
remote: Compressing objects: 100% (681/681), done.
remote: Total 805 (delta 495), reused 59 (delta 26), pack-reused 0 (from 0)
Receiving objects: 100% (805/805), 306.79 KiB | 768.00 KiB/s, done.
Resolving deltas: 100% (495/495), done.
게임 서버 다운로드
git clone -b develop https://bitbucket.org/l2jserver/l2j-server-game.git
Cloning into 'l2j-server-game'...
remote: Enumerating objects: 175866, done.
remote: Counting objects: 100% (6085/6085), done.
remote: Compressing objects: 100% (3243/3243), done.
remote: Total 175866 (delta 4377), reused 3733 (delta 2507), pack-reused 169781 (from 1)
Receiving objects: 100% (175866/175866), 130.53 MiB | 15.86 MiB/s, done.
Resolving deltas: 100% (133151/133151), done.
Updating files: 100% (1902/1902), done.
데이터팩 다운로드
git clone -b develop https://bitbucket.org/l2jserver/l2j-server-datapack.git
Cloning into 'l2j-server-datapack'...
remote: Enumerating objects: 297317, done.
remote: Counting objects: 100% (3955/3955), done.
remote: Compressing objects: 100% (2070/2070), done.
remote: Total 297317 (delta 2173), reused 3252 (delta 1768), pack-reused 293362 (from 1)
Receiving objects: 100% (297317/297317), 156.27 MiB | 15.89 MiB/s, done.
Resolving deltas: 100% (230209/230209), done.
Updating files: 100% (24428/24428), done.
L2J 서버 구축 (Build)
로그인 서버 빌드
cd L:\git\l2j-server-login
.\mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-login >-------------------
[INFO] Building L2J Login Server 2.6.7.3
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- resources:3.3.1:resources (default-resources) @ l2j-server-login ---
[INFO] Copying 21 resources from src\main\resources to target\classes
[INFO]
[INFO] --- compiler:3.13.0:compile (default-compile) @ l2j-server-login ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 59 source files with javac [debug target 21] to target\classes
[INFO]
[INFO] --- resources:3.3.1:testResources (default-testResources) @ l2j-server-login ---
[INFO] skip non existing resourceDirectory L:\git\l2j-server-login\src\test\resources
[INFO]
[INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ l2j-server-login ---
[INFO] No sources to compile
[INFO]
[INFO] --- surefire:3.1.2:test (default-test) @ l2j-server-login ---
[INFO] No tests to run.
[INFO]
[INFO] --- jar:3.4.2:jar (default-jar) @ l2j-server-login ---
[INFO] Building jar: L:\git\l2j-server-login\target\l2jlogin.jar
[INFO]
[INFO] --- assembly:3.7.1:single (default) @ l2j-server-login ---
[INFO] Reading assembly descriptor: src/main/assembly/zip.xml
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-mmocore:pom:2.6.5.0 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-mmocore:pom:2.6.5.0 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
Downloading from central: https://repo.maven.apache.org/maven2/org/bitbucket/l2jserver/l2j-server-mmocore/2.6.5.0/l2j-server-mmocore-2.6.5.0.pom
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-commons:pom:2.6.8.1 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-commons:pom:2.6.8.1 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
Downloading from central: https://repo.maven.apache.org/maven2/org/bitbucket/l2jserver/l2j-server-commons/2.6.8.1/l2j-server-commons-2.6.8.1.pom
[INFO] Building zip: L:\git\l2j-server-login\target\l2j-server-login-2.6.7.3.zip
[INFO]
[INFO] --- install:3.1.1:install (default-install) @ l2j-server-login ---
[INFO] Installing L:\git\l2j-server-login\pom.xml to C:\Users\mis96\.m2\repository\com\l2jserver\l2j-server-login\2.6.7.3\l2j-server-login-2.6.7.3.pom
[INFO] Installing L:\git\l2j-server-login\target\l2jlogin.jar to C:\Users\mis96\.m2\repository\com\l2jserver\l2j-server-login\2.6.7.3\l2j-server-login-2.6.7.3.jar
[INFO] Installing L:\git\l2j-server-login\target\l2j-server-login-2.6.7.3.zip to C:\Users\mis96\.m2\repository\com\l2jserver\l2j-server-login\2.6.7.3\l2j-server-login-2.6.7.3.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.202 s
[INFO] Finished at: 2025-01-30T23:21:49+09:00
[INFO] ------------------------------------------------------------------------
게임 서버 빌드
cd L:\git\l2j-server-game
.\mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-game >--------------------
[INFO] Building L2J Game Server 2.6.3.0-SNAPSHOT
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- resources:3.3.1:resources (default-resources) @ l2j-server-game ---
[INFO] Copying 41 resources from src\main\resources to target\classes
[INFO]
[INFO] --- compiler:3.13.0:compile (default-compile) @ l2j-server-game ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 1815 source files with javac [debug target 21] to target\classes
[INFO] /L:/git/l2j-server-game/src/main/java/com/l2jserver/gameserver/model/actor/instance/L2TrapInstance.java: Some input files use or override a deprecated API.
[INFO] /L:/git/l2j-server-game/src/main/java/com/l2jserver/gameserver/model/actor/instance/L2TrapInstance.java: Recompile with -Xlint:deprecation for details.
[INFO]
[INFO] --- resources:3.3.1:testResources (default-testResources) @ l2j-server-game ---
[INFO] Copying 1 resource from src\test\resources to target\test-classes
[INFO]
[INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ l2j-server-game ---
[INFO] Recompiling the module because of changed dependency.
[INFO] Compiling 31 source files with javac [debug target 21] to target\test-classes
[INFO]
[INFO] --- surefire:3.5.2:test (default-test) @ l2j-server-game ---
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.l2jserver.gameserver.config.converter.Days2MillisecondsConverterTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.087 s -- in com.l2jserver.gameserver.config.converter.Days2MillisecondsConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.HexIdConverterTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 s -- in com.l2jserver.gameserver.config.converter.HexIdConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.Hours2MillisecondsConverterTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s -- in com.l2jserver.gameserver.config.converter.Hours2MillisecondsConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.ItemHolderConverterTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 s -- in com.l2jserver.gameserver.config.converter.ItemHolderConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.LocationConverterTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 s -- in com.l2jserver.gameserver.config.converter.LocationConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.MapIntegerFloatConverterTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 s -- in com.l2jserver.gameserver.config.converter.MapIntegerFloatConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.MapIntegerIntegerConverterTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s -- in com.l2jserver.gameserver.config.converter.MapIntegerIntegerConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.Minutes2MillisecondsConverterTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 s -- in com.l2jserver.gameserver.config.converter.Minutes2MillisecondsConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.PatternConverterTest
2025-01-30T14:24:34.103659700Z main INFO Starting configuration XmlConfiguration[location=L:\git\l2j-server-game\target\classes\log4j2.xml, lastModified=2025-01-30T14:16:07.151Z]...
2025-01-30T14:24:34.103659700Z main INFO Start watching for changes to L:\git\l2j-server-game\target\classes\log4j2.xml every 0 seconds
2025-01-30T14:24:34.103659700Z main INFO Configuration XmlConfiguration[location=L:\git\l2j-server-game\target\classes\log4j2.xml, lastModified=2025-01-30T14:16:07.151Z] started.
2025-01-30T14:24:34.103659700Z main INFO Stopping configuration org.apache.logging.log4j.core.config.DefaultConfiguration@b78a709...
2025-01-30T14:24:34.103659700Z main INFO Configuration org.apache.logging.log4j.core.config.DefaultConfiguration@b78a709 stopped.
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.428 s -- in com.l2jserver.gameserver.config.converter.PatternConverterTest
[INFO] Running com.l2jserver.gameserver.config.converter.SkillHolderConverterTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 s -- in com.l2jserver.gameserver.config.converter.SkillHolderConverterTest
[INFO] Running com.l2jserver.gameserver.datatables.NpcPersonalAIDataTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.650 s -- in com.l2jserver.gameserver.datatables.NpcPersonalAIDataTest
[INFO] Running com.l2jserver.gameserver.enums.TriggerAttackTypeTest
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.469 s -- in com.l2jserver.gameserver.enums.TriggerAttackTypeTest
[INFO] Running com.l2jserver.gameserver.enums.TriggerTargetTypeTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.471 s -- in com.l2jserver.gameserver.enums.TriggerTargetTypeTest
[INFO] Running com.l2jserver.gameserver.model.actor.instance.L2TrapInstanceTest
[INFO] 2025-01-30 23:24:35 GameServer: -----------------------------------=[ Network Configuration ]
[INFO] 2025-01-30 23:24:35 IPConfigData: Using automatic network configuration.
[INFO] 2025-01-30 23:24:36 IPConfigData: Adding new subnet: 180.231.25.0/24 address: 180.231.25.113
[INFO] 2025-01-30 23:24:36 IPConfigData: Adding new subnet: 127.0.0.0/8 address: 127.0.0.1
[INFO] 2025-01-30 23:24:36 IPConfigData: Adding new subnet: 0.0.0.0/0 address: 180.231.25.113
[INFO] 2025-01-30 23:24:36 InstanceManager: Multiverse Instance created.
[INFO] 2025-01-30 23:24:36 InstanceManager: Universe Instance created.
[WARN] 2025-01-30 23:24:36 IXmlReader: InstanceManager: Could not parse instancenames.xml is not a file or it doesn't exist!
[INFO] 2025-01-30 23:24:36 InstanceManager: Loaded 0 instance names.
[INFO] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.160 s -- in com.l2jserver.gameserver.model.actor.instance.L2TrapInstanceTest
[INFO] Running com.l2jserver.gameserver.model.actor.stat.SummonStatTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 s -- in com.l2jserver.gameserver.model.actor.stat.SummonStatTest
[INFO] Running com.l2jserver.gameserver.model.conditions.ConditionCheckAbnormalTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.110 s -- in com.l2jserver.gameserver.model.conditions.ConditionCheckAbnormalTest
[INFO] Running com.l2jserver.gameserver.model.conditions.ConditionOpExistNpcTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.078 s -- in com.l2jserver.gameserver.model.conditions.ConditionOpExistNpcTest
[INFO] Running com.l2jserver.gameserver.model.conditions.ConditionTargetMyPartyTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.252 s -- in com.l2jserver.gameserver.model.conditions.ConditionTargetMyPartyTest
[INFO] Running com.l2jserver.gameserver.model.drops.strategy.IDropCalculationStrategyTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.071 s -- in com.l2jserver.gameserver.model.drops.strategy.IDropCalculationStrategyTest
[INFO] Running com.l2jserver.gameserver.model.events.AbstractScriptTest
[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.148 s -- in com.l2jserver.gameserver.model.events.AbstractScriptTest
[INFO] Running com.l2jserver.gameserver.model.items.enchant.EnchantSupportItemTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.098 s -- in com.l2jserver.gameserver.model.items.enchant.EnchantSupportItemTest
[INFO] Running com.l2jserver.gameserver.model.quest.QuestDroplistTest
[INFO] Tests run: 35, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.103 s -- in com.l2jserver.gameserver.model.quest.QuestDroplistTest
[INFO] Running com.l2jserver.gameserver.model.quest.QuestTest
[INFO] 2025-01-30 23:24:37 QuestManager: Replaced quest Test quest (1) with a new version.
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 s -- in com.l2jserver.gameserver.model.quest.QuestTest
[INFO] Running com.l2jserver.gameserver.model.skills.SkillTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 s -- in com.l2jserver.gameserver.model.skills.SkillTest
[INFO] Running com.l2jserver.gameserver.model.skills.targets.AffectObjectTest
[INFO] Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.075 s -- in com.l2jserver.gameserver.model.skills.targets.AffectObjectTest
[INFO] Running com.l2jserver.gameserver.model.skills.targets.AffectScopeTest
[INFO] Tests run: 27, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.322 s -- in com.l2jserver.gameserver.model.skills.targets.AffectScopeTest
[INFO] Running com.l2jserver.gameserver.model.skills.targets.TargetTypeTest
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.125 s -- in com.l2jserver.gameserver.model.skills.targets.TargetTypeTest
[INFO] Running com.l2jserver.gameserver.model.stats.FormulasTest
[INFO] Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 s -- in com.l2jserver.gameserver.model.stats.FormulasTest
[INFO] Running com.l2jserver.gameserver.model.zone.form.ZoneCuboidTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 s -- in com.l2jserver.gameserver.model.zone.form.ZoneCuboidTest
[INFO] Running com.l2jserver.gameserver.model.zone.form.ZoneCylinderTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s -- in com.l2jserver.gameserver.model.zone.form.ZoneCylinderTest
[INFO] Running com.l2jserver.gameserver.model.zone.form.ZoneNPolyTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s -- in com.l2jserver.gameserver.model.zone.form.ZoneNPolyTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 227, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- jar:3.4.2:jar (default-jar) @ l2j-server-game ---
[INFO] Building jar: L:\git\l2j-server-game\target\l2jserver.jar
[INFO]
[INFO] --- assembly:3.7.1:single (default) @ l2j-server-game ---
[INFO] Reading assembly descriptor: src/main/assembly/zip.xml
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-geo-driver:pom:2.6.5.0 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-geo-driver:pom:2.6.5.0 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
Downloading from central: https://repo.maven.apache.org/maven2/org/bitbucket/l2jserver/l2j-server-geo-driver/2.6.5.0/l2j-server-geo-driver-2.6.5.0.pom
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-mmocore:pom:2.6.5.0 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-mmocore:pom:2.6.5.0 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-commons:pom:2.6.8.1 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
[INFO] Artifact org.bitbucket.l2jserver:l2j-server-commons:pom:2.6.8.1 is present in the local repository, but cached from a remote repository ID that is unavailable in current build context, verifying that is downloadable from [central (https://repo.maven.apache.org/maven2, default, releases)]
[INFO] Building zip: L:\git\l2j-server-game\target\l2j-server-game-2.6.3.0-SNAPSHOT.zip
[INFO]
[INFO] --- install:3.1.1:install (default-install) @ l2j-server-game ---
[INFO] Installing L:\git\l2j-server-game\pom.xml to C:\Users\mis96\.m2\repository\com\l2jserver\l2j-server-game\2.6.3.0-SNAPSHOT\l2j-server-game-2.6.3.0-SNAPSHOT.pom
[INFO] Installing L:\git\l2j-server-game\target\l2jserver.jar to C:\Users\mis96\.m2\repository\com\l2jserver\l2j-server-game\2.6.3.0-SNAPSHOT\l2j-server-game-2.6.3.0-SNAPSHOT.jar
[INFO] Installing L:\git\l2j-server-game\target\l2j-server-game-2.6.3.0-SNAPSHOT.zip to C:\Users\mis96\.m2\repository\com\l2jserver\l2j-server-game\2.6.3.0-SNAPSHOT\l2j-server-game-2.6.3.0-SNAPSHOT.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 37.662 s
[INFO] Finished at: 2025-01-30T23:24:45+09:00
[INFO] ------------------------------------------------------------------------
데이터팩 빌드
cd L:\git\l2j-server-datapack
.\mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< com.l2jserver:l2j-server-datapack >------------------
[INFO] Building L2J DataPack 2.6.3.0-SNAPSHOT
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- resources:3.3.1:resources (default-resources) @ l2j-server-datapack ---
[INFO] Copying 5653 resources from src\main\resources to target\classes
[INFO]
[INFO] --- compiler:3.13.0:compile (default-compile) @ l2j-server-datapack ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 1300 source files with javac [debug target 21] to target\classes
[INFO] /L:/git/l2j-server-datapack/src/main/java/com/l2jserver/datapack/handlers/MasterHandler.java: Some input files use or override a deprecated API.
[INFO] /L:/git/l2j-server-datapack/src/main/java/com/l2jserver/datapack/handlers/MasterHandler.java: Recompile with -Xlint:deprecation for details.
[INFO]
[INFO] --- resources:3.3.1:testResources (default-testResources) @ l2j-server-datapack ---
[INFO] skip non existing resourceDirectory L:\git\l2j-server-datapack\src\test\resources
[INFO]
[INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ l2j-server-datapack ---
[INFO] Recompiling the module because of changed dependency.
[INFO] Compiling 12 source files with javac [debug target 21] to target\test-classes
[INFO]
[INFO] --- surefire:3.5.2:test (default-test) @ l2j-server-datapack ---
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.l2jserver.datapack.ai.group_template.CorpseTest
2025-01-30T14:26:26.877312800Z main INFO Starting configuration XmlConfiguration[location=jar:file:/C:/Users/mis96/.m2/repository/com/l2jserver/l2j-server-game/2.6.3.0-SNAPSHOT/l2j-server-game-2.6.3.0-SNAPSHOT.jar!/log4j2.xml, lastModified=2025-01-30T14:24:40.065Z]...
2025-01-30T14:26:26.877312800Z main INFO Start watching for changes to jar:file:/C:/Users/mis96/.m2/repository/com/l2jserver/l2j-server-game/2.6.3.0-SNAPSHOT/l2j-server-game-2.6.3.0-SNAPSHOT.jar!/log4j2.xml every 0 seconds
2025-01-30T14:26:26.877312800Z main INFO Configuration XmlConfiguration[location=jar:file:/C:/Users/mis96/.m2/repository/com/l2jserver/l2j-server-game/2.6.3.0-SNAPSHOT/l2j-server-game-2.6.3.0-SNAPSHOT.jar!/log4j2.xml, lastModified=2025-01-30T14:24:40.065Z] started.
2025-01-30T14:26:26.877312800Z main INFO Stopping configuration org.apache.logging.log4j.core.config.DefaultConfiguration@627d8516...
2025-01-30T14:26:26.877312800Z main INFO Configuration org.apache.logging.log4j.core.config.DefaultConfiguration@627d8516 stopped.
[INFO] 2025-01-30 23:26:27 GameServer: -----------------------------------=[ Network Configuration ]
[INFO] 2025-01-30 23:26:27 IPConfigData: Using automatic network configuration.
[INFO] 2025-01-30 23:26:27 IPConfigData: Adding new subnet: 180.231.25.0/24 address: 180.231.25.113
[INFO] 2025-01-30 23:26:27 IPConfigData: Adding new subnet: 127.0.0.0/8 address: 127.0.0.1
[INFO] 2025-01-30 23:26:27 IPConfigData: Adding new subnet: 0.0.0.0/0 address: 180.231.25.113
[WARN] 2025-01-30 23:26:28 IXmlReader: MinionData: Could not parse minionData.xml is not a file or it doesn't exist!
[INFO] 2025-01-30 23:26:28 NpcData$MinionData: Loaded 0 minions data.
[WARN] 2025-01-30 23:26:28 IXmlReader: NpcData: Folder L:\git\l2j-server-datapack\data\stats\npcs doesn't exist!
[INFO] 2025-01-30 23:26:28 NpcData: Loaded 0 NPCs.
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.064 s -- in com.l2jserver.datapack.ai.group_template.CorpseTest
[INFO] Running com.l2jserver.datapack.handlers.admincommandhandlers.AdminReloadTest
[WARN] 2025-01-30 23:26:28 IXmlReader: AdminData: Could not parse accessLevels.xml is not a file or it doesn't exist!
[INFO] 2025-01-30 23:26:28 AdminData: Loaded 0 access levels.
[WARN] 2025-01-30 23:26:28 IXmlReader: AdminData: Could not parse adminCommands.xml is not a file or it doesn't exist!
[INFO] 2025-01-30 23:26:28 AdminData: Loaded 0 access commands.
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.374 s -- in com.l2jserver.datapack.handlers.admincommandhandlers.AdminReloadTest
[INFO] Running com.l2jserver.datapack.handlers.bypasshandlers.MenuSelectTest
[WARN] 2025-01-30 23:26:28 MenuSelect: Invalid bypass menu_select?reply=123&ask=456!
[WARN] 2025-01-30 23:26:28 MenuSelect: Invalid bypass menu_select? ask=123&reply=456!
[WARN] 2025-01-30 23:26:28 MenuSelect: Invalid bypass invalid_bypass!
[WARN] 2025-01-30 23:26:28 MenuSelect: Invalid bypass menu_select?ask=123!
[WARN] 2025-01-30 23:26:28 MenuSelect: Invalid bypass menu_select?reply=456!
[WARN] 2025-01-30 23:26:28 MenuSelect: Invalid bypass menu_select?ask=abc?reply=def!
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.110 s -- in com.l2jserver.datapack.handlers.bypasshandlers.MenuSelectTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.instant.InstantBetrayTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.266 s -- in com.l2jserver.datapack.handlers.effecthandlers.instant.InstantBetrayTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.instant.InstantCallTargetPartyTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 s -- in com.l2jserver.datapack.handlers.effecthandlers.instant.InstantCallTargetPartyTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.instant.InstantDespawnTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.093 s -- in com.l2jserver.datapack.handlers.effecthandlers.instant.InstantDespawnTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.instant.InstantDispelByNameTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.050 s -- in com.l2jserver.datapack.handlers.effecthandlers.instant.InstantDispelByNameTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.instant.InstantHealLinkTest
[INFO] Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.261 s -- in com.l2jserver.datapack.handlers.effecthandlers.instant.InstantHealLinkTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.instant.TrapDetectTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.094 s -- in com.l2jserver.datapack.handlers.effecthandlers.instant.TrapDetectTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.instant.TrapRemoveTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 s -- in com.l2jserver.datapack.handlers.effecthandlers.instant.TrapRemoveTest
[INFO] Running com.l2jserver.datapack.handlers.effecthandlers.pump.TransformHangoverTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s -- in com.l2jserver.datapack.handlers.effecthandlers.pump.TransformHangoverTest
[INFO] Running com.l2jserver.datapack.quests.Q00372_LegacyOfInsolence.Q00372LegacyOfInsolenceTest
[INFO] 2025-01-30 23:26:29 HtmCache: Running lazy cache.
[INFO] Tests run: 42, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.452 s -- in com.l2jserver.datapack.quests.Q00372_LegacyOfInsolence.Q00372LegacyOfInsolenceTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 93, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- assembly:3.7.1:single (default) @ l2j-server-datapack ---
[INFO] Reading assembly descriptor: src/main/assembly/zip.xml
[INFO] Building zip: L:\git\l2j-server-datapack\target\l2j-server-datapack-2.6.3.0-SNAPSHOT.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:57 min
[INFO] Finished at: 2025-01-30T23:27:08+09:00
[INFO] ------------------------------------------------------------------------
배포 (Deploy)
원래 Deploy는래 Deploy는 나누어준다는 의미이지만 우리는 우리가 만들어서 우리가 배포하므로 지금 만들어진 패키지의 압축을 푸는 것으로 갈음(replace)
로그인 서버
mkdir L:\server\login #로그인 서버 디렉터리 생성
cd L:\server\login #로그인 서버 디렉터리로 이동
tar -xf L:\git\l2j-server-login\target\l2j-server-login-2.6.7.3.zip #Git에 빌드했던 로그인 서버의 압축 해제 빌드넘버는 항상 확인 요망
게임 서버와 데이터 팩
mkdir L:\server\game
cd L:\server\game
tar -xf L:\git\l2j-server-game\target\l2j-server-game-2.6.3.0-SNAPSHOT.zip
tar -xf L:\git\l2j-server-datapack\target\l2j-server-datapack-2.6.3.0-SNAPSHOT.zip
중간 점검
다음과 같은 디렉터리가 구성되었다면 OK
리니지2 프리서버 설치 (Install)
cli 다운로드
이제까지는 패키지를 만든 것이고 이제 부터가 내 컴퓨터에 설치하는 과정이라고 할 수 있다
L2J CLI라는 도구를 이용하여 설치를 할 수 있다.
mkdir L:\cli
cd L:\cli
curl -o l2jcli.zip https://l2jserver.com/api/download/cli/latest
tar -xf l2jcli.zip
구성 설정 (Configurationing)
login 폴더와 game 폴더에는 각각 database.properties라는 파일이 있는데 앞에서 설정한 데이터베이스 사용자이름과 패스워드에 맞게 수정해준다
데이터 설치 (데이터베이스 설치 아님)
데이터베이스는 설치 했지만 리니지2의 기본이 되는 데이터는 없는 상태… 그 데이터를 설치 해보자
cd L:\cli
.\l2jcli.bat
### 다음은 cli 실행 상태
>>> db install -sql L:\server\login\sql -u l2j -p chocoding -m FULL -t LOGIN -c -mods
>>> db install -sql L:\server\game\sql -u l2j -p chocoding -m FULL -t GAME -c -mods
관리자 계정 생성
cli\confing 내의 설정 파일에 있는 DB 로그인 정보를 수정한 후
# cli 실행 상태에서
account create -u chocoding -p -a 8
Enter value for --password (Password): # <--- 요기에서 원하는 패스워드 입력
Creating account chocoding...
2025-02-01T11:34:39.407094400Z main INFO Starting configuration XmlConfiguration[location=jar:file:/L:/cli/l2jcli.jar!/log4j2.xml, lastModified=2024-12-31T18:40:44Z]...
2025-02-01T11:34:39.408091900Z main INFO Start watching for changes to jar:file:/L:/cli/l2jcli.jar!/log4j2.xml every 0 seconds
2025-02-01T11:34:39.408091900Z main INFO Configuration XmlConfiguration[location=jar:file:/L:/cli/l2jcli.jar!/log4j2.xml, lastModified=2024-12-31T18:40:44Z] started.
2025-02-01T11:34:39.410596100Z main INFO Stopping configuration org.apache.logging.log4j.core.config.DefaultConfiguration@487db668...
2025-02-01T11:34:39.410596100Z main INFO Configuration org.apache.logging.log4j.core.config.DefaultConfiguration@487db668 stopped.
quit #cli에서 빠져 나옴
서버 실행
로그인 서버 실행
로그인 서버 폴더 내 config 폴더에 있는 database.properties 파일에서 데이터베이스 로그인 정보 확인 후
L:\server\login\startLoginServer.bat
게임 서버 실행
게임 서버 폴더 내 config 폴더에 있는 database.properties 파일에서 데이터베이스 로그인 정보 확인 후
L:\server\game\startGameServer.bat