-
Notifications
You must be signed in to change notification settings - Fork 15
Setting Up The Development Environment
Make sure you have the following dependencies downloaded:
-
Visual Studio 2022 Community Preview found here
-
.NET Desktop Development checked in the Workloads tab.
-
ASP.Net and Web Development checked in the Workloads tab.
-
.NET 8.0 Runtime checked in the Individual Components tab.
-
-
If you are using Linux, VSCode can be installed as an alternative.
- You can find instructions on how to install .NET for Linux here
-
Game & Launcher Executables
-
Any version greater than 2014 is currently supported.
-
If you do not have this, there is a version that has been preserved on the Web Archive.
-
-
Cached Asset Bundles
-
ORIGINALLY located in
AppData\LocalLow\Unity\WebPlayer\Cache
. You will want to move everything out of this folder if files already exist and alert people of it. This is what we rely on to recache files. -
If you do not have this folder, as is likely the case, there is a version that has been preserved on the Web Archive.
-
NB: The Internet Archive is a 501(c)(3) non-profit, building a digital library of Internet sites and other cultural artifacts in digital form. Please see here for more information.
We are not associated with these Web Archive uploads, which have been made independent of this project.
To clone the MQReawakened repository, please click Clone a Repository
inside Visual Studio in the Welcome screen, setting the repository to be a GitHub repository with the URL of https://github.com/FeroxFoxxo/MQReawakened
. Click Open
and it should clone the repository.
To import the DLLs, containing the code for the original game, into MQReawakened, copy all the files from game/[GAME]_Data/Managed
, a folder in the original game directory, into MQReawaken/Server.Reawakened/Dependencies
, a folder in the cloned repository from Visual Studio. If this Dependencies
directory does not exist, create it.
Check to see if you're in the solution by going to the bottom right and clicking "Solution Explorer". Then, look at the bottom of this for a purple icon labeled MQReawaken.sln
. Double-click on this to open the project. Then, press the green "Init" button at the top of Visual Studio to build and run the server.
You may get a message saying if you want to install SSL certificates as part of the IIS. If you do, just press yes.
After this, the server will prompt you with the following, where all files shown are in the MQReawakened\Init\bin\Debug
directory, as this is the default build output:
-
Whether you want to host a server or play on one, in which case whether you want to be put into multi-player or single-player mode. Instructions for joining the multiplayer community server are below, as with how to set up your own. Else, just press 'y' for playing, and 'n' to use single-player mode in the first prompt.
-
User data for your default login, including a chosen
username
,password
,gender
anddate of birth
. This is saved locally inSaves/account.json
andSaves\userinfo.json
. -
Whether you wish to enable protocols that are handled and would otherwise fill the console, including
ss
(sync),Pp
(ping),ku
(clock). Generally, press 'N' unless you are dealing directly with them. You can add/remove these manually using theIgnoreProtocolType
array inConfigs\InternalServerConfig.json
. -
The location of the game's settings.txt file. Generally located in its root directory, though < 2014 may be stored in the
launcher
directory.
- The location of the cached asset bundles. There will be a root
__info
file at the head of your stored cache. If you are using multiple caches, you can combine them by creating a blank__info
file with no file extension in a parent directory containing these. If you do not know how to turn off file extension hiding, please use this article from Adobe.
- Whether the cache should flush on server start. You should press
N
here if you have not run the game before on this computer. If you have used the original game, you should save these caches down - these are what you should use as your stored cache beforementioned, dragged out of this temporary folder. If you have used MQReawakened before, you should not save these, as the purpose of this is to delete the files the server has created itself. This root__info
file, if it exists, should be stored inC:\Users\USER\AppData\LocalLow\Unity\WebPlayer\Cache
. This folder should NOT be your stored cache folder shown above.
- If you choose this option, you should enable flushing on each start of the server, in the next prompt. It will be slower, but ensure that any bugs with asset bundle loading will be able to be fixed.
The server will then detect all the cached assets you have provided and compile a dictionary of them. This commonly takes ~20 minutes, so sit back and have a coffee!
-
To switch to using our server, rather than singleplayer, please run the command 'changeOperationalMode' in the console.
-
You want to press 'Y' for playing the game, 'Y' for connecting to a server, and then the address is
mqreawaken.games
. -
To create an account, once your launcher opens, simply press the
Create a new account
button at the bottom!
All you need to do is publish the project to an executable file by right-clicking the Init project and pressing Publish. I recommend the following settings for installing on a Linux server.
Move all the files in the publish directory shown in the target location above to your own server and install a web server like Nginx. If you do not know how to do this, there is a link here.
Use the following script to create a reverse proxy.
server {
listen 80;
listen [::]:80;
server_name DOMAIN www.DOMAIN;
location / {
client_max_body_size 10m;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_pass http://localhost:8080;
}
}
This file goes into /etc/nginx/sites-avaliable/DOMAIN
. Remember to make a link with it to sudo ln -s /etc/nginx/sites-available/DOMAIN /etc/nginx/sites-enabled/
, and sudo systemctl restart nginx
.
DOMAIN
is the domain name of your website. For example, mqreawaken.games
.
If you are on Linux, you can run the game using ASPNETCORE_URLS=http://0.0.0.0:8080/ ./Init
.
If you want to host it for extended periods of time, you can use a service like TMUX, which may be preinstalled. Simply use tmux
to start a session, Control+B
+ D
to exit it, and tmux attach -t 0
to reattach to that session.
Then, when configuring operational mode, put in the IP Address or domain that is directed at your server. If you choose not to put these in, the server will ping another to find its own external address, however; this may not be correct.
If you are unable to connect to the server externally, please ensure that NGINX is allowed through the firewall, as well as the default port of the server of 8080 (for the website) and 9339 (for the socket TCP server).
Note: the server does not update automatically, so you will have to manually rebuild it, deploy, shut down, and start it on each update. It also does not currently support HTTPS encryption.
Once you have completed this stage, you can log in using the username and password you have prior specified. It is recommended to choose to remember your username and password in the launcher for easier use.
The current asset bundle loading system does not work, and so on running the game it will crash. Before this, you should see a bunch of messages in light blue, of the client attempting to download these assets. When you stop seeing these blue messages, and it all turns purple, close the game. Then, with the game closed, run the replaceCaches
command.
- If this is your first time running
replaceCaches
, you will need to locate the __info file for the caches the game, if not specified in the "Flush Caches" section above. This file is located inC:\Users\USER\AppData\LocalLow\Unity\WebPlayer\Cache
. Please note: do NOT select the stored assets that you used to generate the asset dictionary.
On load of any new asset, you will run into the client requesting these from the server. Such, every time you start to see these messages related to loading in bundled files pop up, followed by a subsequent crash of the client, you must repeat the replaceCaches
process described above.
Each time you are done with the server and wish to close it, please run the shutdown
command, so your progress gets saved to the disk.
- Go into the "Git Changes" tab.
- Press the "pull" button.
If you want to add compatibility for people to access and play on your server via the MQClient application found here, please place any MQServer.unity3d file into the WebPlayers directory found once building the application.
You can also set the default web player to use via the /Config/WebPlayer.json file!
You can find versions of the web player by going to the web archive and filtering by *.unity3d
.
Note, depending on where you get your client from, it may come pre-patched. If you are using the original MQ client, it won't be, so feel free to follow these steps!
If the game encounters a crash, it will fire a log to the original servers. As such, you'll have to manually edit these to send them to your server. The strings are in Configuration.WebsiteRootUrl, DebugToolsManager.LogError and DebugToolsManager.LogFatalError, as shown below, using a program like DNSpy. These are found in the game/[GAME]_Data/Managed/Assembly-CSharp.dll
file.
Simply, Configuration.WebsiteRootUrl must be set to use localhost and the URLs for DebugToolsManager.LogError and DebugToolsManager.LogFatalError must not have a /
before them.
You can then save the DLL file back to the same place it was originally.
Use DNSpy, as shown above, to replace the following fields shown in pink with "localhost".
You may also want to rewrite the following to return true in the UnityEngine class, by removing 'extern' and setting it to equal => true;
.
- Setting up the development environment
- Getting started with dependency injection
- Creating your first pull request
- Troubleshooting
- Creating An Issue
- Init Data
- Sync Events
- Console Commands
- Timers
- XMLs
- Web