TrinityCore as a true MMO framework

Hello community

From years i tought to the motto of trinitycore that said: “TrinityCore is an MMORPG framework…
but it’s never been totally true , on the contrary it’s strictly related to W0W emulation.

So i’ve started recently a project to modularize trinitycore and just reorganizing the wheel.

The aim of this project is the creation of a real framework with which anyone can develop modules to support any kind of MMO game, but also other generic application using the power of trinitycore.

this is a doc. that explains it better:

https://docs.google.com/document/d/1HtlmD-WNqc8kw2ws7xnbWvpUXqqKhmNCz5JIGHjymGw/pub

This kind of structure can be easily integrated into trinitycore project if anyone is interested.
It could be a great re-startup to expand the community to other MMORPG ( for example open source game projects, personal videogames, but also to different wow versions if you want ).

i’m looking for contributors and suggestions about it

Best regards
Yehonal

Update1: Modular structure created.

Update2: First working revision is out! https://github.com/wowengine/game

Update3: Totally restructured repositories

Update4: imported changes from latest trinitycore 3.3.5a revision, this project will be synced with trinitycore changes whenever is possible

Yehonal! Welcome back dude!

I like the idea, I think it could make TrinityCore stronger, expecially for:

modular software is easier to mantain/understand/develop.

Also this will attract new people, the ones who could be interested in different WoW versions or other MMORPG.

I hope this idea will go on.

Regards,

Shin

I also hope that you could succeed but I think that 6 years working only for WoW and ~600K lines of code make it kinda hard to do anything useful with the code base.

My opinion is that a new project would be way easier (but not easy at all) to have the framework that you wish.

Even if you do want to continue with TC, do “baby” steps one by one, i.e, start with the JS engine, that’s pretty interesting as it is for a “standalone” project.

Js engine will be the latest step since my priority is to create a server for a personal MMO client project which i’m working on with a team. So i thought to start from TC. As you can see from the pattern we are just “re-ordering” the weel …not rewriting. All classes related to wow are encapsulated in wow module initially and will extends some basic framework classes ( basic player class, basic creature class etc. ). These can be extended in all modules to implement custom features.

Also “shared” classes ( network, threading etc. ) will be moved under a dynamic/static library and could be used for various purpose. The mainly one is really sharing classes between module binaries without compile it directly in executables.

anyway…encapsulating things speedup the developing process.

Glad to see you have kept this going, sorry I had to drop out, life gets in the way sometimes, and, hopefully, you guys can get this done and integrated.

i’ve created more detailed documentation for this project:

https://docs.google.com/document/d/1HtlmD-WNqc8kw2ws7xnbWvpUXqqKhmNCz5JIGHjymGw/pub

leave a feedback here please

I’ll definitely have a look at what you have drawn up so far…

I am in the process of gutting out TC to use for a game that will end up being similar to ManyWorld (yea, I got that addicted to it). I don’t like how much it lags since it is written in JS/HTML5, so I figured I would take just the pieces and parts I need from TC and make a true client / server implementation.

The biggest bottle neck that I see will be that with WoW all the graphics are client side and with games like ManyWorld, the tiles will have to be sent if the client hasn’t already cached them – that is going to take some bandwidth. I guess that is why even Minecraft only allows low res / low color depth tiles.

– Brian

First working revision is out! https://github.com/worldengine/wowengine-game

ManyWorld? can you link something about it?

I’m also working on a MMO client and this is why i’m doing this job on TC.

First step is completed and a totally work version of w0w-module is out

Really appreciating that work, and hoping one day I’ll have some time to spend in helping that project go on! /emoticons/default_smile.png

UPDATE: imported changes from latest trinitycore 3.3.5a revision, this project will be synced with trinitycore changes whenever is possible

Hi guys, i’m trying to update my wowengine project with latest ~6 months of trinity changes ( I’ve been away for some time ) … so i need some information to adapt wowengine directory structure to trinitycore:

[ol][li]what is the difference between “src/common” and “src/server/shared” folder exactly?[/li][li]Is this the commit related to new directory structure? https://github.com/TrinityCore/TrinityCore/commit/1d2aafd39bcb79a67357d198ce9b2345642fdd39?diff=unified[/li][li]Why collision has been moved to common?[/li][/ol]
Thank you

[ol][li]Common is a library which is used by both: TOOLS and SERVERS, while shared has been kept as a library that only SERVERS should use. (This way, we can build tools without the overhead of shared (and also without MySQL)[/li][li]Yes it is, as pointed in 1, now database is a library by itself.[/li][li]Collision is moved to common because of reasoning 1, it’s used in mapextractors but also used in game, so common = TOOLS + SERVERS[/li][/ol]

Thank you StormByte! Nice Job /emoticons/default_smile.png

About Database lib. Why did you put it outside of shared? isn’t it used by all modules? ( game , worldserver and authserver )

​Mainly, because shared was becomming a huge “monster” being just a bunch of random stuff needed here and there.

But also, because there are some ideas to improve database subsystem, and also to reduce compilation time, as if database things changes, less things are need to be recompiled, while also keeps it simpler in case that MySQL backend classes need to change in a future

By the way, what about including @Yehonal’s changes inside the official repo and make TrinityCore more modularized ?