diff --git a/README.md b/README.md index 2ccf755..1347937 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,20 @@ [![Pub](https://img.shields.io/pub/v/ignite_cli.svg?style=popout)](https://pub.dartlang.org/packages/ignite_cli) -[![Test](https://github.com/flame-engine/ignite-cli/workflows/Test/badge.svg?branch=main&event=push)](https://github.com/flame-engine/ignite-cli/actions) +[![Test](https://github.com/flame-engine/ignite-cli/workflows/Test/badge.svg)](https://github.com/flame-engine/ignite-cli/actions) [![Discord](https://img.shields.io/discord/509714518008528896.svg)](https://discord.gg/pxrBmy4) # ignite-cli Simple CLI interface for Ignite; scaffold and setup your Flame projects with ease. +![ignite-cli](./media/ignite-example.cast.gif) + ## Usage Install it via pub (or build from src if you prefer the latest version): ```bash -pub global activate ignite_cli +flutter pub global activate ignite_cli ``` After you have added the bin folder to your path (the previous command will tell you what to add), @@ -22,30 +24,35 @@ you can create a new project with Ignite, just run: ignite create ``` -And follow the instructions. +And follow the instructions (this is called interactive mode - you might need a compatible shell for the interactive pickers to work). + +Alternatively, you can set `--interactive=false` and manually specify all required options (error messages will be your friend): + +```bash +ignite create --interactive=false --name=my_flame_game --org=org.flame-engine.example --create-folder=true --template=example +``` ## Instructions for contributors -Run +Run: ```bash -cd test -./run.sh +./scripts/test.sh ``` To run all tests. Always make sure the build is green. You will need to install the bash testing framework [bats](https://bats-core.readthedocs.io/en/stable/installation.html). -In order to run the application locally, run +In order to run the application locally, use: ```bash dart bin/ignite_cli.dart ``` -## Managing Templates +### Managing Templates This project uses [package:mason](https://pub.dev/packages/mason) to manage and generate templates (bricks). @@ -54,12 +61,10 @@ All supported bricks can be found in the [bricks](./bricks) directory. Whenever a new brick is added or an existing brick is modified, make sure to regenerate the corresponding bundles via: ```bash -mason bundle bricks/ -t dart -o lib/templates +./scripts/build.sh ``` -This will generate a new bundle for `` under `lib/templates`. - ## Credits -This project was created with [Dart Stagehand](https://github.com/dart-lang/stagehand). +This project was created with [Dart Stagehand](https://github.com/dart-lang/stagehand) and uses [Mason](https://pub.dev/packages/mason) for templating. diff --git a/media/ignite-example.cast b/media/ignite-example.cast new file mode 100644 index 0000000..d761958 --- /dev/null +++ b/media/ignite-example.cast @@ -0,0 +1,444 @@ +{"version": 2, "width": 235, "height": 59, "timestamp": 1744924002, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}} +[2.095124, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[2.095552, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J[luan@ella:~/projects/gamedev/ignite-cli]$ \u001b[K\u001b[?2004h"] +[2.506175, "o", "i"] +[3.318664, "o", "g"] +[3.524419, "o", "n"] +[3.690299, "o", "i"] +[3.766728, "o", "t"] +[3.835276, "o", "e"] +[4.335691, "o", " "] +[4.495344, "o", "c"] +[4.725383, "o", "r"] +[4.796671, "o", "e"] +[4.881025, "o", "a"] +[4.962065, "o", "t"] +[5.019421, "o", "e"] +[5.245262, "o", "\u001b[?2004l\r\r\n"] +[5.697301, "o", "\r\nWelcome to \u001b[31mIgnite CLI\u001b[0m! 🔥\r\n"] +[5.697786, "o", "Let's create a new project!\r\n\r\n"] +[5.69802, "o", "\u001b[90m\r\nNote: this must be a valid dart identifier (no dashes). For example: my_game\u001b[1A\r\u001b[0m"] +[5.69994, "o", "\u001b[36m?\u001b[0m \u001b[1;90mChoose a name for your project: \u001b[0m"] +[5.699973, "o", "\u001b[37m »\u001b[0m"] +[5.700005, "o", " "] +[5.700132, "o", "\u001b[0K"] +[6.936469, "o", "m"] +[7.087387, "o", "y"] +[7.358194, "o", "_"] +[7.502147, "o", "g"] +[7.576066, "o", "a"] +[7.653259, "o", "m"] +[7.749234, "o", "e"] +[7.952112, "o", "\r\n"] +[7.953578, "o", "\u001bF"] +[7.953698, "o", "\u001b[1A"] +[7.95392, "o", "\u001b[2k\r"] +[7.954204, "o", "\u001b[32m✔\u001b[0m \u001b[1;90mChoose a name for your project: \u001b[0m"] +[7.954243, "o", "\u001b[37m ‥\u001b[0m "] +[7.954378, "o", "\u001b[0K"] +[7.954545, "o", "\u001b[90mmy_game\u001b[0m\r\n"] +[7.954574, "o", "\r\u001b[K"] +[7.954734, "o", "\u001b[90m\r\nNote: this is a dot separated list of \"packages\", normally in reverse domain notation. For example: org.flame_engine.games\u001b[1A\r\u001b[0m"] +[7.954883, "o", "\u001b[36m?\u001b[0m \u001b[1;90mChoose an org for your project: \u001b[0m"] +[7.954906, "o", "\u001b[37m »\u001b[0m"] +[7.955024, "o", " \u001b[0K"] +[9.766289, "o", "o"] +[9.858805, "o", "r"] +[9.941094, "o", "g"] +[10.165158, "o", "."] +[10.321154, "o", "f"] +[10.426017, "o", "l"] +[10.491993, "o", "a"] +[10.568109, "o", "m"] +[10.6581, "o", "e"] +[10.929969, "o", "_"] +[11.167439, "o", "e"] +[11.336288, "o", "n"] +[11.412955, "o", "g"] +[11.507643, "o", "i"] +[11.646065, "o", "n"] +[11.735431, "o", "e"] +[13.304375, "o", "."] +[13.846126, "o", "t"] +[13.926862, "o", "e"] +[14.001032, "o", "s"] +[14.094106, "o", "t"] +[14.445983, "o", "\r\n"] +[14.446446, "o", "\u001bF"] +[14.446492, "o", "\u001b[1A"] +[14.446525, "o", "\u001b[2k\r"] +[14.446654, "o", "\u001b[32m✔\u001b[0m \u001b[1;90mChoose an org for your project: \u001b[0m"] +[14.446752, "o", "\u001b[37m ‥\u001b[0m \u001b[0K"] +[14.44683, "o", "\u001b[90morg.flame_engine.test\u001b[0m\r\n"] +[14.446913, "o", "\r\u001b[K"] +[14.453306, "o", "\u001b[1;90mWhich Flame version do you wish to use?:\r\n\u001b[0m\r\n"] +[14.453691, "o", "\u001b[36m* 1.27.0\u001b[0m\r\n"] +[14.45374, "o", "\u001b[90m1.26.1 \u001b[0m\r\n\u001b[90m1.26.0 \u001b[0m\r\n"] +[14.453834, "o", "\u001b[90m1.25.0 \u001b[0m\r\n\u001b[90m1.24.0 \u001b[0m\r\n"] +[15.42406, "o", "Which extra packages do you wish to include?\r\n"] +[15.424758, "o", "\u001b[36m ♦ flame_audio\u001b[0m\r\n"] +[15.42489, "o", "\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[15.424979, "o", "\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[16.33635, "o", "\u001b[1A"] +[16.33651, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[16.336611, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[16.336698, "o", "\u001b[1A\u001b[2k\r"] +[16.336805, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[16.336882, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[16.336992, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n"] +[16.33705, "o", "\u001b[36m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[16.337091, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n"] +[16.337187, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[16.337211, "o", "\u001b[1A"] +[16.337244, "o", "\u001b[2k\r\u001b[1A"] +[16.337433, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[16.337483, "o", "\u001b[2k\r"] +[16.337585, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[16.337689, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n"] +[16.337763, "o", "\u001b[36m ♢ flame_bloc\u001b[0m\r\n"] +[16.337843, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[16.337916, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[16.622176, "o", "\u001b[1A"] +[16.622223, "o", "\u001b[2k\r"] +[16.622238, "o", "\u001b[1A"] +[16.622431, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[16.622491, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[16.62278, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[36m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[16.6228, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[16.622932, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[16.62295, "o", "\u001b[1A"] +[16.623133, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[16.623149, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[16.623201, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[16.623211, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[16.623445, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[36m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[16.855486, "o", "\u001b[1A"] +[16.855654, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[16.85575, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[16.855772, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[16.855787, "o", "\u001b[2k\r"] +[16.855844, "o", "\u001b[1A"] +[16.855882, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[16.856023, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[16.85609, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[36m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n\u001b[1A"] +[16.85611, "o", "\u001b[2k\r"] +[16.856131, "o", "\u001b[1A"] +[16.856271, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[16.856293, "o", "\u001b[1A"] +[16.856307, "o", "\u001b[2k\r"] +[16.856425, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[16.856513, "o", "\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n"] +[16.856535, "o", "\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[16.85655, "o", "\u001b[36m ♢ flame_forge2d\u001b[0m\r\n"] +[16.856565, "o", "\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[16.856578, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[16.856727, "o", "\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[17.154911, "o", "\u001b[1A"] +[17.154954, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[17.155141, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[17.155223, "o", "\u001b[2k\r"] +[17.15526, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[17.155278, "o", "\u001b[1A"] +[17.155415, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[17.155435, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n"] +[17.155524, "o", "\u001b[36m ♢ flame_oxygen\u001b[0m\r\n"] +[17.155597, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[17.155623, "o", "\u001b[1A\u001b[2k\r"] +[17.15569, "o", "\u001b[1A\u001b[2k\r"] +[17.155799, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[17.155888, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[17.155973, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[17.15604, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[17.156122, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n"] +[17.156151, "o", "\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[36m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[17.156185, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[17.541289, "o", "\u001b[1A"] +[17.541439, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[17.541463, "o", "\u001b[1A\u001b[2k\r"] +[17.541477, "o", "\u001b[1A"] +[17.541645, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[17.541675, "o", "\u001b[1A\u001b[2k\r"] +[17.541691, "o", "Which extra packages do you wish to include?\r\n"] +[17.541823, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[36m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n"] +[17.541866, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[17.541952, "o", "\u001b[1A"] +[17.541993, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[17.542125, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[17.542199, "o", "\u001b[2k\r\u001b[1A"] +[17.542234, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[17.542332, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[17.542358, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[17.542375, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[17.542392, "o", "\u001b[90m ♢ flame_forge2d\u001b[0m\r\n"] +[17.542539, "o", "\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[36m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[17.95757, "o", "\u001b[1A"] +[17.957675, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[17.95771, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[17.957727, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n"] +[17.957731, "o", "\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[17.957735, "o", "\u001b[90m ♢ flame_forge2d\u001b[0m\r\n"] +[17.957738, "o", "\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[17.957742, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[17.957749, "o", "\u001b[36m ♢ flame_svg\u001b[0m\r\n"] +[17.957754, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[17.957848, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[17.957874, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[17.957889, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[17.957894, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[17.95795, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[36m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[18.387247, "o", "\u001b[1A"] +[18.38739, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[18.38749, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[18.387551, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[18.387564, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[18.387701, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[18.387717, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[36m ♦ flame_svg\u001b[0m\r\n"] +[18.387727, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[18.387737, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[18.387823, "o", "\u001b[1A"] +[18.387849, "o", "\u001b[2k\r"] +[18.387858, "o", "\u001b[1A"] +[18.387955, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[18.387973, "o", "\u001b[1A"] +[18.387983, "o", "\u001b[2k\r"] +[18.388116, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[18.388222, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[18.388238, "o", "Which extra packages do you wish to include?\r\n"] +[18.388305, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[18.388318, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[36m ♦ flame_svg\u001b[0m\r\n"] +[18.388328, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[18.388457, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[19.235744, "o", "\u001b[1A"] +[19.235808, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[19.235824, "o", "\u001b[1A\u001b[2k\r"] +[19.235838, "o", "\u001b[1A"] +[19.236025, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[19.236087, "o", "Which extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[19.236103, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♦ flame_svg\u001b[0m\r\n"] +[19.236113, "o", "\u001b[36m ♦ flame_test\u001b[0m\r\n"] +[19.236121, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[19.23621, "o", "\u001b[1A"] +[19.236224, "o", "\u001b[2k\r\u001b[1A"] +[19.236322, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[19.236351, "o", "\u001b[2k\r\u001b[1A"] +[19.236457, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[19.236496, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[19.236511, "o", "\u001b[1A"] +[19.236589, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[19.236601, "o", "\u001b[90m ♢ flame_forge2d\u001b[0m\r\n"] +[19.236609, "o", "\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[19.236617, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[19.236624, "o", "\u001b[90m ♦ flame_svg\u001b[0m\r\n"] +[19.236632, "o", "\u001b[36m ♦ flame_test\u001b[0m\r\n"] +[19.236641, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[19.476037, "o", "\u001b[1A"] +[19.476112, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[19.476137, "o", "\u001b[2k\r\u001b[1A"] +[19.476318, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[19.47636, "o", "\u001b[1A"] +[19.476481, "o", "\u001b[2k\r"] +[19.476509, "o", "\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[19.476614, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[19.476638, "o", "\u001b[90m ♦ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[19.476652, "o", "\u001b[36m ♢ flame_tiled\u001b[0m\r\n"] +[19.476773, "o", "\u001b[1A\u001b[2k\r"] +[19.476915, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[19.476996, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[19.47702, "o", "\u001b[2k\r"] +[19.47704, "o", "\u001b[1A"] +[19.477171, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[19.477195, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n"] +[19.477214, "o", "\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[19.477228, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[19.477243, "o", "\u001b[90m ♢ flame_forge2d\u001b[0m\r\n"] +[19.477255, "o", "\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[19.477267, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[19.477283, "o", "\u001b[90m ♦ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[19.477527, "o", "\u001b[36m ♢ flame_tiled\u001b[0m\r\n"] +[20.119545, "o", "\u001b[1A"] +[20.119604, "o", "\u001b[2k\r"] +[20.119851, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.119893, "o", "\u001b[1A\u001b[2k\r"] +[20.120214, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[20.120245, "o", "\u001b[2k\r\u001b[1A"] +[20.120409, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[20.120443, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n"] +[20.120462, "o", "\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[20.12048, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[20.120498, "o", "\u001b[90m ♦ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[20.120826, "o", "\u001b[36m ♦ flame_tiled\u001b[0m\r\n\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.120903, "o", "\u001b[1A\u001b[2k\r"] +[20.120988, "o", "\u001b[1A\u001b[2k\r"] +[20.121009, "o", "\u001b[1A\u001b[2k\r"] +[20.121104, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.121124, "o", "\u001b[1A\u001b[2k\r"] +[20.121209, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[20.121232, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[20.121283, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[20.1213, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[20.121313, "o", "\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[20.121429, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♦ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[36m ♦ flame_tiled\u001b[0m\r\n"] +[20.607007, "o", "\u001b[1A"] +[20.607086, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.607112, "o", "\u001b[1A\u001b[2k\r"] +[20.607557, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♦ flame_svg\u001b[0m\r\n"] +[20.607583, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[36m ♢ flame_tiled\u001b[0m\r\n"] +[20.607796, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.607846, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[20.607867, "o", "\u001b[2k\r"] +[20.607978, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.607995, "o", "\u001b[1A"] +[20.608007, "o", "\u001b[2k\r"] +[20.60816, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[20.608189, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[20.608203, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[20.608294, "o", "\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[20.608314, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♦ flame_svg\u001b[0m\r\n"] +[20.608327, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[20.608339, "o", "\u001b[36m ♢ flame_tiled\u001b[0m\r\n"] +[20.869976, "o", "\u001b[1A"] +[20.87015, "o", "\u001b[2k\r\u001b[1A"] +[20.870213, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.870246, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[20.870408, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[20.870476, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n"] +[20.870529, "o", "\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[20.870548, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♦ flame_svg\u001b[0m\r\n\u001b[36m ♦ flame_test\u001b[0m\r\n"] +[20.870561, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[20.870879, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[20.870907, "o", "\u001b[2k\r\u001b[1A"] +[20.871013, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.871032, "o", "\u001b[1A"] +[20.871193, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[20.871308, "o", "\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[20.871381, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♦ flame_svg\u001b[0m\r\n\u001b[36m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.044063, "o", "\u001b[1A"] +[21.044116, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.044131, "o", "\u001b[1A"] +[21.044318, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.044372, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.044388, "o", "\u001b[2k\r"] +[21.044402, "o", "\u001b[1A"] +[21.044449, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[21.044569, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[36m ♦ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.04466, "o", "\u001b[1A"] +[21.044719, "o", "\u001b[2k\r"] +[21.044758, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.044772, "o", "\u001b[2k\r"] +[21.044784, "o", "\u001b[1A"] +[21.044889, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.044924, "o", "\u001b[1A\u001b[2k\r"] +[21.044956, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[21.045119, "o", "\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n"] +[21.0452, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[36m ♦ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.30522, "o", "\u001b[1A"] +[21.30534, "o", "\u001b[2k\r\u001b[1A"] +[21.305413, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.305452, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.305467, "o", "\u001b[2k\r"] +[21.305585, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.305667, "o", "\u001b[2k\r"] +[21.305689, "o", "Which extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[36m ♢ flame_svg\u001b[0m\r\n"] +[21.3057, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.305793, "o", "\u001b[1A"] +[21.305826, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.30585, "o", "\u001b[1A\u001b[2k\r"] +[21.30599, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.306005, "o", "\u001b[1A\u001b[2k\r"] +[21.306054, "o", "\u001b[1A"] +[21.306067, "o", "\u001b[2k\r"] +[21.306142, "o", "Which extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n"] +[21.306157, "o", "\u001b[36m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[21.306166, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.606265, "o", "\u001b[1A"] +[21.60642, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.606446, "o", "\u001b[1A\u001b[2k\r"] +[21.606475, "o", "\u001b[1A"] +[21.60651, "o", "\u001b[2k\r"] +[21.606526, "o", "\u001b[1A\u001b[2k\r"] +[21.606678, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[21.606765, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[36m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.606858, "o", "\u001b[1A"] +[21.606963, "o", "\u001b[2k\r"] +[21.606998, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.607092, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.6072, "o", "\u001b[1A\u001b[2k\r"] +[21.607264, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.607337, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.60742, "o", "Which extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[36m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n"] +[21.607465, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.899947, "o", "\u001b[1A"] +[21.900114, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.900147, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.900164, "o", "\u001b[1A\u001b[2k\r"] +[21.9002, "o", "\u001b[1A\u001b[2k\r"] +[21.900218, "o", "\u001b[1A"] +[21.900381, "o", "\u001b[2k\r"] +[21.900486, "o", "\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[36m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[21.900529, "o", "\u001b[1A\u001b[2k\r"] +[21.900642, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[21.900682, "o", "\u001b[1A\u001b[2k\r"] +[21.900697, "o", "\u001b[1A"] +[21.900806, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[21.900865, "o", "\u001b[2k\r"] +[21.900932, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[21.900961, "o", "\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n"] +[21.900974, "o", "\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[90m ♢ flame_forge2d\u001b[0m\r\n\u001b[36m ♢ flame_oxygen\u001b[0m\r\n"] +[21.900993, "o", "\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n"] +[21.901174, "o", "\u001b[90m ♦ flame_test\u001b[0m\r\n"] +[21.901242, "o", "\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[22.299887, "o", "\u001b[1A"] +[22.300296, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[22.300325, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n"] +[22.3009, "o", "\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[36m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[22.301424, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\rWhich extra packages do you wish to include?\r\n\u001b[90m ♦ flame_audio\u001b[0m\r\n\u001b[90m ♢ flame_bloc\u001b[0m\r\n\u001b[90m ♢ flame_fire_atlas\u001b[0m\r\n\u001b[36m ♢ flame_forge2d\u001b[0m\r\n\u001b[90m ♢ flame_oxygen\u001b[0m\r\n\u001b[90m ♢ flame_rive\u001b[0m\r\n\u001b[90m ♢ flame_svg\u001b[0m\r\n\u001b[90m ♦ flame_test\u001b[0m\r\n\u001b[90m ♢ flame_tiled\u001b[0m\r\n"] +[22.795053, "o", "\r\nYour current directory is: /Users/luan/projects/gamedev/ignite-cli\r\n"] +[22.795541, "o", "\u001b[1;90mDo you want to put your project files directly on the current dir, or do you want to create a folder called my_game?:\r\n\u001b[0m\r\n"] +[22.795627, "o", "\u001b[36m* Create a folder called my_game\u001b[0m\r\n\u001b[90mPut the files directly on /Users/luan/projects/gamedev/ignite-cli \u001b[0m\r\n"] +[24.298885, "o", "\u001b[1A"] +[24.299039, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[90mCreate a folder called my_game \u001b[0m\r\n"] +[24.29907, "o", "\u001b[36m* Put the files directly on /Users/luan/projects/gamedev/ignite-cli\u001b[0m\r\n"] +[24.299209, "o", "\u001b[1A\u001b[2k\r\u001b[1A"] +[24.299282, "o", "\u001b[2k\r\u001b[90mCreate a folder called my_game \u001b[0m\r\n\u001b[36m* Put the files directly on /Users/luan/projects/gamedev/ignite-cli\u001b[0m\r\n"] +[24.643798, "o", "\u001b[1A"] +[24.643947, "o", "\u001b[2k\r\u001b[1A"] +[24.643978, "o", "\u001b[2k\r\u001b[36m* Create a folder called my_game\u001b[0m\r\n\u001b[90mPut the files directly on /Users/luan/projects/gamedev/ignite-cli \u001b[0m\r\n"] +[24.644103, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[36m* Create a folder called my_game\u001b[0m\r\n"] +[24.644129, "o", "\u001b[90mPut the files directly on /Users/luan/projects/gamedev/ignite-cli \u001b[0m\r\n"] +[25.198673, "o", "\r\n\r\n"] +[25.212121, "o", "\u001b[1;90mWhat template would you like to use for your new project?:\r\n\u001b[0m\r\n\u001b[36m* Simple: The emptiest possible Flame project. Just the bare minimum to get you up and running.\u001b[0m\r\n\u001b[90mBasics: The basic structure that most games will require. No boilerplate required, but no extra fluff. \u001b[0m\r\n"] +[25.212162, "o", "\u001b[90mExample: An actual complete, working game example. Extra code that you won't need but will teach you how to wire the most important pieces. \u001b[0m\r\n"] +[25.962656, "o", "\u001b[1A"] +[25.962829, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r"] +[25.962932, "o", "\u001b[1A\u001b[2k\r\u001b[90mSimple: The emptiest possible Flame project. Just the bare minimum to get you up and running. \u001b[0m\r\n\u001b[36m* Basics: The basic structure that most games will require. No boilerplate required, but no extra fluff.\u001b[0m\r\n\u001b[90mExample: An actual complete, working game example. Extra code that you won't need but will teach you how to wire the most important pieces. \u001b[0m\r\n"] +[25.96303, "o", "\u001b[1A\u001b[2k\r"] +[25.963118, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[25.96319, "o", "\u001b[90mSimple: The emptiest possible Flame project. Just the bare minimum to get you up and running. \u001b[0m\r\n\u001b[36m* Basics: The basic structure that most games will require. No boilerplate required, but no extra fluff.\u001b[0m\r\n\u001b[90mExample: An actual complete, working game example. Extra code that you won't need but will teach you how to wire the most important pieces. \u001b[0m\r\n"] +[26.108084, "o", "\u001b[1A"] +[26.108167, "o", "\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A"] +[26.108219, "o", "\u001b[2k\r\u001b[90mSimple: The emptiest possible Flame project. Just the bare minimum to get you up and running. \u001b[0m\r\n\u001b[90mBasics: The basic structure that most games will require. No boilerplate required, but no extra fluff. \u001b[0m\r\n\u001b[36m* Example: An actual complete, working game example. Extra code that you won't need but will teach you how to wire the most important pieces. \u001b[0m\r\n"] +[26.108238, "o", "\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r\u001b[1A\u001b[2k\r"] +[26.108267, "o", "\u001b[90mSimple: The emptiest possible Flame project. Just the bare minimum to get you up and running. \u001b[0m\r\n"] +[26.108282, "o", "\u001b[90mBasics: The basic structure that most games will require. No boilerplate required, but no extra fluff. \u001b[0m\r\n\u001b[36m* Example: An actual complete, working game example. Extra code that you won't need but will teach you how to wire the most important pieces. \u001b[0m\r\n"] +[26.66905, "o", "\r\nRunning flutter create on /Users/luan/projects/gamedev/ignite-cli/my_game ...\r\n"] +[26.669788, "o", "$ flutter create --org org.flame_engine.test --project-name my_game .\r\n"] +[27.09836, "o", "Creating project ....\r\n"] +[27.321615, "o", "Resolving dependencies...\r\n"] +[27.75175, "o", "Downloading packages...\r\n"] +[27.760689, "o", "Got dependencies.\r\n"] +[27.871491, "o", "Wrote 130 files.\r\n\r\nAll done!\r\n"] +[27.872317, "o", "You can find general documentation for Flutter at: https://docs.flutter.dev/\r\nDetailed API documentation is available at: https://api.flutter.dev/\r\nIf you prefer video documentation, consider: https://www.youtube.com/c/flutterdev\r\n\r\nIn order to run your application, type:\r\n\r\n $ cd .\r\n $ flutter run\r\n\r\nYour application code is in ./lib/main.dart.\r\n\r\n"] +[28.265055, "o", "$ rm -rf lib test\r\n"] +[28.328377, "o", "$ flutter pub get\r\n"] +[28.75685, "o", "Resolving dependencies...\r\n"] +[29.543436, "o", "Downloading packages...\r\n"] +[29.565286, "o", "+ _fe_analyzer_shared 82.0.0\r\n+ analyzer 7.4.1\r\n+ args 2.7.0\r\n async 2.12.0 (2.13.0 available)\r\n+ audioplayers 6.4.0\r\n+ audioplayers_android 5.2.0\r\n+ audioplayers_darwin 6.2.0\r\n+ audioplayers_linux 4.2.0\r\n+ audioplayers_platform_interface 7.1.0\r\n+ audioplayers_web 5.1.0\r\n+ audioplayers_windows 4.2.0\r\n+ cli_config 0.2.0\r\n+ convert 3.1.2\r\n+ coverage 1.12.0\r\n+ crypto 3.0.6\r\n fake_async 1.3.2 (1.3.3 available)\r\n+ ffi 2.1.4\r\n+ file 7.0.1\r\n+ fixnum 1.1.1\r\n+ flame 1.27.0\r\n+ flame_audio 2.11.3\r\n+ flame_lint 1.3.0\r\n+ flame_test 1.18.3\r\n+ flutter_driver 0.0.0 from sdk flutter\r\n+ flutter_web_plugins 0.0.0 from sdk flutter\r\n"] +[29.56539, "o", "+ frontend_server_client 4.0.0\r\n+ fuchsia_remote_debug_protocol 0.0.0 from sdk flutter\r\n+ glob 2.1.3\r\n+ http 1.3.0\r\n+ http_multi_server 3.2.2\r\n+ http_parser 4.1.2\r\n+ integration_test 0.0.0 from sdk flutter\r\n+ io 1.0.5\r\n+ js 0.7.2\r\n leak_tracker 10.0.8 (10.0.9 available)\r\n lints 5.1.1 (6.0.0 available)\r\n+ logging 1.3.0\r\n material_color_utilities 0.11.1 (0.12.0 available)\r\n+ mime 2.0.0\r\n+ node_preamble 2.0.2\r\n+ ordered_set 6.1.1 (7.0.0 available)\r\n+ package_config 2.2.0\r\n+ path_provider 2.1.5\r\n+ path_provider_android 2.2.16\r\n+ path_provider_foundation 2.4.1\r\n+ path_provider_linux 2.2.1\r\n+ path_provider_platform_interface 2.1.2\r\n+ path_provider_windows 2.3.0\r\n+ platform 3.1.6\r\n+ plugin_platform_interface 2.1.8\r\n+ pool 1.5.1\r\n+ process 5.0.3\r\n+ pub_semver 2.2.0\r\n+ shelf 1.4.2\r\n+ shelf_packages_handler 3.0.2\r\n+ shelf_static 1.1.3\r\n+ shelf_web_socket 3.0.0\r\n+ source_map_stack_trace 2.1.2\r\n+ source_maps 0.10.13\r\n+ sprintf 7.0.0\r\n+ sync_http 0.3.1\r\n+ synchronized 3.3.1\r\n+ test 1.25.15\r\n+ test_core 0.6.8\r\n+ typed_d"] +[29.565399, "o", "ata 1.4.0\r\n+ uuid 4.5.1\r\n vector_math 2.1.4 (2.1.5 available)\r\n vm_service 14.3.1 (15.0.0 available)\r\n+ watcher 1.1.1\r\n"] +[29.565558, "o", "+ web 1.1.1\r\n+ web_socket 1.0.0\r\n+ web_socket_channel 3.0.3\r\n+ webdriver 3.0.4 (3.1.0 available)\r\n+ webkit_inspection_protocol 1.2.1\r\n+ xdg_directories 1.1.0\r\n+ yaml 3.1.3\r\nThese packages are no longer being depended on:\r\n- cupertino_icons 1.0.8\r\n- flutter_lints 5.0.0\r\n"] +[29.566306, "o", "Changed 71 dependencies!\r\n"] +[29.567042, "o", "9 packages have newer versions incompatible with dependency constraints.\r\nTry `flutter pub outdated` for more information.\r\n"] +[30.947323, "o", "Updated 4 files on top of flutter create.\r\n\r\nYour new Flame project was successfully created!\r\n"] +[30.959231, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[30.959307, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J[luan@ella:~/projects/gamedev/ignite-cli]$ \u001b[K\u001b[?2004h"] +[33.947585, "o", "\u001b[?2004l\r\r\n"] diff --git a/media/ignite-example.cast.gif b/media/ignite-example.cast.gif new file mode 100644 index 0000000..cae97a2 Binary files /dev/null and b/media/ignite-example.cast.gif differ