-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ブラウザでプレイできるエージェント #1021
base: master
Are you sure you want to change the base?
ブラウザでプレイできるエージェント #1021
Conversation
修正予定
|
|
動きました! @OkanoShinri 理想をいうと、選択肢は現在の選択がハイライトされていて、十字キーなどで選んでエンターで選ばれるのがいい気がします。 |
あと、リソース系(index.html, ttf, css)は全部同じ一箇所にまとめてくくれると楽なのでお願いします
など |
これFlaskの仕様で、htmlとかcssをこの通りに置かないと動かないのです… |
いい感じですね!あとは細かい点しかないかもしれない
|
TODO
|
次回までに
流れ
|
処理の流れ(黒丸:mjx側、白丸:flask側)
何回か計測した感じではHTTPリクエストから表示すべきobservation取得までは0.1秒以下で済んでいるので、あとは通信速度を速める等か |
case "ArrowUp": | ||
case "ArrowLeft": | ||
case "j": | ||
keydown_counters[0]++; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この keydown_counters
っていります?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
連続で押したときのため?
super().__init__() | ||
self.q = Queue() | ||
|
||
self.sub = threading.Thread(target=self.flask, args=(self.q,)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
threadingよりmultiprocessingの方がよいと思う(PythonのthreadはGILで止まると思う)
mjx/agent.py
Outdated
page2 = PostPage() | ||
ShowPage.q = q | ||
app = Flask(__name__) | ||
app.config["SECRET_KEY"] = "8888" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SECRET_KEYは何のためにある?
revertがうまく行かなかったのでresetで戻してしまいました。 |
mjx/agent.py
Outdated
@@ -156,6 +165,113 @@ def act(self, observation: Observation) -> Action: # type: ignore | |||
) | |||
|
|||
|
|||
class ShowPage(View): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
このクラスは mjx/visualizer
以下とかに移しますか
@@ -0,0 +1,93 @@ | |||
<!doctype html> | |||
<html lang="ja"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これもstatic以下に移しましょう
mjx/templates/index.html
=> mjx/static/index.html
あとはmasterをこのPRにマージして、動作に問題ないか確認もお願いします |
なんか常に一段目までで止まっちゃうんですけど、そんなことないです? @OkanoShinri |
実行が遅いとか固まる系の問題はmultiprocessingを導入することで解決されるかもしれないですが、よく分からないエラーが出て止まってしまいます。 from multiprocessing import Pipe, Process
class MinimumWebAgent(Agent): # type: ignore
def __init__(self) -> None:
super().__init__()
self.conn, child_conn = Pipe()
self.sub = Process(target=self.hoge, args=(child_conn,), daemon=True)
def act(self, observation: Observation) -> Action:
print("main: YOUR TURN")
self.sub.start()
print("main: Sub prosess started")
self.conn.send(observation)
action = self.conn.recv()
return action
def hoge(self, conn):
print("sub: Waiting...")
observation = conn.recv()
print("sub: Recieved!")
action = Action()
conn.send(action) に対して他のAgentと同じように動かすと
|
|
あと |
cf. #1012
python serve.py
python serve2.py
python run.py