mieki256's diary



2017/09/17() [n年前の日記]

#1 [pi3d][python][raspberrypi] pi3dのキーボード入力はちょっと使い物にならないかも

pi3d のキーボード入力について調べてるのだけど。

コレ、ゲームを作るには機能が足りなくて、使い物にならない気配。他モジュールと組み合わせてどうにかできないかとググっているけど、解決策が見つからない…。

Windows + pi3d、あるいは、Linux + pi3d なら、pygame と併用すればなんとかなると分ったけど。Raspberry Pi + pi3d の場合、解決策が見つからなくて…。

問題点。 :

Raspberry Pi + pi3d の場合、pi3d はキーボード入力を調べるために curses を使うので、以下の問題があって。
  • 押されているキーを1つしか調べられない。複数キーが同時に押されてることを判別できない。
  • 何のキーが押されたか、という情報しか得られない。キーが離された瞬間を得ることはできない。

この2点がどうして問題になるのか、図で描けば分かるだろうか…。

pi3d_keyboard_fail.png

例えばだけど、カーソルキーの上と右を同時に押したら自機が斜めに移動する、という処理ができない。二つのキーが同時に押されてることを判別できないから。これではレトロ風の2Dスクロールシューティングゲームすら作れない。

また、「キーが押された瞬間」しか取得できないのも厳しい。一応、オートリピートがかかるから、連続して動いてるような「気分だけ」は得られるけど、最初の1回目に反応した直後、ピタッと止まるのが厳しい。これではインベーダーゲームやパックマンすら満足に作れない。また、各環境のオートリピート設定によって、それぞれ移動速度が異なってしまう可能性もある。

pi3d_keyboard_ss.gif

pygame_keyboard_ss.gif

いやまあ、一応、「キーが押された瞬間だけ取得できる」という仕様でも、どうにかできないこともないけれど。動きを止めるためのキーを別途用意しておいて…例えばテンキーの5を押すと動きが止まるとかってお前は _FM-7 か! 21世紀にもなってFM-7ライクな操作仕様はないだろう…。

pi3d というライブラリ・モジュールは、あくまで、OpenGL ES を使って3Dモデルを簡単に描画できますよ、というモジュールなのだろうなと。それ以外の使われ方を想定していない気がする。少なくとも、リアルタイムゲームの類をコレで作れるかも、てなことは考えてないのではないかなあ。だって、あり得ない。キーボード入力周りの、こんな仕様。あり得ないよ。

Raspberry Pi専用スクリプトにすればどうにかできるのかも。 :

_pi3d.event.Event の動作サンプルスクリプト、 _pi3d_demos/TestEvents.py を Raspberry Pi上で実行すると、
  • キーを押した瞬間
  • キーのオートリピートが働いてキー入力がされた瞬間
  • キーが離された瞬間
それぞれが取得できてるように見えるので…。Raspberry Pi専用を前提にして処理を書いてしまえば、少なくとも、「タッ……タタタタ」ではないキー入力はできるのかもしれない。実際、 _pi3d_demos/DogFight.py も、そのやり方でキー入力をチェックしてるようで、実例は既にある。

ただ、そのやり方は、Windows や Linux では使えないので…。
  • Windows と Linux は pygame を併用する処理を、
  • Raspberry Pi は pi3d.event.Event を使った処理を、
それぞれ分けて書くしかないなと。

でもまあ、考えてみれば、そもそも OpenGL が使える環境なら ―― Windows も Linux も Raspberry Pi2/3 も OpenGL を使えるのだから、それらの環境では PyOpenGL だの pyglet だのを使ってこの手のソレを書けばいいわけで、あえて pi3d を使わなくても、という気がしてくるし。

Raspberry Pi1 や Zeroシリーズはメモリが少なくて OpenGL を使えないから、代わりに OpenGL ES を使う pi3d はどうでしょうか、という話なわけで、だったら、pi3d を使うってことは、Raspberry Pi専用スクリプトとして書いちゃって問題ない場面じゃねえの、と割り切ってしまうのもアリかもなと。

