{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "√√√√√Enviroment Initialized Success√√√√√\n",
      "√√√√√Buffer Initialized Success√√√√√\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "import aimBotEnv\n",
    "from GAILMem import GAILMem\n",
    "from HumanAction import HumanActions\n",
    "\n",
    "# Env\n",
    "ENV_PATH = \"./Build-CloseEnemyCut/Aimbot-PPO\"\n",
    "WORKER_ID = 1\n",
    "BASE_PORT = 200\n",
    "\n",
    "# ENV Para\n",
    "MOUSEDISCOUNT = 20.0\n",
    "MAX_EP = 10000000\n",
    "STACKSTATESIZE = 3\n",
    "STACKINTERCE = 29\n",
    "\n",
    "env = aimBotEnv.makeEnv(\n",
    "    envPath=ENV_PATH,\n",
    "    workerID=WORKER_ID,\n",
    "    basePort=BASE_PORT,\n",
    "    stackSize=STACKSTATESIZE,\n",
    "    stackIntercal=STACKINTERCE,\n",
    ")\n",
    "demoMem = GAILMem()\n",
    "demoAct = HumanActions(mouseDiscount=MOUSEDISCOUNT)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EP Start\n",
      "EP Start\n",
      "EP Start\n",
      "nowMemNum 743\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-PPO\\Aimbot-PPO-Python\\GAILMem.py:33: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n",
      "  actionsNP = np.asarray(self.actions)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "nowMemNum 993\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 1199\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 1426\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 1671\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 1890\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 2097\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 2307\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 2510\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 2710\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 2889\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 3079\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 3263\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 3506\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 3764\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 3982\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 4155\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 4338\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 4530\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 4749\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 4979\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 5159\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 5358\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 5641\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 5887\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 6085\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 6312\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 6471\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 6691\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 6885\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 7086\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 7248\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 7437\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 7608\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 7788\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 8020\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 8193\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 8447\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 8675\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 8869\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 9046\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 9260\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 9469\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 9633\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 9802\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 10019\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 10205\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 10387\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 10657\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 10834\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 11071\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 11284\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 11516\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 11735\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 11948\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 12157\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 12330\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 12565\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 12768\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 12944\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 13129\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 13292\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 13590\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 13765\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 13921\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 14083\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 14254\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 14445\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 14662\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 14833\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 15056\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 15258\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 15425\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 15590\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 15829\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 16057\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 16237\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 16411\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 16612\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 16812\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 17001\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 17173\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 17342\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 17515\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 17715\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 17890\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 18072\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 18261\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 18489\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 18701\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 18886\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 19100\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 19318\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 19487\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 19670\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 19881\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 20041\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 20279\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 20491\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 20679\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 20877\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 21070\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 21305\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 21519\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 21760\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 21936\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 22135\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 22304\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 22512\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 22706\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 22882\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 23123\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 23290\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 23453\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 23707\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 23942\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 24153\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 24346\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 24573\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 24757\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n",
      "nowMemNum 24957\n",
      "lastMemCheckPoint 1\n",
      "mem_saved\n",
      "EP Start\n"
     ]
    },
    {
     "ename": "UnityCommunicatorStoppedException",
     "evalue": "Communicator has exited.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mUnityCommunicatorStoppedException\u001b[0m         Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_19308/2258777724.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      7\u001b[0m     \u001b[1;32mwhile\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mdone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m         \u001b[0mactions\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdemoAct\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetHumanActions\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m         \u001b[0mnextState\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mactions\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mactions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     10\u001b[0m         \u001b[0mdemoMem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msaveMems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstate\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mstate\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mactorProb\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maction\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mactions\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreward\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdone\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     11\u001b[0m         \u001b[0mstate\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnextState\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-PPO\\Aimbot-PPO-Python\\aimBotEnv.py\u001b[0m in \u001b[0;36mstep\u001b[1;34m(self, actions, behaviorName, trackedAgent)\u001b[0m\n\u001b[0;32m     86\u001b[0m         \u001b[1;31m# take action to env\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     87\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_actions\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbehavior_name\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbehaviorName\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maction\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mthisActionTuple\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 88\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     89\u001b[0m         \u001b[1;31m# get nextState & reward & done after this action\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     90\u001b[0m         \u001b[0mnextState\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreward\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mloadDir\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msaveNow\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetSteps\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbehaviorName\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtrackedAgent\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\Users\\UCUNI\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\mlagents_envs\\timers.py\u001b[0m in \u001b[0;36mwrapped\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    303\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    304\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0mhierarchical_timer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__qualname__\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 305\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    306\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    307\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m  \u001b[1;31m# type: ignore\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\Users\\UCUNI\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\mlagents_envs\\environment.py\u001b[0m in \u001b[0;36mstep\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    333\u001b[0m             \u001b[0moutputs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_communicator\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexchange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstep_input\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_poll_process\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    334\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0moutputs\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 335\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0mUnityCommunicatorStoppedException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Communicator has exited.\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    336\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_update_behavior_specs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutputs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    337\u001b[0m         \u001b[0mrl_output\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0moutputs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrl_output\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mUnityCommunicatorStoppedException\u001b[0m: Communicator has exited."
     ]
    }
   ],
   "source": [
    "gailExpertDataDir = \"GAIL-Expert-Data/\"\n",
    "state, _, _, _, _ = env.reset()\n",
    "\n",
    "for ep in range(MAX_EP):\n",
    "    print(\"EP Start\")\n",
    "    done = False\n",
    "    while not done:\n",
    "        actions = demoAct.getHumanActions()\n",
    "        nextState, _, done, _, _ = env.step(actions=actions)\n",
    "        demoMem.saveMems(state=state, actorProb=None, action=actions, reward=None, done=None)\n",
    "        state = nextState\n",
    "    nowMemNum = demoMem.memNum\n",
    "    saveSteps = 500\n",
    "    lastMemCheckPoint = 0\n",
    "    if nowMemNum / saveSteps >= lastMemCheckPoint + 1:\n",
    "        lastMemCheckPoint +=1\n",
    "        print(\"nowMemNum\", nowMemNum)\n",
    "        print(\"lastMemCheckPoint\", lastMemCheckPoint)\n",
    "        demoMem.saveMemtoFile(gailExpertDataDir)\n",
    "        print(\"mem_saved\")\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.9.7 64-bit",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "86e2db13b09bd6be22cb599ea60c1572b9ef36ebeaa27a4c8e961d6df315ac32"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}