{"id":15395095,"url":"https://github.com/goto-bus-stop/recanalyst","last_synced_at":"2025-04-11T04:50:20.796Z","repository":{"id":19115945,"uuid":"22344897","full_name":"goto-bus-stop/recanalyst","owner":"goto-bus-stop","description":"Analyzes Age of Empires 2 recorded game files.","archived":false,"fork":false,"pushed_at":"2024-06-18T04:07:33.000Z","size":14200,"stargazers_count":77,"open_issues_count":32,"forks_count":11,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-25T02:51:20.655Z","etag":null,"topics":["age-of-empires","mgx","mgz","php","rts","savegame"],"latest_commit_sha":null,"homepage":"https://goto-bus-stop.github.io/recanalyst/doc/v4.2.0","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goto-bus-stop.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-28T14:15:20.000Z","updated_at":"2025-01-31T18:06:17.000Z","dependencies_parsed_at":"2024-10-19T02:13:27.595Z","dependency_job_id":"d538bc29-8533-4214-b18b-c2f294f499f8","html_url":"https://github.com/goto-bus-stop/recanalyst","commit_stats":{"total_commits":268,"total_committers":4,"mean_commits":67.0,"dds":0.1977611940298507,"last_synced_commit":"bfc7223fec05cbafb4ec8487791bb94f4e369b71"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-bus-stop%2Frecanalyst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-bus-stop%2Frecanalyst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-bus-stop%2Frecanalyst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goto-bus-stop%2Frecanalyst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goto-bus-stop","download_url":"https://codeload.github.com/goto-bus-stop/recanalyst/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248345289,"owners_count":21088243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["age-of-empires","mgx","mgz","php","rts","savegame"],"created_at":"2024-10-01T15:25:43.176Z","updated_at":"2025-04-11T04:50:20.776Z","avatar_url":"https://github.com/goto-bus-stop.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RecAnalyst\n\n[![Packagist](https://img.shields.io/packagist/v/recanalyst/recanalyst.svg)](https://packagist.org/packages/recanalyst/recanalyst)\n[![License](https://img.shields.io/packagist/l/recanalyst/recanalyst.svg)](https://packagist.org/packages/recanalyst/recanalyst)\n[![Build Status](https://travis-ci.org/goto-bus-stop/recanalyst.svg?branch=master)](https://travis-ci.org/goto-bus-stop/recanalyst)\n[![Gitter chat](https://badges.gitter.im/goto-bus-stop/recanalyst.svg)](https://gitter.im/goto-bus-stop/recanalyst)\n\nRecAnalyst is a PHP package for analyzing Age of Empires II recorded games.\n\nIt supports recorded game files from:\n\n * The Age of Kings\n * The Conquerors\n * UserPatch\n * Forgotten Empires\n * HD Editions (optionally with expansions)\n\nAnd reads data such as:\n\n * Game settings\n * Players\n * Chat messages\n * Research and Age Advancing times\n * Map data (terrain, elevation)\n * Initial units\n * Achievements (UserPatch only)\n * Tributes\n\n[License][] - [Credits][] - [Contributing][] - [Requirements][] -\n[Installation][] - [Configuration][] - [Usage Examples][] -\n[API Documentation][] - [Limitations][]\n\n```php\n$rec = new \\RecAnalyst\\RecordedGame('recorded_game.mgx2');\n$rec-\u003emapImage()-\u003esave('minimap.png');\nforeach ($rec-\u003eplayers() as $player) {\n    printf(\"%s (%s)\", $player-\u003ename, $player-\u003ecivName());\n}\n```\n\n## License\n\n[GPL-3][]. See [COPYING][].\n\n## Credits\n\nOriginally forked from Biegleux's work:  \nv2.1.0 © 2007-2010 biegleux \u0026lt;biegleux@gmail.com\u0026gt;    \n[Original project homepage][]  \n[Original project documentation][]\n\nSee also [references.md][].\n\n## Contributing\n\nRecAnalyst is looking for contributors. Please see the [Issues List][] for bugs\nor missing features and help implement them by opening a PR!\n\nRecAnalyst is an OPEN Open Source Project:\n\n\u003e Individuals making significant and valuable contributions are given\n\u003e commit-access to the project to contribute as they see fit. This project is\n\u003e more like an open wiki than a standard guarded open source project.\n\nSee the [Contributing Guide][] for more.\n\n## Requirements\n\nRecAnalyst works with PHP 5.6+ and PHP 7. The Imagick or GD extensions need to\nbe installed to generate map images.\n\n## Installation\n\nWith [Composer][]:\n\n```\ncomposer require recanalyst/recanalyst\n```\n\n\u003c!-- TODO\nWithout Composer:\n\n - Add a download link to something that includes RecAnalyst and dependencies\n - Add docs on using the included Composer-generated autoloader,\n   probably `require '/path/to/recanalyst/autoload.php'`\n\n--\u003e\n\n## Configuration\n\nRecAnalyst ships with translations and image files for researches and\ncivilizations.\n\n\u003e If you're using RecAnalyst with Laravel, scroll down to learn about\n\u003e [Laravel integration][].\n\nRecAnalyst contains a basic Translator class for standalone use. By default,\nRecAnalyst uses the English language files from Age of Empires II: HD Edition.\n\nRecAnalyst contains icons for civilizations, units and researches in the\n`resources/images` folder. If you're using RecAnalyst standalone, and want to\nuse the icons, you can copy that folder into your own project. You can then\nrefer to the different categories of icons in the following ways:\n\n| Category      | URL |\n|---------------|-----|\n| Civilizations | `'/path/to/resources/images/civs/'.$colorId.'/'.$civId.'.png'` |\n| Researches    | `'/path/to/resources/images/researches/'.$researchId.'.png'`   |\n\n### Laravel\n\nAdd the RecAnalyst service provider to your `config/app.php`:\n\n```php\n'providers' =\u003e [\n    RecAnalyst\\Laravel\\ServiceProvider::class,\n],\n```\n\nRecAnalyst will automatically pick up the appropriate translations for your\nLaravel app configuration.\n\nTo copy the civilization and research icons to your `public` folder:\n\n```bash\nphp artisan vendor:publish --tag=public\n```\n\nYou can then refer to the different categories of icons in the following ways:\n\n| Category      | URL |\n|---------------|-----|\n| Civilizations | `public_path('vendor/recanalyst/civs/'.$colorId.'/'.$civId.'.png')` |\n| Researches    | `public_path('vendor/recanalyst/researches/'.$researchId.'.png')`   |\n\n## API Documentation\n\nTo get started, the [Usage Examples][] might be helpful.\n\nFull API documentation is available at\nhttps://goto-bus-stop.github.io/recanalyst/doc/v4.2.0.\n\n## Limitations\n\nThese are some things to take into account when writing your own applications\nwith RecAnalyst:\n\n - Achievements data is only available in multiplayer UserPatch 1.4 (`.mgz`)\n   games. It isn't saved in single player recordings nor in any other game\n   version.\n - RecAnalyst cannot be used to find the state of the recorded game at any point\n   except the very start. This is because AoC stores a list of actions, so to\n   reconstruct the game state at a given point, the game has to be simulated\n   exactly. See [#1][limitation/gameplay].\n - Rarely, Age of Empires fails to save Resign actions just before the end of\n   the game. In those cases, RecAnalyst cannot determine the `resignTime`\n   property for players. See [#35][limitation/resignTime].\n\n[Issues List]: https://github.com/goto-bus-stop/recanalyst\n[Contributing Guide]: ./CONTRIBUTING.md\n[references.md]: ./references.md\n[Composer]: https://getcomposer.org\n[v3.x branch]: https://github.com/goto-bus-stop/recanalyst/tree/v3.x\n[Original project homepage]: http://recanalyst.sourceforge.net/\n[Original project documentation]: http://recanalyst.sourceforge.net/documentation/\n[GPL-3]: https://www.tldrlegal.com/l/gpl-3.0\n[COPYING]: ./COPYING\n\n[License]: #license\n[Credits]: #credits\n[Contributing]: #contributing\n[Requirements]: #requirements\n[Installation]: #installation\n[Configuration]: #configuration\n[Laravel integration]: #laravel\n[Usage Examples]: ./examples#readme\n[API Documentation]: https://goto-bus-stop.github.io/recanalyst/doc/v4.2.0\n[Limitations]: #limitations\n\n[limitation/gameplay]: https://github.com/goto-bus-stop/recanalyst/issues/1\n[limitation/resignTime]: https://github.com/goto-bus-stop/recanalyst/issues/35\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoto-bus-stop%2Frecanalyst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoto-bus-stop%2Frecanalyst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoto-bus-stop%2Frecanalyst/lists"}