エモいと言わないために

多くの場合、私の思考は言葉に結びつかないので、もやもやしたままだ。 それは曖昧でおかしな形を描いて、呑み込まれていく。 そしてたちまち私はそれを忘れてしまう。 『嘔吐』より

Windows10 に Chainer をインストール

どうも、わたしです

先日GPUマシンを組んだので、DeepLearning環境を構築しました。
マイニングしようとしたりしていたので、順番がぐちゃぐちゃだったりしますが一通りできたのでメモとして残しておきます。

今回は、構築時のハマりどころのメモとしてこの記事を残しています。

日時

2018年 2月10日

PCの構成

OS:Windows 10 Pro
GPU :GTX1080 Ti
cuda:9.1.85

参考記事

Chainer 4.0.0b1 on Windows10 with CUDA 9.0

qiita.com 非常に助かりました。ありがとうございます。

Anaconda

python3.6 版を選択
PATHが通ってなかったので通す
(通した記憶があるけどVisual Stdio2017入れたりした関係かその形跡が消えていた)

C++ コンパイラ

landinghub.visualstudio.com こちらをインストールし、pathを通す

path

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

CUDA Toolkit

たしかこれを入れた
CUDA Toolkit 9.1 Download | NVIDIA Developer こちらもpath を通す

path

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt

cuDNN

NVIDIA cuDNN | NVIDIA Developer
ダウンロード後、以下フォルダに追加

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1
開発者アカウントが必要なので作りましょう

cupy

cupyのインストールでハマりました。

pip install --no-cache-dir cupy==4.0.0b1 
Collecting cupy==4.0.0b1
  Downloading cupy-4.0.0b1.tar.gz (1.9MB)
    100% |████████████████████████████████| 1.9MB 12.6MB/s
Exception:
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
    return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\commands\install.py", line 324, in run
    requirement_set.prepare_files(finder)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 634, in _prepare_file
    abstract_dist.prep_for_dist()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 129, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_install.py", line 439, in run_egg_info
    command_desc='python setup.py egg_info')
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
    line = console_to_str(proc.stdout.readline())
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
    return s.decode('utf_8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\commands\install.py", line 385, in run
    requirement_set.cleanup_files()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\build.py", line 38, in __exit__
    self.cleanup()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\build.py", line 42, in cleanup
    rmtree(self.name)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 49, in wrapped_f
    return Retrying(*dargs, **dkw).call(f, *args, **kw)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 212, in call
    raise attempt.get()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 247, in get
    six.reraise(self.value[0], self.value[1], self.value[2])
  File "C:\ProgramData\Anaconda3\lib\site-packages\six.py", line 693, in reraise
    raise value
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 200, in call
    attempt = Attempt(fn(*args, **kwargs), attempt_number, False)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 102, in rmtree
    onerror=rmtree_errorhandler)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 494, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 384, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 393, in _rmtree_unsafe
    onerror(os.rmdir, path, sys.exc_info())
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 114, in rmtree_errorhandler
    func(path)
