I'm thinking about developing a scalable real-time online multiplayer game. it would be an online 2D battle game. I'm an experienced software developer but this is my first experience in game development. After doing some research on the internet I found the following architecture for my online game:
Game Core: Using Python or C# to build the game logic including the environment, objects, movements, etc. it would be a server-side game. It means that every event would be handled and controlled by the server and users just send their inputs to move around and act (e.g. moving, shooting, ...)
Web Service: There would be a database to store players' information and a web service (using WebSocket) to authenticate users, interact with them, and stream the data. Players send their requests to this web service, then the requests will be sent to the Game Core using a local network socket.
Unity: We will use Unity to render the game on the client side.
The problem is the Game Core, I don't call it a Game Engine because it will not have any graphics on the server side, it's just the game logic. I tried to write a few lines of code for the Game Core, but it doesn't seem right, because I'm creating everything from scratch including player movements, gravity, etc. it's like reinventing the wheel.
How should I approach this server-side development to maximize development speed and minimize duplicated effort?