これがもし、Pi1/Zero/Zero W でも OpenGL が動いてくれるなら話が簡単になるのだけど…。そこは難しい事情があるのだろうな…。

pygameウインドウの上にOpenGL ESを乗せるわけにはいかんのだろうか。 :

Raspberry Pi用の Minecraftは、フツーのウインドウを表示したその上に、OpenGL ES のレイヤーを位置合わせして配置して描画をしてるらしいけど。

pi3d も、似たようなことができないのだろうか。pygameのウインドウを生成して、そのpygameウインドウの位置に OpenGL ES のレイヤーを置いてソレらしく見せるとか。それができれば、Windows、Linux、Raspberry Piで共通して動かせるスクリプトを書けそうだけど…。描画以外は、pygame の機能をそのまま使えばいいわけだし…。

考えが甘いかな。かもしれん。何か罠が潜んでそう。

ちなみに、Raspberry Piの描画関係については、以下のやり取りで紹介されてる画像が分かりやすかった。フツーのLinuxのデスクトップは X.Org と GLX が繋がってるけど、raspbian は X.Org と EGL が繋がってないからウインドウの移動に OpenGL ES が追従してこないのだ、等が説明されてる。

_Graphics Acronyms & What works with what? - Raspberry Pi Forums

#2 [prog] Processing 3.3.6 x64をインストール

Raspberry Pi上で Processing(Proce55ing) 3 が動くという話を見かけたのでインストールしてみようと思ったのだけど。その前に Windows上でインストールしてみたほうがいいのかなと。てなわけで、Windows10 x64上に、Processing 3.3.6 x64版をインストールしてみたり。

_Processing.org
_Download - Processing.org

processing-3.3.6-windows64.zip をDLして解凍。任意のフォルダに移動。processing.exeを実行。少なくとも、IDEはフツーに起動してくれた。

JavaScriptモードが動かない。 :

IDEウインドウ右上の「Java」のボタンをクリックすれば、他のモードに切り替えられるのだけど。Javaモードはあるけれど、JavaScriptモードが見当たらない。いや、正確には、Processing 3.0.2 の頃に使ってた JavaScriptモード 0.4.0 が動かないというか。切り替えるとIDEが落ちる。

色々ググってみたけど、どうも昨今の Processing は、「JavaScriptで動かしたい? p5.jsモードを使えや」ということになってる雰囲気。

ちょっと愚痴。 :

元々 Processing は Java Appletモードを持ってたけど。ある時期、「Java Appletモードは捨てるわ」「どうせお前等、Webブラウザ上で動かしたいだけなんだろ?」「だったらJavaScriptでいいじゃん。JavaScriptモード入れといたわ。これで文句ねえだろ」ということになって。

Java Appletモードが無くなったのは、まあ、いい。死兆星が見えてたし…。今では Oracleですら「Java Appletは推奨しねえ」と言ってるし、今時のWebブラウザでは動かなくなったしで、消えるのも仕方ない。けど、その代わりに入ったはずの JavaScriptモードがこんなことになるのは…なんだかちと釈然としない。

JavaScriptモードは、 _Processing.js を利用して、Processing のソースファイルである .pde を読み込んでブラウザ上で動かすのだけど。 _p5.js は、「Webブラウザ上で動かしたいのにわざわざJava風に書いてるんじゃねえよ糞が。最初から JavaScriptっぽく書きやがれ」てなライブラリらしくて。

なんだか言語習得コストを低く見積もってる気がする。どういう層にProcessingをオススメするのかを考えたら、.pde がそのまま動くほうがいいのでは…。

でもまあ、おそらく p5.js のほうがパフォーマンスも多少は期待できる、等のメリットがありそうだし。JavaScript をベタで書くより p5.js を利用したほうが楽になると踏んで p5.js を作ったのだろうから、習得のハードルは、さほど高くないのかもしれない。

