SteamDeckゲーム起動メモ

SteamDeckを買いました。

ちょこちょこいろんなゲームを起動してどうだったかのメモ書きです。
参考になりそうならどうぞ。
各ゲームをプレイし次第、更新します。

互換性

少なくとも公式はそう言ってる部類

140

store.steampowered.com
普通に動く。特に違和感とかなかった。
もっとも、十字キーとジャンプだけだし…という話もあり…

CRYSTAR

store.steampowered.com
動いた。今日もフェレスがかわいい。
Deckが熱くなるのはまあご愛嬌。というか、ノートPCでやった時、ノートPCでお湯くらいなら作れそうってくらい熱くなってたので想定内。
ところで零ちゃんを泣かせる際にカラーコードが出て零ちゃんが見えないのは……仕様かい?再現性が高いんだけど。
↑なので初めてCRYSTARをやるならDeckじゃないほうがいいです。

プレイ可能

Library of Ruina

store.steampowered.com
正直マウス操作じゃないと無理。結構重いゲームだと思うけどちゃんと起動する。
同様に図書館もプレイ可能なんだけど……あのゲームを????この操作で????????

QuantumProtocol

store.steampowered.com
「右のトラックパッドで操作してくださいねぇ〜」って言われた。
じゃあいいや…という気持ち。普通にPCでascension以外クリアしたし。

ルフランの地下迷宮と魔女ノ旅団

store.steampowered.com
ちょろっとプレイしてる感じ一切問題なし。
画面をタッチすると、PCでプレイしている時だとマウスを動かした時のように、画面内のキーコンフィグを示すアイコンがキーボードになるけど問題なし。

メモ書き:今日は何の日?(datetime)

1981年の今日、12月21日にマサチューセッツ州の国際YMCAトレーニングスクールにて世界で初めてバスケットボールの試合が行われたことからバスケットボールの日とされています。この時の試合は1チーム9人で、体育館のバルコニーに設置した桃を入れるカゴにサッカーボールを入れる競技だったそうです。点が入るまで1時間くらいかかったっとか、かかってないとか。

違う、そんな話が書きたかったんじゃない
日付とか使うdatetimeに関するメモ書きです。正直普段から使ってるからこのメモ書いてなかったとは思わなかった。

タイムゾーンとか日付の表記とかの話

JST

日本の標準時のやつ。明石市のアレ。

UTC

世界標準時……あれ?こういう名前じゃなかったっけ?
協定世界時。イギリスロンドンのグリニッジ標準時のアレ。当たり前だけど時差は9時間。

ISO8601フォーマット

別にグリニッジ標準時から8601時間ずれた時刻とかそういうのじゃない。上の2つとは別物。
日付の表記フォーマットの一つ。
yyyy-MM-ddTHH:mm:ssZとかyyyy-MM-ddTHH:mm:ss+09:00とかで書かれるやつ
まあyとかMとか書いている通りTより左が日付、右が時刻。
うっすらわかるだろうけど、最後のZとか+09:00はタイムゾーン
Zはここまでに書いていた日付時刻はUTCのものですよ~っていう表現。じゃあ+0って書けよって気持ちはあるが

UNIX時間・エポック秒

UTCの1970年1月1日からの経過秒数。

datetime.datetime

今の日付時刻を取得:datetime.datetime.now()

ISO8601→datetime:datetime.datetime.fromisoformat()

fromisoformat()は末尾にZが付いた文字列はエラーになる。無能。
Zを+00:00に置き換えるとかしてくれ。

UNIX時間→datetime:datetime.datetime.fromtimestamp()

ローカル時間の影響あるかも。注意。

datetime→UNIX時間:datetime.datetime.timestamp()

floatが返ってくる

dateime.date

曜日の取得:」datetime.date.weekday()

["月","火","水","木","金","土","日"]になってる。
要するに月曜日は0、日曜日が6

datetime.date.isoweekday()

は?

timezone情報がないUTC時刻をJST時刻に変換する

使用例のデータ


これの日付データ

使用例

import json
import pickle
import datetime

# statusに情報を取得している
utc_created_at = status.created_at.replace(tzinfo=datetime.timezone.utc)
jst_created_at = utc_created_at.astimezone(datetime.timezone(datetime.timedelta(hours=+9)))


エラー編

AttributeError: module 'datetime’ has no attribute 'strptime’

strptimeできないんですけど?ってキレられる回。

import datetime
miss_pattern = datetime.strptime("2023-05-21 3:3:04", "%Y-%m-%d %H:%M:%S")

datetimeの中にdatetimeがあるからややこしいが、strptimeの対象となるdatetimeになっていない。(なんて書けばいいかな……)
よくわかんなかったらこの下の2つのなんとかなる例を見て察して。