PermissionError: [WinError 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。: 'C:\\Users\\root\\AppData\\Local\\Temp\\pip-build-cumhw_mz\\cupy'

コマンドプロンプト文字コードをこちらの記事の手順に合わせて修正 qiita.com

再度実行するもインストールに失敗

コマンドプロンプトを使用せずにインストールする方法を考え、Jupyter notebook 上でインストールを試みました。

jupyter notebook 起動

jupyter notebook

Jupyter notebook 上でpip コマンドをたたく場合は先頭に!をつければ良いので

!pip install --no-cache-dir cupy=4.0.0b1
無事インストールに成功しました。 f:id:rgbten084:20180210183947p:plain

chainer

pip intall chainer

chainerは問題なくインストールできていました。

まとめ

文字コードが原因ならコマンドプロンプトを使わなければいいじゃない‼
パワープレーでなんとかなりました。

git 周りの整備がまだなので、一通り落ち着いたら正しく動くかを検証します。
追記等あれば記載します。

Unity 1 Week Game Jam 「フロー」に参加-流しそうめん食べたい

1Week Game Jamにさんかしました。

今回の作品

f:id:rgbten084:20170830121234p:plain 流しそうめん食べたい | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

流しそうめんの竹を配置して少年に食べさせるパズルゲームをつくりました。 どんなものかは遊んでもらった方が早いので、ぜひよろしくお願いします。 PCから遊べます。

製作に当たって考えた目標

  1. 前作が、人が見た時に説明なしでは理解できないような代物だったため、誰が見ても目的がわかりやすいゲームを作ること
  2. BGMや外部から見つけてきた素材を使うこと
  3. 出来る限り効率よく作ること

の3点を最低限の目標としていた

1日目~3日目 規格構想&調査

お題がフローだったので、フロー => 流れる => 流しそうめん とぱっと思い浮かんだからそこから広げていくことにした。

アイディアをまとめていったら
流しそうめんになって魔の手(箸)を避けるソーメンラン
・ そうめんをひたすら食べ続けるそうめんクリッカー
・ そうめん食べたいキッズにそうめんを届ける流しそうめんパズル
の3つが浮かんだ

そうめんクリッカーはハイコンテクスト過ぎて頭おかしいのでボツ
ソーメンランはソーメンの3Dモデル用意できる気がしなかったためボツ
となったため、そうめんパズルを作ることにした

企画まとめて2Dゲーム作るのがはじめてだったので、どこから手をつけるか調査したり(ビール飲んだり)していたら、水曜日が終わっていた。
あと気合を入れるためにunity2017にアップデートもした。

4,5日目 開発スタート

パズルの各ステージを素材作りながら、いちいち作るのは手戻りおきそうだから、事前に部品を作っておいて全部揃ったら一気にステージを作るという方針で進めることに。
画面を作ったり、イラストは後から乗せるとして、cubeで単体テストをやったりしてた

6日目 素材制作 & ロジック製作

おっしゃーイラレ使ってバリバリ素材作ってやんよと意気込んていたけど、BGM探したり、イラストを探してたりしたら、時間ないということに気づいた。
しょうがないからiPad Proと Apple Pencle使って手書きでゴリゴリと素材を作っていった。
すごく久々にお絵かきすると楽しい。
とはいえ、然るべきタイミングで然るべき道具を使える状態になっていなかったのはよろしくない。

7日目 ステージ製作 & 仕上げ

AEUロボコン見てたら、素材制作が一向に終わらず、全部揃ったのが日曜日の19:00ぐらい。
全然無理無理カタツムリ、絶対間に合わない。
サクッと終わらせてビール飲みに行こうと思っていたけど雲行きが怪しい。
そこから1ステージあたり30分ぐらい、素材を若干微調整とかしながらステージを作っていった。
各ステージごとにどういうギミックを仕込むかとかも考えていなかったせいでかなり行き当たりばったりのステージ構成になってしまった。
パズルアプリ作ってる人たちすごいなと改めて関心した。

なんだかんだ完成したところでローカルでビルドしたらビルドエラー
「もぅマヂ無理。 クラウドビルドしよ」となり、クラウドビルドに放り投げてその日は寝た

8日目(ロスタイム)

朝イチでビルド成功したことは確認し、昼休みに公開
なんとか無事完了となりました。

反省的

・ BGMつけたよ
・ 素材も自分で作ったよ。Colider自分で編集するの楽しい
・ 経験不足が表に出たことは間違いないのだが、段取りが悪かった。
GitHubにIssue書き出ししなかったから行き当たりばったりになってしまった
イラレ覚えよう
・ サブプロジェクト走ったほうがQOLが上がるフレンズだということがよくわかった。たーのしー

とまあこんな感じで8月の1 Week Game Jamのレポートです 来月以降も参加できるかな? わかんないや?

箱を積んで絵を書こう【Unity1Week参加レポート】

Unity 1週間GameJamに参加しました。

Unity 1週間ゲームジャム | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

>> 一週間でゲームを作るイベントです。

なんか聞いたことありますね。
そうです。みなさまご存知ニコ生駆動開発ですね。

qiita.com

>> 毎月1回ニコ生をやるからそれまでにゲーム一本作る
すごーい、コンセプトがそっくりだーと思いつつも、なかなか手が回らず、参加できずにいたのだが、 第3回にて時間が取れたということで参加することに。
(半年以上やっているのにニコ生来場者が泣かず飛ばずなのは、興味持ってもらえる層にリーチできていないことは自明なわけで…)

メタい話は置いといて、こんな感じに作業していたよというメモです。

1日目

お題出て一日考えていたけど、泣かず飛ばずで何もアイディアが出てこず。
時間なくなって詰むという不吉なワードを頭をよぎってた。

2日目

火曜日の帰り道にようやく3Dプリンタみたいに層状にCubeを積んでいくというコンセプトにたどり着き、 お絵かきしながら3Dモデルを作るようなゲーム(?)を作り始めることに。

気合を入れてGitHubリポジトリ作って終わり()

3日目

エンジンがかかりはじめたので
クリックしたらRayCastしてぶつかった床の上にCubuを生成するところまで実装し、進捗を動画にしてUPした。

画力が低いのはキニスンナ
仕事後2時間ぐらい作業した

4日目

おやすみだったのでほぼ一日作業できる時間はあったのだが、
3Dプリンタのイメージに引きずられて、透明な床を挟んで3Dプリンタシミュレータ的なことをやりたくなり、色々調べていた結果作業時間の半分ぐらいを持っていかれてしまった。(しかも結局使っていない)

沼にハマりながらも冷静になり、消しゴム機能、カラーパレットを作ってた。
UI作るのに時間だけ取られて分かりやすい進捗が出なかったため、動画は無し。 7,8時間ぐらい作業してた気がするけど半分以上時間をドブに捨ててた。

5日目

前日のカラーパレット作成作業の続きをやってた。
カラーパレットに対応するPrefabをひたすら作って、ひたすら色を変えるボタンの関数を作って、 ひたすらPrefabに関数設置していった。

そんでもって、ただのお絵かきソフトになった。


画力は色と消しゴムでドーピングしているだけで上がっていない。
次の日休みだしと残課題の整理とかしてたら深夜になってた。
実作業は2時間ぐらい。

6日目

用事があったので移動時間にカメラの移動方法調べてた。
いい感じのが見つかったのでこの方法で実装。。
qiita.com

カメラの移動ができるようになったのでCubeの積み重ねを有効化。

ドヤ顔で動画撮ってツイートした。
画力とかどうでも良くなる雰囲気が出ていた。

なんだかんだ4時間ぐらい作業してた気がする

7日目

基本ロジックは完成ということにして、UIとか、タイトルとかロゴとかの素材を作った。
パワポ
パワポ
重要なことなので(ry
グループ化してから「図として保存」で素材は作れる。

力尽きたので、すこし早めに投稿した。

URLはこち
3Drow | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
こんな感じのやつが作れる
たーのしー
f:id:rgbten084:20170629001959p:plain f:id:rgbten084:20170629002002p:plain

まとめ

できたこと
・RayCastの使い方のお勉強
・uGUIを使ったちょっと細かいUIの作成

できなかったこと
・作った作品の保存、共有機能
・スクショをTweetする機能
・GameObjectの最適化
・cube生成時の重なり大作
・cube、消しゴムの大きさ変更 ・右クリックのポップアップ無効化

頑張れば実装できそうなやつから、どうにもならないやつまで、
思い返すと諸々ポロポロボロボロ粗が出てしまっているのですが、楽しんで頂けたら幸いです。
(個人的にはiPadで動くと良いよなーって思っていたり…)

あと明日ニコ生やるから見てね

live.nicovideo.jp

震えるピンも久しからず

ああ無常!!

唐突に無常観を叫ぶ私です。

例によってクソゲーを作っています。

しばらく前に作った子がこち

Unity WebGL Player | MovePin

何を思ったのかピンの動くポーリングという風景が見たくなったのですよね。

ボールをひたすら避けるタイプのクソムーブさせるというのもそれはそれでおもしろいとは思いつつ、少しばかり芸が無いので、
一寸のピンにも五分の魂と言わんばかりに、生命の息吹を感じさせるべくピンにはランダムウォークをしてもらうことにした。

今冷静に思い返すとランダムウォークから全くもって生命の息吹を感じられない。

というかランダムウォークブラウン運動って言ってしまうと私の頭の悪さが露呈してしまう感じである。
ブラウン運動 - Wikipedia

少なくともブラウン運動からは生命の息吹を感じることは無い。

それはそれとして、 三角関数を駆使してピンを並べることに成功し、 ピンたちは思いのままに動き始め、生命の息吹を感じたのもつかの間 f:id:rgbten084:20170627192423p:plain 次に現れたのは、弱肉強食の生態系、骨肉の争い、死屍累々の焼け野原としか言い表すことのできない地獄へと世界は姿を替えていったのである。 そう、ピン同士が勝手にぶつかって倒れていったのである。

ああ無情、この世に平和など存在しないのである。

驕れる者とは、私だったようだ。

補足 簡単に地獄を覗くことができるので、その様子はあえてこちらには乗せない。 せっかくなので遊んで下さい。 2分で飽きます。

ニコつくポスターセッションでクソゲー作ってる話をした話

4月29日,30日にやっていたニコニコ超会議内のニコつくポスターセッションでクソゲーを作っている話をしてきました

f:id:rgbten084:20170501061322j:plain
こんなことを話していました。

開発のの苦労話とか、2D->3Dに無理やり積分した時の積分定数Cを試行錯誤しながら無理やり実装していった話とかをしていました。

いいぞもっとやれとか、もっと評価されるべきとかすごく励みになるコメントタグをつけてもらえたのが本当にうれしい

調子にのってもっとやります、評価されなくてももっとやります
とりあえず今まで作ってきた子たちの供養も兼ねて細かく解説記事を書きます
たぶん書きます

後は調子にのってインベーダー作り続けます
でも若干飽きてきたから別のもの作るかも…

今まで作って来た子たちは
刺身たんぽぽバージョン1
https://nikonamakudou.github.io/games/20160929/t-zouchi/

刺身たんぽぽバージョン2
https://nikonamakudou.github.io/201610/t-zouchi/

1人称3Dパックマン
https://nikonamakudou.github.io/201611/t-zouchi/

1人称3Dインベーダー
https://nikonamakudou.github.io/201702/t-zouchi/

1人称3Dインベーダー実験アンケート
https://docs.google.com/forms/d/1IK0cMnOyBzbaPTBy7v9Fov_ijxsMxbI-gXWJgO2lVzM/edit

よかったら遊んでみてください

さすせそ

常日頃から気にしていることがある。
それは自分の作業時間をどうやって確保するかということである。

ぶっちゃけそんな簡単に作業時間を確保しているわけでは無いが、常日頃から作業しなきゃ作業しなきゃと思っている。

そんなこと言っても作業しない時は作業しないし、作業しないときほどアホなことを考えるものである。

作業しないと

さ行しないと?

さすせそ

アホな事言ってないで作業します。

ちなみに作業中は「し」です 理由は言わずもがなですね

ネコの顔面をプリントする

はろーはろー、お元気?
今夜何してるかというとブログ書いてます

突然ですが、会社に何故かネコがいます。
だいごろうって言います。
しかも専務取締役です。当然僕より偉い。

ちなみにコイツ

専務なので秘書もいる

それはそれとして、3Dプリンタも会社にある
組み立てに苦戦して、業者に送り返そうと箱詰めしてたら専務が邪魔してきたのがいい思い出
当然のように遊んでいるけど、案外作りたいものが思いつかない
そんな時に、専務グッズが色んな所で人の目に触れるということで3Dだいごろうを作った

f:id:rgbten084:20161230000945p:plain
モデルはこんな感じ
Fusion360を使ってる

サイズはプリントする時に調整できるからいい感じプリントしてあげた

作った子たち

f:id:rgbten084:20161230001334j:plain
画鋲に引っ掛けて存在感をアピールするやつ(塗りが雑)

f:id:rgbten084:20161230002002p:plain
大量生産はガンプラ方式でやった

f:id:rgbten084:20161230001539j:plain
白いフィラメントでプリント
面の革を厚くするときれいにプリントできる

f:id:rgbten084:20161230002039j:plain
でかいやつも作った
こいつ全然剥がれなくてヤバかった

f:id:rgbten084:20161230002431j:plain
ロゴもプリントした
1日1文字モデリング、ハゲるかと思った

f:id:rgbten084:20161230002532j:plain
そして立った

NG集

f:id:rgbten084:20161230002741j:plain
ダークマター f:id:rgbten084:20161230002825j:plain
暴れまわるだいごろう f:id:rgbten084:20161230002854j:plain
一晩ほっといたらこうなってた

こんな感じで遊んだよって言う記録
僕よりもだいごろうをよろしく