{"action":"created","issue":{"url":"https://api.github.com/repos/SFTtech/openage/issues/530","repository_url":"https://api.github.com/repos/SFTtech/openage","labels_url":"https://api.github.com/repos/SFTtech/openage/issues/530/labels{/name}","comments_url":"https://api.github.com/repos/SFTtech/openage/issues/530/comments","events_url":"https://api.github.com/repos/SFTtech/openage/issues/530/events","html_url":"https://github.com/SFTtech/openage/issues/530","id":142115799,"number":530,"title":"Network communication design","user":{"login":"TheJJ","id":673543,"avatar_url":"https://avatars.githubusercontent.com/u/673543?v=3","gravatar_id":"","url":"https://api.github.com/users/TheJJ","html_url":"https://github.com/TheJJ","followers_url":"https://api.github.com/users/TheJJ/followers","following_url":"https://api.github.com/users/TheJJ/following{/other_user}","gists_url":"https://api.github.com/users/TheJJ/gists{/gist_id}","starred_url":"https://api.github.com/users/TheJJ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TheJJ/subscriptions","organizations_url":"https://api.github.com/users/TheJJ/orgs","repos_url":"https://api.github.com/users/TheJJ/repos","events_url":"https://api.github.com/users/TheJJ/events{/privacy}","received_events_url":"https://api.github.com/users/TheJJ/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/SFTtech/openage/labels/in%20progress","name":"in progress","color":"ededed"},{"url":"https://api.github.com/repos/SFTtech/openage/labels/network","name":"network","color":"f0da44"},{"url":"https://api.github.com/repos/SFTtech/openage/labels/proposal","name":"proposal","color":"6445d9"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2016-03-20T00:47:16Z","updated_at":"2016-09-16T21:05:26Z","closed_at":null,"body":"tl;wr: the server does all calculations, clients only render the state they received. state is transmitted by keyframes at \"predicted\" end points.\r\n\r\nThe design is pretty much like on would do it for a FPS.\r\n[The basic idea is this](https://blog.forrestthewoods.com/the-tech-of-planetary-annihilation-chronocam-292e3d6b169a): The server sends a packet which updates the \"target\" state of the future for clients. They interpolate the received movement/update/... functions and try reaching the target state all the time.\r\n\r\n```\r\ntl;wr: the server does all calculations, clients only render the state they received. state is transmitted by keyframes at \"predicted\" end points.\r\n\r\n\r\nserver\r\n------\r\n\r\n* central trust instance for the game state.\r\n* does all the calculations based on input events.\r\n* create and distribute keyframes for all clients\r\n\r\n\r\nclients\r\n-------\r\n\r\n* receive keyframes\r\n* calculate world state for current time by interpolating keyframes\r\n* display world state and fancy animations et\r\n* send actions to server (timestamp is probably a bad idea)\r\n```\r\n\r\n\r\nWIP stuff:\r\nhttps://pad.stusta.mhn.de/p/openage-communication\r\n\r\n<bountysource-plugin>\r\n---\r\nWant to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/32064374-network-communication-design?utm_campaign=plugin&utm_content=tracker%2F371436&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F371436&utm_medium=issues&utm_source=github).\r\n</bountysource-plugin>"},"comment":{"url":"https://api.github.com/repos/SFTtech/openage/issues/comments/247708934","html_url":"https://github.com/SFTtech/openage/issues/530#issuecomment-247708934","issue_url":"https://api.github.com/repos/SFTtech/openage/issues/530","id":247708934,"user":{"login":"ChipmunkV","id":5393579,"avatar_url":"https://avatars.githubusercontent.com/u/5393579?v=3","gravatar_id":"","url":"https://api.github.com/users/ChipmunkV","html_url":"https://github.com/ChipmunkV","followers_url":"https://api.github.com/users/ChipmunkV/followers","following_url":"https://api.github.com/users/ChipmunkV/following{/other_user}","gists_url":"https://api.github.com/users/ChipmunkV/gists{/gist_id}","starred_url":"https://api.github.com/users/ChipmunkV/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ChipmunkV/subscriptions","organizations_url":"https://api.github.com/users/ChipmunkV/orgs","repos_url":"https://api.github.com/users/ChipmunkV/repos","events_url":"https://api.github.com/users/ChipmunkV/events{/privacy}","received_events_url":"https://api.github.com/users/ChipmunkV/received_events","type":"User","site_admin":false},"created_at":"2016-09-16T21:05:26Z","updated_at":"2016-09-16T21:05:26Z","body":"> * I know you guys, you will try to roll your own.\r\n\r\nThere is one already. I was like \"wtf, these uint64_t values are making no sense when I'm printing them!\"."}}
{"actor":{"display_login":"ChipmunkV"}}