それに、
「Processing.js は昔の Processing の言語仕様しかサポートしてないので、昨今の Processing のソースを渡しても再現できない」
「Processing.js を使いたかったら Processing旧版を使え」
てな話も見かけたわけで。なるほど…それじゃ仕方ないよな…。

ていうか、なんで Processing.js が追従してこないのだろう。 _Releases - processing-js/processing-js を眺めるとバージョンは上がってるようだけど…。

2017/09/18追記。 :

JavaScriptモードについて追記。

_0.3.3 NOT Compatible with Processing 3.0 - Issue #35 - fjenett/javascript-mode-processing で、Processing 3.1以降でも JavaScriptモードを使えるかもしれない方法が書いてあった。
  • JavaScriptMode 0.4.0 をDLして解凍。
  • スケッチブックの場所\modes\ 以下に、JavaScriptMode というフォルダごとコピー。
  • 〜\modes\JavaScriptMode\template\ 以下に、template というフォルダを作成。
  • そのフォルダの中に、processing.js と template.html を移動。
  • 〜\modes\JavaScriptMode\template\ 以下に、sketch.pde という0バイトのファイルを作成。
これで、JavaScriptモードに切り替えても、IDEが落ちることはなくなった。

ただ、ソースを打って実行しようとするとエラーが表示される。また、ブラウザ上でも動かない。やはり対応できてないっぽいなと。

一応、Processing 2.2.1 と、Processing 3.3.6 では、異なるスケッチブックの場所を設定できるので…。 *1 Processing 2.2.1 と 3.3.6 で異なるモード構成にできるから、JavaScriptモードも使いたいなら 3.3.6 とは別に 2.2.1 をインストールしておいて、そちらを使って解決することも可能。とメモ。

*1: C:\Users\ユーザアカウント名\AppData\Roaming\Processing\preferences.txt の中に、sketchbook.path= と sketchbook.path.three= の指定があって、3.3.6 は後者を参照する。

#3 [web][neta] twitterのアカウントがロックだか凍結だかされてた

いつの間にか、twitterのアカウントがロックされていた…。ログインすると、「お前ルールに沿わないことしやがったから自動処理でアカウントをロックしたで」と表示されてる…。なんでや…。

○○が無いので手詰まり。 :

「ロックを解除したいなら電話番号を入力して認証しろ」とtwitterのページ上に表示されてるけど。自分、携帯電話はかなり昔に解約したから、電話が無いんですけど…。 *1 フツーに電子メールでやり取り、ではダメなんか…。 *2

携帯電話やスマホを持ってない者は、もはや人間に非ず。基本的人権ですら認められない、みたいな風潮になってきているなあ…。 *3

さようなら、twitter。なのかな。 :

ここ最近、twitterのユーザ対応の奇妙さが話題になって、しかし改善の見込みが見えなくて「この調子では…twitterもいよいよ終わりか…」的に先が危ぶまれているようでもあるし。

また、仕事で使ってる人ならともかく、自分、TVアニメを見ながらたまにぶつぶつと感想をつぶやいてただけだから、アカウントが使えないと仕事上困るというわけでもないし…。こんなのどか(?)な使い方をしてるのに、どうしてアカウントをロックされるのか不可解なんだけど、それはさておき。

てな状況だから、この際twitterとお別れするという選択肢も全然アリ、ではあるのだよなあ…。沈没しそうな船から逃げ出すネズミのノリで…。さようなら、twitter。今までありがとう。みたいな。

とりあえず、真面目なことをつぶやくソレ用と、TVアニメの視聴感想ぶつぶつ用に2つ持ってたけど、真面目用アカウントはロックされてなかったので削除してみたり。そもそもtwitterは一人で複数アカウントを持つことをルール違反としてるらしいので、貴社の提示したルールにちゃんと従った状態にしてみましたよ、これで文句ねえだろ、みたいな。

感想ぶつぶつ用は…どうしようもないな…。現状、ロック解除の試みも、アカウント削除もできないのでは、アカウントを放置してサヨナラする以外に選択肢は無いわけで…。

どうしてロックされたんだろう。 :

