• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook pagefor updates, or we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.)

Mobile Source Code Ragnarok Origin[Full]

Newbie Spellweaver
Joined
Apr 18, 2024
Messages
6
Reaction score
1
I just add some extra steps in the previous guide. This is for 20gb version, not sure if it works for big one. I just start learning c++ recently, so maybe some steps are not ideal, and some steps may miss as well, just let me know. I will try to help.

## 2. Install compilation tools
-cmake(>3.0.2)
-g++ (I'm using 9.2)
-redis (I'm using 6.2.7)
-mysql (I have mysql installed previously, so if below step is not correct, just google it)


## 3. Connect resources
- copy config, rogamelibs, roserver to your server root
- cd roserver
- open 111.sh, change icc_path to your g++ path, in my case, it is /usr/local/bin
- run ./111.sh ../config

## 4. Install and compile dependent software
- Install mysql-devel, mysql version
```sh
yum install mysql-devel
yum install mysql-community-server.x86_64
```

## 5. Compile server
if you see "make -jx" especially "make -j128" in below sh files, just change it to "make -j<nb of your cpu core>"
- build librogamelibs.a
open /rogamelibs/buildtool/build_linux.sh
change icc_path
change cmake command to below
"cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LINUX.cmake -DCMAKE_BUILD_TYPE=Debug -DGCC=9.2.0 -DGCOV=Off -DASAN=Off -DLSAN=Off -DCMAKE_C_COMPILER=$icc_path/gcc -DCMAKE_CXX_COMPILER=$icc_path/g++ ../.."
then run build_linux.sh
- build libconfiglib.a
open /rogamelibs/table/buildtool/build_linux.sh
change icc_path
change cmake command to below
"cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LINUX.cmake -DCMAKE_C_COMPILER=$icc_path/gcc -DCMAKE_CXX_COMPILER=$icc_path/g++ ../.."
then run build_linux.sh
- go to /roserver/lib, check both librogamelibs.a and libconfiglib.a link to correct files
- cd /roserver/Build/Debug
- run "make" to build all servers, or you can go to each server folder, then build it one by one
- Comment out the files that are not found in the code (Be patient, it is not too many)


## 6. Configure mysql
- Start mysql
- Run the .sql files under /roserver/exe/sql/create_sql and update_sql
- Add a piece of server information to the gateinfo table under database login
(Example server_id channel state is_open server_name zone_name ipaddr free_ipaddr register_account online_role open_time full_register_time combine_serverid
1 1 1 1 mzx sywc your_server_ip:10110 0 0 2024-04-15 08:00:00 2024-04-15 08:00:00 0)
- **Possible problems:**
- (1) mysql cannot be started
The error message is that there is already a file in a certain folder. Modify the path pointed to by data in /etc/my.cnf.
- (2) mysql query and modify the initial password query and modify
```sh
grep "temporary password" /var/log/mysqld.log
mysqladmin -u root -p oldpasswd password newpasswd
```
- (3) Timestamp default value invalid when running .sql
The most direct way to modify sql_mode
```sh
set sql_mode='';
```
## 7. Configure redis
- configure your redis in /roserver/exe/gsconf/serveronly/game_redis_conf.json

## 8. Generate and modify the server configuration file
- copy my conf.zip file, then unzip to /roserver/Build/Debug/bin
- Modify the xml files of each server in roserver/Build/Debug/bin/conf. Fill in the mysql account password database information.
If you want to start multiple gameservers, copy gs_conf.xml and modify the line information in it.
- copy my run_server_command.zip, then replace start,status and stop with my ones

## 9. Open port for 25009 (default 25001 client port not work for me, no idea why) and 10110 (gate),

## 10. Install screen

## 11. Start the server
```sh
cd ./Build/Debug/bin
./start [any name]
```
screen related commands
```sh
screen -ls //View started servers
screen -r [server name] //Switch to each server window to ensure there are no errors
First ctrl+A and then D to exit the screen
```

2024-04-18 Update:
1. change 3 version numbers in "/roserver/exe/loginconf/version.txt" to "0.2.0.1" (this is client version number)




View attachment 259784
View attachment 259785
Hi buddy, did you encounter the problem when the gameserve/tradeserver tried to load the "GlobalTables.bytes"? The server would prompt a message that one field called "MultiplePoints..." blahblah was missing, and then exited. I built the program from 20G zip version on Ubuntu 20.04. I though it should be a common problem because it seems like a problem in confiugration, so I'm really curious why nobody mentions it, and how you resolve it?
Thanks very much if any clues to help me figure it out.
 
Newbie Spellweaver
Joined
Apr 5, 2024
Messages
34
Reaction score
19
Hi buddy, did you encounter the problem when the gameserve/tradeserver tried to load the "GlobalTables.bytes"? The server would prompt a message that one field called "MultiplePoints..." blahblah was missing, and then exited. I built the program from 20G zip version on Ubuntu 20.04. I though it should be a common problem because it seems like a problem in confiugration, so I'm really curious why nobody mentions it, and how you resolve it?
Thanks very much if any clues to help me figure it out.
HI, I think that is because you don't link folders properly. Just go to /roserver/exe/gsconf, and check if all the folders are linked properly from /config
QQ20240418120132 - Source Code Ragnarok Origin[Full] - RaGEZONE Forums


and also make sure you can build librogamelibs.a and libconfiglib.a, then they are linked correctly
QQ20240418120637 - Source Code Ragnarok Origin[Full] - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Last edited:
Newbie Spellweaver
Joined
Apr 18, 2024
Messages
6
Reaction score
1
HI, I think that is because you don't link folders properly. Just go to /roserver/exe/gsconf, and check if all the folders are linked properly from /config View attachment 259824

and also make sure you can build librogamelibs.a and libconfiglib.a, then they are linked correctly
View attachment 259825
sure, since I failed to start the servers, I deleted all folders... All the compilation and link have passed, the librogamelibs.a and libconfiglib.a also generated. Thanks for your hints, I turn to re unzip the downloaded file and go to find if anything I'm missing.
 
Newbie Spellweaver
Joined
Nov 10, 2023
Messages
5
Reaction score
1
I would like to ask for the file that I'm missing. I can't run the file.
- I downloaded this from the link Mediafile > Ro-001.

Any friends who are comfortable sharing files with me, please. Thank you.
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Sep 14, 2022
Messages
19
Reaction score
1
that scenes is not corrupt you need to run the server first because the client is set into local thats why client loading is not continue to load you stock in loading...0 in game screen
Oh I understand, I don't think I have enough knowledge to run the server, I'm currently doing my TCC for college and my idea was to use some maps to do work in Unity, but I don't have full knowledge, is there a possibility of Do you upload just the _scenes?
 
Newbie Spellweaver
Joined
Feb 5, 2024
Messages
14
Reaction score
0
HI, I think that is because you don't link folders properly. Just go to /roserver/exe/gsconf, and check if all the folders are linked properly from /config

and also make sure you can build librogamelibs.a and libconfigl

I just add some extra steps in the previous guide. This is for 20gb version, not sure if it works for big one. I just start learning c++ recently, so maybe some steps are not ideal, and some steps may miss as well, just let me know. I will try to help.

## 2. Install compilation tools
-cmake(>3.0.2)
-g++ (I'm using 9.2)
-redis (I'm using 6.2.7)
-mysql (I have mysql installed previously, so if below step is not correct, just google it)


## 3. Connect resources
- copy config, rogamelibs, roserver to your server root
- cd roserver
- open 111.sh, change icc_path to your g++ path, in my case, it is /usr/local/bin
- go to "/roserver/exe/gsconf", delete all folders except "script" and "serveronly", by doing this, we can link those folders from config folder with next step
- run ./111.sh ../config

## 4. Install and compile dependent software
- Install mysql-devel, mysql version
```sh
yum install mysql-devel
yum install mysql-community-server.x86_64
```

## 5. Compile server
if you see "make -jx" especially "make -j128" in below sh files, just change it to "make -j<nb of your cpu core>"
- build librogamelibs.a
open /rogamelibs/buildtool/build_linux.sh
change icc_path
change cmake command to below
"cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LINUX.cmake -DCMAKE_BUILD_TYPE=Debug -DGCC=9.2.0 -DGCOV=Off -DASAN=Off -DLSAN=Off -DCMAKE_C_COMPILER=$icc_path/gcc -DCMAKE_CXX_COMPILER=$icc_path/g++ ../.."
then run build_linux.sh
- build libconfiglib.a
open /rogamelibs/table/buildtool/build_linux.sh
change icc_path
change cmake command to below
"cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/LINUX.cmake -DCMAKE_C_COMPILER=$icc_path/gcc -DCMAKE_CXX_COMPILER=$icc_path/g++ ../.."
then run build_linux.sh
- go to /roserver/lib, check both librogamelibs.a and libconfiglib.a link to correct files
- cd /roserver/Build/Debug
- run "make" to build all servers, or you can go to each server folder, then build it one by one
- Comment out the files that are not found in the code (Be patient, it is not too many)


## 6. Configure mysql
- Start mysql
- Run the .sql files under /roserver/exe/sql/create_sql and update_sql
- Add a piece of server information to the gateinfo table under database login
(Example server_id channel state is_open server_name zone_name ipaddr free_ipaddr register_account online_role open_time full_register_time combine_serverid
1 1 1 1 mzx sywc your_server_ip:10110 0 0 2024-04-15 08:00:00 2024-04-15 08:00:00 0)
- **Possible problems:**
- (1) mysql cannot be started
The error message is that there is already a file in a certain folder. Modify the path pointed to by data in /etc/my.cnf.
- (2) mysql query and modify the initial password query and modify
```sh
grep "temporary password" /var/log/mysqld.log
mysqladmin -u root -p oldpasswd password newpasswd
```
- (3) Timestamp default value invalid when running .sql
The most direct way to modify sql_mode
```sh
set sql_mode='';
```
## 7. Configure redis
- configure your redis in /roserver/exe/gsconf/serveronly/game_redis_conf.json

## 8. Generate and modify the server configuration file
- copy my conf.zip file, then unzip to /roserver/Build/Debug/bin
- Modify the xml files of each server in roserver/Build/Debug/bin/conf. Fill in the mysql account password database information.
If you want to start multiple gameservers, copy gs_conf.xml and modify the line information in it.
- copy my run_server_command.zip, then replace start,status and stop with my ones

## 9. Open port for 25009 (default 25001 client port not work for me, no idea why) and 10110 (gate),

## 10. Install screen

## 11. Start the server
```sh
cd ./Build/Debug/bin
./start [any name]
```
screen related commands
```sh
screen -ls //View started servers
screen -r [server name] //Switch to each server window to ensure there are no errors
First ctrl+A and then D to exit the screen
```

2024-04-18 Update:
1. change 3 version numbers in "/roserver/exe/loginconf/version.txt" to "0.2.0.1" (this is client version number)
2. Missing files like below. You can copy from big zip ("Ro\rogamelibs\include\aidebug" and "Ro\rogamelibs\aidebug") or use my attachment. Comment out "shared_data.SerializeToPb" errors
View attachment 259831

3. in /roserver/thirdparty, compile and install liboauth-0.9.4 and libevhtp-1.2.10
4. update step 3



View attachment 259784
1713461583275 - Source Code Ragnarok Origin[Full] - RaGEZONE Forums
can you help me?
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Apr 18, 2024
Messages
6
Reaction score
1
HI, I think that is because you don't link folders properly. Just go to /roserver/exe/gsconf, and check if all the folders are linked properly from /config View attachment 259824

and also make sure you can build librogamelibs.a and libconfiglib.a, then they are linked correctly
View attachment 259825
Thank you, bro, I do confirm the issue when loading GlobalTables.byte is caused by wrong configuration files which was already placed in exe/gsconf after unzip. Just deleted them and relink the files to config folder, and the loading problem would disappear.

Or you can just delete the "ai_debug" folder, and comment them in the CMakeLists.txt.
 
Junior Spellweaver
Joined
Apr 1, 2008
Messages
112
Reaction score
7
^
In file included from /usr/include/c++/4.8.2/bits/basic_string.h:3033:0,
from /usr/include/c++/4.8.2/string:52,
from /usr/include/c++/4.8.2/bits/locale_classes.h:40,
from /usr/include/c++/4.8.2/bits/ios_base.h:41,
from /usr/include/c++/4.8.2/ios:42,
from /usr/include/c++/4.8.2/istream:38,
from /usr/include/c++/4.8.2/sstream:38,
from /root/rogamelibs/./ai/nodes/ai_node.h:5,
from /root/rogamelibs/./ai/nodes/ai_group_begin.h:4,
from /root/rogamelibs/ai/nodes/ai_group_begin.cpp:1:
/usr/include/c++/4.8.2/bits/functional_hash.h:58:12: error: declaration of ‘struct std::hash<ROGameLibs::ROEventDefine>’
struct hash;
^
In file included from /usr/include/c++/4.8.2/bits/hashtable.h:35:0,
from /usr/include/c++/4.8.2/unordered_map:47,
from /root/rogamelibs/./ai/nodes/ai_node.h:6,
from /root/rogamelibs/./ai/nodes/ai_group_begin.h:4,
from /root/rogamelibs/ai/nodes/ai_group_begin.cpp:1:
/usr/include/c++/4.8.2/bits/hashtable_policy.h:1099:63: error: invalid use of incomplete type ‘struct std::hash<ROGameLibs::ROEventDefine>’
: __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { }
^
In file included from /usr/include/c++/4.8.2/bits/basic_string.h:3033:0,
from /usr/include/c++/4.8.2/string:52,
from /usr/include/c++/4.8.2/bits/locale_classes.h:40,
from /usr/include/c++/4.8.2/bits/ios_base.h:41,
from /usr/include/c++/4.8.2/ios:42,
from /usr/include/c++/4.8.2/istream:38,
from /usr/include/c++/4.8.2/sstream:38,
from /root/rogamelibs/./ai/nodes/ai_node.h:5,
from /root/rogamelibs/./ai/nodes/ai_group_begin.h:4,
from /root/rogamelibs/ai/nodes/ai_group_begin.cpp:1:
/usr/include/c++/4.8.2/bits/functional_hash.h:58:12: error: declaration of ‘struct std::hash<ROGameLibs::ROEventDefine>’
struct hash;
^
make[2]: *** [CMakeFiles/rogamelibs.dir/ai/nodes/ai_group_operator.cpp.o] Error 1
cc1plus: all warnings being treated as errors
make[2]: *** [CMakeFiles/rogamelibs.dir/ai/nodes/ai_group_end.cpp.o] Error 1
cc1plus: all warnings being treated as errors
make[2]: *** [CMakeFiles/rogamelibs.dir/ai/nodes/ai_group_begin.cpp.o] Error 1
make[1]: *** [CMakeFiles/rogamelibs.dir/all] Error 2
make: *** [all] Error 2
make build_linux error!
 
Newbie Spellweaver
Joined
Feb 5, 2024
Messages
14
Reaction score
0
Thank you, bro, I do confirm the issue when loading GlobalTables.byte is caused by wrong configuration files which was already placed in exe/gsconf after unzip. Just deleted them and relink the files to config folder, and the loading problem would disappear.


Or you can just delete the "ai_debug" folder, and comment them in the CMakeLists.txt.
tx, i`ll try again
 
Junior Spellweaver
Joined
Oct 17, 2005
Messages
104
Reaction score
4
i got error when make command

/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: ../../../lib/librogame_pb.a(pbc_worldevent.pb.cc.o)(.rodata._ZTVN4KKSG15AllWorldEventDBE[_ZTVN4KKSG15AllWorldEventDBE]+0x58): undefined reference to `google:rotobuf::MessageLite::InitializationErrorString() const'
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: ../../../lib/librogame_pb.a(pbc_worldevent.pb.cc.o)(.rodata._ZTVN4KKSG12WorldEventDBE[_ZTVN4KKSG12WorldEventDBE]+0x58): undefined reference to `google:rotobuf::MessageLite::InitializationErrorString() const'
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: ../../../lib/librogame_pb.a(pbc_mercenary.pb.cc.o)(.rodata._ZTVN4KKSG29MercenaryChangeFightStatusArgE[_ZTVN4KKSG29MercenaryChangeFightStatusArgE]+0x58): more undefined references to `google:rotobuf::MessageLite::InitializationErrorString() const' follow
collect2: error: ld returned 1 exit status
make[2]: *** [dbserver/CMakeFiles/dbserver.dir/build.make:3268: bin/dbserver] Error 1
make[1]: *** [CMakeFiles/Makefile2:327: dbserver/CMakeFiles/dbserver.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
[root@localhost Debug]# sudo apt-get install libprotobuf-dev protobuf-compiler
/var/tmp/sclU0puS7: line 8: apt-get: command not found
 
Newbie Spellweaver
Joined
Jun 28, 2008
Messages
9
Reaction score
1
Download my airbag.zip attachment. Then unzip to "/roserver/gameserver/aidebug", and rebuild librogamelibs.a again.
下载airbag.zip附件,解压到"/roserver/gameserver/aidebug", 再重新编译一下librogamelibs.a
Hi, i wondering you make server on vps or just vmware/vbox?

Cause i tried linking config folder still stuck on char select role
Everything looks fine, compiling also correct.
But when i tried to select char, it stucked.

大概就是登入跟gate看似都沒問題 但在選角後就沒有封包回應了
這有方法解嗎 還是你都是純本地端測試

同樣的配置下進入pre韓服測試都是正常的
 
Newbie Spellweaver
Joined
Apr 5, 2024
Messages
34
Reaction score
19
Hi, i wondering you make server on vps or just vmware/vbox?

Cause i tried linking config folder still stuck on char select role
Everything looks fine, compiling also correct.
But when i tried to select char, it stucked.

大概就是登入跟gate看似都沒問題 但在選角後就沒有封包回應了
這有方法解嗎 還是你都是純本地端測試

同樣的配置下進入pre韓服測試都是正常的
I make it on my own physical server. Have you changed the redis ip and password in /roserver/exe/gsconf/serveronly/game_redis_conf.json? Also check if redis works properly, you should be able to see one record in the redis after you enter character selection screen
 
Last edited:
Newbie Spellweaver
Joined
Sep 1, 2022
Messages
59
Reaction score
28
Gameserver compilation error, how to solve the problem
/roserver/gameserver/aidebug/ai_debug_event_processer.cpp: In static member function ‘static bool AIDebugEditorListener::OnAIAfterTick(ROGameLibs::AIDebugEvent&)’:
/roserver/gameserver/aidebug/ai_debug_event_processer.cpp:35:17: error: ‘class ROGameLibs::SharedData’ has no member named ‘SerializeToPb’
35 | shared_data.SerializeToPb(resp.mutable_shared_data());
|
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Apr 5, 2024
Messages
34
Reaction score
19
Gameserver compilation error, how to solve the problem
/roserver/gameserver/aidebug/ai_debug_event_processer.cpp: In static member function ‘static bool AIDebugEditorListener::OnAIAfterTick(ROGameLibs::AIDebugEvent&)’:
/roserver/gameserver/aidebug/ai_debug_event_processer.cpp:35:17: error: ‘class ROGameLibs::SharedData’ has no member named ‘SerializeToPb’
35 | shared_data.SerializeToPb(resp.mutable_shared_data());
|
Comment out those 2 lines, I think those files are only for debug purposes, should be OK to do that.
QQ20240420091812 - Source Code Ragnarok Origin[Full] - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Sep 1, 2022
Messages
59
Reaction score
28
Comment out those 2 lines, I think those files are only for debug purposes, should be OK to do that.
View attachment 259888
感谢回复编译其他server出现链接器报错
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: CMakeFiles/gateserver.dir/network/protocolcoder.cpp.o: in function `CProtocolCoder::Encode(char const*, unsigned int, DataBlob&, unsigned int, unsigned int&)':
/roserver/gateserver/network/protocolcoder.cpp:42: undefined reference to `ZlibTool::Compress2(char const*, int, int)'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/gateserver] 错误 1
make[1]: *** [gateserver/CMakeFiles/gateserver.dir/all] 错误 2
make: *** [all] 错误 2
这应该如何解决呢

Comment out those 2 lines, I think those files are only for debug purposes, should be OK to do that.
View attachment 259888
我已经尝试注释掉这三行,编译没报错了但是最后生成的时候报一大堆链接错误
 
Newbie Spellweaver
Joined
Apr 5, 2024
Messages
34
Reaction score
19
感谢回复编译其他server出现链接器报错
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: CMakeFiles/gateserver.dir/network/protocolcoder.cpp.o: in function `CProtocolCoder::Encode(char const*, unsigned int, DataBlob&, unsigned int, unsigned int&)':
/roserver/gateserver/network/protocolcoder.cpp:42: undefined reference to `ZlibTool::Compress2(char const*, int, int)'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/gateserver] 错误 1
make[1]: *** [gateserver/CMakeFiles/gateserver.dir/all] 错误 2
make: *** [all] 错误 2
这应该如何解决呢


我已经尝试注释掉这三行,编译没报错了但是最后生成的时候报一大堆链接错误
I have no idea. I don't think I had this error before.
 
Back
Top