Aqui está a minha proposta de solução para o parser de log do jogo Quake. Tentei fazer em Go conforme combinado, mas não tenho muito conhecimento na linguagem ainda.
Para executar o código você precisa da versão 1.20 da linguagem Go instalada em sua máquina.
Basta clonar o repositório e executar:
go run . quake-games.log
{"game_1":{"total_kills":0,"players":["Isgalamido"],"kills":{},"kills_by_means":null},"game_10":{"total_kills":60,"players":["Oootsimo","Dono","Zeh","Chessus","Mal","Assasinu","Isgalamido"],"kills":{"Assasinu":5,"Chessus":6,"Dono":5,"Isgalamido":10,"Mal":6,"Oootsimo":1,"Zeh":9},"kills_by_means":{"MOD_BFG":2,"MOD_BFG_SPLASH":2,"MOD_CRUSH":1,"MOD_MACHINEGUN":1,"MOD_RAILGUN":7,"MOD_ROCKET":4,"MOD_ROCKET_SPLASH":1,"MOD_TELEFRAG":25,"MOD_TRIGGER_HURT":17}},"game_11":{"total_kills":20,"players":["Dono","Isgalamido","Zeh","Oootsimo","Chessus","Assasinu","Mal"],"kills":{"Dono":1,"Isgalamido":7,"Oootsimo":4},"kills_by_means":{"MOD_BFG_SPLASH":3,"MOD_CRUSH":1,"MOD_MACHINEGUN":1,"MOD_RAILGUN":4,"MOD_ROCKET_SPLASH":4,"MOD_TRIGGER_HURT":7}},"game_12":{"total_kills":160,"players":["Isgalamido","Dono","Zeh","Oootsimo","Chessus","Assasinu","Mal"],"kills":{"Assasinu":23,"Chessus":17,"Dono":11,"Isgalamido":26,"Mal":8,"Oootsimo":22,"Zeh":14},"kills_by_means":{"MOD_BFG":8,"MOD_BFG_SPLASH":8,"MOD_FALLING":2,"MOD_MACHINEGUN":7,"MOD_RAILGUN":38,"MOD_ROCKET":25,"MOD_ROCKET_SPLASH":35,"MOD_TRIGGER_HURT":37}},"game_13":{"total_kills":6,"players":["Isgalamido","Dono","Zeh","Oootsimo","Chessus","Assasinu","Mal"],"kills":{"Oootsimo":2,"Zeh":2},"kills_by_means":{"MOD_BFG":1,"MOD_BFG_SPLASH":1,"MOD_ROCKET":1,"MOD_ROCKET_SPLASH":1,"MOD_TRIGGER_HURT":2}},"game_14":{"total_kills":122,"players":["Isgalamido","Dono","Zeh","Oootsimo","Chessus","Assasinu","Mal"],"kills":{"Assasinu":12,"Chessus":10,"Dono":9,"Isgalamido":25,"Mal":6,"Oootsimo":12,"Zeh":12},"kills_by_means":{"MOD_BFG":5,"MOD_BFG_SPLASH":10,"MOD_FALLING":5,"MOD_MACHINEGUN":4,"MOD_RAILGUN":20,"MOD_ROCKET":23,"MOD_ROCKET_SPLASH":24,"MOD_TRIGGER_HURT":31}},"game_15":{"total_kills":3,"players":["Isgalamido","Assasinu","Dono","Oootsimo","Isgalamido","Assasinu"],"kills":{},"kills_by_means":{"MOD_TRIGGER_HURT":3}},"game_16":{"total_kills":0,"players":["Dono","Oootsimo","Isgalamido","Assasinu","Zeh"],"kills":{},"kills_by_means":null},"game_17":{"total_kills":13,"players":["Dono","Oootsimo","Isgalamido","Assasinu","Zeh","Isgalamido","Mal"],"kills":{"Isgalamido":1,"Oootsimo":2,"Zeh":1},"kills_by_means":{"MOD_FALLING":3,"MOD_RAILGUN":2,"MOD_ROCKET_SPLASH":2,"MOD_TRIGGER_HURT":6}},"game_18":{"total_kills":7,"players":["Isgalamido","Oootsimo","Dono","Assasinu","Zeh","Mal","Isgalamido","Dono"],"kills":{"Assasinu":2,"Isgalamido":1,"Zeh":2},"kills_by_means":{"MOD_FALLING":1,"MOD_ROCKET":1,"MOD_ROCKET_SPLASH":4,"MOD_TRIGGER_HURT":1}},"game_19":{"total_kills":95,"players":["Isgalamido","Oootsimo","Dono","Assasinu","Zeh","Mal"],"kills":{"Assasinu":12,"Dono":15,"Isgalamido":15,"Mal":8,"Oootsimo":11,"Zeh":21},"kills_by_means":{"MOD_FALLING":1,"MOD_MACHINEGUN":7,"MOD_RAILGUN":10,"MOD_ROCKET":27,"MOD_ROCKET_SPLASH":32,"MOD_SHOTGUN":6,"MOD_TRIGGER_HURT":12}},"game_2":{"total_kills":11,"players":["Isgalamido","Isgalamido","Mocinha"],"kills":{"Isgalamido":3},"kills_by_means":{"MOD_FALLING":1,"MOD_ROCKET_SPLASH":3,"MOD_TRIGGER_HURT":7}},"game_20":{"total_kills":3,"players":["Isgalamido","Oootsimo","Dono","Assasinu","Zeh","Mal"],"kills":{"Dono":2,"Oootsimo":1},"kills_by_means":{"MOD_ROCKET":1,"MOD_ROCKET_SPLASH":2}},"game_21":{"total_kills":131,"players":["Isgalamido","Oootsimo","Dono","Assasinu","Zeh","Mal"],"kills":{"Assasinu":22,"Dono":16,"Isgalamido":19,"Mal":12,"Oootsimo":24,"Zeh":21},"kills_by_means":{"MOD_FALLING":3,"MOD_MACHINEGUN":4,"MOD_RAILGUN":9,"MOD_ROCKET":37,"MOD_ROCKET_SPLASH":60,"MOD_SHOTGUN":4,"MOD_TRIGGER_HURT":14}},"game_3":{"total_kills":4,"players":["Dono","Isgalamido","Zeh"],"kills":{"Isgalamido":1},"kills_by_means":{"MOD_FALLING":1,"MOD_ROCKET":1,"MOD_TRIGGER_HURT":2}},"game_4":{"total_kills":105,"players":["Dono","Isgalamido","Zeh","Assasinu"],"kills":{"Assasinu":16,"Dono":20,"Isgalamido":27,"Zeh":22},"kills_by_means":{"MOD_FALLING":11,"MOD_MACHINEGUN":4,"MOD_RAILGUN":8,"MOD_ROCKET":20,"MOD_ROCKET_SPLASH":51,"MOD_SHOTGUN":2,"MOD_TRIGGER_HURT":9}},"game_5":{"total_kills":14,"players":["Zeh","Isgalamido","Zeh","Assasinu","Zeh"],"kills":{"Assasinu":5,"Isgalamido":2,"Zeh":2},"kills_by_means":{"MOD_RAILGUN":1,"MOD_ROCKET":4,"MOD_ROCKET_SPLASH":4,"MOD_TRIGGER_HURT":5}},"game_6":{"total_kills":29,"players":["Oootsimo","Isgalamido","Zeh","Dono","Mal","Assasinu"],"kills":{"Assasinu":1,"Dono":2,"Isgalamido":4,"Mal":1,"Oootsimo":9,"Zeh":8},"kills_by_means":{"MOD_FALLING":1,"MOD_MACHINEGUN":1,"MOD_RAILGUN":2,"MOD_ROCKET":5,"MOD_ROCKET_SPLASH":13,"MOD_SHOTGUN":4,"MOD_TRIGGER_HURT":3}},"game_7":{"total_kills":130,"players":["Oootsimo","Isgalamido","Zeh","Dono","Mal","Assasinu","Chessus"],"kills":{"Assasinu":22,"Dono":14,"Isgalamido":20,"Mal":9,"Oootsimo":24,"Zeh":14},"kills_by_means":{"MOD_FALLING":7,"MOD_MACHINEGUN":9,"MOD_RAILGUN":9,"MOD_ROCKET":29,"MOD_ROCKET_SPLASH":49,"MOD_SHOTGUN":7,"MOD_TRIGGER_HURT":20}},"game_8":{"total_kills":89,"players":["Oootsimo","Isgalamido","Zeh","Dono","Mal","Assasinu"],"kills":{"Assasinu":12,"Dono":5,"Isgalamido":24,"Mal":1,"Oootsimo":17,"Zeh":15},"kills_by_means":{"MOD_FALLING":6,"MOD_MACHINEGUN":4,"MOD_RAILGUN":12,"MOD_ROCKET":18,"MOD_ROCKET_SPLASH":39,"MOD_SHOTGUN":1,"MOD_TRIGGER_HURT":9}},"game_9":{"total_kills":67,"players":["Oootsimo","Dono","Zeh","Chessus","Mal","Assasinu","Dono","Dono","Chessus"],"kills":{"Assasinu":11,"Chessus":12,"Dono":2,"Mal":7,"Oootsimo":9,"Zeh":15},"kills_by_means":{"MOD_FALLING":3,"MOD_MACHINEGUN":3,"MOD_RAILGUN":10,"MOD_ROCKET":17,"MOD_ROCKET_SPLASH":25,"MOD_SHOTGUN":1,"MOD_TRIGGER_HURT":8}}}