妙なNGワードでも書き込んでしまったのだろうか。結構気をつけて書いてたつもりなんだけどなあ。なんでも、twitterって「蚊を殺した」とつぶやいただけでもロックされるという噂が…。例えばアニメを見てたら、「ああ…このキャラ…殺されてしまう…誰か助けて…」とかうっかりつぶやいてしまう場面もあるだろうけど。そんなんでアカウントロックとか恐ろしくて使えんわ…。

それとも、アニメスタッフだか、アニメ会社だか、某アニメのファンあたりだかの逆鱗に触れるつぶやきをうっかりしてしまって、裏技とやらを使われてアカウントをロックされてしまったのだろうか…。

自分、基本的にはどのアニメも、比較的褒めてる感じのつぶやきになるよう心掛けてたつもりなのだけどな…。いや、時々うっかりやらかしているだろうなとも思うけど、全体をざっくり眺めれば、この人ポリアンナの生まれ変わりデスカと見紛うほどによかった探し的つぶやきで溢れてるアカウントになっていることであろうよ、などと心の中ではひっそり自負していたのだけど。そうか…まだまだ努力が足りなかったか…。

む。待てよ。もしかして逆なのか? アニメ視聴をしつつ、そこでスタッフの仕事ぶりを褒めてしまったからやられたのか? 「こんなクソアニメを褒めやがって…コイツ許せねえ! 潰してやる!」みたいな。他人様の仕事を迂闊に褒めたら後ろから刺されるとか…日本って、なんて美しい国…。

いや、分かんねえですけど。なんで凍結されたのか具体的な理由が分からんから本当に困る。WebサーバやWindowsすらエラー番号を返すのに。ちょっと酷いなと。調べようがないじゃん。なんでも隠せばいいってもんでもないだろう…。

「○○さんがツイートしました」 :

twitter側でアカウントをロックしたのに、twitterから「○○さんがツイートしました」的宣伝メールが送られてくるあたり、ちょっとイラッとしてきたり。

そうやってそっちからメールをガンガン送ってきてるのに、なんで携帯電話でしかロック解除の申請はできないとか言い出すんや。 *4 お前が送ってきたこのメールは何なんだ。ユーザのメールアドレスをお前はちゃんと知ってるじゃねえか。どうしてコレ使って解除申請できないんだよ。どういうシステムだよ。

みたいな。コレ、ちょっと…いや、かなりイラッとするなあ。

もっとも、今現在残ってる人達は、何がどう自動化されてるのか把握できてない可能性もありそうだなと邪推したりもして。であれば、どうしようもないよな。まるでイデオンよろしく超古代文明の遺産を仕組みも分からず使ってる状態、とか。twitterはSFだったのか…。

*1: 家族全員で使ってる固定電話はあるけど、この場合、固定電話じゃダメだろう…。「その電話番号にショートメッセージを送り付けてやるぜ!」って書いてあるし。黒電話でソレ受け取れるの? 無理でしょ。最初から「電話」じゃなくて「携帯電話」と書いとけよ。ぷんすか。
*2: ていうかページに「通信料が発生する可能性が〜」って書いてあるけど電話代?はそっち持ちじゃないんかい。お前一体どこの国から電話をかけてくるつもりなんだよ。怖いよ…。今時ダイヤルQ2詐欺紛いをしないだろうな…。
*3: いやまあ、社会全体でそういう流れにしていくという合意があるのであれば、それはそれで別に構わんけど、だったら生活保護みたいに国が最低限のアレやソレを国民一人一人に配布、てな流れにしないといかんのではないか…。もちろんそんなことするより、各サービスに他の連絡手段用意させといたほうが国にとっては安上がりだろうから「国民全員にスマホ持たせるとかアホか」と思うのだけど…。いや、もしかすると逆なのかな。全員に配布しちゃったほうが関連ビジネスが活性化して経済的には云々てな展開もあり得るのかな。少なくともスマホメーカは喜ぶか。って日本のスマホメーカほとんど残ってないじゃん。ダメじゃん。どの国を儲けさせるつもりなんだ。
*4: や、ググってみたら、ヘルプから辿って云々な手段もあるらしいけど…。ググらなきゃ分からないあたり、ソレ裏技の域に入りかけてないかと…。しかも、運が良ければ通るかも、結構時間かかるよ、等の説明もあるし。いやまあ、一応試しておきますけどね…。効果あるのかなコレ…。

