07-19-2015, 08:44 PM
So, I've an idea for a partially peer to peer massive multi-player networking solution.
You have 4 components, The Server, The Session, The Session Master, The Peer,
The Peer connects to the The Server, The Server finds The Peer near-by Session's and passes The Peer information to connect to The Session Master, if no Session Master's are near, The Peer becomes their own Session Master. The Session Master echo's information from all Peer's in The Session to all Peer's in The Session (roughly 4 Peers to a session, large groups will contain many Session's and Session Master's) for accuracy and security, Session Master's pass information to The Server in the form of before states, a list of actions and after states, The Server evaluates the potential costs of the actions and if all adds up then new information is stored, if not the Session Master is cycled to another Peer in The Session and The Peers with inaccurate information are tagged. Following a few cycles if The Server notices a specific Peer getting inaccurate results, The Peer will be warned that their actions are being logged, an admin or moderator can later evaluate whether the inaccuracies are suspicious or not.
The key concern I have is The Session Master and how seamlessly The Session Master might switch, if The Session Master times out a new Session Master must be found with accurate enough Session information and quickly, alternatively in the event of a Session Master timing out, I suppose all Peers in The Session could act as Session Masters until The Server appoints a new Session Master, this would make poor Peer connections a concern though.
The reason I was considering this is I'm thinking of how to lower the cost of a server, by spreading its workload out, this isn't intended for super accuracy as you might like in something like PvP or high risk games where a single hit may make all the difference, rather games like Warframe (been enjoying this thoroughly as of late) wherein many actions may make a small difference and now and then a larger action will make the noticeable difference. Its a handy kind of game because priorities become clear and cutting corners can work in the right cases.
You have 4 components, The Server, The Session, The Session Master, The Peer,
The Peer connects to the The Server, The Server finds The Peer near-by Session's and passes The Peer information to connect to The Session Master, if no Session Master's are near, The Peer becomes their own Session Master. The Session Master echo's information from all Peer's in The Session to all Peer's in The Session (roughly 4 Peers to a session, large groups will contain many Session's and Session Master's) for accuracy and security, Session Master's pass information to The Server in the form of before states, a list of actions and after states, The Server evaluates the potential costs of the actions and if all adds up then new information is stored, if not the Session Master is cycled to another Peer in The Session and The Peers with inaccurate information are tagged. Following a few cycles if The Server notices a specific Peer getting inaccurate results, The Peer will be warned that their actions are being logged, an admin or moderator can later evaluate whether the inaccuracies are suspicious or not.
The key concern I have is The Session Master and how seamlessly The Session Master might switch, if The Session Master times out a new Session Master must be found with accurate enough Session information and quickly, alternatively in the event of a Session Master timing out, I suppose all Peers in The Session could act as Session Masters until The Server appoints a new Session Master, this would make poor Peer connections a concern though.
The reason I was considering this is I'm thinking of how to lower the cost of a server, by spreading its workload out, this isn't intended for super accuracy as you might like in something like PvP or high risk games where a single hit may make all the difference, rather games like Warframe (been enjoying this thoroughly as of late) wherein many actions may make a small difference and now and then a larger action will make the noticeable difference. Its a handy kind of game because priorities become clear and cutting corners can work in the right cases.