3.3.5 Emu Server written in C# using modern .NET Technologies and standards. Uses Trinity core Database and AuthServer.
Actively accepts Pull Requests.
When contributing, please enable code cleanup on save. Options > Text Editor > Code Cleanup and select Run Code Cleanup profile on save.
To configure code cleanup to use the editorconfig within the project, go to Analyze > Code Cleanup > Configure Code Cleanup. Under Included Fixers only have “Fix all warnings and errors set in EditorConfig” and “Fix analyzers warning and errors set in EditorConfig enabled.
- .NET 8.0
- OpenTelemetry
- Zipkin and OpenTelemetryProtocol supported
- Entity Framework Core
- Serilog
- JSON configuration
- DBC Database for team focused development
- DBCs are exported from the database with a simple command or configured to be exported on startup
- Instance Servers that are scalable, no need for monolithic servers
- A note on this, all traffic is still routed through the Realm Server so you want the Instance servers to be on the same network as the Realm Server
- Web API for server management, and front end UIs such as Account management, armory or wiki.
- .NET 7.0 installed
- Trinity Core Database: Create
See Command Line Commands for available available commands.
This process is required for entity framework to work with the DBC files. This is a one time process. After all data is manipulated in the database. dbcs can be exported using the realm server command line. Use your existing DBC files from your TrinityCore installation and import them into the database.
- Create a new database in your MySQL server called
dbc
- Use WDBX Editor to run the following command:
NOTE: change the paths to match your environment Quicky convert all dbc files to sql files using a batch file.
cd "C:\WoWData\3.3.5 AC\dbc"
for %%F in (*.dbc) do (
"C:\WoWTools\WDBX.Editor\WDBX Editor.exe" -export -f "C:\WoWData\3.3.5 AC\dbc\%%F" -b 12340 -o "C:\WoWData\3.3.5 AC\sql\%%~nF.sql"
)
- Import the SQL files into your
dbc
database, HeidiSQL is a good tool for this. - Run the following SQL in this order to perpare the dbc database
- https://github.com/ForgedWoW/WrathForgedCore/blob/main/WrathForged.Database/sql/base/dbc/zzzAllowFK.sql - This allows foreign keys to be created by setting fields to allow null. These fields have default 0 or -1 and dont have valid mappings. in SQL with FK, these need to be null.
- https://github.com/ForgedWoW/WrathForgedCore/blob/main/WrathForged.Database/sql/base/dbc/zzzCleanupInvaiMappings.sql - This cleans up invalid mappings, there is invalid mappings and dead data in 3.3.5 dbc files. these are non existing mappings from over versions.
- https://github.com/ForgedWoW/WrathForgedCore/blob/main/WrathForged.Database/sql/base/dbc/zzzUpdateDefaultValues.sql - fields that have foreign keys and have a default value such as 0 or -1, these need to be null to denote to the foreign key that there is no mapping as the value is default.
- https://github.com/ForgedWoW/WrathForgedCore/blob/main/WrathForged.Database/sql/base/dbc/zzzzAlterTables.sql - Sets the FK on the tables.
Impliment the interface IRegisterDependancyInjection
to be passed the DI container, logger and configuraiton. You can also impliment any scripting interface and it will automatically be loaded into the DI container (interfaces with base type of IForgedScript
).
See Scripts for more help NOTE: all scripts have IForgedScript
as the base script and are loaded into the DI container automatically as a singleton. Use IRegisterDependancyInjection
to manually register if you require a different pattern.