diff --git a/android_env/g3doc/public/docs/emulator_guide.md b/android_env/g3doc/public/docs/emulator_guide.md deleted file mode 100644 index 9cdbce88..00000000 --- a/android_env/g3doc/public/docs/emulator_guide.md +++ /dev/null @@ -1,96 +0,0 @@ -# AndroidEnv - Emulator Setup Guide - -In this document we provide a step-by-step guide for creating a virtual Android -device with Android Studio. After creating an AVD -([Android Virtual Device](https://developer.android.com/studio/run/managing-avds)) -you will be able to connect it to an AndroidEnv instance and you're ready to go. - -To get started, you will need to download -[Android Studio](https://developer.android.com/studio) - an IDE widely used by -Android developers. - -## Install an SDK Platform Package - -Android Studio comes with the Android Software Development Toolkit (SDK) which, -among others, allows you to install different versions of Android. Click on -**Tools** > **SDK Manager** and select the SDK version that you would like to -use. - -![Screenshot of 'android_studio_2'](images/android_studio/android_studio_2.png) - -We recommend that you set the `Android SDK Location` to be in your home -directory (for example, on Linux the default one is `~/Android/Sdk`, while on -macOS - `~/Library/Android/sdk`). You can always find the SDK location in -Android Studio under **Preferences** > **Appearance & Behavior** > **System -Settings** > **Android SDKs** > _Android SDK Location_. - -If you set the the custom `Android SDK Location`, make note of it - you will -need it for connecting AndroidEnv to your AVD. - -![Screenshot of 'android_studio_0'](images/android_studio/android_studio_0.png) - -## Create an AVD - -Now it is time to create a virtual device (AVD). Go to **Tools** > **AVD -Manager**. - -![Screenshot of 'android_studio_1'](images/android_studio/android_studio_1.png) - -In the pop-up window you will find an option to **Create Virtual Device**. - -![Screenshot of 'android_studio_3'](images/android_studio/android_studio_3.png) - -Configure the virtual device. You can select the model or choose from more -advanced settings (refer to the -[Android docs](https://developer.android.com/studio/run/managing-avds) for -step-by-step instructions). - -![Screenshot of 'android_studio_4'](images/android_studio/android_studio_4.png) - -Name your AVD and take note of this value. It will be neccessary for connecting -AndroidEnv to this virtual device. - -![Screenshot of 'android_studio_6'](images/android_studio/android_studio_6.png) - -Once you are done, you will see the new AVD show up in the **AVD Manager**. -Click on **View details** to inspect some of its properties. - -![Screenshot of 'android_studio_8'](images/android_studio/android_studio_8.png) - -Take note of the `AVD Path`. This value will be neccessary for connecting -AndroidEnv to this device. We recommend that you set this to be your home -directory (for instance, on Linux or macOS it may be `~/.android/avd`). - -![Screenshot of 'android_studio_9'](images/android_studio/android_studio_9.png) - -## Ready to use - -With SDK and AVD both set up, you are now ready to use this emulated device with -AndroidEnv. Don't forget to take note of the following three values: your AVD -name, the AVD path, and the SDK path. For example, on Linux they may be: - -``` ---avd_name=my_avd ---avd_package_path=~/.android/avd ---android_sdk_root=~/Android/Sdk -``` - -Next, once you have set up the AVD, follow the -[Task steps](instructions.md#the-task) in the -[Running the environment guide](instructions.md) to finish setting up -AndroidEnv. - -However, if you want to just interact with the newly created device, click on -the run button next to your AVD in the **AVD Manager** in Android Studio (this -step is optional). - -![Screenshot of 'android_studio_7'](images/android_studio/android_studio_7.png) - -You will see an emulator window pop up. You can interact with it by clicking on -the screen. - -![Screenshot of 'android_studio_10'](images/android_studio/android_studio_10.png) - -There are many other features in Android Studio that let you customize your -device. For example, you can create custom images with pre-installed -applications or configured settings. diff --git a/android_env/g3doc/public/docs/environment.md b/android_env/g3doc/public/docs/environment.md deleted file mode 100644 index e761c224..00000000 --- a/android_env/g3doc/public/docs/environment.md +++ /dev/null @@ -1,141 +0,0 @@ -# AndroidEnv - Environment features - -AndroidEnv is a complex environment that, while offering an almost endless range -of possibilites for RL research and investigation, poses multiple kinds of -challenges simultaneously. In this document we outline AndroidEnv's main -features that render it such a unique learning environment. - -## Real-time environment - -AndroidEnv is built on top of an emulated Android device, allowing the agent to -communicate with the emulator through touch actions. Android emulators are -created independently from our environment implementation and simulate real -Android devices in the most realistic manner. This simulation runs real-time, -independently of the agent, meaning that the simulaton will not wait for agent -input between frames. This aspect of the environment renders the RL setup -similar to a robotics problem, where the challenges of real-time interaction and -consequent noise in observations have to be overcome. Please note there is -currently no straightforward way to slow down the simulation either. - -## Action space - - - -Perhaps one of the most interesting features of AndroidEnv is its large and -complex action interface. The raw action space of the environment consists of a -tuple `(x,y) in [0,1]x[0,1]` determining the location of the action on the -Android screen, and a discrete value `ActionType in {LIFT, TOUCH, REPEAT}` -indicating whether the agent wants to touch the screen at this chosen location -or not. This action space is uniform across all tasks/apps. - -**Gestures.** The complexity of the interface arises from the fact that -individual raw actions on their own do not neccessarily trigger a meaningful -change in the environment. Most Android applications are designed such that they -can be controlled/navigated through common touchscreen gestures such as pressing -buttons, swiping, scrolling, pinching, drag and drop etc. Each of these can be -thought of as particular sequences of raw actions: for example, *touching* the -screen at a particular location, then immediately *lifting* the imaginary finger -might be interpreted as a *press of a button*; while a sequence of *touches* -aligned in a vertical line might be interpreted as *scrolling*. We note that -AndroidEnv does not support multitouch actions at the moment, but it is a -possible feature to add. - -It is important to point out that it is out of the environment's control to -determine how particular sequences of raw actions get interpreted by the Android -simulator - much like when humans interact with physical devices, a certain -gesture on the screen might be interpreted differently if it is performed at a -slightly different angle or speed. - -Tap | Double Tap | Touch & Hold | Flick Left | Flick Right | Scroll (H) | Scroll (V) | Drag & Drop --------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | ----------- -![Screenshot of 'tap'](images/gestures/1-Finger-Tap.gif) | ![Screenshot of 'double_tap'](images/gestures/1-Finger-Double-Tap.gif) | ![Screenshot of 'touch_hold'](images/gestures/1-Finger-Touch-&-Hold.gif) | ![Screenshot of 'flick_left'](images/gestures/1-Finger-Flick-Left.gif) | ![Screenshot of 'flick_right'](images/gestures/1-Finger-Flick-Right.gif) | ![Screenshot of 'horizontal_scroll'](images/gestures/1-Finger-Horizontal-Scroll.gif) | ![Screenshot of 'vertical_scroll'](images/gestures/1-Finger-Vertical-Scroll.gif) | ![Screenshot of 'move'](images/gestures/1-Finger-Move.gif) - -**Wrappers.** It is possible to alter the raw action space of the environment by -applying [wrappers](#wrappers). For example one might discretize the action -space by splitting the screen up into a grid of a desired size; restrict the -ActionType to *touch* only; or fix certain gesture skills. We note here that -these wrappers, again, will not alter how the particular sequence of performed -raw actions gets interpreted by the Android simulator. - -## Observation space - -The observation space of AndroidEnv consists of three main components: -(`pixels`, `timedelta`, `orientation`), the most notable of these being -`pixels`. The original screen size will depend on the type of emulator used, but -given that it will correspond to real device screen sizes, this will usually be -quite large (of course, this can be scaled down, e.g. with wrappers). The -`timedelta` component captures the amount of time passed since the last -observation was fetched. The `orientation`, even though it does not affect the -layout of the RGB image in the observation, might carry relevant information for -the agent. For example, if there is text on the screen, it is important to know -how it is oriented. Again, a benefit of this observation space is that it is -uniform across all tasks. As mentioned above, observations often carry spatial -cues and are suggestive of the kind of actions/gestures that are meaningful to -perform in a given state. - -## Task extras - -On top of the default observations (`pixels`, `timedelta`, `orientation`), some -tasks might expose additional structured observations after each step. An -*extra* in AndroidEnv is any information that an app may send to aid the -understanding of the task. The type of information sent through this channel is -usually something difficult to obtain from raw pixels and may include meaningful -information such as: - -* The current board configuration (e.g. of a chess game or of a tetris game) - in matrix or string form. -* The position of the avatar in a map. -* Events such as whether a button was pressed or whether a checkpoint was - achieved. - -Note that these are entirely optional and may not be available at all. - -To request extras from the environment, you can call `env.task_extras()` after -each `env.step()`, which will return a dictionary of all the extra observations -observed during the previous step (or an empty dict is there's none available). -For example: - -```python -for _ in range(FLAGS.n_steps): - - action = agent.select_action(timestep.observation) - timestep = env.step(action) - logging.info('observation: %s', timestep.observation) - logging.info('extra observations: %s', env.task_extras()) -``` - -Please note however that the env might not return extras at every timestep, only -when something meaningful happened (e.g. only when a button was pressed, or when -the state of the board has changed). - -When integrating your own APK as a new task for the environment, you can define -your own extras by following the instructions -[here](tasks_guide.md#log-messages-and-custom-apks). - -## Wrappers - -AndroidEnv's action- and observation spaces can be altered by applying suitable -wrappers. While custom wrappers can be built easily, we have provided a number -of useful wrappers that demonstrate their usage: - -* `discrete_action_wrapper`: Discretizes the action space into an `nxk` grid. -* `flat_interface_wrapper`: Removes the dictionary structure from the - observation and action specs. -* `float_pixels_wrapper`: Projects the pixel RGB values from the integer range - `[0, 255]` to the float range `[0, 1]`. -* `image_rescale_wrapper`: Resizes the pixel observations by the selected - ratio. -* `gym_wrapper`: Changes the environment interface from - [dm_env](https://github.com/deepmind/dm_env) to - [OpenAI](https://gym.openai.com/) gym interface. -* `last_action_wrapper`: Extends the observation with a one-hot encoded - location of the previously taken action, in order to aid agents without - built-in memory. - -## Internal structure of AndroidEnv - -The chart below gives an overview of the internal workings of the system, -illustrating how different classes interact with each other and what their -individual roles are. See the source code for more details. - -![Components Chart](images/misc/components_chart.svg) diff --git a/android_env/g3doc/public/docs/example_tasks.md b/android_env/g3doc/public/docs/example_tasks.md deleted file mode 100644 index 4b33908d..00000000 --- a/android_env/g3doc/public/docs/example_tasks.md +++ /dev/null @@ -1,1176 +0,0 @@ -# AndroidEnv - Available tasks - -This page gives a detailed overview of the example tasks provided with -AndroidEnv. The purpose is to give researchers an idea of the different kinds of -challenges that AndroidEnv poses. - -To use any of these tasks in your own experiments, click on **Download** to -download a ZIP file containing textprotos and the corresponding APKs. After -downloading, move the `.apk` and `.textproto` files to a directory of your -choice and take note of their path. This information is needed for -[running](instructions.md#create-the-env) an AndroidEnv instance with the given -task. - - - -| App / Game | Interface | Time reactive | Multi-level | Rewards | Extras | Download | -| --------------------------------------------------- | -------------------- | -------------- | ----------------------------- | ---------- | ------------ | -------- | -| [Vokram (MDP)](#vokram) | Tapping (buttons) | No | Yes (4 variants) | Dense | Yes | [Download](https://storage.googleapis.com/android_env-tasks/mdp.tar.gz) | -| [Apple Flinger](#apple-flinger) | Drag & drop | No | Yes (6 variants) | Dense | No | [Download](https://storage.googleapis.com/android_env-tasks/apple_flinger.tar.gz) | -| [Blockinger](#blockinger) | Tapping (buttons) | Yes | No | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/blockinger.tar.gz) | -| [Catch](#catch) | Touch | Yes | No | Dense | Yes | [Download](https://storage.googleapis.com/android_env-tasks/catch_the_ball.tar.gz) | -| [Classic 2048](#classic-2048) | Swiping | No | No | Dense | Yes | [Download](https://storage.googleapis.com/android_env-tasks/classic_2048.tar.gz) | -| [Dodge](#dodge) | Tapping | Yes | No | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/dodge.tar.gz) | -| [DroidFish (Chess)](#droidfish) | Tapping | No | Yes (3 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/droidfish.tar.gz) | -| [FlappyDroid](#flappydroid) | Tapping | Yes | Yes (2 levels) | Dense | No | [Download](https://storage.googleapis.com/android_env-tasks/systemui_egg_land.tar.gz) | -| [FloodIt](#floodit) | Tapping (buttons) | No | Yes (4 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/floodit.tar.gz) | -| [Frozen Bubble](#frozen-bubble) | Dragging, tapping | No | No | Sparse | No | [Download](https://storage.googleapis.com/android_env-tasks/frozen_bubble.tar.gz) | -| [Memory Game](#memory-game) | Tapping | No | Yes (6 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/memory_game.tar.gz) | -| [Minesweeper](#minesweeper) | Tapping | No | Yes (3 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/minesweeper.tar.gz) | -| [Nostalgic Racer](#nostalgic-racer) | Touch | Yes | Yes (2 variants) | Dense | Yes | [Download](https://storage.googleapis.com/android_env-tasks/nostalgic_racer.tar.gz) | -| [Open Sudoku](#open-sudoku) | Tapping (buttons) | No | Yes (3 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/open_sudoku.tar.gz) | -| [Perfection](#perfection) | Drag & drop | No | Yes (3 game types) | Dense | Yes | [Download](https://storage.googleapis.com/android_env-tasks/perfection.tar.gz) | -| [Rocket Sleigh](#rocket-sleigh) | Tapping | Yes | No | Dense | No | [Download](https://storage.googleapis.com/android_env-tasks/rocket_sleigh.tar.gz) | -| [Pong](#pong) | Drag | Yes | Yes (3 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/pong.tar.gz) | -| [SGT Puzzles - Blackbox](#sgt-puzzles-blackbox) | Tapping | No | Yes (4 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Bridge](#sgt-puzzles-bridge) | Drag & drop | No | Yes (5 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Cube](#sgt-puzzles-cube) | Tapping | No | Yes (3 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Dominosa](#sgt-puzzles-dominosa) | Tapping | No | Yes (5 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Fifteen](#sgt-puzzles-fifteen) | Tapping | No | Yes (4 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Flip](#sgt-puzzles-flip) | Tapping | No | Yes (3 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/apple_flinger.tar.gz) | -| [SGT Puzzles - Flood](#sgt-puzzles-flood) | Tapping | No | Yes (3 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Galaxies](#sgt-puzzles-galaxies) | Tapping | No | Yes (6 sizes) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Guess](#sgt-puzzles-guess) | Tapping | No | Yes (4 levels) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Inertia](#sgt-puzzles-inertia) | Tapping | No | Yes (2 sizes) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Light Up](#sgt-puzzles-light-up) | Tapping | No | Yes (5 sizes) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Loopy](#sgt-puzzles-loopy) | Tapping | No | Yes (3 sizes) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [SGT Puzzles - Net](#sgt-puzzles-net) | Tapping | No | Yes (5 sizes) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/sgtpuzzles.tar.gz) | -| [Shattered Pixel Dungeon](#shattered-pixel-dungeon) | Tapping | Yes | Yes (4 variants) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/shattered_pixel_dungeon.tar.gz) | -| [Simple Solitaire](#simple-solitaire) | Drag & drop | No | Yes (19 tasks) | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/simple_solitaire.tar.gz) | -| [Snake](#snake) | Tapping (buttons) | Yes | No | Sparse | Yes | [Download](https://storage.googleapis.com/android_env-tasks/aosp_samples_snake.tar.gz) | -| [Vector Pinball](#vector-pinball) | Tapping | Yes | Yes (5 variants) | Sparse | No | [Download](https://storage.googleapis.com/android_env-tasks/vector_pinball.tar.gz) | - - - -## Vokram - -Vokram is our in-house implementation of an Android app that displays a -Markov-Decision-Process (MDP) graph as buttons on the screen which the agent -must use to select its actions. The observation is simply the color of the -background, and the actions are the buttons themselves which are presented in -different colors. - -* **mdp_0000**: This is a task that presents the agent with two colored, but - unlabeled buttons on the screen. Pressing one of the buttons gives the agent - a reward of `-1` and redraws the buttons on the screen. The other button - gives a reward of `+1` and terminates the episode. The color of the buttons - is the same throughout the episode. The sizes of the buttons are randomized - at each screen draw. Pressing anywhere else on the screen gives a reward of - zero. The task lasts up to 60 seconds, at which point the episode is - restarted. The underlying dynamics governing the buttons is a simple 2-state - 2-action Markov Decision Process (MDP). The MDP is an intentionally simple - environment that can be used to debug agents. - -* **mdp_0001**: This is similar to `mdp_0000` but it's even simpler. It - presents the agent with a single button which gives a reward of `+1` and - terminates the episode when pressed. This task can be used for example to - train agents to click buttons. - -* **mdp_0002**: In this task there are two buttons, pressing either of which - will terminate the episode with a return of `+1`. - -* **mdp_0003**: An equivalent of `mdp_0000` with rewards reversed: the episode - ends when the wrong button is clicked, and carries on with a new set of - buttons when the correct one is clicked. - -
- Extras returned - -* `actions`: - - Set of all buttons present, e.g. `['A', 'B']`. - - Returned when any button is pressed. - - Has `shape=[2], dtype=STRING_U1`. -* `clicks`: - - Character representing the button pressed. - - Returned when any button is pressed. - - Has `shape=[1], dtype=STRING_U1`. -* `buttons`: - - Coordinates of the top left and bottom right corners of each button, e.g - `[[x_a_0, y_a_0, x_a_1, y_a_1], [x_b_0, y_a_0, x_b_1, y_b_1]]`. - - Returned when any button is pressed. - - Has `shape=[2, 4], dtype=INT32`. - -
- -**mdp_0000** | **mdp_0001** | **mdp_0002** | **mdp_0003** ------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------ | ------------ -![Screenshot of 'mdp_0000'](images/mdp_0000.gif) | ![Screenshot of 'mdp_0001'](images/mdp_0001.gif) | ![Screenshot of 'mdp_0002'](images/mdp_0002.gif) | ![Screenshot of 'mdp_0003'](images/mdp_0003.gif) - -## Apple Flinger - -A clone of Angry Birds. Even though the game offers many levels, we currently -expose six levels. See the original github repo for more info: -https://gitlab.com/ar-/apple-flinger. - -
- Extras returned - Returns no extras. -
- -**apple_flinger_M_1_1** | **apple_flinger_M_1_2** | **apple_flinger_M_1_18** ----------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------ -![Screenshot of 'apple_flinger_M_1_1'](images/apple_flinger_M_1_1.gif) | ![Screenshot of 'apple_flinger_M_1_2'](images/apple_flinger_M_1_2.gif) | ![Screenshot of 'apple_flinger_M_1_18'](images/apple_flinger_M_1_18.gif) - -**apple_flinger_M_2_1** | **apple_flinger_M_2_2** | **apple_flinger_M_2_18** ------------------------------------------------------------------------ | ---------------------------------------------------------------------- | ------------------------ -![Screenshot of 'apple_flinger_M_2_1'](images/apple_flinger_M_2_1.gif)) | ![Screenshot of 'apple_flinger_M_2_2'](images/apple_flinger_M_2_2.gif) | ![Screenshot of 'apple_flinger_M_2_18'](images/apple_flinger_M_2_18.gif) - -## Blockinger - -This is a Tetris clone implemented with on-screen controls. See the original -github repo for more info: https://github.com/tasioleiva/Blockinger.git. - -
- Extras returned - -* `down_pressed`, `left_pressed`, `right_pressed`, `rotate_right_pressed`, - `drop_pressed`: - - Indicates that said button has been pressed. - - Returned when said button has been pressed. - - Has `shape=[1], dtype=INT32`. -* `current_board`: - - One-hot encoded state of the board. - - Has `shape=[18, 10], dtype=INT32`. -* `current_line`, `cleared_lines`: - - Index of the relevant line. - - Has `shape=[1], dtype=INT32`. -* `current_piece`, `next_piece`: - - Index representing the type of piece. - - Has `shape=[1], dtype=INT32`. - -
- -![Screenshot of 'blockinger'](images/blockinger.gif) - -## Catch - -Classic Catch game. - -
- Extras returned - -* `ball`: - - `x, y` coordinates of the ball. - - Returned every timestep. - - Has `shape=[2], dtype=INT32`. -* `paddle`: - - `x, y` coordinates of the paddle. - - Returned every timestep. - - Has `shape=[2], dtype=INT32`. -* `paddle_width`: - - Width of the paddle. - - Returned every timestep. - - Has `shape=[1], dtype=INT32`. -* `lives`: - - Number of lives left. - - Returned every timestep. - - Has `shape=[1], dtype=INT32`. - -
- -![Screenshot of 'catch_the_ball_default'](images/catch_the_ball_default.gif) - -## Classic 2048 - -This is an Android implementation of a popular game in the 2010s. See the -original github repo for more info: https://github.com/tpcstld/2048.git. - -
- Extras returned - -* `grid`: - - State of the board. - - Returned when the board changes. - - Has `shape=[4, 4], dtype=INT32`. -* `direction`: - - Index representing the direction of the last swipe (between 0-3). - - Returned when the swipe prompted a board change. - - Has `shape=[1], dtype=INT32`. - -
- -![Screenshot of 'classic_2048'](images/classic_2048.gif) - -## Dodge - -Guide the ball from the red line to the green line without getting hit by the -floating dots. - -
- Extras returned - -* `lives`: - - Number of lives left. - - Returned when its value changes. - - Has `shape=[1], dtype=INT32`. -* `level`: - - Current level. - - Returned when its value changes. - - Has `shape=[1], dtype=INT32`. - -
- -![Screenshot of 'dodge_default'](images/dodge_default.gif) - -## DroidFish - -Standard chess game. You can choose whether to play as a specific player -(black/white), or have the player colour randomly assigned at the beginning of -each episode. The numbers 1, 10 and 100 indicate the level of difficulty. Take a -look at a few sample moves below to get an idea of roughly how well the bot -plays for each level of difficulty. You can see that the 1% and 10% bots often -make very obvious mistakes. See the original github repo for more info: -https://github.com/peterosterlund2/droidfish. - -
- Extras returned - -* `board`: - - State of the board, representing pieces by indices. No piece - 0 - - White pieces - 1: king, 2: queen, 3: rook, 4: bishop, 5: knight, 6: pawn - - Black pieces - 7: king, 8: queen, 9: rook, 10: bishop, 11: knight, 12: - pawn - - Returned when the board changes. - - Has `shape=[8, 8], dtype=INT32`. -* `selection`: - - Coordinate of selected piece (between 0-64, -1 if selection is removed) - - Returned when a piece is selected (or unselected). - - Has `shape=[1], dtype=INT32`. -* `moved`: - - Coordinates "from" and "to" cells when a piece is moved (between 0-64) - - Returned when a piece is moved. - - Has `shape=[2], dtype=INT32`. -* `invalid`: - - Coordinates "from" and "to" cells of an invalid move attempt (between - 0-64) - - Returned upon invalid move request - - Has `shape=[2], dtype=INT32`. - -
- -**droidfish_black_1** | **droidfish_black_10** | **droidfish_black_100** ------------------------------------------------------------------- | -------------------------------------------------------------------- | ----------------------- -![Screenshot of 'droidfish_black_1'](images/droidfish_black_1.gif) | ![Screenshot of 'droidfish_black_10'](images/droidfish_black_10.gif) | ![Screenshot of 'droidfish_black_100'](images/droidfish_black_100.gif) - -**droidfish_white_1** | **droidfish_white_10** | **droidfish_white_100** ------------------------------------------------------------------- | -------------------------------------------------------------------- | ----------------------- -![Screenshot of 'droidfish_white_1'](images/droidfish_white_1.gif) | ![Screenshot of 'droidfish_white_10'](images/droidfish_white_10.gif) | ![Screenshot of 'droidfish_white_100'](images/droidfish_white_100.gif) - -**droidfish_random_1** | **droidfish_random_10** | **droidfish_random_100** --------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------ -![Screenshot of 'droidfish_random_1'](images/droidfish_random_1.gif) | ![Screenshot of 'droidfish_random_10'](images/droidfish_random_10.gif) | ![Screenshot of 'droidfish_random_100'](images/droidfish_random_100.gif) - -## FlappyDroid - -A clone of the well-known game Flappy Birds. - -
- Extras returned - Returns no extras. -
- -**systemui_egg_land_default** | **systemui_egg_land_half_speed** ----------------------------------------------------------------------------------- | -------------------------------- -![Screenshot of 'systemui_egg_land_default'](images/systemui_egg_land_default.gif) | ![Screenshot of 'systemui_egg_land_half_speed'](images/systemui_egg_land_half_speed.gif) - -## FloodIt - -FloodIt is a game where the player needs to fill the board with a single color. -The dynamics of the game are driven by a few colorful buttons at the bottom of -the screen, which when pressed cause the currently active region to change its -color to the color of the pressed button. When this active region changes color -it absorbs neighboring squares that have the same color, thus expanding the -active region. The active region starts as a single square at the top-left -corner of the board. The game gives a single reward at the end of the game if -the player manages to fill the entire board with the same color within the -maximum number steps, otherwise the reward is just zero. - -This is a very hard-exploration game because the game does not give intermediate -rewards until the very end of the game, and the number of possible moves is -incredibly big. - -You can find another implementation of this game in the task -[SGT Puzzles - Flood](#sgt-puzzles-flood). - -
- Extras returned - -* `board`: - - State of the board, representing colours by their indices. - - 0: purple, 1: blue, 2: green, 3: yellow, 4: red, 5: pink - - Returned when the board changes. - - Has `shape=[board_size, board_size], dtype=INT32`. -* `clicked`: - - Index of the colour clicked (between 0-5) - - Returned when said colour is clicked. - - Has `shape=[1], dtype=INT32`. -* `flipped`: - - The number of new cells that just got merged into the big blob (0 or - more) - - Returned when the board state changes - - Has `shape=[1], dtype=INT32`. - -
- -**floodit_easy** | **floodit_medium** | **floodit_hard** --------------------------------------------------------- | ------------------------------------------------------------ | ---------------- -![Screenshot of 'floodit_easy'](images/floodit_easy.gif) | ![Screenshot of 'floodit_medium'](images/floodit_medium.gif) | ![Screenshot of 'floodit_hard'](images/floodit_hard.gif) - -### Task `mdp_flood_it` - -Custom task created for pretraining agents to locate and press FloodIt buttons -on the screen. - -![Screenshot of 'mdp_flood_it'](images/mdp_flood_it.gif) - -## Frozen Bubble - -Shoot the coloured bubbles in a direction of your choice. Groups of bubbles with -the same colour will drop. Remove all bubbles from the board before the time -runs out. See the original github repo for more info: -https://github.com/robinst/frozen-bubble-android.git. - -
- Extras returned - Returns no extras. -
- -![Screenshot of 'frozen_bubble'](images/frozen_bubble.gif) - -## Memory Game - -Classic memory game. Find the pairs of images. See the original github repo for -more info: https://github.com/sromku/memory-game/. - -
- Extras returned - -* `flip`: - - Index of the card flipped - - Returned when a card is clicked. - - Has `shape=[1], dtype=INT32`. -* `cards`: - - Number of cards still on the board. - - Returned upon finding a pair. - - Has `shape=[1], dtype=INT32`. -* `remained`: - - Number of cards remaining at the end of the episode. - - Returned when an episode is over. - - Has `shape=[1], dtype=INT32`. -* `stars`: - - Number of stars achieved at the end of the game. - - Returned upon finishing the game. - - Has `shape=[1], dtype=INT32`. -* `achieved`: - - Score obtained by the end of the episode. - - Returned when an episode is over. - - Has `shape=[1], dtype=INT32`. - -
- -**memory_game_animals_beginner** | **memory_game_animals_easy** | **memory_game_monsters_medium** ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------- -![Screenshot of 'memory_game_animals_beginner'](images/memory_game_animals_beginner.gif) | ![Screenshot of 'memory_game_animals_easy'](images/memory_game_animals_easy.gif) | ![Screenshot of 'memory_game_monsters_medium'](images/memory_game_monsters_medium.gif) - -**memory_game_monsters_hard** | **memory_game_emojis_hardest** | **memory_game_emojis_master** ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ----------------------------- -![Screenshot of 'memory_game_monsters_hard'](images/memory_game_monsters_hard.gif) | ![Screenshot of 'memory_game_emojis_hardest'](images/memory_game_emojis_hardest.gif) | ![Screenshot of 'memory_game_emojis_master'](images/memory_game_emojis_master.gif) - -## Minesweeper - -This is an Android implementation of a popular game on Desktop in the 1990s. See -the original github repo for more info: https://gitlab.com/ar-/apple-flinger. - -
- Extras returned - -* `hidden`: - - Number of hidden cells. - - Returned whenever the board changes. - - Has `shape=[1], dtype=INT32`. -* `revealed`: - - Number of revealed cells. - - Returned whenever the board changes. - - Has `shape=[1], dtype=INT32`. -* `bombs`: - - Number of bombs in the game. - - Returned whenever the board changes. - - Has `shape=[1], dtype=INT32`. -* `click`: - - Coordinates of the cell clicked (row, column). - - Returned whenever the board changes. - - Has `shape=[2], dtype=INT32`. -* `grid`: - - State of the board. - - -1 = hidden, -2 = marked, 9 = bomb, 0-8 = number of nearby bombs - - Returned whenever the board changes. - - Has `shape=[grid_height, grid_width], dtype=INT32`. - -
- -**minesweeper_easy** | **minesweeper_medium** | **minesweeper_hard** ----------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------- -![Screenshot of 'minesweeper_easy'](images/minesweeper_easy.gif) | ![Screenshot of 'minesweeper_medium'](images/minesweeper_medium.gif) | ![Screenshot of 'minesweeper_hard'](images/minesweeper_hard.gif) - -## Nostalgic Racer - -NostalgicRacer is a racing game that offers Atari-like graphics and controls. -The objective is to maximize the score which increases as the car moves forward -and by collecting coins and speed-ups. - -
- Extras returned - Returns no extras. -
- -### Task `nostalgic_racer` - -The player can only control whether the car should move left, move right or stay -put by touching on the screen. If the touch is on the right pane the car moves -right, if the touch is on the left pane the car moves left and no touches leaves -the car in the same position. Pressing for too little time moves the car by -miniscule amounts, with effects similar to staying put. - -### Task `nostalgic_racer_2d` - -This is the same underlying game as NostalgicRacer with the same objective. -However, the interface is very different. The observation is given as a 2D view -from the top with no perspective and the touchscreen determines the position -that the car should move to (sideways). - -**nostaligc_racer** | **nostalgic_racer_2d** --------------------------------------------------------------- | ---------------------- -![Screenshot of 'nostalgic_racer'](images/nostalgic_racer.gif) | ![Screenshot of 'nostalgic_racer_2d'](images/nostalgic_racer_2d.gif) - -## Open Sudoku - -Classic Sudoku game with different levels of difficulty. The board is randomised -over a set of 30 boards for each level. See the original github repo for more -info: https://github.com/ogarcia/opensudoku. - -
- Extras returned - -* `value`: - - Number pressed (between 1-9, 0 if the "delete" button is pressed). - - Returned upon clicking said button. - - Has `shape=[1], dtype=INT32`. - -
- -**open_sudoku_easy** | **open_sudoku_medium** | **open_sudoku_hard** ----------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------- -![Screenshot of 'open_sudoku_easy'](images/open_sudoku_easy.gif) | ![Screenshot of 'open_sudoku_medium'](images/open_sudoku_medium.gif) | ![Screenshot of 'open_sudoku_hard'](images/open_sudoku_hard.gif) - -## Perfection - -Drag the items corresponding to the targets with the same shape. - -
- Extras returned - -* `moving`: - - The ID of the piece being dragged on the screen or 0. - - Returned when its value changes. - - Has `shape=[1], dtype=INT32`. -* `todo`: - - Number of pieces yet to be moved to a hole. - - Returned when its value changes. - - Has `shape=[1], dtype=INT32`. -* `done`: - - Number of pieces correctly moved to a hole. - - Returned when its value changes. - - Has `shape=[1], dtype=INT32`. - -
- -**perfection_1_circle_static** | **perfection_1_cube_static** | **perfection_1_plus_static** | **perfection_1_triangle_static** ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | -------------------------------- -![Screenshot of 'perfection_1_circle_static'](images/perfection_1_circle_static.gif) | ![Screenshot of 'perfection_1_square_static'](images/perfection_1_square_static.gif) | ![Screenshot of 'perfection_1_plus_static'](images/perfection_1_plus_static.gif) | ![Screenshot of 'perfection_1_triangle_static'](images/perfection_1_triangle_static.gif) - -**perfection_default** | **perfection_4_colors_square_static** | **perfection_4_pieces_static** --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------ -![Screenshot of 'perfection_default'](images/perfection_default.gif) | ![Screenshot of 'perfection_4_colors_square_static'](images/perfection_4_colors_square_static.gif) | ![Screenshot of 'perfection_4_pieces_static'](images/perfection_4_pieces_static.gif) - -## Rocket Sleigh - -A Flappy Bird-like game where you have to collect christmas presents while -avoiding trees. The sleigh is powered by a rocket that needs to recharge over -time after you use up its fuel. - -
- Extras returned - Returns no extras. -
- -![Screenshot of 'rocket_sleigh_default'](images/rocket_sleigh.gif) - -## Pong - -Classic Pong game. - -
- Extras returned - -* `ball`: - - The ball coordinates: [left, top, right, bottom]. - - Returned when its value changes. - - Has `shape=[4], dtype=INT32`. -* `computer`: - - The computer paddle coordinates: [left, top, right, bottom]. - - Returned when its value changes. - - Has `shape=[4], dtype=INT32`. -* `human`: - - The human paddle coordinates: [left, top, right, bottom]. - - Returned when its value changes. - - Has `shape=[4], dtype=INT32`. -* `collision`: - - Indicates collision of paddle and ball: (0=no collision, 1=collision). - - Returned when its value changes. - - Has `shape=[1], dtype=INT32`. -* `state`: - - The current state of the game: (0=pause, 1=ready, 2=running, 3=lose, - 4=win). - - Returned when its value changes. - - Has `shape=[1], dtype=INT32`. - -
- -**pong_easy** | **pong_default** | **pong_hard** --------------------------------------------------- | -------------------------------------------------------- | ------------- -![Screenshot of 'pong_easy'](images/pong_easy.gif) | ![Screenshot of 'pong_default'](images/pong_default.gif) | ![Screenshot of 'pong_hard'](images/pong_hard.gif) - -## SGT Puzzles - Blackbox - -There's an invisible laser beam originating from each of the cells at the edge -of the grid. There are also a given number of balls inside the grid, hidden from -the player whose aim is to guess where those balls are. The player can figure -out where those balls might be by looking at how they *deflect* the laser beams. -Clicking on an edge cell the player can reveal information about how that -particular laser beam travels. Click on a cell; if the cell reveals an `H`, it -means the straight laser beam leaving this cell hits a ball frontally. If the -cell reveals a *number* along with another cell with the same number, that means -the laser beam originating in the first cell ends up getting absorbed in the -corresponding pair cell. If the cell reveals an `R`, that means the laser beam -was *reflected*: either its origin and the cell it gets absorbed in is the -*same*, or the beam gets bent before entering the grid. See the description -below. - -The balls affect the travel of the laser beam in the following way: - -* If a laser beam hits it straight, it gets absorbed. This is denoted by the - letter `H`. -* If a laser beam hits *its corner*, the beam gets deflected by 90 degrees. -* If a laser beam hits a balls corner right at the edge of the grid, i.e. - before it enters the grid, it is considered *reflected*. -* If a laser beam enters the same cell that it originally left, it is - considered *reflected* too. - -Once the player has placed the given number of balls on the screen, a green dot -appears that allows the player to check if their solution was correct. See the -original github repo for more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `balls`: - - The number of balls in the game arena. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `guesses`: - - The number of guessed balls made by the agent. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `wrong`: - - 1 if the guesses are wrong, 0 otherwise. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `lasers`: - - The number of lasers in the grid - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - Representation of the grid cells: - - In the arena: `G`=guessed ball `' '`=empty - - In the range: `[0-9]`=the number of lasers, `H`=beam hit, `R`=beam - reflected, - - `?` unknown, `' '` for the corners - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=STRING_U1`. - -
- -**blackbox_3x3_1_ball** | **blackbox_5x5_3_balls** | **blackbox_8x8_5_balls** | **blackbox_10x10_5_balls** ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -------------------------- -![Screenshot of 'blackbox_3x3_1_ball'](images/sgtpuzzles_blackbox_3x3_1_ball.gif) | ![Screenshot of 'blackbox_5x5_3_balls'](images/sgtpuzzles_blackbox_5x5_3_balls.gif) | ![Screenshot of 'blackbox_8x8_5_balls'](images/sgtpuzzles_blackbox_8x8_5_balls.gif) | ![Screenshot of 'blackbox_10x10_5_balls'](images/sgtpuzzles_blackbox_10x10_5_balls.gif) - -## SGT Puzzles - Bridge - -Connect nodes on the board so that each number denotes the degree of the given -vertex. Edges are not allowed to cross each other and the graph has to be -connected. Edges have to be horizontal or vertical, and there can be at most two -parallel bridges between any pair of nodes. See the original github repo for -more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `islands`: - - Number of nodes on the board. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - Representation of the current state of the board. - - `[0-9]=island, ' '=empty` - - `'|'=vertical line, '"'=double vertical line, '!'=wrong vertical line` - - `'-'=horizontal line, '='=double horizontal line, '~'=wrong horizontal - line` - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=STRING_U1`. - -
- -**bridge_7x7_easy** | **bridge_7x7_medium** | **bridge_7x7_hard** | **bridge_10x10_medium** | **bridge_15x15_medium** ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | ----------------------- -![Screenshot of 'sgtpuzzles_bridge_7x7_easy'](images/sgtpuzzles_bridge_7x7_easy.gif) | ![Screenshot of 'sgtpuzzles_bridge_7x7_medium'](images/sgtpuzzles_bridge_7x7_medium.gif) | ![Screenshot of 'sgtpuzzles_bridge_7x7_hard'](images/sgtpuzzles_bridge_7x7_hard.gif) | ![Screenshot of 'sgtpuzzles_bridge_10x10_medium'](images/sgtpuzzles_bridge_10x10_medium.gif) | ![Screenshot of 'sgtpuzzles_bridge_15x15_medium'](images/sgtpuzzles_bridge_15x15_medium.gif) - -## SGT Puzzles - Cube - -There are six coloured squares that you have to collect with a moving cube. If -the cube rolls on top of a coloured cell, the colour gets attached to that side -of the cube; and if a coloured side of the cube rolls on an empty cell, the -colour is removed from the cube. The goal is to have all six sides of the cube -coloured. See the original github repo for more info: -https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `current`: - - Index of the current grid cell the cube is on. - - Returned whenever the cube moves. - - Has `shape=[1], dtype=INT32`. -* `previous`: - - Index of the previous grid cell the cube was on. - - Returned whenever the cube moves. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - The grid state (0 = dark, 1 = blue) - - Returned whenever the cube moves. - - Has `shape=[grid_size, grid_size], dtype=INT32`. -* `face_count`: - - The number of dark faces on the cube. - - Returned whenever the cube moves. - - Has `shape=[1], dtype=INT32`. -* `face_colour_count`: - - The number of blue faces on the cube. - - Returned whenever the cube moves. - - Has `shape=[1], dtype=INT32`. -* `faces`: - - The cube faces (0 = dark, 1 = blue) - - Returned whenever the cube moves. - - Has `shape=[6], dtype=INT32`. - -
- -**cube_c3x3** | **cube_c4x4** | **cube_c8x8** ------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------- -![Screenshot of 'sgtpuzzles_cube_c3x3'](images/sgtpuzzles_cube_c3x3.gif) | ![Screenshot of 'sgtpuzzles_cube_c4x4'](images/sgtpuzzles_cube_c4x4.gif) | ![Screenshot of 'sgtpuzzles_cube_c8x8'](images/sgtpuzzles_cube_c8x8.gif) - -## SGT Puzzles - Dominosa - -Place 2x1 size dominoes on the board such that the full board is covered, making -sure that no two dominoes have the same pair of numbers on them. There needs to -be exactly one of (0, 0), (0, 1) (0, 2), ... (1, 1), (1, 2) etc. See the -original github repo for more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `numbers`: - - Numbers as they appear in the grid. - - Returned whenever the grid changes. - - Has `shape=[height, width], dtype=INT32`. -* `grid`: - - Letters representing the dominoes currently placed on the board. - - 'R=right, L=left, T=top, B=bottom' - - Returned whenever the grid changes. - - Has `shape=[height, with], dtype=INT32`. -* `clash`: - - Represents clashes on the board (i.e. if two dominoes have the same - pair) - - '1=clash, 0=no clash' - - Returned whenever the grid changes. - - Has `shape=[height, width], dtype=INT32`. - -
- -**dominosa_1** | **dominosa_3** | **dominosa_3a** | **dominosa_6** | **dominosa_9** --------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------- -![Screenshot of 'sgtpuzzles_dominosa_1'](images/sgtpuzzles_dominosa_1.gif) | ![Screenshot of 'sgtpuzzles_dominosa_3'](images/sgtpuzzles_dominosa_3.gif) | ![Screenshot of 'sgtpuzzles_dominosa_3a'](images/sgtpuzzles_dominosa_3a.gif) | ![Screenshot of 'sgtpuzzles_dominosa_6'](images/sgtpuzzles_dominosa_6.gif) | ![Screenshot of 'sgtpuzzles_dominosa_9'](images/sgtpuzzles_dominosa_9.gif) - -## SGT Puzzles - Fifteen - -Order the tiles in increasing order, starting from the top left corner. See the -original github repo for more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `grid`: - - Current state of the grid. - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=INT32`. -* `empty`: - - Index of the single empty cell in the grid. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `movecount`: - - Number of moves made so far. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. - -
- -**fifteen_2x2** | **fifteen_3x3** | **fifteen_4x4** | **fifteen_6x6** ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | --------------- -![Screenshot of 'sgtpuzzles_fifteen_2x2'](images/sgtpuzzles_fifteen_2x2.gif) | ![Screenshot of 'sgtpuzzles_fifteen_3x3'](images/sgtpuzzles_fifteen_3x3.gif) | ![Screenshot of 'sgtpuzzles_fifteen_4x4'](images/sgtpuzzles_fifteen_4x4.gif) | ![Screenshot of 'sgtpuzzles_fifteen_6x6'](images/sgtpuzzles_fifteen_6x6.gif) - -## SGT Puzzles - Flip - -Clicking on a cell will flip the colour of some of its neighbours, which are -determined by the symbol in the cell. The goal is to make all the cells have the -same colour. See the original github repo for more info: -https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `light`: - - The number of light cells. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `dark`: - - The number of dark cells - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `moves`: - - The number of moves made by the player. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - State of the board (0 = dark, 1 = light). - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=INT32`. -* `gridMatrix`: - - The grid matrix of square neighbours (-1 = outside, 1 = neighbour, 0 = - not neighbour) - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size, 3, 3s], dtype=INT32`. - -
- -**flip_3x3c** | **flip_4x4c** | **flip_5x5r** ------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------- -![Screenshot of 'sgtpuzzles_flip_3x3c'](images/sgtpuzzles_flip_3x3c.gif) | ![Screenshot of 'sgtpuzzles_flip_4x4c'](images/sgtpuzzles_flip_4x4c.gif) | ![Screenshot of 'sgtpuzzles_flip_5x5r'](images/sgtpuzzles_flip_5x5r.gif) - -## SGT Puzzles - Flood - -FloodIt is a game where the player needs to fill the board with a single color. -The dynamics of the game are driven by colored areas of the board, which when -pressed cause the currently active region to change its color to the color of -the pressed button. When this active region changes color it absorbs neighboring -squares that have the same color, thus expanding the active region. The active -region starts as a single square at the top-left corner of the board. The game -gives a single reward at the end of the game if the player manages to fill the -entire board with the same color within the maximum number steps, otherwise the -reward is just zero. See the original github repo for more info: -https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `board`: - - State of the board, representing colours by their indices. - - 0: red, 1: yellow, 2: green, 3: blue, 4: orange, 5: purple, - - 6: brown, 7: light blue, 8: light green, 9: pink - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=INT32`. - -
- -**sgtpuzzles_flood_3x3_easy** | **sgtpuzzles_flood_12x12_medium** | **sgtpuzzles_flood_16x16_hard** ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------- -![Screenshot of 'sgtpuzzles_flood_3x3_easy'](images/sgtpuzzles_flood_3x3_easy.gif) | ![Screenshot of 'sgtpuzzles_flood_12x12_medium'](images/sgtpuzzles_flood_12x12_medium.gif) | ![Screenshot of 'sgtpuzzles_flood_16x16_hard'](images/sgtpuzzles_flood_16x16_hard.gif) - -## SGT Puzzles - Galaxies - -Split the grid up into centrally symmetric areas. The centre of symmetry for -each area is denoted by a dot on the grid. See the original github repo for more -info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `dot`: - - Number of dots on the board. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - String representation of the board: - - `o`=dot, `' '`=empty, `+`, `-`, `|` = cell corners. - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=STRING_U1`. - -
- -**galaxies_3x3_normal** | **galaxies_5x5_normal** | **galaxies_7x7_normal** ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ----------------------- -![Screenshot of 'galaxies_3x3_normal'](images/sgtpuzzles_galaxies_3x3_normal.gif) | ![Screenshot of 'galaxies_5x5_normal'](images/sgtpuzzles_galaxies_5x5_normal.gif) | ![Screenshot of 'galaxies_7x7_normal'](images/sgtpuzzles_galaxies_7x7_normal.gif) - -**galaxies_7x7_unreasonable** | **galaxies_10x10_normal** | **galaxies_15x15_normal** ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------- -![Screenshot of 'galaxies_7x7_normal'](images/sgtpuzzles_galaxies_7x7_normal.gif) | ![Screenshot of 'galaxies_10x10_normal'](images/sgtpuzzles_galaxies_10x10_normal.gif) | ![Screenshot of 'galaxies_15x15_normal'](images/sgtpuzzles_galaxies_15x15_normal.gif) - -## SGT Puzzles - Guess - -The computer has thought of a sequence of colours that you have to guess. Fill -the top row with colours of your choice, and wait for the computer to give you -feedback about your sequence. It will show a black dot for each colour that is -placed in the correct position, and a white dot for each that is present in the -hidden sequence, but not at the position your guess. Try to figure out the -hidden sequence before you run out of guesses! See the original github repo for -more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `peg`: - - Indices representing the colours selected in the latest row. - - Returned after the row is completed and evaluated. - - Has `shape=[row_length], dtype=INT32`. -* `feedback`: - - Evaluation of the latest guess (0: incorrect, 1: correct place, 2: - correct colour) - - Returned after the row is completed and evaluated. - - Has `shape=[row_length], dtype=INT32`. - -
- -**guess_basic** | **guess_quick** | **guess_standard** | **guess_super** ----------------------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------- | --------------- -![Screenshot of 'sgtpuzzles_guess_basic'](images/sgtpuzzles_guess_basic.gif) | ![Screenshot of 'guess_quick'](images/sgtpuzzles_guess_quick.gif) | ![Screenshot of 'guess_standard'](images/sgtpuzzles_guess_standard.gif) | ![Screenshot of 'guess_super'](images/sgtpuzzles_guess_super.gif) - -## SGT Puzzles - Inertia - -Collect all the blue diamonds on the board without colliding into a bomb. You -can move the ball in the 8 main directions (including the diagonals). The ball -will keep on moving in that direction until it hits a wall, a bomb, a diamond or -a circle. Circles and diamonds have grip, i.e. it will stop the ball from -continuing to move in the direction it was going towards. See the original -github repo for more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `gems`: - - Current number of gems still on the board. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `distancemoved`: - - Number of cells just moved. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - Symbols of grid cells (b=blank, g=gem, m=mine, s=stop, w=wall) - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=INT32`. - -
- -**inertia_5x5** | **inertia_10x10** ------------------------------------------------------------------ | ----------------- -![Screenshot of 'inertia_5x5'](images/sgtpuzzles_inertia_5x5.gif) | ![Screenshot of 'inertia_10x10'](images/sgtpuzzles_inertia_10x10.gif) - -## SGT Puzzles - Light Up - -You have a grid of squares. Some are empty (black) and some are *walls* (grey); -some of the walls are numbered. Your aim is to *light up* all the empty squares -by placing light bulbs in some of them. The numbers denote how many bulbs' light -hits these directly in a straight sight. Meanwhile, no two bulbs should light up -each other (i.e. only one bulb allowed in straight sight). See the original -github repo for more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `grid`: - - String representation of the board: - - '#' = blocked, ' ' = empty/black, 'L' = light, 'l' = illuminated, - - 'X' = impossible, 'number' = number of bulbs hitting this cell. - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=STRING_U1`. - -
- -**light_up_3x3_easy** | **light_up_5x5_easy** | **light_up_7x7_easy** | **light_up_10x10_tricky** | **light_up_14x14_easy** ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ----------------------- -![Screenshot of 'sgtpuzzles_light_up_3x3_easy'](images/sgtpuzzles_light_up_3x3_easy.gif) | ![Screenshot of 'sgtpuzzles_light_up_5x5_easy'](images/sgtpuzzles_light_up_5x5_easy.gif) | ![Screenshot of 'sgtpuzzles_light_up_7x7_easy'](images/sgtpuzzles_light_up_7x7_easy.gif) | ![Screenshot of 'light_up_10x10_tricky'](images/sgtpuzzles_light_up_10x10_tricky.gif) | ![Screenshot of 'sgtpuzzles_light_up_14x14_easy'](images/sgtpuzzles_light_up_14x14_easy.gif) - -## SGT Puzzles - Loopy - -Draw a closed loop along the edges of the grid. A number in a cell denotes the -number of edges adjacent to that cell. The loop cannot intersect itself. See the -original github repo for more info: https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `grid`: - - String representation of the board: - - The grid lines and cells: - - `.` = dots (cell corners) - - `0-9` = number on cell face or ` ` for empty face - - `?` = unknown (default),`x` = no line,`-` = `|` = line,`~` = `/` = error - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=STRING_U1`. - -
- -**loopy_3x3_easy** | **loopy_5x5_easy** | **loopy_7x7_easy** | **loopy_7x7_normal** | **loopy_7x7_hard** ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ------------------ -![Screenshot of 'sgtpuzzles_loopy_3x3_easy'](images/sgtpuzzles_loopy_3x3_easy.gif) | ![Screenshot of 'sgtpuzzles_loopy_5x5_easy'](images/sgtpuzzles_loopy_5x5_easy.gif) | ![Screenshot of 'sgtpuzzles_loopy_7x7_easy'](images/sgtpuzzles_loopy_7x7_easy.gif) | ![Screenshot of 'sgtpuzzles_loopy_7x7_normal'](images/sgtpuzzles_loopy_7x7_normal.gif) | ![Screenshot of 'sgtpuzzles_loopy_7x7_hard'](images/sgtpuzzles_loopy_7x7_hard.gif) - -## SGT Puzzles - Net - -There are a number of light bulbs, wires and a single light source in the -middle. Connect the wires such that all bulbs are lit up, without loose ends or -loops in the wiring. You can rotate the tiles by clicking on them. If the task -name has a *w* suffix in it then it is allowed to connect wires on opposing -edges of the grid. See the original github repo for more info: -https://github.com/chrisboyle/sgtpuzzles. - -
- Extras returned - -* `active`: - - The number of active/completed cells. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `total`: - - The total number of cells - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - The grid cells represented by numbers. - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=INT32`. -* `gridCompleted`: - - The grid cells' active/completed status (0 = false, 1 = true). - - Returned whenever the grid changes. - - Has `shape=[grid_size, grid_size], dtype=INT32`. - -
- -**net_3x3** | **net_5x5** | **net_7x7w** | **net_9x9** | **net_11x11w** --------------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------- -![Screenshot of 'sgtpuzzles_net_3x3'](images/sgtpuzzles_net_3x3.gif) | ![Screenshot of 'sgtpuzzles_net_5x5'](images/sgtpuzzles_net_5x5.gif) | ![Screenshot of 'sgtpuzzles_net_7x7w'](images/sgtpuzzles_net_7x7w.gif) | ![Screenshot of 'sgtpuzzles_net_9x9'](images/sgtpuzzles_net_9x9.gif) | ![Screenshot of 'sgtpuzzles_net_11x11w'](images/sgtpuzzles_net_11x11w.gif) - -## Shattered Pixel Dungeon - -Shattered Pixel Dungeon is a Roguelike RPG, with pixel art graphics and lots of -variety and replayability. Every game is unique, with four different playable -characters, randomized levels and enemies, and over 150 items to collect and -use. The game is simple to get into, but has lots of depth. Strategy is required -if you want to win! See the original github repo for more info: -https://github.com/00-Evan/shattered-pixel-dungeon.git. - -
- Extras returned - -* `action`: - - The action just completed by the hero. - - Returned whenever an action is taken. - - Has `shape=[1], dtype=STRING_U25`. -* `dst`: - - TThe destination of the action. - - Returned whenever an action is taken. - - Has `shape=[1], dtype=INT32`. -* `level`: - - The level reached. - - Returned whenever a new level is reached. - - Has `shape=[1], dtype=INT32`. -* `depth`: - - The depth of the level reached. - - Returned whenever a new floor is reached. - - Has `shape=[1], dtype=INT32`. -* `deepestFloor`: - - The deepest reached floor statistic. - - Returned whenever a new floor is reached. - - Has `shape=[1], dtype=INT32`. -* `gold`: - - The gold level reached. - - Returned whenever gold is acquired. - - Has `shape=[1], dtype=INT32`. -* `totalGold`: - - The gold collected statistic. - - Returned whenever gold is acquired. - - Has `shape=[1], dtype=INT32`. -* `addedGold`: - - The gold acquired at the most recent step. - - Returned whenever gold is acquired. - - Has `shape=[1], dtype=INT32`. -* `newlyVisited`: - - Number of new squares uncovered. - - Returned whenever new squares are uncovered. - - Has `shape=[1], dtype=INT32`. -* `damageDealt`: - - Damage dealt by hero. - - Returned whenever the hero deals damage. - - Has `shape=[1], dtype=INT32`. -* `damageTaken`: - - Damage taken by hero. - - Returned whenever the hero takes damage. - - Has `shape=[1], dtype=INT32`. -* `HP`: - - Hit Points (Health) of hero. - - Returned whenever its value changes. - - Has `shape=[1], dtype=INT32`. -* `exp`: - - Experience gained by hero. - - Returned whenever the hero gains experience points. - - Has `shape=[1], dtype=INT32`. -* `dew`: - - How many dew (an immediately consumed item) the user picks up. - - Returned whenever a dew is picked up. - - Has `shape=[1], dtype=INT32`. -* `heal`: - - Amount the hero is healed. - - Returned whenever the hero is healed. - - Has `shape=[1], dtype=INT32`. -* `itemPickup`: - - The name of an item that is picked up. - - Returned whenever an item is picked up. - - Has `shape=[1], dtype=STRING_U25`. -* `itemDrop`: - - The name of an item that is dropped. - - Returned whenever an item is dropped. - - Has `shape=[1], dtype=STRING_U25`. -* `destroy`: - - The name of the enemy that is killed. - - Returned whenever an enemy is killed. - - Has `shape=[1], dtype=STRING_U25`. -* `search`: - - Whether the user clicked the "Search" button. - - Returned whenever the button is clicked. - - Has `shape=[1], dtype=INT32`. -* `wait`: - - Whether the user clicked the "Wait" button. - - Returned whenever the button is clicked. - - Has `shape=[1], dtype=INT32`. -* `openedInventory`: - - Whether the user clicked the "Inventory" button. - - Returned whenever the button is clicked. - - Has `shape=[1], dtype=INT32`. - -
- -huntress | mage | rogue | warrior ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------- -![Screenshot of 'shattered_pixel_dungeon_huntress'](images/shattered_pixel_dungeon_huntress.gif) | ![Screenshot of 'shattered_pixel_dungeon_mage'](images/shattered_pixel_dungeon_mage.gif) | ![Screenshot of 'shattered_pixel_dungeon_rogue'](images/shattered_pixel_dungeon_rogue.gif) | ![Screenshot of 'shattered_pixel_dungeon_warrior'](images/shattered_pixel_dungeon_warrior.gif) - -## Simple Solitaire - -This is an Android implementation of -[Solitaire](https://en.wikipedia.org/wiki/Solitaire) card games. We currently -support 19 variants listed here in alphabetical order. Note that the full -task_IDs take the form `simple_solitaire_aces_up`, -`simple_solitaire_calculation` etc. See the original github repo for more info: -https://github.com/TobiasBielefeld/Simple-Solitaire.git. - -
- Extras returned - -* `card`: - - The new visible card `[kind, suit]`: - - kind: `a=ace, k=king, q=queen, j=jack, x=10, 2-9=digit`. - - suit: `c=clubs, d=diamonds, h=hearts, s=spades`. - - Returned when a card is moved. - - Has `shape=[2], dtype=STRING_U1`. -* `stack_i`: - - A non-empty stack of visible cards `[kind, suit]`. - - `i` different extras (`stack_0`, `stack_1`, `...`), one corresponding to - each stack. - - Returned when a card is moved. - - Has `shape=[52, 2], dtype=STRING_U1`. - -
- -**aces_up** | **calculation** | **canfield** | **forty_eight** | **freecell** --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------ -![Screenshot of 'simple_solitaire_aces_up'](images/simple_solitaire_aces_up.gif) | ![Screenshot of 'simple_solitaire_calculation'](images/simple_solitaire_calculation.gif) | ![Screenshot of 'simple_solitaire_canfield'](images/simple_solitaire_canfield.gif) | ![Screenshot of 'simple_solitaire_forty_eight'](images/simple_solitaire_forty_eight.gif) | ![Screenshot of 'simple_solitaire_freecell'](images/simple_solitaire_freecell.gif) - -**golf** | **grandfathers_clock** | **gypsy** | **klondike** | **maze** --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -------- -![Screenshot of 'simple_solitaire_golf'](images/simple_solitaire_golf.gif) | ![Screenshot of 'simple_solitaire_grandfathers_clock'](images/simple_solitaire_grandfathers_clock.gif) | ![Screenshot of 'simple_solitaire_gypsy'](images/simple_solitaire_gypsy.gif) | ![Screenshot of 'simple_solitaire_klondike'](images/simple_solitaire_klondike.gif) | ![Screenshot of 'simple_solitaire_maze'](images/simple_solitaire_maze.gif) - -**mod3** | **napoleons_tomb** | **pyramid** | **simple_simon** | **spider** --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ---------- -![Screenshot of 'simple_solitaire_mod3'](images/simple_solitaire_mod3.gif) | ![Screenshot of 'simple_solitaire_napoleons_tomb'](images/simple_solitaire_napoleons_tomb.gif) | ![Screenshot of 'simple_solitaire_pyramid'](images/simple_solitaire_pyramid.gif) | ![Screenshot of 'simple_solitaire_simple_simon'](images/simple_solitaire_simple_simon.gif) | ![Screenshot of 'simple_solitaire_spider'](images/simple_solitaire_spider.gif) - -**spiderette** | **tri_peaks** | **vegas** | **yukon** --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | --------- -![Screenshot of 'simple_solitaire_spiderette'](images/simple_solitaire_spiderette.gif) | ![Screenshot of 'simple_solitaire_tri_peaks'](images/simple_solitaire_tri_peaks.gif) | ![Screenshot of 'simple_solitaire_vegas'](images/simple_solitaire_vegas.gif) | ![Screenshot of 'simple_solitaire_yukon'](images/simple_solitaire_yukon.gif) - -## Snake - -Classic Snake game. - -
- Extras returned - -* `move`: - - The desired direction of movement: `0`=left, `1`=up, `2`=down, - `3`=right. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `direction`: - - The direction of the snake: `1`=north, `2`=south, `3`=east, `4`=west. - - Returned whenever the grid changes. - - Has `shape=[1], dtype=INT32`. -* `grid`: - - The grid cells: `x`=border, `' '`=empty, `s`=snake, `a`=apple. - - Returned whenever the grid changes. - - Has `shape=[13, 19], dtype=STRING_U1`. - -
- -![Screenshot of 'aosp_samples_snake_default'](images/aosp_samples_snake_default.gif) - -## Vector Pinball - -A simple vector-based Pinball game with realistic physics. See the original -github repo for more info: https://github.com/dozingcat/Vector-Pinball. - -
- Extras returned - Returns no extras. -
- -**vector_pinball_table_1** | **vector_pinball_table_2** | **vector_pinball_table_3** ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------- -![Screenshot of 'vector_pinball_table_1'](images/vector_pinball_table_1.gif) | ![Screenshot of 'vector_pinball_table_2'](images/vector_pinball_table_2.gif) | ![Screenshot of 'vector_pinball_table_3'](images/vector_pinball_table_3.gif) - -**vector_pinball_table_4** | **vector_pinball_table_5** ----------------------------------------------------------------------------- | -------------------------- -![Screenshot of 'vector_pinball_table_4'](images/vector_pinball_table_4.gif) | ![Screenshot of 'vector_pinball_table_5'](images/vector_pinball_table_5.gif) diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_0.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_0.png deleted file mode 100644 index 5cb11217..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_0.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_1.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_1.png deleted file mode 100644 index 50b4cf42..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_1.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_10.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_10.png deleted file mode 100644 index 497a04b5..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_10.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_2.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_2.png deleted file mode 100644 index c6189b32..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_2.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_3.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_3.png deleted file mode 100644 index b1fe7736..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_3.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_4.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_4.png deleted file mode 100644 index 94a5ca30..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_4.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_5.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_5.png deleted file mode 100644 index 4dee8686..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_5.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_6.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_6.png deleted file mode 100644 index 2a53effc..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_6.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_7.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_7.png deleted file mode 100644 index 42cf7c1e..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_7.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_8.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_8.png deleted file mode 100644 index 3d882f18..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_8.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/android_studio/android_studio_9.png b/android_env/g3doc/public/docs/images/android_studio/android_studio_9.png deleted file mode 100644 index 164375d5..00000000 Binary files a/android_env/g3doc/public/docs/images/android_studio/android_studio_9.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/aosp_samples_snake_default.gif b/android_env/g3doc/public/docs/images/aosp_samples_snake_default.gif deleted file mode 100644 index ac583ee8..00000000 Binary files a/android_env/g3doc/public/docs/images/aosp_samples_snake_default.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/apple_flinger_M_1_1.gif b/android_env/g3doc/public/docs/images/apple_flinger_M_1_1.gif deleted file mode 100644 index f4a5bd4f..00000000 Binary files a/android_env/g3doc/public/docs/images/apple_flinger_M_1_1.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/apple_flinger_M_1_18.gif b/android_env/g3doc/public/docs/images/apple_flinger_M_1_18.gif deleted file mode 100644 index 90c4bb9d..00000000 Binary files a/android_env/g3doc/public/docs/images/apple_flinger_M_1_18.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/apple_flinger_M_1_2.gif b/android_env/g3doc/public/docs/images/apple_flinger_M_1_2.gif deleted file mode 100644 index 876f8adb..00000000 Binary files a/android_env/g3doc/public/docs/images/apple_flinger_M_1_2.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/apple_flinger_M_2_1.gif b/android_env/g3doc/public/docs/images/apple_flinger_M_2_1.gif deleted file mode 100644 index 476b9c97..00000000 Binary files a/android_env/g3doc/public/docs/images/apple_flinger_M_2_1.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/apple_flinger_M_2_18.gif b/android_env/g3doc/public/docs/images/apple_flinger_M_2_18.gif deleted file mode 100644 index 2a24318b..00000000 Binary files a/android_env/g3doc/public/docs/images/apple_flinger_M_2_18.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/apple_flinger_M_2_2.gif b/android_env/g3doc/public/docs/images/apple_flinger_M_2_2.gif deleted file mode 100644 index 3c381f6b..00000000 Binary files a/android_env/g3doc/public/docs/images/apple_flinger_M_2_2.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/blockinger.gif b/android_env/g3doc/public/docs/images/blockinger.gif deleted file mode 100644 index 1d33b60d..00000000 Binary files a/android_env/g3doc/public/docs/images/blockinger.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/blockinger_lines.gif b/android_env/g3doc/public/docs/images/blockinger_lines.gif deleted file mode 100644 index 7cfccda7..00000000 Binary files a/android_env/g3doc/public/docs/images/blockinger_lines.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/blockinger_lines_and_squares.gif b/android_env/g3doc/public/docs/images/blockinger_lines_and_squares.gif deleted file mode 100644 index 19bd922f..00000000 Binary files a/android_env/g3doc/public/docs/images/blockinger_lines_and_squares.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/blockinger_squares.gif b/android_env/g3doc/public/docs/images/blockinger_squares.gif deleted file mode 100644 index d52b52fb..00000000 Binary files a/android_env/g3doc/public/docs/images/blockinger_squares.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/catch_the_ball_default.gif b/android_env/g3doc/public/docs/images/catch_the_ball_default.gif deleted file mode 100644 index fcecd3ce..00000000 Binary files a/android_env/g3doc/public/docs/images/catch_the_ball_default.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/catch_the_ball_drag.gif b/android_env/g3doc/public/docs/images/catch_the_ball_drag.gif deleted file mode 100644 index 32ff1c02..00000000 Binary files a/android_env/g3doc/public/docs/images/catch_the_ball_drag.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/catch_the_ball_fling.gif b/android_env/g3doc/public/docs/images/catch_the_ball_fling.gif deleted file mode 100644 index 0c912818..00000000 Binary files a/android_env/g3doc/public/docs/images/catch_the_ball_fling.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/catch_the_ball_raw.gif b/android_env/g3doc/public/docs/images/catch_the_ball_raw.gif deleted file mode 100644 index 08d9a2ce..00000000 Binary files a/android_env/g3doc/public/docs/images/catch_the_ball_raw.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/catch_the_ball_tap.gif b/android_env/g3doc/public/docs/images/catch_the_ball_tap.gif deleted file mode 100644 index 01b8b55d..00000000 Binary files a/android_env/g3doc/public/docs/images/catch_the_ball_tap.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/classic_2048.gif b/android_env/g3doc/public/docs/images/classic_2048.gif deleted file mode 100644 index 8792c775..00000000 Binary files a/android_env/g3doc/public/docs/images/classic_2048.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/device_control.gif b/android_env/g3doc/public/docs/images/device_control.gif deleted file mode 100644 index 249a957d..00000000 Binary files a/android_env/g3doc/public/docs/images/device_control.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/dodge_default.gif b/android_env/g3doc/public/docs/images/dodge_default.gif deleted file mode 100644 index d6c12b20..00000000 Binary files a/android_env/g3doc/public/docs/images/dodge_default.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/download.png b/android_env/g3doc/public/docs/images/download.png deleted file mode 100644 index c3fe2a9e..00000000 Binary files a/android_env/g3doc/public/docs/images/download.png and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_black_1.gif b/android_env/g3doc/public/docs/images/droidfish_black_1.gif deleted file mode 100644 index d2420554..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_black_1.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_black_10.gif b/android_env/g3doc/public/docs/images/droidfish_black_10.gif deleted file mode 100644 index 948d36a2..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_black_10.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_black_100.gif b/android_env/g3doc/public/docs/images/droidfish_black_100.gif deleted file mode 100644 index 7517abd2..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_black_100.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_random_1.gif b/android_env/g3doc/public/docs/images/droidfish_random_1.gif deleted file mode 100644 index 0ee0b69d..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_random_1.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_random_10.gif b/android_env/g3doc/public/docs/images/droidfish_random_10.gif deleted file mode 100644 index 4916c7f9..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_random_10.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_random_100.gif b/android_env/g3doc/public/docs/images/droidfish_random_100.gif deleted file mode 100644 index c6135f24..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_random_100.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_white_1.gif b/android_env/g3doc/public/docs/images/droidfish_white_1.gif deleted file mode 100644 index f7a3fa22..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_white_1.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_white_10.gif b/android_env/g3doc/public/docs/images/droidfish_white_10.gif deleted file mode 100644 index c9943844..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_white_10.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/droidfish_white_100.gif b/android_env/g3doc/public/docs/images/droidfish_white_100.gif deleted file mode 100644 index 9c0dc3bf..00000000 Binary files a/android_env/g3doc/public/docs/images/droidfish_white_100.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/floodit_easy.gif b/android_env/g3doc/public/docs/images/floodit_easy.gif deleted file mode 100644 index 43a0cc35..00000000 Binary files a/android_env/g3doc/public/docs/images/floodit_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/floodit_hard.gif b/android_env/g3doc/public/docs/images/floodit_hard.gif deleted file mode 100644 index 27698b0f..00000000 Binary files a/android_env/g3doc/public/docs/images/floodit_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/floodit_medium.gif b/android_env/g3doc/public/docs/images/floodit_medium.gif deleted file mode 100644 index 931808a7..00000000 Binary files a/android_env/g3doc/public/docs/images/floodit_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/frozen_bubble.gif b/android_env/g3doc/public/docs/images/frozen_bubble.gif deleted file mode 100644 index 36d5e5db..00000000 Binary files a/android_env/g3doc/public/docs/images/frozen_bubble.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Double-Tap.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Double-Tap.gif deleted file mode 100644 index 9a305c3b..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Double-Tap.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Flick-Left.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Flick-Left.gif deleted file mode 100644 index f011e0c9..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Flick-Left.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Flick-Right.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Flick-Right.gif deleted file mode 100644 index 535e9383..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Flick-Right.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Horizontal-Scroll.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Horizontal-Scroll.gif deleted file mode 100644 index cbb7ae84..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Horizontal-Scroll.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Move.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Move.gif deleted file mode 100644 index 86ed78ec..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Move.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Tap.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Tap.gif deleted file mode 100644 index a19675e9..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Tap.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Touch-&-Hold.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Touch-&-Hold.gif deleted file mode 100644 index 8d95cfd4..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Touch-&-Hold.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/gestures/1-Finger-Vertical-Scroll.gif b/android_env/g3doc/public/docs/images/gestures/1-Finger-Vertical-Scroll.gif deleted file mode 100644 index 56bd3ad6..00000000 Binary files a/android_env/g3doc/public/docs/images/gestures/1-Finger-Vertical-Scroll.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/mdp_0000.gif b/android_env/g3doc/public/docs/images/mdp_0000.gif deleted file mode 100644 index 7a25c1da..00000000 Binary files a/android_env/g3doc/public/docs/images/mdp_0000.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/mdp_0001.gif b/android_env/g3doc/public/docs/images/mdp_0001.gif deleted file mode 100644 index 42c40e36..00000000 Binary files a/android_env/g3doc/public/docs/images/mdp_0001.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/mdp_0002.gif b/android_env/g3doc/public/docs/images/mdp_0002.gif deleted file mode 100644 index 62786c97..00000000 Binary files a/android_env/g3doc/public/docs/images/mdp_0002.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/mdp_0003.gif b/android_env/g3doc/public/docs/images/mdp_0003.gif deleted file mode 100644 index 33041e28..00000000 Binary files a/android_env/g3doc/public/docs/images/mdp_0003.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/mdp_flood_it.gif b/android_env/g3doc/public/docs/images/mdp_flood_it.gif deleted file mode 100644 index ba0a9fd7..00000000 Binary files a/android_env/g3doc/public/docs/images/mdp_flood_it.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/memory_game_animals_beginner.gif b/android_env/g3doc/public/docs/images/memory_game_animals_beginner.gif deleted file mode 100644 index 547e9e48..00000000 Binary files a/android_env/g3doc/public/docs/images/memory_game_animals_beginner.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/memory_game_animals_easy.gif b/android_env/g3doc/public/docs/images/memory_game_animals_easy.gif deleted file mode 100644 index 6f23086e..00000000 Binary files a/android_env/g3doc/public/docs/images/memory_game_animals_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/memory_game_emojis_hardest.gif b/android_env/g3doc/public/docs/images/memory_game_emojis_hardest.gif deleted file mode 100644 index fadf4b6b..00000000 Binary files a/android_env/g3doc/public/docs/images/memory_game_emojis_hardest.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/memory_game_emojis_master.gif b/android_env/g3doc/public/docs/images/memory_game_emojis_master.gif deleted file mode 100644 index b96c50be..00000000 Binary files a/android_env/g3doc/public/docs/images/memory_game_emojis_master.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/memory_game_monsters_hard.gif b/android_env/g3doc/public/docs/images/memory_game_monsters_hard.gif deleted file mode 100644 index c3798418..00000000 Binary files a/android_env/g3doc/public/docs/images/memory_game_monsters_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/memory_game_monsters_medium.gif b/android_env/g3doc/public/docs/images/memory_game_monsters_medium.gif deleted file mode 100644 index 6c2905fc..00000000 Binary files a/android_env/g3doc/public/docs/images/memory_game_monsters_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/minesweeper_easy.gif b/android_env/g3doc/public/docs/images/minesweeper_easy.gif deleted file mode 100644 index 0beeeabf..00000000 Binary files a/android_env/g3doc/public/docs/images/minesweeper_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/minesweeper_hard.gif b/android_env/g3doc/public/docs/images/minesweeper_hard.gif deleted file mode 100644 index 25d0df8b..00000000 Binary files a/android_env/g3doc/public/docs/images/minesweeper_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/minesweeper_medium.gif b/android_env/g3doc/public/docs/images/minesweeper_medium.gif deleted file mode 100644 index 6eb6808a..00000000 Binary files a/android_env/g3doc/public/docs/images/minesweeper_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/misc/components_chart.svg b/android_env/g3doc/public/docs/images/misc/components_chart.svg deleted file mode 100644 index c8da4c40..00000000 --- a/android_env/g3doc/public/docs/images/misc/components_chart.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/android_env/g3doc/public/docs/images/nostalgic_racer.gif b/android_env/g3doc/public/docs/images/nostalgic_racer.gif deleted file mode 100644 index 3eb7e627..00000000 Binary files a/android_env/g3doc/public/docs/images/nostalgic_racer.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/nostalgic_racer_2d.gif b/android_env/g3doc/public/docs/images/nostalgic_racer_2d.gif deleted file mode 100644 index 0de4dda3..00000000 Binary files a/android_env/g3doc/public/docs/images/nostalgic_racer_2d.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/open_sudoku_easy.gif b/android_env/g3doc/public/docs/images/open_sudoku_easy.gif deleted file mode 100644 index c3cec35d..00000000 Binary files a/android_env/g3doc/public/docs/images/open_sudoku_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/open_sudoku_hard.gif b/android_env/g3doc/public/docs/images/open_sudoku_hard.gif deleted file mode 100644 index 41ac56fd..00000000 Binary files a/android_env/g3doc/public/docs/images/open_sudoku_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/open_sudoku_medium.gif b/android_env/g3doc/public/docs/images/open_sudoku_medium.gif deleted file mode 100644 index aa3eca3f..00000000 Binary files a/android_env/g3doc/public/docs/images/open_sudoku_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_1_circle_static.gif b/android_env/g3doc/public/docs/images/perfection_1_circle_static.gif deleted file mode 100644 index 202df693..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_1_circle_static.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_1_plus_static.gif b/android_env/g3doc/public/docs/images/perfection_1_plus_static.gif deleted file mode 100644 index 9bdaf72b..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_1_plus_static.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_1_random_static.gif b/android_env/g3doc/public/docs/images/perfection_1_random_static.gif deleted file mode 100644 index d1f10af8..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_1_random_static.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_1_square_static.gif b/android_env/g3doc/public/docs/images/perfection_1_square_static.gif deleted file mode 100644 index 2ea02b60..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_1_square_static.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_1_triangle_static.gif b/android_env/g3doc/public/docs/images/perfection_1_triangle_static.gif deleted file mode 100644 index 656f2618..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_1_triangle_static.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_4_colors_square_static.gif b/android_env/g3doc/public/docs/images/perfection_4_colors_square_static.gif deleted file mode 100644 index cd53f1e2..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_4_colors_square_static.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_4_pieces_static.gif b/android_env/g3doc/public/docs/images/perfection_4_pieces_static.gif deleted file mode 100644 index c4701367..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_4_pieces_static.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/perfection_default.gif b/android_env/g3doc/public/docs/images/perfection_default.gif deleted file mode 100644 index 47bbb3ae..00000000 Binary files a/android_env/g3doc/public/docs/images/perfection_default.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/pong_default.gif b/android_env/g3doc/public/docs/images/pong_default.gif deleted file mode 100644 index 9f272636..00000000 Binary files a/android_env/g3doc/public/docs/images/pong_default.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/pong_easy.gif b/android_env/g3doc/public/docs/images/pong_easy.gif deleted file mode 100644 index 3e33d6a6..00000000 Binary files a/android_env/g3doc/public/docs/images/pong_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/pong_hard.gif b/android_env/g3doc/public/docs/images/pong_hard.gif deleted file mode 100644 index 67535e21..00000000 Binary files a/android_env/g3doc/public/docs/images/pong_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/rocket_sleigh.gif b/android_env/g3doc/public/docs/images/rocket_sleigh.gif deleted file mode 100644 index 9de4e78d..00000000 Binary files a/android_env/g3doc/public/docs/images/rocket_sleigh.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_10x10_5_balls.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_10x10_5_balls.gif deleted file mode 100644 index b91ece05..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_10x10_5_balls.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_3x3_1_ball.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_3x3_1_ball.gif deleted file mode 100644 index 559108f8..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_3x3_1_ball.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_5x5_3_balls.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_5x5_3_balls.gif deleted file mode 100644 index 20726213..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_5x5_3_balls.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_8x8_5_balls.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_8x8_5_balls.gif deleted file mode 100644 index 52d7dd10..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_blackbox_8x8_5_balls.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_10x10_medium.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_10x10_medium.gif deleted file mode 100644 index 961c1438..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_10x10_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_15x15_medium.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_15x15_medium.gif deleted file mode 100644 index 940888ec..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_15x15_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_easy.gif deleted file mode 100644 index 1e79360d..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_hard.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_hard.gif deleted file mode 100644 index 5d936089..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_medium.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_medium.gif deleted file mode 100644 index 617813aa..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_bridge_7x7_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_cube.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_cube.gif deleted file mode 100644 index 93f0899e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_cube.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c3x3.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c3x3.gif deleted file mode 100644 index a768f53a..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c3x3.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c4x4.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c4x4.gif deleted file mode 100644 index 555677d4..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c4x4.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c8x8.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c8x8.gif deleted file mode 100644 index 9c836340..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_cube_c8x8.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_1.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_1.gif deleted file mode 100644 index 6936fde9..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_1.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_3.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_3.gif deleted file mode 100644 index 23b4a475..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_3.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_3a.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_3a.gif deleted file mode 100644 index 567035a3..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_3a.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_6.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_6.gif deleted file mode 100644 index d9a890f3..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_6.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_9.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_9.gif deleted file mode 100644 index 6e630b8c..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_dominosa_9.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_2x2.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_2x2.gif deleted file mode 100644 index 6048c967..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_2x2.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_3x3.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_3x3.gif deleted file mode 100644 index 222c9abc..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_3x3.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_4x4.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_4x4.gif deleted file mode 100644 index 1ae0d2f4..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_4x4.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_6x6.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_6x6.gif deleted file mode 100644 index be364a6f..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_fifteen_6x6.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_flip_3x3c.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_flip_3x3c.gif deleted file mode 100644 index efc713f6..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_flip_3x3c.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_flip_4x4c.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_flip_4x4c.gif deleted file mode 100644 index 03bf281d..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_flip_4x4c.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_flip_5x5r.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_flip_5x5r.gif deleted file mode 100644 index 3970167a..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_flip_5x5r.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_flood_12x12_medium.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_flood_12x12_medium.gif deleted file mode 100644 index 858f640e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_flood_12x12_medium.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_flood_16x16_hard.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_flood_16x16_hard.gif deleted file mode 100644 index 0c545315..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_flood_16x16_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_flood_3x3_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_flood_3x3_easy.gif deleted file mode 100644 index ccd96c23..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_flood_3x3_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_10x10_normal.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_10x10_normal.gif deleted file mode 100644 index a621b503..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_10x10_normal.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_15x15_normal.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_15x15_normal.gif deleted file mode 100644 index 723b9c9e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_15x15_normal.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_3x3_normal.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_3x3_normal.gif deleted file mode 100644 index 3900aa93..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_3x3_normal.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_5x5_normal.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_5x5_normal.gif deleted file mode 100644 index c1b253ab..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_5x5_normal.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_7x7_normal.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_7x7_normal.gif deleted file mode 100644 index 8e65e26c..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_7x7_normal.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_7x7_unreasonable.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_7x7_unreasonable.gif deleted file mode 100644 index ca043e0f..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_galaxies_7x7_unreasonable.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_basic.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_guess_basic.gif deleted file mode 100644 index 2425a6eb..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_basic.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_quick.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_guess_quick.gif deleted file mode 100644 index ab5e2f23..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_quick.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_standard.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_guess_standard.gif deleted file mode 100644 index 7f97aa8f..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_standard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_super.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_guess_super.gif deleted file mode 100644 index b25d95cc..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_guess_super.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_inertia_10x10.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_inertia_10x10.gif deleted file mode 100644 index 9883041d..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_inertia_10x10.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_inertia_5x5.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_inertia_5x5.gif deleted file mode 100644 index 155e6b2e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_inertia_5x5.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_10x10_tricky.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_10x10_tricky.gif deleted file mode 100644 index 9771b7e3..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_10x10_tricky.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_14x14_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_14x14_easy.gif deleted file mode 100644 index 5baf3676..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_14x14_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_3x3_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_3x3_easy.gif deleted file mode 100644 index fcacf20d..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_3x3_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_5x5_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_5x5_easy.gif deleted file mode 100644 index 599f895e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_5x5_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_7x7_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_7x7_easy.gif deleted file mode 100644 index 1b8dd85e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_light_up_7x7_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_3x3_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_3x3_easy.gif deleted file mode 100644 index 5f31bd3e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_3x3_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_5x5_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_5x5_easy.gif deleted file mode 100644 index 3262482a..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_5x5_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_easy.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_easy.gif deleted file mode 100644 index 10fa957d..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_easy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_hard.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_hard.gif deleted file mode 100644 index b7a4e03c..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_hard.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_normal.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_normal.gif deleted file mode 100644 index 8e3e7b85..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_loopy_7x7_normal.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_net_11x11w.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_net_11x11w.gif deleted file mode 100644 index cf0dbc6f..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_net_11x11w.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_net_3x3.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_net_3x3.gif deleted file mode 100644 index 5b8a290e..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_net_3x3.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_net_5x5.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_net_5x5.gif deleted file mode 100644 index f1e2801b..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_net_5x5.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_net_7x7w.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_net_7x7w.gif deleted file mode 100644 index eb31e8a6..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_net_7x7w.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/sgtpuzzles_net_9x9.gif b/android_env/g3doc/public/docs/images/sgtpuzzles_net_9x9.gif deleted file mode 100644 index 39f13ffe..00000000 Binary files a/android_env/g3doc/public/docs/images/sgtpuzzles_net_9x9.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_huntress.gif b/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_huntress.gif deleted file mode 100644 index aa579b82..00000000 Binary files a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_huntress.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_mage.gif b/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_mage.gif deleted file mode 100644 index 532e7d38..00000000 Binary files a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_mage.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_rogue.gif b/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_rogue.gif deleted file mode 100644 index 22d853ee..00000000 Binary files a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_rogue.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_warrior.gif b/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_warrior.gif deleted file mode 100644 index 8b08c4dc..00000000 Binary files a/android_env/g3doc/public/docs/images/shattered_pixel_dungeon_warrior.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_aces_up.gif b/android_env/g3doc/public/docs/images/simple_solitaire_aces_up.gif deleted file mode 100644 index 823ad697..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_aces_up.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_calculation.gif b/android_env/g3doc/public/docs/images/simple_solitaire_calculation.gif deleted file mode 100644 index 7b7cacd8..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_calculation.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_canfield.gif b/android_env/g3doc/public/docs/images/simple_solitaire_canfield.gif deleted file mode 100644 index 72516764..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_canfield.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_forty_eight.gif b/android_env/g3doc/public/docs/images/simple_solitaire_forty_eight.gif deleted file mode 100644 index 63582460..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_forty_eight.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_freecell.gif b/android_env/g3doc/public/docs/images/simple_solitaire_freecell.gif deleted file mode 100644 index 039d5b55..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_freecell.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_golf.gif b/android_env/g3doc/public/docs/images/simple_solitaire_golf.gif deleted file mode 100644 index 7db3f43c..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_golf.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_grandfathers_clock.gif b/android_env/g3doc/public/docs/images/simple_solitaire_grandfathers_clock.gif deleted file mode 100644 index f08dd640..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_grandfathers_clock.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_gypsy.gif b/android_env/g3doc/public/docs/images/simple_solitaire_gypsy.gif deleted file mode 100644 index 05784df7..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_gypsy.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_klondike.gif b/android_env/g3doc/public/docs/images/simple_solitaire_klondike.gif deleted file mode 100644 index d91f778d..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_klondike.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_maze.gif b/android_env/g3doc/public/docs/images/simple_solitaire_maze.gif deleted file mode 100644 index 646a7a74..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_maze.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_mod3.gif b/android_env/g3doc/public/docs/images/simple_solitaire_mod3.gif deleted file mode 100644 index ee1ff77a..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_mod3.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_napoleons_tomb.gif b/android_env/g3doc/public/docs/images/simple_solitaire_napoleons_tomb.gif deleted file mode 100644 index 08419211..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_napoleons_tomb.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_pyramid.gif b/android_env/g3doc/public/docs/images/simple_solitaire_pyramid.gif deleted file mode 100644 index c2864e4f..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_pyramid.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_simple_simon.gif b/android_env/g3doc/public/docs/images/simple_solitaire_simple_simon.gif deleted file mode 100644 index f62bc07c..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_simple_simon.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_spider.gif b/android_env/g3doc/public/docs/images/simple_solitaire_spider.gif deleted file mode 100644 index c1575eba..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_spider.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_spiderette.gif b/android_env/g3doc/public/docs/images/simple_solitaire_spiderette.gif deleted file mode 100644 index 4ed47fb9..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_spiderette.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_tri_peaks.gif b/android_env/g3doc/public/docs/images/simple_solitaire_tri_peaks.gif deleted file mode 100644 index 5a708dc6..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_tri_peaks.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_vegas.gif b/android_env/g3doc/public/docs/images/simple_solitaire_vegas.gif deleted file mode 100644 index d1423040..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_vegas.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/simple_solitaire_yukon.gif b/android_env/g3doc/public/docs/images/simple_solitaire_yukon.gif deleted file mode 100644 index 834b6911..00000000 Binary files a/android_env/g3doc/public/docs/images/simple_solitaire_yukon.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/systemui_egg_land_default.gif b/android_env/g3doc/public/docs/images/systemui_egg_land_default.gif deleted file mode 100644 index ffc9e460..00000000 Binary files a/android_env/g3doc/public/docs/images/systemui_egg_land_default.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/systemui_egg_land_half_speed.gif b/android_env/g3doc/public/docs/images/systemui_egg_land_half_speed.gif deleted file mode 100644 index 35470729..00000000 Binary files a/android_env/g3doc/public/docs/images/systemui_egg_land_half_speed.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/vector_pinball_table_1.gif b/android_env/g3doc/public/docs/images/vector_pinball_table_1.gif deleted file mode 100644 index a2cc9b4d..00000000 Binary files a/android_env/g3doc/public/docs/images/vector_pinball_table_1.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/vector_pinball_table_2.gif b/android_env/g3doc/public/docs/images/vector_pinball_table_2.gif deleted file mode 100644 index f4aafadf..00000000 Binary files a/android_env/g3doc/public/docs/images/vector_pinball_table_2.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/vector_pinball_table_3.gif b/android_env/g3doc/public/docs/images/vector_pinball_table_3.gif deleted file mode 100644 index 7058e020..00000000 Binary files a/android_env/g3doc/public/docs/images/vector_pinball_table_3.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/vector_pinball_table_4.gif b/android_env/g3doc/public/docs/images/vector_pinball_table_4.gif deleted file mode 100644 index 62e22a80..00000000 Binary files a/android_env/g3doc/public/docs/images/vector_pinball_table_4.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/images/vector_pinball_table_5.gif b/android_env/g3doc/public/docs/images/vector_pinball_table_5.gif deleted file mode 100644 index 4a6b44a6..00000000 Binary files a/android_env/g3doc/public/docs/images/vector_pinball_table_5.gif and /dev/null differ diff --git a/android_env/g3doc/public/docs/instructions.md b/android_env/g3doc/public/docs/instructions.md deleted file mode 100644 index a84354e7..00000000 --- a/android_env/g3doc/public/docs/instructions.md +++ /dev/null @@ -1,115 +0,0 @@ -# AndroidEnv - Running the environment - -In order to create an AndroidEnv instance you will need to provide two main -components: a [simulator](#the-simulator) and a [task](#the-task). In the -following sections you will learn how you can create them. - -### The simulator - -First, you will need to provide your Android virtual device (AVD) that the -environment (and through it, the agent) can communicate with. While this can -also be a physical device, in most cases you will need a virtual emulated -device. There are many ways to emulate an AVD - in our examples, we will use -[Android Studio](https://developer.android.com/studio) to create one. - -1. In Android Studio, create a virtual device by following this step-by-step - [guide](emulator_guide.md). -2. Follow the steps below to attach the AVD to your environment. - -### The task and examples with games and other apps - -A `task` is a particular definition of an RL problem that the agent will be -interacting with. A `task` may include critical RL information, such as what the -rewards are, when the episodes are supposed to terminate, and what the reset -procedures are that the environment should perform upon episode termination -(e.g. start or relaunch an app, clear cache, etc.). This information is packaged -into a `Task()` proto message, which gets passed passed to AndroidEnv. - -* For ready-made example tasks provided with AndroidEnv, check out the - [Available tasks](example_tasks.md), featuring Vokram (with Markov Decision - Process (MDP)), Pong, DroidFish (a chess clone), Blockinger (a tetris - clone), and more. - -* See the [Tasks guide](tasks_guide.md) for details on features and - capabilities of tasks, as well as how to create custom ones. - -### Create the environment - -After setting up the simulator and creating a task, you may find the -[`loader.load()`](https://github.com/deepmind/android_env/blob/main/android_env/loader.py) -function handy for creating an environment instance by providing relevant -arguments, such as: - -* `task_path`: the path pointing to the `.textproto` file describing the - desired task. -* `avd_name`: the name of the AVD specified when your created it in Android - Studio. -* `android_avd_home` (Optional): the path to where the AVD is installed. - (default value: `~/.android/avd`). -* `android_sdk_root` (Optional): the root directory of the Android SDK. - (default value: `~/Android/Sdk`). -* `emulator_path` (Optional): the path to the emulator binary. (default: - `~/Android/Sdk/emulator/emulator`). -* `adb_path` (Optional): the path to the ADB - ([Android Debug Bridge](https://developer.android.com/studio/command-line/adb)). - (default value: `~/Android/Sdk/platform-tools/adb`). - -For the AVD name and path, in Android Studio, go to **Tools** > **AVD Manager**, -right click on your virtual device, and select **View Details**, where you will -find the `avd_name` and its path. - -For the Android SDK location, in Android Studio, go to **Preferences** > -**Appearance & Behavior** > **System Settings** > **Android SDKs** and note the -_Android SDK Location_. In the SDK folder, you will find `/emulator/emulator` as -well as the ADB path (`/platform-tools/adb`). - -Your example configuration may look like this, depending on how you set up your -emulator: - -```python -from android_env import loader - -env = loader.load( - avd_name='my_avd', - android_avd_home='/Users/username/.android/avd', - android_sdk_root='/Users/username/Library/Android/sdk', - emulator_path='/Users/username/Library/Android/sdk/emulator/emulator', - adb_path='/Users/username/Library/Android/sdk/platform-tools/adb', - task_path='/Users/username/android_env/my_tasks/my_task.textproto', -) -``` - -## Example RL agent scripts - -The `examples` directory contains a few simple example agent setups, such as: - -* [`run_random_agent.py`](https://github.com/deepmind/android_env/blob/main/examples/run_random_agent.py): - Runs a simple loop performing randomly selected actions in the environment. -* [`run_acme_agent.py`](https://github.com/deepmind/android_env/blob/main/examples/run_acme_agent.py): - Runs a training loop with an - [Acme](https://deepmind.com/research/publications/Acme) DQN agent, - implemented in the popular DeepMind RL framework. This will require to - install the [`acme`](https://github.com/deepmind/acme) dependency. -* [`run_human_agent.py`](https://github.com/deepmind/android_env/blob/main/examples/run_human_agent.py): - Creates a [`pygame`](https://www.pygame.org) instance that lets a human user - interact with the environment and observe environment mechanics, such as - rewards or task extras. You will need to install the [PyGame] dependency. - -For instance, here is how you can run -[`run_random_agent.py`](https://github.com/8bitmp3/android_env/blob/main/examples/run_random_agent.py) -in a folder where you have your APK file, such as -[Apple Flinger](https://github.com/deepmind/android_env/blob/main/docs/example_tasks.md#apple-flinger) -from -[Example tasks](https://github.com/deepmind/android_env/blob/main/docs/example_tasks.md). -(The downloaded TAR file contains the APK file and `.textproto` definitions.) - -```shell -python3 run_random_agent.py \ ---avd_name='my_avd' \ ---android_avd_home=/Users/username/.android/avd \ ---android_sdk_root=/Users/username/Library/Android/sdk \ ---emulator_path=/Users/username/Library/Android/sdk/emulator/emulator \ ---adb_path=/Users/username/Library/Android/sdk/platform-tools/adb \ ---num_steps=1000 \ ---task_path=/Users/username//apple_flinger_M_1_1.textproto -``` diff --git a/android_env/g3doc/public/docs/tasks_guide.md b/android_env/g3doc/public/docs/tasks_guide.md deleted file mode 100644 index 0cb13bde..00000000 --- a/android_env/g3doc/public/docs/tasks_guide.md +++ /dev/null @@ -1,216 +0,0 @@ -# AndroidEnv - Tasks - -With AndroidEnv we provide a mechanism for easily defining RL tasks for the -agent to learn. This includes various types of information such as what app/game -it should train on, what rewards the environment returns, or the start state -distribution and the episode end criteria. - -## Task structure - -A *task* definition is captured in the form of a `Task()` proto message. These -are most easily created by writing a `.textproto` file, then parsing it into a -proto message. In this section you can find a detailed description about the -types of information that make up a task, and an example demonstrating exactly -how to put these into code. - -
- Expand this tab to view the main types of information captured in these messages: - -* `id`: An ID used to identify the task. - -* `setup_steps`: These are steps the environment will perform right after - launching the simulator. Possible steps include: - - * `install_apk`: Installs an application from a specified path to the APK - file. - * `start_activity`: Launches the requested app/activity. - * `rotate`: Sets the orientation of the device (landscape/portrait). - -* `reset_steps`: These are steps the environment will perform right at the - beginning of a new RL episode. Possible steps include: - - * `force_stop`: Stops a given app. - * `start_activity`: Launches the requested app/activity. - * `start_screen_pinning`: Restricts the agent's interaction to a - particular activity through - [screen pinning](https://support.google.com/android/answer/9455138?hl=en), - meaning the agent will not be able to quit the given app. - * `clear_cache`: Clears the cache of a given app. - -* `success_conditions`: For each success condition defined, the environment - will make sure that these conditions were met after finishing `setup_steps` - and `reset_steps`. They might include conditions such as: - - * `check_install`: Makes sure that the request app was successfully - installed. - * `wait_for_app_screen`: Waits until the request app was successfully - launched. - -* `expected_app_screen`: If this value is set to a particular activity, the - environment will periodically check if the agent is still interacting with - said activity, making sure it has not accidentally quit the application we - want it to be training on. - -* `max_episode_sec`: Puts a time limit on the episodes, triggering an episode - reset if the current episode has lasted too long. - -* `max_duration_steps`: Puts a step limit on the episodes, triggering an - episode reset once the agent has reached the specified limit. - -* `log_parsing_config`: If the environment is parsing logcat messages, this - field will determine what information it should listen for using regular - expressions. - - * `filters`: The environment filters log messages for these labels which - signify that such messages were meant to be parsed by AndroidEnv. - * `log_regexps`: Once a log message was identified as relevant using the - filters, the environment parses its contents using these regular - expressions. For example, an application might be sending log messages - of the form `reward: 1.0`, then the task will capture this info using - the regexp `^[Rr]eward: ([-+]?[0-9]*\\.?[0-9]*)$`. - -
- -
- Expand this tab to see what an example `.textproto` file might look like in practice: - -```python -id: "classic_2048" -name: "Classic 2048 - Default" -description: "Slide numbered tiles on a grid to combine them to create a tile with the number 2048" -package_name: "com.tpcstld.twozerogame" -full_activity_name: "com.tpcstld.twozerogame/com.tpcstld.twozerogame.MainActivity" - -# Perform these upon launching the environment -setup_steps: [ - { - # Install the 2048 app - adb_call: { - install_apk: { - filesystem: { - path: path/to/classic_2048.apk - } - } - } - # Check if it was installed correctly - success_condition: { - check_install: { - package_name: "com.tpcstld.twozerogame" - timeout_sec: 10.0 - } - } - }, - # Orient the screen in portait mode - { adb_call: { rotate: { orientation: PORTRAIT_0 } } } -] - -# Perform these upon episode resets -reset_steps: [ - - # Stop the 2048 app - { adb_call: { force_stop: { package_name: "com.tpcstld.twozerogame" } } }, - { adb_call: { clear_cache: { package_name: "com.tpcstld.twozerogame" } } }, - - # Start the 2048 app - { - adb_call: { - start_activity: { - full_activity: "com.tpcstld.twozerogame/com.tpcstld.twozerogame.MainActivity" - extra_args: [ - "--ez", '"RL_TASK_ENABLED"', '"true"', - "--es", '"RL_TASK_GAME_CONFIG"', '"{}"' - ] - } - } - - # Wait until the app has launched successfully - success_condition: { - wait_for_app_screen: { - app_screen: { - activity: "com.tpcstld.twozerogame/com.tpcstld.twozerogame.MainActivity" - view_hierarchy_path: [ - ] - } - timeout_sec: 10.0 - } - num_retries: 10 - } - }, - - # Make sure the agent cannot quit the 2048 app - { - adb_call: { - start_screen_pinning: { - full_activity: "com.tpcstld.twozerogame/com.tpcstld.twozerogame.MainActivity" - } - } - } -] - -# Periodically check if the agent has accidentally quit the app -expected_app_screen: { - activity: "com.tpcstld.twozerogame/com.tpcstld.twozerogame.MainActivity" - view_hierarchy_path: [] -} - -max_episode_steps: 500 - -# Capture expected format of log messages -log_parsing_config: { - filters: ["AndroidRLTask:V"] - log_regexps: { - score: "^[Ss]core: ([-+]?[0-9]*\\.?[0-9]*)$" - reward: "^[Rr]eward: ([-+]?[0-9]*\\.?[0-9]*)$" - episode_end: "^episode[ _]end$" - extra: "^extra: (?P[^ ]*)[ ]?(?P.*)$" - json_extra: "^json_extra: (?P.*)$" - } -} -``` - -
- -## Log messages and custom APKs - -You might have noticed that tasks often rely on log messages exposed by the -Android system, which AndroidEnv can intercept and translate into items such as -rewards, episode end signals or task extras. - -One way to define rewards is by using -`log_parsing_config.LogRegexps.RewardEvent` messages in the task proto. These -consist of a regular expression and a numeric value indicating the intended -reward. If the regexp is matched in any of the lines of the logcat stream, the -agent will receive the given reward. It is also possible to have multiple of -these RewardEvents, allowing us to give rewards for different log messages. The -same applies for episode end signals: logcat messages that match the regexps -defined in `log_parsing_config.LogRegexps.episode_end` will trigger an episode -reset. - -Of course, applications might not send suitable messages by default, so in order -to have access to such messages, we often add them to the apps' source code to -match our expectations. For example, in the case of the 2048 app, we find in the -game's source code the exact lines where the score is computed, and add a line -to log this value in the format that is expected by the textproto (or -conversely, make sure the textproto matches the format you specified here). For -example: - -```java -// Make sure thet LOG_FILTER matches 'filters' in the textproto -public static final String LOG_FILTER = "AndroidRLTask"; - -// Make sure that the corresponding part of 'log_regexps' will match this string -Log.i(LOG_FILTER, String.format(Locale.ENGLISH, "reward: %r", reward_value)) -``` - -You can take a look at example APKs extended with log messages in the example -tasks (see the section below). - -## Example tasks - -Along with the environment implementation we provide a set of example task -definitions. These were chosen so that they would demonstrate the large variety -of different challenges (e.g. app navigtion, puzzle games, time-reactive games, -adventure games, card games...) and corresponding interfaces (e.g. button -pressing, swiping, drag-and-drop...) available in AndroidEnv. You can find a -list and detailed description of each of these tasks in -[example_tasks.md](example_tasks.md).