import datetime
patternA = datetime.datetime.strptime("2023-05-21 3:3:04", "%Y-%m-%d %H:%M:%S")
from datetime import datetime
patternA = datetime.datetime.strptime("2023-05-21 3:3:04", "%Y-%m-%d %H:%M:%S")

formatとか使って日付時刻のゼロ埋めやるときのメモはこっち

271108.hatenablog.com


必要に応じて書き足す

どのくらいイカしているのか知りたい。(3)

これまで
271108.hatenablog.com
271108.hatenablog.com

今回の目標

  • s3s v0.3.0を見ながらデータベースを考える

ファイル書き出しを考える

	elif outfile and len(sys.argv) > 2 and "--skipprefetch" not in sys.argv:
		print("Cannot use -o with other arguments. Exiting.")
		sys.exit(0)

1765行目~ -oは他のargumentsと一緒に使えないっぽい?
1785行目から-oを使っているときの処理?
新しく試合をせずにs3s.py -oを実行すると全く同じ50*3(ナワバリ/バンカラ/シャケバ)試合のjsonが出てくるっぽい

出力フォルダに関しては1792行目~1795行目で書かれている

手順を考える

  1. s3s.pyの改変をして特定の場所にjsonを持ってくるようにする
  2. 持ってきたjsonをDBに書き換えるコードを用意する
  3. 以降はループ
  4. 一日n回、s3s.pyの改変を叩く
  5. 即座?にDBに入れてjsonを消去?

……別にjsonに書き出さなくてもそのままDBに入れてもいいんじゃないかという話もある。

DBを考える

マッチ情報

["id"] ルールID(自作) ["vsStage"]["id"] チームID(自作) ["playedTime"]

ルール情報

ルールID ["vsRule"]["name"] ["vsMode"]["mode"]

ステージ情報

["vsStage"]["id"] ["vsStage"]["name"] ["vsStage"]["image"]["url"]

チーム情報

チームID 参加者ID(自作) ["myTeam"/"otherTeams"]["judgement"] ["myTeam"/"otherTeams"]["result"]["paintRatio"] ["myTeam"/"otherTeams"]["result"]["score"] ["myTeam"/"otherTeams"]["result"]["noroshi"]

参加者情報

参加者ID ["isMyself"] ブキID(自作) ["result"]["kill"] ["result"]["death"] ["result"]["assist"] ["result"]["special"] ["result"]["noroshiTry"] ["paint"] ギア0 サブ0-0 0-1 0-2 ギア1 1-0 1-1 1-2 ギア2 2-0 2-1 2-2

※["myTeam"/"otherTeams"]["players"][n]下

ブキ情報

ブキID(自作) ["name"] ["image2d"]["url"] ["image3d"]["url"] ["subWeapon"]["name"] ["subWeapon"]["image"]["url"] ["specialWeapon"]["name"] ["specialWeapon"]["image"]["url"]

※["myTeam"/"otherTeams"]["players"][n]["weapon"]
確認していないがブキのナーフバフ前後で本来のスプラAPIではidが変わっているかもしれない。これは無視する。名前が同じブキであれば同じブキとする。

ギアパワー情報

ギアパワーID [部位Gear]["primaryGearPower"/"additionalGearPowers"]["name"] [部位Gear]["primaryGearPower"/"additionalGearPowers"]["image"]["url"]

※["myTeam"/"otherTeams"]["players"][n]

補足

URL系列が複数ないかの確認をする

・・・なんかとんでもないのになりそうだなぁ。

今は見なかったことにしたもののメモ

理由:自分、あるいはよく一緒にやっているイカのデータを多く観測してしまうことになるので。

次回やること

この前ローカルに保存したデータをデータベースに叩き込んでみよう

どのくらいイカしているのか知りたい。(2)

前回
271108.hatenablog.com

今回やること
results.jsonを見る。



results.json
真打登場。
もうこれだけ明らかにデータ量が違う。それもそのはずギアだったり色だったりネームプレートだったり、何でも入ってる。具体的には段落が足りなさそうなので記事分けるくらいには何でも入ってる。
確かにアプリで見れたからそうだわ。
それぞれの試合ごとに"data"に分かれているっぽい。その下に"vsHistoryDetail"
以下イカの要確認以外の節は"vsHistoryDetail"の1つ下の階層。

__typename

"VsHistoryDetail"じゃないものはある?*1

vsRule

"name","id","rule"の3つが入ってる。
nameにガチエリアとかナワバリバトルとか入ってる。"name"か"rule"を使うのが無難かな?

vsMode

レギュラーかバンカラか……
Xマッチをやったら確認しておかないとね。vsRuleとの関連も確認。

player

お前。
二つ名とかネームプレートとか名前の文字の色とかギアとか、何でも入ってる。

