Salut à toi jeune entrepreneur,
Si tu veux rendre ton architecture la plus testable possible, il va falloir passer par les principes SOLID. (https://fr.wikipedia.org/wiki/SOLID_%28informatique%29)
Ensuite, on va essayer de segmenter les choses logiques et développer en couche (layers). Sur Dofus, par exemple pour la partie networking on va pouvoir faire ce genre de layers :
- Socket --> Gestion bas niveaux (buffer, IO...)
- Framing --> Gestion plus haut niveau (frames) (une frame c'est juste par exemple le messageId et le payload complet du message)
- Message --> Gestion plus haut niveau, on parle ici des message Dofus
L'objectif est de développer tout via abstraction afin de pouvoir "mocker" (le concept ne doit pas t'être étranger si tu t'intéresses aux TU) chaque partie de la pipeline et tester en isolation chaque composant.
Enfin, tu vas développer ta logique métier juste avec la partie haut-niveau (uniquement via les messsages Dofus) avec un système de handler "basique" qui va trigger des API encore plus haut (API Inventory, Chat..) qui vont s'occuper donc de traduire une action "métier" (parler, lancer un combat) en un ensemble de messages Dofus selon le contexte (état de santé, map, etc.)
L'objectif étant donc de pouvoir tester les API plus haut niveaux sans même-lancer Dofus et ainsi augmenter sa productivité (enfin un test en condition réelle ne fait pas de mal de temps en temps :)) et s'assurer d'un comportement fiable.
De plus, tes composants étant isolés, un changement de protocole (ou du jeu) ne devrait pas ou peu impacter ton code métier, celui qui contient toute la logique et où tu vas passer 90% de ton temps.
Bonne chance !