{"id":13551414,"url":"https://github.com/2d-inc/developer_quest","last_synced_at":"2025-04-14T08:58:42.819Z","repository":{"id":46176940,"uuid":"175506378","full_name":"2d-inc/developer_quest","owner":"2d-inc","description":"Respository for the I/O 2019 demo: Become a tech lead, slay bugs, and don't get fired.","archived":false,"fork":false,"pushed_at":"2021-05-05T10:56:43.000Z","size":27554,"stargazers_count":2991,"open_issues_count":35,"forks_count":557,"subscribers_count":111,"default_branch":"master","last_synced_at":"2025-04-07T02:10:02.804Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2d-inc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-13T22:09:05.000Z","updated_at":"2025-02-11T10:27:49.000Z","dependencies_parsed_at":"2022-08-12T12:40:55.788Z","dependency_job_id":null,"html_url":"https://github.com/2d-inc/developer_quest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2d-inc%2Fdeveloper_quest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2d-inc%2Fdeveloper_quest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2d-inc%2Fdeveloper_quest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2d-inc%2Fdeveloper_quest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2d-inc","download_url":"https://codeload.github.com/2d-inc/developer_quest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248852129,"owners_count":21171840,"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":[],"created_at":"2024-08-01T12:01:47.847Z","updated_at":"2025-04-14T08:58:42.799Z","avatar_url":"https://github.com/2d-inc.png","language":"Dart","readme":"# Developer Quest\n\nBecome a tech lead, slay bugs, and don't get fired.\n\nAll in Flutter.\n\n## Research tree\n\nThe game progression is based on a \"research tree\" of tasks. The tree is defined in code\nin `lib/src/shared_state/task_tree` but for clarity it is also kept as a diagram\nin `assets/docs`. Here's the PNG.\n\n![The task \"research tree\"](https://github.com/2d-inc/dev_rpg/blob/master/assets/docs/research-tree.png)\n\n## Performance testing\n\nAttach a real device and run the following command from the root of the repo:\n\n```sh\nflutter drive --target=test_driver/performance.dart --profile\n```\n\nThis will do an automated run-through of the app, and will save the output to files.\n\n* Look into to `build/walkthrough-*.json` files for detailed summaries of each run.\n* Look at `test_driver/perf_stats.tsv` to compare latest runs with historical data.\n* Run `Rscript test_driver/generate-graphs.R` (assuming you have R installed) to generate\n  boxplots of the latest runs. This will show up as `test_driver/*.pdf` files.\n* Peruse the raw data file (used by R to generate the boxplots) by opening the\n  `durations.tsv` file. These files contain build and rasterization times for each frame\n  for every run.\n\nIf you want to get several runs at once, you can use something like the following command:\n\n```sh\nDESC=\"my change\" bash -c 'for i in {1..5}; do flutter drive --target=test_driver/performance.dart --profile; sleep 1; done'\n```\n\nWhy run several times when we get so many data points on each walkthrough? With several identical\nwalkthroughs it's possible to visually check variance between runs. Even with box plots,\nthese nuances get lost in the summary stats, so it's hard to see whether a change actually\nbrought any performance improvement or not. Running several times also eliminates\nthe effect of extremely bad luck, like for example when Android decides to update some app while\ntest is running.\n\n### Lock CPU and GPU speed for your performance test device\n\nRun the following command when your performance test device is attached via USB.\n\n```bash\n./tool/lock_android_scaling.sh\n```\n\nWARNING:\n\n* This only works for rooted devices.\n* This only works for Nexus 5. The specifics of scaling lock are different from device to device.\n  You can modify the script to your needs, following\n  [this template](https://github.com/google/skia/blob/master/infra/bots/recipe_modules/flavor/android.py)\n  and\n  [/sys/devices/system/cpu documentation](https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu).\n\n### Where to store the profiling data\n\nYou probably don't want to check the `*.tsv` output files into the repo. For that,\nrun `git update-index --assume-unchanged test_driver/*.tsv` in the root dir. This is a one time\ncommand per machine.\n","funding_links":[],"categories":["开源App","开源应用","Open Source Apps with Rive Animations","Dart","Premium [🔝](#readme)","Open Source Apps"],"sub_categories":["高级","高品质的","Flutter","Premium"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2d-inc%2Fdeveloper_quest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2d-inc%2Fdeveloper_quest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2d-inc%2Fdeveloper_quest/lists"}