{"action":"created","issue":{"url":"https://api.github.com/repos/CorsixTH/CorsixTH/issues/1248","repository_url":"https://api.github.com/repos/CorsixTH/CorsixTH","labels_url":"https://api.github.com/repos/CorsixTH/CorsixTH/issues/1248/labels{/name}","comments_url":"https://api.github.com/repos/CorsixTH/CorsixTH/issues/1248/comments","events_url":"https://api.github.com/repos/CorsixTH/CorsixTH/issues/1248/events","html_url":"https://github.com/CorsixTH/CorsixTH/issues/1248","id":258340031,"number":1248,"title":"Incentivize developers and players to squash remaining bugs for fun and profit","user":{"login":"jmealo","id":1066536,"avatar_url":"https://avatars3.githubusercontent.com/u/1066536?v=4","gravatar_id":"","url":"https://api.github.com/users/jmealo","html_url":"https://github.com/jmealo","followers_url":"https://api.github.com/users/jmealo/followers","following_url":"https://api.github.com/users/jmealo/following{/other_user}","gists_url":"https://api.github.com/users/jmealo/gists{/gist_id}","starred_url":"https://api.github.com/users/jmealo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmealo/subscriptions","organizations_url":"https://api.github.com/users/jmealo/orgs","repos_url":"https://api.github.com/users/jmealo/repos","events_url":"https://api.github.com/users/jmealo/events{/privacy}","received_events_url":"https://api.github.com/users/jmealo/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-09-17T22:19:31Z","updated_at":"2017-09-18T02:23:12Z","closed_at":null,"author_association":"NONE","body":"Hello!\r\n\r\nLong time fan looking to see if I can help squash some of the remaining bugs.\r\n\r\nAtlassian support uses an internal tool called Hercules to scan log files attached to issues to provide end users with solutions for solved issues and/or help track duplicate issues.\r\n\r\nI thought maybe we could get some code quality metrics and track the most problematic code structures by checking the commit history and bug traces by creating a harness that can run save files at a given revision in a given environment (this doesn't seem like it'd be difficult given the availability of binary releases). If we can serialize a \"logical input stream\" (stream of game input, state mutations normalized between platforms) and use it with a `git bisect` type tool for isolating the bad state changes and/or logical input that triggers a bug. If you can step through a replay frame by frame and mark when the bug occurs you should be able to do a diff of the in game state or step through with a debugger to find the error.\r\n\r\n**Goals:**\r\n1. Eliminate time spent writing/reading duplicate issues by gamifying/expediting the process\r\n2. Allow developers to load up the exact location of a bug with an automatic break point loaded from stack traces.\r\n3. Allow people to report game breaking bugs by playing with a debug build that allows time traveling debugging \r\n4. Gamify the last of the stubborn bugs by providing a leader board/achievement system awarding players and developers for fixing log standing bugs (with cascading points for fixing bugs that close/address multiple issues). (Existing contributions to date should be on a separate \"All time contributors\" board to encourage/incentivize lurkers who have not contributed yet *cough* *cough*)\r\n5. (_Optional_) Create a campaign/contact the community to create a prize pot/bug bounty program to award developers for fixing the bugs.\r\n\r\n**Inspiration:**\r\nThere's a conference talk (can't find link) on YouTube outlining how they cleaned up Witcher 3's undrawable geometry using some cobbled together internal tooling to ensure correctness. It reminds us that sometimes it's worth it to spend time on tooling when a task is large enough, especially if that time/effort is expertly applied.\r\n\r\n**Can I help?**\r\nI've used Lua/LuaJIT professionally and tinkered on the ESP8266 but I'm no expert, I simply memorized the differences between Lua and JavaScript and learned about FFI and LuaJIT's performance characteristics versus V8. I haven't written over 1,000 lines of Lua in a single project, however, I'm pretty sure I can help setup/spec an end to end solution for all of the goals above MINUS interfacing with the game/tooling, which will be best done (or specced) by someone familiar with the project.\r\n\r\n**Is this a \"bad idea\", unnecessary or otherwise impossible?**\r\nPlease feel free to \"nope\" this without explanation. **I have no idea what tooling you guys have used to get this far, but, kudos to you for all of your hard work!**\r\n\r\n# Please no dying in the corridors."},"comment":{"url":"https://api.github.com/repos/CorsixTH/CorsixTH/issues/comments/330112911","html_url":"https://github.com/CorsixTH/CorsixTH/issues/1248#issuecomment-330112911","issue_url":"https://api.github.com/repos/CorsixTH/CorsixTH/issues/1248","id":330112911,"user":{"login":"TheCycoONE","id":823433,"avatar_url":"https://avatars3.githubusercontent.com/u/823433?v=4","gravatar_id":"","url":"https://api.github.com/users/TheCycoONE","html_url":"https://github.com/TheCycoONE","followers_url":"https://api.github.com/users/TheCycoONE/followers","following_url":"https://api.github.com/users/TheCycoONE/following{/other_user}","gists_url":"https://api.github.com/users/TheCycoONE/gists{/gist_id}","starred_url":"https://api.github.com/users/TheCycoONE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TheCycoONE/subscriptions","organizations_url":"https://api.github.com/users/TheCycoONE/orgs","repos_url":"https://api.github.com/users/TheCycoONE/repos","events_url":"https://api.github.com/users/TheCycoONE/events{/privacy}","received_events_url":"https://api.github.com/users/TheCycoONE/received_events","type":"User","site_admin":false},"created_at":"2017-09-18T02:23:12Z","updated_at":"2017-09-18T02:23:12Z","author_association":"OWNER","body":"That is a sequence of good ideas; and a number of the prerequisites are also needed to get networking going.\r\n\r\nWould you be interested in refactoring input into a command pattern so that it could be recorded and replayed as well as outlining the worst of the determinism issues. At present save games do not lead to deterministic replays even with no further input - I haven't spent much time looking into why."}}
{"actor":{"display_login":"TheCycoONE"}}