judgement

勝敗

myTeam

まあその名前の通り。

color

RGBA?255で割った後かも

result

paintRatio

ナワバリバトルの割合?他のルールではnull

score

カウント?ナワバリバトルではnull

noroshi

トリカラアタック?nullじゃないものを見つけなきゃ*2

tricolorRole

攻撃か防御かなのかな、nullじゃないものを見つけなきゃ*3

festTeamName・festUniformBonusRate

ブキとかそろってる時のもの?nullじゃないものを見つけなきゃ*4

judgement

勝敗

players

チームメイト。これまためちゃくちゃ多いので重要そうなところ・気になるところだけピックアップ

isMyself

世の中には2種類の人間イカがいます。私か、私じゃなイカ

weapon

ブキ。さて、記事を分けても段落が足りません。どうしたらいイカねぇ…………

  • name

武器の名前。サブSPはこれに依存しているのでまあ無理に集めなくてもいイカなぁ……

__isPlayer

これが"VsPlayer"じゃないものを見つけなきゃ*5

headGear/clothingGear/shoesGear

["headGear"/"clothingGear"/"shoesGear"]["primaryGearPower"/"additionalGearPowers"]["name"]で付けてるギアパワーが分かる

paint

塗りポイント

result
  • kill
  • death
  • assist
  • special
  • noroshiTry

KDA/SPとかそういうの

crown

なにこれ、falseじゃないのある?*6

festDragonCert

なにこれ、フェス周りなのはわかるけど*7

vsStage

name

ステージ名

festMatch/bankaraMatch/xMatch

違うならnull

knockout

WINとか入ってるかも、バンカラとかのやつっぽい

otherTeams

相手チーム。多分myTeamとおなじ構造。isMyselfもある。

duration

なんの?*8

playedTime

開始時刻か終了時刻か分からないが時刻。*9

awards

「バトルNo1」「カウント進行No1」みたいなやつ

leagueMatch

不明*10


以上、イカはメモ書き

  • データベースか何か作るのが楽かな?

自分の全ブキの勝率

  1. ブキ名で全部検索?
  2. 何回使った勝った負けたは出るはず
  • 使ったブキ(或いは試合で見かけたブキ)しか計算できないのでそこだけ注意

win-ageinst/lose-ageinst

  1. 「敵に[ブキ名]が1名以上いる試合」を検索
  2. それが何試合あって、何回勝って何回負けているかを出せば計算できる

私の周りでは何のブキが使われてる?/勝ってる?

  1. 同じブキが4枚の時に4勝としてカウントすることになるだろうけど、参加者を全部見ていって、win/loseを足し合わせるだけでできそう。

次にやること

一定期間ごとにs3sを動かすようにすることを考える。

同じ試合を取ってないか確認も必要か。

データベースの構造を考える。

*1:要確認

*2:要確認

*3:要確認

*4:要確認

*5:要確認

*6:要確認

*7:要確認

*8:不明

*9:どこかにプレイ時間があるっぽいがどこだろう?

*10:要確認

どのくらいイカしているのか知りたい。(1)

最終的な目標

  1. 「271としてツイートがn分以内にされている」かつ「チャレンジがやりたいモードである」時に通知リプライをエミィから私に送るようにする
  2. 戦績チャートを作る

なお、推測で書いている要素が限りなく多いです。今に始まったことじゃないので問題ないけど。

準備体操

s3sを使ってstat.inkに自分の戦績をアップロードする
github.com
stat.ink

仕様と思われるが直近100件がアップロードされた。まあ十分かな?
確認はしっかりとはしてないが、ナワバリバトル50戦とバンカラマッチ50戦、サーモンラン50戦だと思う。それ以上は大元から記録されない仕様なんでしょう。知らんけど。

ちょっと死にすぎじゃない?

ついでにローカルファイルにも入れておきましょう。(ぶっちゃけローカルだけでよくなイカ?)
s3s.pyを実行するときにオプションを-oで指定するとローカルファイルに入れてくれるらしい。

既にやっている人々イカ達を見たところ、自動でアップしてくれるようにサービス化しよう!に繋がってたけど……まあ私の場合は別にいイカ。何なら今後アップロードしなくてもローカルだけで別にいいし。
ただ、s3sが結構頻繁に更新されているらしいのでgit pullについては考えておきましょうか。

思考:どんな戦績チャートが欲しい?

自分の全ブキの勝率

まあそもそもどのブキが得意かは知りたいよね。
ルールごとのほうがいいんじゃない?

何のブキ相手に勝ってる?/負けてる?

自称「チャージャーを絶対に許さないイカ」であるところの船井、チャージャーに勝てないから許してないのか、チャージャーをしばききっているのかちょっと知りたい。

何のブキが味方にいると勝ってる?

