{"action":"created","issue":{"url":"https://api.github.com/repos/thelinuxlich/artemis_CSharp/issues/93","labels_url":"https://api.github.com/repos/thelinuxlich/artemis_CSharp/issues/93/labels{/name}","comments_url":"https://api.github.com/repos/thelinuxlich/artemis_CSharp/issues/93/comments","events_url":"https://api.github.com/repos/thelinuxlich/artemis_CSharp/issues/93/events","html_url":"https://github.com/thelinuxlich/artemis_CSharp/issues/93","id":121936549,"number":93,"title":"More than 64 processors","user":{"login":"KellanHiggins","id":5897704,"avatar_url":"https://avatars.githubusercontent.com/u/5897704?v=3","gravatar_id":"","url":"https://api.github.com/users/KellanHiggins","html_url":"https://github.com/KellanHiggins","followers_url":"https://api.github.com/users/KellanHiggins/followers","following_url":"https://api.github.com/users/KellanHiggins/following{/other_user}","gists_url":"https://api.github.com/users/KellanHiggins/gists{/gist_id}","starred_url":"https://api.github.com/users/KellanHiggins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KellanHiggins/subscriptions","organizations_url":"https://api.github.com/users/KellanHiggins/orgs","repos_url":"https://api.github.com/users/KellanHiggins/repos","events_url":"https://api.github.com/users/KellanHiggins/events{/privacy}","received_events_url":"https://api.github.com/users/KellanHiggins/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-12-13T18:54:17Z","updated_at":"2015-12-16T13:35:46Z","closed_at":null,"body":"I have more than 64 processors in my game and I discovered a bug where the flags aren't set up correctly for the bit system manager.\r\n\r\nSuper easy fix though. In SystemBitManager.cs you need a replacement of\r\n\r\n```\r\nbit = 1L << this.position;\r\n```\r\nwith \r\n```\r\nbit = BigInteger.One << this.position;\r\n```\r\n\r\nin the else statement. I guess no one has built a game with so many processors yet?\r\n\r\n1L (1 64int) was looping over after it was shifted 64 bits. With the fix, we are using the as-large-as-needed integer to set the correct flag.\r\n\r\nMy branch requires me to add something to IComponent, so I can't make a pull request. Can someone else make this change?"},"comment":{"url":"https://api.github.com/repos/thelinuxlich/artemis_CSharp/issues/comments/165107651","html_url":"https://github.com/thelinuxlich/artemis_CSharp/issues/93#issuecomment-165107651","issue_url":"https://api.github.com/repos/thelinuxlich/artemis_CSharp/issues/93","id":165107651,"user":{"login":"GrafSeismo","id":3650091,"avatar_url":"https://avatars.githubusercontent.com/u/3650091?v=3","gravatar_id":"","url":"https://api.github.com/users/GrafSeismo","html_url":"https://github.com/GrafSeismo","followers_url":"https://api.github.com/users/GrafSeismo/followers","following_url":"https://api.github.com/users/GrafSeismo/following{/other_user}","gists_url":"https://api.github.com/users/GrafSeismo/gists{/gist_id}","starred_url":"https://api.github.com/users/GrafSeismo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GrafSeismo/subscriptions","organizations_url":"https://api.github.com/users/GrafSeismo/orgs","repos_url":"https://api.github.com/users/GrafSeismo/repos","events_url":"https://api.github.com/users/GrafSeismo/events{/privacy}","received_events_url":"https://api.github.com/users/GrafSeismo/received_events","type":"User","site_admin":false},"created_at":"2015-12-16T13:35:46Z","updated_at":"2015-12-16T13:35:46Z","body":"I am sorry but may i do not get the point with, \"where this code would be inserted would be used only for larger than 64 flags\". You are talking about your solution?\r\n\r\nI myself wondering about the huge amount of Systems. I do not use a System for each Component, but Systems that handle more than one Component. Maybe you can help your self a bit with using Aspects and/or reducing the amout of Systems by combining the use of Components? For e.g. If you have two Components and two related Systems that are always used together for specific Entities you can combine at least the two Systems to one System and this would economize the overhead for Systems management.\r\n\r\nOn the other hand why should we limit our self by the number of Systems which have a big overhead and slow down the overall performance on XNA supported platforms. There came other aspects like parallel processed systems on multi cores. This smells like we have to think about a redesign of several aspects or the whole framework...\r\n\r\nI am an autodidact in programming and i do not know the tricks from the college-man to solve this quick, but i always ask myself whether i do it right and try to learn from my errors. Our error was that we could not suggest that 64 possible Systems could become a real bottleneck. At this point we have to think about a quick reference for unlimited amout of Entities, Components and Systems without the limitations of smaller computers or tiny memory. Maybe we can pull out much more when we build up a new Entity System Framework based on WinRT / UWP without the support of dead solutions like XNA (/ C#). Maybe Unity5 supports more than 64 Systems? That this artimes framework is available for Unity5 is a bit strange to me due to the fact that Unity5 is already based on ES principles."}}