Simethereal Client Server Network split


#1

Working on severing the simethereal server from the client code into three projects.

What I have now is this.

Headless Server

AccountHostedService
ChatHostedService
GameSessionHostedService
Body
ControlDriver
PhysicsListener
ShipDriver
SimplePhysics
AccountEvent
GameServer
ZoneNetworkSystem

Client

CommandConsoleState
GameSessionState
HelpState
InGameMenuState
MessageState
ModelViewState
PlayerMovementState
SkyState
TimeSequenceState
TimeState
ConnectionState
LoginState
AccountClientService
ChatClientService
GameSessionClientService
GameClient
LogoState
Main
MainGameFunctions
MainMenuState
PlayerMovementFunctions

Networking, i.e shared jar.

AccountSession
AccountSessionListener
ChatSession
ChatSessionListener
GameConstants
GameSession
GameSessionEvent
GameSessionListener

I made it to this point by moving through the code flow from class to class and figuring out what they do so I am not sure if some of the client classes need to be split up into the server project.

This seems to work. I made some necessary changes to get things working and cleaned up client classes some. I run the server as dedicated, run client and log in and everything seems to work but that may be due to the way Paul coded things and blind luck.

Anyone see something obviously wrong?


#2

I used to build my projects this way. I don’t see anything obviously wrong with it.

In the end, I found it easier to develop it all as one unit. The client will depend on the server anyway if you want to allow self-hosted games. But yeah, for my “real” games, I tend to break them up this way.

Note: there was already the bones for running the server headless (it has a main method already)… you’d just be dragging the extra weight along of extra classes in the jars is all.


#3

Great, when things work I start to wonder sometimes.

I cant let the server be part of client. To me that’s what keeps the wolves at bay so to speak.

Client might be good to release though. I hope to add user customization and stuff but sometimes players come up with things that are way better than anything I thought of and occasionally they are sick smart and make things way better.

Not sure for certain on release until I get something worth playing.


#4

Fixed a typo. PR here.


#5

You trade one set of wolves for another (having to run your own servers and guards against the dire wolves).


#6

I named it common.jar in my case, all RMI interfaces and entity components are inside this module.