mirror of
https://github.com/riperiperi/FreeSO.git
synced 2025-01-22 07:32:14 -05:00
Update sample config, add initial setup doc
This commit is contained in:
parent
22733b9bf0
commit
289a12caa0
2 changed files with 176 additions and 85 deletions
57
Documentation/Initial Setup.md
Normal file
57
Documentation/Initial Setup.md
Normal file
|
@ -0,0 +1,57 @@
|
|||
# Initial Setup
|
||||
|
||||
Setting up the FreeSO server is very similar to setting up the FreeSO client, to a point. You need the following to run it at all:
|
||||
|
||||
- .NET Core 2.2.207
|
||||
- A compiled `FSO.Server.Core`.
|
||||
- A copy of The Sims Online, in a folder specified by `gameLocation` in `config.json`.
|
||||
- An "nfs" directory where you want the server to store lot and object saves.
|
||||
- Create and fill out `config.json`.
|
||||
|
||||
## .NET Core 2.2
|
||||
|
||||
You can find installers for Windows and instructions for Linux here:
|
||||
|
||||
https://dotnet.microsoft.com/en-us/download/dotnet/2.2
|
||||
|
||||
FreeSO is built with .NET Framework 4.5, but the server runs on .NET Core 2.2 for improved compatibility with Linux and to use the new ASP.NET backend.
|
||||
|
||||
## FSO.Server.Core
|
||||
|
||||
The FreeSO code should work on all platforms, assuming that you have dotnet core sdk installed. You can find the latest builds of the official repository using these cloudflare handlers. Eventually, these will move to a GitHub release.
|
||||
|
||||
### Client
|
||||
|
||||
https://fso-builds.riperiperi.workers.dev/
|
||||
|
||||
### Server
|
||||
|
||||
https://fso-builds.riperiperi.workers.dev/?mode=server
|
||||
|
||||
### Custom Build
|
||||
|
||||
If you wish to make code changes to the client or the server, see the Building FreeSO documentation.
|
||||
|
||||
## The Sims Online
|
||||
|
||||
FreeSO requires The Sims Online `1.1097.1.0`, which can be downloaded from here: https://archive.org/details/TheSimsOnline_2002
|
||||
|
||||
There's also another version floating around with identifier `1.1239.1.0`. If you try to use this version with the FreeSO client, it will be able to patch it to be the same as the old version through a delta patch. You can then use this patched version on the server.
|
||||
|
||||
## config.json
|
||||
|
||||
With everything now in place, you need to initialize your `config.json` file. Here's a handy guide:
|
||||
|
||||
1. Copy `config.sample.json` to `config.json`.
|
||||
2. Change `gameLocation` to a relative path to your TSO install. This folder contains the folder `TSOClient`, so if `./game/TSOClient/` exists, then you should put `./game` in this field.
|
||||
3. Change `simNFS` to a relative path to a folder where you want to store lot and object saves, as well as lot thumbnails. If you have a distributed server setup, this should be on a network drive.
|
||||
4. Change the secret to something unique. If you don't do this, other people will be able to impersonate your city/lot servers and cause havoc.
|
||||
- This should be a random 64 character hex string. I'm sure you can find a generator.
|
||||
5. Configure database (see Database Manipulation)
|
||||
- The most important thing is setting your connection string to match your database setup.
|
||||
6. Configure servers (see Server Configuration)
|
||||
- The most important thing is changing the `public_host` fields for everything _except_ the task server to match your server's public IP. (the endpoint through which game clients will connect to your server)
|
||||
|
||||
That should be the long and short of it. After this, your server can be started with the dotnet command:
|
||||
|
||||
`dotnet exec FSO.Server.Core.dll`
|
|
@ -1,105 +1,139 @@
|
|||
{
|
||||
"gameLocation": "C:\\Program Files\\Maxis\\The Sims Online\\TSOClient\\",
|
||||
"gameLocation": "./game/",
|
||||
"secret": "38F7E3B816EF9F31BFAB8F4C9716C90D106BD85E9D6913FBB4D833C866F837B0",
|
||||
"simNFS": "C:\\Files\\Temp\\fso",
|
||||
"simNFS": "./nfs",
|
||||
|
||||
"database": {
|
||||
"connectionString": "server=127.0.0.1;uid=root;pwd=;database=fso2;"
|
||||
"connectionString": "server=127.0.0.1;uid=fsoserver;pwd=password;database=fso;"
|
||||
},
|
||||
|
||||
"services": {
|
||||
"tasks":{
|
||||
"enabled": true,
|
||||
"call_sign": "callisto",
|
||||
"binding": "0.0.0.0:35100",
|
||||
"internal_host": "127.0.0.1:35",
|
||||
"public_host": "127.0.0.1:35",
|
||||
"certificate": "auth.east.ea.com.pfx",
|
||||
|
||||
"schedule":[
|
||||
{
|
||||
"cron":"0 3 * * *",
|
||||
"task":"prune_database",
|
||||
"timeout":3600,
|
||||
"parameter":{
|
||||
}
|
||||
},
|
||||
{
|
||||
"cron":"0 4 * * *",
|
||||
"task":"bonus",
|
||||
"timeout":3600,
|
||||
"shard_id": 1,
|
||||
"parameter":{
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"tuning":{
|
||||
"bonus":{
|
||||
"property_bonus":{
|
||||
"per_unit": 10,
|
||||
"overrides":{
|
||||
"1": 1500,
|
||||
"2": 1250,
|
||||
"3": 1000
|
||||
}
|
||||
},
|
||||
"visitor_bonus":{
|
||||
"per_unit": 8
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"api": {
|
||||
"tasks": {
|
||||
"enabled": true,
|
||||
"bindings": [ "https://auth.east.ea.com:443/", "http://localhost:80/" ],
|
||||
"controllers": [ "auth", "citySelector" ]
|
||||
"call_sign": "callisto",
|
||||
"binding": "0.0.0.0:35100",
|
||||
"internal_host": "127.0.0.1:35",
|
||||
"public_host": "127.0.0.1:35",
|
||||
// "certificate": "auth.east.ea.com.pfx",
|
||||
"schedule": [
|
||||
{
|
||||
"cron": "0 3 * * *",
|
||||
"task": "prune_database",
|
||||
"timeout": 3600,
|
||||
"parameter": {}
|
||||
},
|
||||
{
|
||||
"cron": "0 4 * * *",
|
||||
"task": "bonus",
|
||||
"timeout": 3600,
|
||||
"shard_id": 1,
|
||||
"parameter": {}
|
||||
},
|
||||
{
|
||||
"cron": "0 4 * * *",
|
||||
"task": "job_balance",
|
||||
"timeout": 3600,
|
||||
"parameter": {}
|
||||
},
|
||||
{
|
||||
"cron": "0 9 * * *",
|
||||
"task": "shutdown",
|
||||
"timeout": 3600,
|
||||
"parameter": {}
|
||||
},
|
||||
{
|
||||
"cron": "0 0 * * *",
|
||||
"task": "neighborhood_tick",
|
||||
"timeout": 3600,
|
||||
"run_if_missed": true,
|
||||
"parameter": {}
|
||||
},
|
||||
{
|
||||
"cron": "0 0 * * *",
|
||||
"task": "birthday_gift",
|
||||
"timeout": 3600,
|
||||
"run_if_missed": true,
|
||||
"parameter": {}
|
||||
}
|
||||
],
|
||||
"tuning": {
|
||||
"bonus": {
|
||||
"property_bonus": {
|
||||
"per_unit": 10,
|
||||
"overrides": {
|
||||
"1": 1500,
|
||||
"2": 1250,
|
||||
"3": 1000
|
||||
}
|
||||
},
|
||||
"visitor_bonus": {
|
||||
"per_unit": 8
|
||||
}
|
||||
},
|
||||
"birthdayGift": {
|
||||
"items": [
|
||||
{
|
||||
"age": 1000,
|
||||
"guid": 1303919565,
|
||||
"mail_subject": "1000 Days!",
|
||||
"mail_message": "This is an example gift that shows how birthday gifts can be awarded by the server at different milestones - this one is for 1000 days. Please change this message. Or leave it the same, I don't mind.\n - Rhys",
|
||||
"mail_sender_name": "FreeSO Developers"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"userApi": {
|
||||
"enabled": true,
|
||||
"bindings": [ "http://localhost:9000/" ],
|
||||
"controllers": [ "auth", "citySelector" ],
|
||||
"updateUrl": "http://some-url"
|
||||
"bindings": [
|
||||
"http://+:9000/"
|
||||
],
|
||||
"controllers": [
|
||||
"auth",
|
||||
"citySelector"
|
||||
],
|
||||
// "cdnUrl": "http://0.0.0.0:9000",
|
||||
"regkey": "simpleKeyForRegistrationChangeMe",
|
||||
"maintainance": false
|
||||
},
|
||||
|
||||
"cities": [
|
||||
{
|
||||
"call_sign": "ganymede",
|
||||
"call_sign": "ganymede",
|
||||
"id": 1,
|
||||
"binding": "0.0.0.0:33100",
|
||||
"internal_host": "127.0.0.1:33",
|
||||
"public_host": "127.0.0.1:33",
|
||||
|
||||
"certificate": "auth.east.ea.com.pfx",
|
||||
|
||||
"maintenance":{
|
||||
"cron":"0 4 * * *",
|
||||
"timeout":3600,
|
||||
"visits_retention_period":7,
|
||||
"top100_average_period": 4
|
||||
}
|
||||
"internal_host": "127.0.0.1:33",
|
||||
"public_host": "0.0.0.0:33",
|
||||
// "certificate": "auth.east.ea.com.pfx",
|
||||
"neighborhoods": {
|
||||
"mayor_elegibility_limit": 4,
|
||||
"mayor_elegibility_falloff": 4,
|
||||
"min_nominations": 2,
|
||||
"election_week_align": true,
|
||||
"election_move_penalty": 14
|
||||
},
|
||||
"maintenance": {
|
||||
"cron": "0 4 * * *",
|
||||
"timeout": 3600,
|
||||
"visits_retention_period": 7,
|
||||
"top100_average_period": 4
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"lots": [
|
||||
{
|
||||
"call_sign": "europa",
|
||||
"binding": "0.0.0.0:34100",
|
||||
"internal_host": "127.0.0.1:34",
|
||||
"public_host": "127.0.0.1:34",
|
||||
"certificate": "auth.east.ea.com.pfx",
|
||||
|
||||
"max_lots": 5,
|
||||
|
||||
"cities": [
|
||||
{
|
||||
"id": 1,
|
||||
"host":"127.0.0.1:33100"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
"lots": [
|
||||
{
|
||||
"call_sign": "europa",
|
||||
"binding": "0.0.0.0:34100",
|
||||
"internal_host": "127.0.0.1:34",
|
||||
"public_host": "0.0.0.0:34",
|
||||
// "certificate": "auth.east.ea.com.pfx",
|
||||
"max_lots": 25,
|
||||
"cities": [
|
||||
{
|
||||
"id": 1,
|
||||
"host": "127.0.0.1:33100"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue