swg-docker
This project sets up a development environment for SWG using Docker.
Instructions:
- Clone this repository.
- (Optional) To use a custom git repository or database credentials, create a file named
.envin this directory. See the "Custom Configuration" section below for details. - Run
docker compose up -d --buildto build the images and start the services. This may take a long time on the first run. - Run
docker exec -it swg bashto get a shell inside theswgcontainer. - Run
ant swgto compile the game and assets. This is a one-time step that can take over an hour. You only need to re-run it if you destroy the Docker volumes. - Run
ant start &to start the server. - Run
ant stopto stop the server.
Connecting Your Client
To connect your client, open the login.cfg file in your client directory and ensure the settings match the following. The server address should be 127.0.0.1 if the client is on the same machine as the Docker container.
[Station]
subscriptionFeatures=1
gameFeatures=65535
[ClientGame]
loginServerPort0=44453
loginServerAddress0=127.0.0.1
Custom SWG Repository
You can configure the Docker build to pull the swg-main source from your own repository. Create a file named .env in the root of this project and add the following variables as needed.
Example .env file:
# .env file for custom repository configuration
# The full HTTPS URL to your git repository.
# If left unset, it defaults to https://github.com/SWG-Source/swg-main.git
REPO_URL=https://github.com/SWG-Source/swg-main.git
# (Optional) Credentials for private repositories.
# For security, it is highly recommended to use a Personal Access Token instead of your actual password.
# If you do not need a username or password then ignore adding these lines.
REPO_USERNAME=your-gitlab-username
REPO_PASSWORD=your-personal-access-token
# (Optional) Credentials for the oracle DB user/pass, otherwise DO NOT add these 2 lines.
DB_USER=swg
DB_USER_PASSWORD=swg
Fixing Oracle DB User
docker exec -it oracle bash
sqlplus / as sysdba
ALTER SESSION SET CONTAINER = FREEPDB1;
CREATE USER swg IDENTIFIED BY "swg";
GRANT dba TO swg;
exit
exit
DEVELOPER GUIDE
Here are some commands that will help with development. Say you need to move files to the TRE and they compiled within the container, you can easily copy files to your local file system.
First, exit the container with exit then:
docker cp <container_name>:<path_inside_container> <local_path>
For example, this command will copy the buff.iff file to a local directory called ServerFiles on the Desktop of my
Window's machine. NOTE: For Windows, surround the <local_path> with quotes.
docker cp swg:/swg-main/data/sku.0/sys.shared/compiled/game/datatables/buff/buff.iff "C:\Users\username\OneDrive\Desktop\ServerFiles"