• This repository has been archived on 30/Jul/2020
  • Stars
    star
    1,124
  • Rank 41,395 (Top 0.9 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created almost 7 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Massgate is the online backend server for the Massive Entertainment game World in Conflict, and is now open-source to make it possible for anyone to host their own Massgate server.

World in Conflict Massgate

Introduction

Massgate is the central server for the Massive Entertainment game World in Conflict that manages the online functionality such as keeping track of dedicated game servers, user accounts, clans, ladders etc. The original game was released in 2007, and the official Massgate server was shutdown in 2016. To make it possible to continue to play World in Conflict online the source code of Massgate is now open source, making it possible for anyone to host their own Massgate server.

The code itself is more or less the same as how the code looked like back when the game is released. Only minor tweaks have been made to make it build on a relative modern compiler and to remove the necessity to manage CD-keys. Not much of the code has survived into later releases done by Massive Entertainment and does not really reflect to code of the company today, apart from the code standard and the general look and feel of the code. As a piece of game development history, and for anyone interested in how online servers were written at the time, it can definitely be a point of interest.

Dependencies

Massgate depends on MySQL, and it was built with MySQL version 4.2.1 which is an ancient version today and is 32bit. Massgate has been briefly tested with a newer version of MySQL, but there are no guarantees that it will work flawlessly.

The game also depends on a web server running to get information about the latest patches for the game. Any web server will do, more details below.

Building Massgate

To build Massgate you need CMake and some version of Visual Studio. At the moment only Visual Studio 2015 has been tested.

Point CMake to the root folder of the source to configure and generate a solution. The solution will end up in the build folder.

Running Massgate

MySQL

In order to run Massgate, you need a MySQL server it can connect to and a database prepared with data and tables. The commands to create them can be found in the SQL file under the share/sql folder.

To set up MySQL on localhost using the command line tool would look something like this:

mysql> create database live;
mysql> use live;
Database changed
mysql> grant all on live.* to 'massgateadmin'@'localhost' identified by 'adminpassword';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on live.* to 'massgateclient'@'localhost' identified by 'clientpassword';
Query OK, 0 rows affected (0.00 sec)

mysql> source share/sql/databasestructure.sql

In order for Massgate to be able to connect to the database, the hosts writedb.massgate.local and readdb.massgate.local need to point to the database. An easy way of achiving that locally in Windows is to edit the Windows hosts file under C:\Windows\System32\drivers\etc\hosts by adding the following lines:

127.0.0.1 writedb.massgate.local
127.0.0.1 readdb.massgate.local

Start Massgate

To start Massgate, you need to run the MMassgateServers.exe found in the build/bin folder with the following arguments:

MMassgateServers.exe live -noboom -all -dbname live -massgateport 3001 -logsql

But before you run the executable, make sure config.ini is present int the working directory of the executable.

If everything is okay you should see something like this in the a console window:

2015-09-08 12:24:13 [2532] [INFO  ]  : Creating 16 handler threads (8 per core,
max 16).
2015-09-08 12:24:13 [2532] [INFO  ]  : Kickstarting server.
2015-09-08 12:24:13 [2532] [INFO  ]  : Server startup sequence OK.

Running a Web Server

World in Conflict needs to connect to a web server in order to get information about patches. Any simple web server that points to the share/www-root folder should work.

An easy way to run a web server is to simply use Python and start a server like this:

cd share\www-root
python -m SimpleHTTPServer 80

Running a Dedicated Game Server

The dedicated game server is called Wic_ds.exe and is included in the distribution of the game. It is installed by Uplay upon download.

To redirect the executable to a locally hosted Massgate server (running Massagate and the database) host names need to be redirected.

In the Windows hosts file under C:\Windows\System32\drivers\etc\hosts add the following lines:

127.0.0.1 liveaccount.massgate.net
127.0.0.1 liveaccountbackup.massgate.net
127.0.0.1 stats.massgate.net
127.0.0.1 www.massgate.net  

In order for the dedicated game server to connect to Massgate, make sure the Wic_ds.ini is set to report to Massgate.

[ReportToMassgate] 
1

Connect With the Game

To make the game connect to Massgate you need to redirect host names on the machine the game is running on as well. In the Windows hosts file under C:\Windows\System32\drivers\etc\hosts add the following lines:

127.0.0.1 liveaccount.massgate.net
127.0.0.1 liveaccountbackup.massgate.net
127.0.0.1 stats.massgate.net
127.0.0.1 www.massgate.net  

Contributing

The code is shared as is. Anyone is free to fork the code and do whathever they want as long as the licences are respected. We will generally not accept pull requests as the source is shared to let the community take over and continue with Massgate.

If there is a major issue with the codebase that should apply to any version of it we will consider such a request.

Suggestions For Possible Improvements

Adding support for more databases, such as Sqllite or PostgreSQL, could ease setup and hosting of Massgate. If you are interested take a look at the MDatabase library.

There is also the possibility to recreate, or make a new modern improved Massgate web portal by using the data found in the database. The original portal (not included in this repo) did just that.

More Repositories

1

mixer

Add-on for real-time collaboration in Blender.
Python
1,316
star
2

ubisoft-laforge-animation-dataset

Ubisoft La Forge - Animation Dataset
Python
954
star
3

Sharpmake

Sharpmake is an open-source C#-based solution for generating project definition files, such as Visual Studio projects and solutions, GNU makefiles, Xcode projects, etc.
C#
910
star
4

ubisoft-laforge-ZeroEGGS

All about ZeroEggs
Python
356
star
5

mobydq

๐Ÿณ Tool to automate data quality checks on data pipelines
Vue
245
star
6

shotmanager

Shot Manager is a Blender add-on that introduces a true shot entity in Blender scenes, as well as a wide and powerful set of tools to build and edit sequences in real-time directly in the 3D context.
Python
197
star
7

ubisoft-laforge-daft-exprt

PyTorch Implementation of Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis
Python
118
star
8

NGitLab

.NET client for GitLab
C#
114
star
9

task-scheduler

TaskScheduler is a set of algorithms working together for asynchronous threaded code execution.
C++
84
star
10

vrtist

Virtual Reality tool for storytelling
C#
60
star
11

vulnmine

Vulnmine searches for vulnerable hosts using MS SCCM host / software inventory data with NIST NVD Vulnerability feed data.
Python
38
star
12

ubisoft-laforge-disentanglement-metrics

Python
32
star
13

ubisoft-laforge-Poisson-Filters

Code for "Compact Poisson Filters for Fast Fluid Simulation", ACM SIGGRAPH 2022 Conference.
HLSL
30
star
14

GitTimeLapseView

GitTimeLapseView is a visual diff tool that adds a timeline to your blame view
C#
29
star
15

videotracks

Video Tracks is a Blender add-on that provides track headers to the channels of the VSE.
Python
27
star
16

ubisoft-laforge-FFHQ-UV-Intrinsics

FFHQ-UV-Intrinstics: A dataset containing intrinsic face decomposition for 10k subjects of FFHQ-UV
26
star
17

stampinfo

Stamp Info is a Blender add-on that ensures the tracking of the rendered images by writing all the meta information directly on them, on specific areas such as their top and bottom.
Python
21
star
18

DirectBehaviorSpecification

Code to reproduce the Arena environment experiments from Direct Behavior Specification via Constrained Reinforcement Learning.
ASP.NET
19
star
19

ubisoft-laforge-asaf

Asaf
Python
16
star
20

ubisoft-laforge-face-editing-face-editing-using-part-based-optimization-of-the-latent-space

Face Editing Using Part-Based Optimization of the Latent Space
Python
14
star
21

assetbank

Blender add-on to manage asset banks and import or link 3D objects into Blender scenes.
Python
10
star
22

SmartNavMapGenerator

C#
9
star
23

ubisoft-laforge-climate-change-dataset

data set with Images extracted in WD2 engine
8
star
24

ubisoft-laforge-predictionperformance

Replication package for the paper: "Performance Prediction From Source Code Is Task and Domain Specific"
Python
7
star
25

usd-lod-schema-proposal

An open discussion to define a schema for Level Of Details in USD
7
star
26

ubisoft-laforge-PredictiveDeadReckoning

code from Predictive Dead Reckoning for Online Peer-to-Peer Games publication
Python
7
star
27

SmartNavEnvironment

C#
6
star
28

quartz-tezos-contracts

Ubisoft Quartz smart contract sources and build tools
JavaScript
5
star
29

ubisoft-laforge-lookat

Roff
4
star
30

ubisoft-laforge-brownbuild

Python
3
star
31

ubisoft-laforge-french-homograph-dataset

Complementary dataset for La Forge Speech Synthesis System for Blizzard Challenge 2023
2
star
32

genesis-contracts

Solidity
2
star
33

ubisoft-laforge-CrashReportPriorizationForLargeScaleScheduledLaunches

supporting material for Crash Report Prioritization for Large-Scale Scheduled Launches
Jupyter Notebook
1
star
34

ubisoft-laforge-toxbuster

Python
1
star
35

Ubisoft-LaForge-ToxPlainerDataSet

Dataset supporting "Unveiling Identity Biases in Toxicity Detection : A Game-Focused Dataset and Reactivity Analysis Approach"
1
star