#4 [web] マストドンが気になる

マストドン(Mastodon)なるサービス? ツール? が気になる。アレってどの程度twitterの代わりになるんだろう…。twitterのアカウントがロックされてしまったのを機に、引っ越しするか…。

と思って少し調べてみたのだけど。どうやらアカウントを持ってる人じゃないと、ローカルタイムラインとやらを閲覧することすらできない、そんな気配。閉じてるなあ…。うーん。

銀河通信がイイ。 :

自分、誰でもその気になれば見れる場所でぼそぼそとつぶやく行為が好きなので、アカウントを持ってないと閲覧すらできないというサービスは、ちょっと。「アカウントなんて無くても誰でも覗き見できまっせ」な感じじゃないと厳しい。

要は、 _銀河通信 をしたいわけで。いや、 _ボトルメール とでも言えばいいのかな。誰かに届くのかもしれないし、誰にも届かないのかもしれない。届く可能性もあるけれど、届かない可能性も高い。そういうつぶやきをポツリポツリとしたい。そのためには、誰でも見れる仕様じゃないと。オープンな場所じゃないと。

アカウントを持ってる人達しか見れないサービスでつぶやいてたら、まるで押し入れに入ってぼそぼそ呟いてるも同然で、ガチで只の危ない人になっちゃうよなと。ていうかそんなのローカルHDDに書き溜めておけばいいだけで、わざわざWeb上で書き込む意味なんて無いよな、てな極端な印象すら持っていたりして。

いやまあ、知人友人がたくさん居るリア充さんなら、「閉じてるほうが仲間内でコミュニケーション取りやすいじゃん」と言い出すだろうけど。悪かったな。俺は知人友人がほとんど居ないんだよ。だからそういう利用スタイルを自分に当てはめてイメージすることができないんだよ。笑えよ。さあ笑え。いや、泣けよ。泣いてくれよ。ていうか自分が泣いていいですか?

ということで、もしかしてマストドンってリア充さん御用達のツールなのでは、という疑念が若干自分の中で…。だとしたら、自分にとって望んでるソレとはちょっと違うんだよなあ…。

個人専用twitterって無いのかな。 :

個人がガッツリ何かしらの意見を世界に向かって公開、となると「blogでも使えば?」という話になっちゃうけど。そこまで大層なことをつぶやきたいわけではなくて…。だって、アニメ見ながら「この幼女…可愛いのう…これは兵器になるレベル…」とかアホなことをつぶやいてるだけだし。

twitterと同程度に、140文字前後の制限を与えつつ、しかしblogのように全世界に向けて公開できて、書き込んだ時間もメッセージと共に併記されるからちゃんとログになってる、そういうサービス、あるいはCGIの類って無いのかなと。書き込み内容がGoogleの検索結果にも出てくるよ、閲覧についてはオープンだよ、閉じてないよ、どこかの一社が管理してるせいで不可解な理由により突然アカウントを削除されたりしないよ、みたいな。

需要が無いか…。無いよな…。あるわけねえか…。

と思ったけど、 _ミニブログ を探してみればいいのかな。

ミニブログと呼ばれるソレを、いくつか辿ってみたけど、結構各サービスが消えてるような。blogやwikiと同様、これもまたブームは去った、てな感じなのだろうか…。改めて調べてみたら、その手のサービスが出現したのって2007年前後らしいし。そりゃ大半が死滅…するわな…。

考えてみたらtwitterの代替サービスなんてあるわけないか。「バルス」に耐えるシステムだもんな…。そういうところは凄いんだよな、twitter…。

以上、1 日分です。

過去ログ表示

Prev - 2017/09 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project