{"action":"created","issue":{"url":"https://api.github.com/repos/otland/forgottenserver/issues/994","labels_url":"https://api.github.com/repos/otland/forgottenserver/issues/994/labels{/name}","comments_url":"https://api.github.com/repos/otland/forgottenserver/issues/994/comments","events_url":"https://api.github.com/repos/otland/forgottenserver/issues/994/events","html_url":"https://github.com/otland/forgottenserver/pull/994","id":43351260,"number":994,"title":"Casting system","user":{"login":"djarek","id":6125067,"avatar_url":"https://avatars.githubusercontent.com/u/6125067?v=3","gravatar_id":"","url":"https://api.github.com/users/djarek","html_url":"https://github.com/djarek","followers_url":"https://api.github.com/users/djarek/followers","following_url":"https://api.github.com/users/djarek/following{/other_user}","gists_url":"https://api.github.com/users/djarek/gists{/gist_id}","starred_url":"https://api.github.com/users/djarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djarek/subscriptions","organizations_url":"https://api.github.com/users/djarek/orgs","repos_url":"https://api.github.com/users/djarek/repos","events_url":"https://api.github.com/users/djarek/events{/privacy}","received_events_url":"https://api.github.com/users/djarek/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":141,"created_at":"2014-09-22T01:11:45Z","updated_at":"2015-08-12T22:24:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/otland/forgottenserver/pulls/994","html_url":"https://github.com/otland/forgottenserver/pull/994","diff_url":"https://github.com/otland/forgottenserver/pull/994.diff","patch_url":"https://github.com/otland/forgottenserver/pull/994.patch"},"body":"Closes #984\r\n\r\n As for the internal details: broadcasting is done by the ASI/O thread. The dispatcher thread does only one additional copy (it is required, as the ASI/O thread receives the message object with it's content already encrypted) which is then used for broadcasting. All variables relevant to the casting system have been placed in the ProtocolGame class. The ProtocolSpectator class represents a subset of the game protocol used to directly communicate with the spectator's client. The rest of the protocol is broadcast from the caster's ProtocolGame. \r\n\r\nStarting a cast is achieved by using the !cast [password] talkaction. Stopping it is done by using !stopcast. Joining a stream as a spectator is achieved by logging in with an empty account name and a password, assuming the caster set one. \r\n\r\nIf something isn't clear, feel free to ask. I'm open to suggestions if you think there's something that could be improved (probably there is)."},"comment":{"url":"https://api.github.com/repos/otland/forgottenserver/issues/comments/130465463","html_url":"https://github.com/otland/forgottenserver/pull/994#issuecomment-130465463","issue_url":"https://api.github.com/repos/otland/forgottenserver/issues/994","id":130465463,"user":{"login":"djarek","id":6125067,"avatar_url":"https://avatars.githubusercontent.com/u/6125067?v=3","gravatar_id":"","url":"https://api.github.com/users/djarek","html_url":"https://github.com/djarek","followers_url":"https://api.github.com/users/djarek/followers","following_url":"https://api.github.com/users/djarek/following{/other_user}","gists_url":"https://api.github.com/users/djarek/gists{/gist_id}","starred_url":"https://api.github.com/users/djarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djarek/subscriptions","organizations_url":"https://api.github.com/users/djarek/orgs","repos_url":"https://api.github.com/users/djarek/repos","events_url":"https://api.github.com/users/djarek/events{/privacy}","received_events_url":"https://api.github.com/users/djarek/received_events","type":"User","site_admin":false},"created_at":"2015-08-12T22:24:28Z","updated_at":"2015-08-12T22:24:28Z","body":"I know a guy who knows a guy that knows an another guy...\r\nShow me the data or send him to me. Otherwise I'm just calling this BS rumours. Oh and BTW. v1.2 introduced two potentially performance-critical constants in outputmessage.cpp. The defaults are sane, but might require profiling and tweaking for larger servers (with 400 players it is possible to exhaust the output message pool, especially with the casting system used)."}}