特にパブロ持った時調子に乗っているのでその間味方が塗ってくれている……とか一緒にキル狙いにいくようなブキ持った見方イカがいたほうが勝ってるのか……プレイスタイル分析に繋がりそう。
といっても、パブロを持っているときの私とエクスプロッシャーを持っている私ではプレイスタイルが死ぬほど違うのだが……いや、同じじゃ困るけど。

私の周りでは何のブキが使われてる?/勝ってる?

「やってればS+くらい行くよw」って言われてその通りだったのでレート帯も正直分かりにくい。プロスプラトゥーン大会の解説者とか目指してるわけでもないし、全体がどうとかはどうでもいいが、少なくとも自分の周りの流行りや周囲の強いブキがどうなのか知りたい。本当にシャプマは強いの?とか。
ヴァリアブルとかLACTみたいに、まあ流行り廃りはあるんだろうけどさ。

ローカルファイルの確認

coop_results.json

サーモンラン。

overview.json

その名前の通り。
dataが5つあって、"regularBattleHistories","bankaraBattleHistories","xBattleHistories","privateBattleHistories","coopResult"の5つに分かれてる。
見ればわかると思うけど、ナワバリ、バンカラ、Xバトル、プラベ、シャケバのこと。
スマホのアプリで見られるような何勝、何敗、平均キル・アシスト・デス、SP使用回数がjson_data["data"]["regularBattleHistories"/"bankaraBattleHistories"]["summary"]のところに入ってる。
そこにある"perUnitTimeMinute"はアプリで言うところのn分あたりのアベレージのためにあるのかな?
summaryと同じ高さにある"historyGroupsOnlyFirst"は多分SP使用回数のアイコンのためのものっぽい
summaryと同じ高さにある”historyGroups”下にそれぞれの試合ごとの概要があるけど自分のブキと……って感じ

overviewだけで完結は私の理想では無理かな。

次回記事

results.jsonの詳細確認。
正直段落が足りないので記事を分けることにした。

ModuleNotFoundErrorの解決記憶集

記事ちまちま分けると探す時面倒なので何らかのモジュールが見つかんなかったときにここに書くことにしようと思いました。
そう決めたことすら忘れそう。

↓import Errorはこっち。
271108.hatenablog.com

module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline'

対処法

pip install opencv-python==4.5.5.64

解決した

ModuleNotFoundError: No module named '_contextvars'

何やったら出た?

pip freeze > requirements.txt

対処法

qiita.com
python3.6でcontextvarsを使えるようにするためのものを持ってきて名前を変えて使う。
マジ?って思ってけどまあ確かに使えるようにしてるんだから使えるか……
解決した

マンスリーガチャ用メモ書き

2022年12月のマンスリーガチャ用のメモ書き

ブログ記事書くの久々かも。

出るやつ

2018年クリスマス

WASアリエッタエリス

もってる。

特殊変化イスカ

もってる。

決闘イザーク

潜在能力で決闘が出る時代です。でも持ってない気がする。
持ってました。よく考えるとエーファ元帥と一緒に使った記憶がある。

時間停止ストリーハクア

もってる。

パネルリザーブカエラ

もってる。

単体ブーストメルテール

使ってない。使った記憶もない。

2019年クリスマス

反転強化キシャラ

もってる。

反転解除大魔術ピピアフリーレ

もってる。出番なくて困ってる。

蓄積印雷単色ミコト

持ってない。

準リコラ型回復早瀬

もってる。

リヴェータジミー

いたねぇ。

リュディ

凱旋かなんかで来たけど使ってない。使った記憶もない。

2020年クリスマス

連鎖強撃ロザリア

持ってない。ハルコいるけど割とほしい。

40チェインのおにいさん(一閃斬撃大魔術のすがた)

このバージョンの40チェインのおにいさんは持ってない。
ガトリンいるけど……まあ比較的ほしいかも?

急襲イーニア

もってる。急襲は信用していない。

きよしこの夜を歌いながら銃をぶっ放す奴ら

好き。持ってる。

エーファヴィクトリアと同型のシリスマグエル

もってる。出番がますます減った。

ぞば

持ってない

エステレラ2

融合強化クレティア

もってる

融合大魔術クレティアプリフィカ

もってる

撃破強化プリフィカ

持ってないんじゃない?

敵が動くのを見ると思わず殴りかかってくるソラヒカ

もってる

無属性大魔術の院

私も同行しよう。変換できなかった。
持ってる。

書き忘れられたリアラローム&マーガレット・リル

詠唱多段ってあんまり強い印象ないけど……
まあ持ってない。書き忘れてごめん。

要するに?

マンスリーガチャ、これ2020年クリスマス引けばよくね?
どうせ忘れるのでメモ書きを残しておく