でらうま倶楽部

バカってゆうか、ゲームを作る事しか能の無いプログラマの、面白おかしな日々を綴ってみる実験。

Emacs 26.1 が出た!

スクリーンショット 2018-05-29 18.17.57

コード書いとる?

ついにEmacs 26.1がリリースされましたね。
とりあえずmacOSへの導入メモ。

・gnutlsが必要なので

brew install gnutls

とかして導入しとく

公式からソースをダウンロード
パッチをダウンロード

spacemaceを使っているので、特に変化を感じませんw
起動時間はかなり短縮され、4秒を切るようになりました

念のため .emacs.d/elpa 以下のスクリプトを再コンパイルしたい場合は ~/.emacs.d/elpa で
 
find . -name '*.elc' | xargs rm

としてからspacemacsを起動して
 
SPC u 0 SPC SPC byte-recompile-directory

で ~/.emacs.d/elpa を選ぶと、まとめてbyte-compile してくれます。
(起動時に .elc が無い時は自動でbyte-compileするとかありそう)

ではまた次回!!

Oculus Go の開発を macOS Unity で始める

スクリーンショット 2018-05-16 17.29.16

コード書いとる?

Oculus Goが手元に届いてゴニョゴニョ始めたので、macOS向け環境導入メモを残しておきます。

・Xcode Command Line Toolsをインストール

Unity 2018.1.0f2 をインストール。

Java Development Kitをインストール
 ・Java SE Development Kit 8u172をダウンロードしてインストール

・Android Studioは要らんので、Command line toolsをダウンロードして解凍。

・tools というフォルダを適当な場所へ移動。 拙者は ~/Library/Android/ に置いた。

こちらのサイトを参考に、環境変数 JAVA_HOME を設定。

・ターミナルを開き sdkmanager のあるフォルダへ移動

・sdkmanagerを使って必要なファイルをダウンロード。 toolsと同じ階層にインストールされる
tools/bin/sdkmanager "platform-tools"
tools/bin/sdkmanager "build-tools;27.0.3"
tools/bin/sdkmanager "platforms;android-25"

・tools/bin/avdmanager をテキストエディタで開き、3行目くらいに以下を追加

JAVA_HOME=`/usr/libexec/java_home -v 1.8`

 ・これでUnity EditorでBuildした時のエラーが解消できる。

Oculus公式サイトで開発用にアカウントを作る

・アプリを実機で動かすのに必要になるので、ここで何か団体を登録しておく

・アプリを実機で動かすためにOculus Signature Fileを作っておく。
 ・サイトにファイルの置き場所も書いてあるので確認しておく。

公式サイトからOculus Utilities for Unityをダウンロードしとく
 ・後で自分のプロジェクトに手動でインポートする

・Unity Editorにて環境設定を開き External Tools 内 AndroidのSDKとJDKのパスを適切に設定

・PlatformをAndroidに変更

・Playerの設定を開き Other Settings内Target API LevelをAndroid7.1に変更

・XR Settings 内 Vertual Reality Supported のチェックボックスを入れ、Virtual Reality SDKs に Oculus を追加

スクリーンショット 2018-05-16 17.30.30

・プロジェクトにOculus Utilities for Unityをインポートしとく

・実機の開発者モードをONにしとく

・実機をUSBケーブルでMacに繋ぐと、開発者モードで繋ぐ?と実機側で表示されるので必ずOKしとく

・サンプルシーンをビルドして実機で動けば成功!

これで実機で動作します。たぶん。
 
ただEditor上ではライブラリが見つからずにエラーとなってしまいますのでなんとかしたいです!

ここに至るまでにかなり難儀をしたので誰かビールを奢ってくださいw

ではまた次回!!

spacemacs のキーバインドを解除する

photo

コード書いとる?

spacemacs だとキーバインドの解除はどうすんの? って思ってたんですが、これでよかったんですね。

(spacemacs/set-leader-keys "ap" nil)
 
ではまた次回! 

Cinder で色々値を調整するci::params::InterfaceGlをちょこっと使い易くする

コード書いとる?

Cinderに搭載されている ci::params::InterfaceGl を使うとリアルタイムに値の調整ができてとても便利です。
内部では AntTweakBar を使っているようですね。

で、普段は邪魔になるので隠したいじゃないですか。

これは ci::params::InterfaceGl::show で実現できるのですが、実現できるのですが、これが邪魔やねん! この左下のが!!
photo1

イラっときて調べてみたら、こんな議論を見つけました。

早速試してみる。
extern "C" {
  int TwDefine(const char *def);
}

TwDefine("TW_HELP visible=false");

photo2

ウム!スッキリ!!

ではまた次回。

Cinder0.9.1 メモ

18

コード書いとる?

最近よく使っているFrameworkのCinderで若干気になる事があるのでメモ書き。
  • iOS版はOpenGL ES3.0ベース。ES2.0対応にしたい場合はプリプロセッサにCINDER_GL_ES_2を定義して再ビルド
  • 文字のレンダリングにFreetype2を使っている??
    →Android版のみが利用(まだ非公式)
  • macOS・iOS版はリンカーの設定で、「prelink」が有効になっているのだが、これが原因でリンクに時間が掛かる
    →設定を外して、プロジェクトごとにリンクするライブラリを指定するようにした方が良さげ
  • iOS版にてサウンド再生を使う場合は自前でイヤフォンの抜き差しに対応する必要がある
    →AudioSessionを使う
  • iOS版はGLKitを使っていないのでXcodeにてCPUの占有時間が正しく測れないw
これくらいかな?
 
ではまた次回!! 

iOSアプリを「OpenGL ES3.0」必須にする

コード書いとる??

年明けから絶賛製作中のアプリですが、絶賛製作中です。

利用しているFramework Cinder 0.9.1 がOpenGL ES3.0必須なので、「それどうやってXcodeで設定するんだ?」と思って色々調べた結果をメモ書き。

UnityとかUE4とか使ってる人には多分関係ない。


GameCenter対応とかiCloud対応ならXcodeのCapabilitiesにて設定できますが、そこに「OpenGL ES3.0必須」という項目が無い。

39


そこでAppleのドキュメントを調べてみたらここに書いてありました。公式ドキュメント大事。

Info.plistにRequired device capabilitiesを追加、さらに子供の要素で文字列 opengles-3 を追加すれば良い。

08


これで手持ちのiPhone5ではアプリを起動できなくなりましたw

26


ではまた次回!!

spacemacs だと Flycheck の導入が一瞬で終わるのだ

photo

コード書いとる??

spacemacsのlayerにあるsyntax-checkingがめっちゃ便利なので導入方法のメモ。
とくにJSONにて!!

emacsにはプログラムの書き間違いをその場で指摘してくれるパッケージFlycheckがあります。
対応言語はなんと40種類!! アホか!!(褒め言葉)

んで、spacemacsにはそのFlaycheckをサクッと導入するためのLayerが用意されていて、init.el内のdotspacemacs-configuration-layersに書き足すだけで使えるようになる。神か!!

んで、ワシが使いたいのはJSON編集時!! もーカンマの書き間違いが多くって、困っちゃってたのだ。これがFlycheckを使えばその場でミスが見つかるという寸法。

init.elでは以下のように設定を書き足した。

(setq-default dotspacemacs-configuration-layers
              '(
                (syntax-checking :variables syntax-checking-enable-by-default nil)
                ))

(defun dotspacemacs/user-config ()
  (defun json-mode-hooks ()
    (flycheck-mode))
  (add-hook 'json-mode-hook 'json-mode-hooks)
  )

こんな感じにエラー個所がわかります。

53

これでもうカンマを忘れたり、余計なカンマをつけたままにしたりしない!!

スッキリ。

emacs の which-key に便利すぎる機能が追加されていた件。

photo

コード書いとる??

先日which-keyを更新したら「SPCキー押し下げで表示されるpopupがエラーで出なくなる」という不具合に遭遇しました。
不具合はコミュニティーの力であっちゅーまに解決されたのですが、ついでにwhich-keyの更新履歴を眺めていたら、なんと便利な機能が追加されていたのでメモ書き。

変数 which-key-enable-extended-define-key をnil以外にすると、ショートカットキー登録時に説明文を一緒に登録できるという機能です。

(define-key some-map "f" '("foo" . long-name-for-command-foo))

いやこれめっちゃ欲しかった!! which-key-replacement-alist にゴニョゴニョ追加するのがしんどかったので、この対応は素晴らしい!!

spacemacs だとこんな感じに登録できます。

(spacemacs/set-leader-keys "f" '("foo" . long-name-for-command-foo))

emacs lisp最高!!

ではまた次回。

spacemacs で自動的にモード(evil-state)を切り替える

photo

コード書いとる?

気づけば2018年ももう一週間ほど過ぎていますね。みなさんどんな年末年始をお過ごしでしたか?
私は「年初めひとりゲームジャム」と称して試作版ゲームを作っておりました。

さて spacemacs を使っていて気になっていた事がひとつありまして。

emacs純正のcalculatorは手軽で16進数の計算もサクッとできるしで愛用しています。spacemacsではこんな感じにキーを割り当てていました。

(spacemacs/set-leader-keys "ac" 'calculator)

ところがこれだと電卓起動時はnormal-stateなので、いざ計算しようと思ったらinsert-stateかemacs-stateにしないといけません。めんどい!!

マジか…他のはどうしてるんだ?!と思ってネットを調べてみたら…見つかりました!!

モード起動時にevilのstateを切り替える変数がありました。さすがだ。
  • evil-emacs-state-modes
    モード起動時にemacs-stateにする
  • evil-normal-state-modes
    モード起動時にnormal-stateにする
  • evil-insert-state-modes
    モード起動時にinsert-stateにする
結果これで丸く収まりました。
(spacemacs/set-leader-keys "ac" 'calculator)
(add-to-list 'evil-insert-state-modes 'calculator-mode)

スッキリ!!

emacs でのマウス操作を封印する

photo

コード書いとる?

emacs でのマウス操作を封印するパッケージ disable-mouse が少し新しくなりました。

「や、マウスホイールの操作は残しておきたいんですよね…」
とIssueを投げたら速攻で対応していただきました。

設定時にこんな感じにしておきます。

  (setq disable-mouse-wheel-events nil)
  (global-disable-mouse-mode)

ではまた次回!! 

Invalid function:helm-build-sync-source で困ったら

photo

コード書いとる?

spacemacs最高ですね。

先日パッケージを更新したらちょいちょいこんなエラーが出るように…

Invalid function:helm-build-sync-source

結果helmでの検索一覧から何かしらアクションを起動できなくてつらい…

helmの過去のIssueをみるに「helmを再インストール(再コンパイル)すれば治るよ!」との事ですが、どうやらそれだけではダメっぽい。

結局「spacemacs終了→ .emacs.d/elpa削除 → spacemacs起動 → 全パッケージ再インストール」で治りました。

スッキ…リ?

emacs から SuperCollider を直接起動する

15
コード書いとる?


いちいちSuperColliderを起動して SuperDart.start とかするのが面倒なので、自動化しました。

1. emacs のマクロを導入
 
2. 以下の内容のテキストファイル startup.scd を用意

SuperDirt.start

3. init.el に追加

(with-eval-after-load "tidal"
  (require 'sclang)
  ;; sclangへのパス(必要であれば) 
  ;;(setq sclang-command "hoge/sclang")
  ;; sclang起動時に読み込んで実行する startup.scd ファイルのパス
  (setq sclang-command-arguments "hoge/startup.scd")
  (define-key tidal-mode-map (kbd "C-c s s") 'sclang-start)
  (define-key tidal-mode-map (kbd "C-c s q") 'sclang-quit))

4. emacsにて適当にTidalCyclesのファイルを作成(hoge.tidal)
 
12

5. sclang-start (C-c s s)を実行

39


6. tidal-start (C-c C-s)を実行

50


7. Enjoy it!!

ではまた次回!!

TidalCycles と spacemacs とライブコーディング

15

コード書いとる?

何かで見かけた「ライブコーディング」の記事が妙に引っかかってて、ちょっと調べてみたら TidalCycles に行き当たって、早速 spacemace で扱えるようにした導入メモ。

導入にはここが大変参考になりました! 多謝。

ちなみに macOS での導入方法です。 それ以外のOSの人、申し訳ない!!

1. Homebrew を導入
2. 
Haskellのビルド、パッケージ管理を担うstackを導入
ターミナルからコマンドを呼び出す 
brew install haskell-stack
stack setup 

~/.stack/global-project/stack.yml のresolverを以下のように変更
resolver: nightly-2017-07-31

3. 色々導入 
ターミナルからあれこれ動かす。 
stack setup
stack install apply-refact hlint stylish-haskell hasktags hoogle
stack install tidal
brew cask install supercollider 

4. SuperColliderを起動
左カラムのテキストエディタに以下をコピペ
include("SuperDirt")

Command + Enter をキーボードから入力しコード実行。
しばらく待ち、右下のコンソールにSuperDirt installedと表示されれば完了

5. spacemacsでの設定

dotspacemacs-configuration-layers に haskell を追加
dotspacemacs-additional-packages に tidal を追加
dotspacemacs/user-config に以下を追加
(setq tidal-interpreter "/usr/local/bin/stack")
(setq tidal-interpreter-arguments
      (list "repl"
            "--ghci-options=-XOverloadedStrings"
            ))

spacemacsを再起動。自動的にhaskellとtidalのパッケージのダウンロードが始まる。

6. SuperColliderを起動
テキストエリアに以下を貼り付け
SuperDirt.start

Command + Enter をキーボードから入力しコード実行。
 
アプリ右下のServerラベル右のエリアの文字が緑色になっていることを確認する

7. 試しに音を鳴らす
spacemacsにて test.tial などと適当にバッファを作る。 設定がうまくできてれば Haskell Tidal mode になっている。
 
C-c C-s で Haskellを起動

バッファに
d1 $ sound "bd bd bd bd" 

と入力して C-c C-c で演奏開始!!

Happy TidalCycles time!!

macOS はキーボードショートカットがかなり自由だった話。

コード書いとる??

長らく使っているmacOSでようやく使い方を心得た機能のメモ書き。

キーボードショートカットの割り当てですが、なんとシステム環境設定内の「キーボード」で変更できるんですね。

Mission Controlのキー設定は以前から変更していたのですが、まさかアプリケーションごとに細かく変更可能できるなんて!!

photo1


アプリケーション固有のキーボードショートカットを追加するには「+」ボタンを押す。

photo2


設定ダイアログが出てくる。

photo3


ショートカットを追加するアプリケーションを選び、メニュー表記とキーボードショートカットを順次入力。

photo4


おおおお!

photo5


もちろん既存のキーボードショートカットの置き換えもできます。便利!

「このアプリはキーボードショートカットの変更ができなくて不便だ…」て思っててすいません。OSでサポートしてるんならアプリでの実装は必要ないよね…

ではまた次回!!

spacemacs が起動しなくなった場合の回避策

photo

コード書いとる?

朝寒くておきづらい…と思っていたら12月ですよ。師走ですよ師走。
「走って授業しなさい」とでもいうのでしょうか。

さて大のお気に入りの spacemacs ですが、最新のパッケージにすると起動しないという不具合が発生しています。

これは各種パッケージのstable版を使うよう設定ファイルで指定すれば解決します。

(defun dotspacemacs/user-init ()
  ;; 新しいリリースまでパッケージはstableを使う
  (push '("melpa-stable" . "stable.melpa.org/packages/") configuration-layer--elpa-archives)
  (push '(use-package . "melpa-stable") package-pinned-packages) 

  ;; 以下設定が続く
  )

うっかり最新版のパッケージを導入してにっちもさっちもいかなくなってしまった場合は、設定ファイルに前述のコードを追加したのち、一旦 .emacs.d を削除。spacemacsを再導入してみてください。

ではまた次回!!

Emacs の iedit が想像以上に便利!!

コード書いとる?

遅ればせながら iedit を知りました。

Emacs 用のプラグインで、バッファ内でマッチしたキーワードをまとめて編集できる素晴らしい機能です!!

もちろん spacemacs では専用のキーバインドが割り当てられていて、これが快適快適!!

こんな感じでテキストがあったとしましょう。

photo1

「hoge」にカーソルを合わせて SPC s e

photo2

「hoge」がハイライトされます。

photo3

この状態でハイライトされた箇所を編集すると、ほかのハイライトされた箇所もまとめて編集される!! 対話的一括置換!

photo4

一番のお気に入りは「Vキーでハイライト箇所だけ表示」これ便利すぎっしょ!!

photo5

ただし、現在の状態だと iedit の関数名がいくつか変更されていて、Vで検索箇所だけ表示のトグルが使えません。

work-around としてinit.elに以下の一文を追加すれば使えるようになります。

(fset 'iedit-toggle-unmatched-lines-visible 'iedit-show/hide-unmatched-lines)

ではまた次回!!

macOS High Sierra でアプリの音声を録音する

Soundflower
コード書いとる?

「アプリのサウンドを録音したい!」

ちょいちょい必要な時があって、そういう時にだいたい設定を忘れててゲンナリするので、あらかじめメモ書き。


macOS標準添付QuickTimeの機能のひとつ「画面収録」は、拙作アプリのプレイ動画を収録する時にとても重宝しています。

なーのーでーすーがー!! アプリの音が収録できない。

それをなんとかするのがソフトウェアの力なのに…とネットを調べて見つけたのが「SoundFlower」というソフトでした。

このソフトが仮想オーディオ出入力デバイスを生成し、アプリはこのデバイス経由で音声の出入力ができるようになります。

すると「アプリ→音声出力→仮想オーディオデバイス→音声入力→アプリ」ということが実現できてQuickTimeの画面収録でアプリの音声も収録できてイェッフウウ!! となるわけです。

ソフトの導入に関してはこちらが詳しいです。

なーのーでーすーがー!! SoundFlowerを使うと画面収録中の音声が聞こえない(涙)

他のアプリを導入するのもなんかめんどくさいと思って再び調べてみたら、なんとmacOS標準添付のアプリ「Audio MIDI設定」で実現できる事が判明。早速試してみました。


まずはアプリを開く。
 
photo1


メニュー左下「+」を押して「複数出力装置を作成」を選ぶ

photo2


「内蔵出力」と「SoundFlower」へ同時に出力するよう設定

photo3


「システム環境設定→サウンド」での出力先を「複数出力装置」にする

photo4


以上!!! 簡単です!


オマケ

photo5


サウンドでの入力元を「SoundFlower」に変更するとDTM系ソフトでアプリのサウンドが直接録音できてこれも何かと便利!!


ではまた次回。

spacemacs でマウス入力を無視したい

photo

コード書いとる?

spacemacs 超便利です。

なのですが、トラックパッドに手が触れてカーソル位置が勝手に移動してしまう事故が多発するので、マウス入力を概ね無視する設定を調べました。

本来なら disable-mouse でサクッとマウス入力を無視するようにできるのですが… spacemacs の場合はさらに以下の処理が必要でした。



うむ!

ではまた次回!!

macOS High Sierra での Processing 3.3.6 の動作不具合

test
コード書いとる?

macOS High SierraにバージョンアップしたらProcessingのメニューバーが表示されなくなりました… アプリの終了すらままなりません(涙) 

こりゃさすがに不便でしょ!ってんで調べたら公式のGitHubリポジトリに報告が上がってました。まあみんな困ってますよね。

とりあえずの対策はターミナルを起動して以下のコマンドを実行する。

defaults write org.processing.app AppleLanguages '(en)'

スッキリ!

ではまた次回。

spacemacs で helm が動作しない場合の work-around

photo

コード書いとる?

spacemacs を導入した時に helm のコマンドを使おうとしてエラーが発生する場合は
.spacemacs の dotspacemacs/user-config に

(require 'helm-bookmark)

を追加すると良いです。

ではまた次回!
記事検索
電子書籍発売中

「チュートリアル形式で始めるOpenAL」
サウンド怖くない。C++による8つのチュートリアルで始めるOpenALプログラミング。さああなたも、自作アプリに魅力的な音効を添えてみませんか??
⇒Kindle版 ⇒iBooks版


「iPhoneアプリ『ういろう』のレシピ」
ゲームってどうやって作ってるの?? 拙アプリ『ういろう』の製作過程を本にまとめました。もちろんソースコードつき
⇒Kindle版 ⇒iBooks版


『チュートリアル形式で始めるOpenGL[2D編]』
OpenGL怖くない。C++による16のチュートリアルで始めるOpenGLプログラミング[2D編]。さああなたも、ゲーム作りを始めてみませんか?
⇒Kindle版 ⇒iBooks版
自作ゲーム配信中

『BRICK & TRIP』
咄嗟の判断に、あなたの指先はついてこれるか?! 爽快フリックアクション!! 様々な難関をくぐり抜けて旅の終着点を目指そう!!
⇒AppStore


『ういろう』
名古屋土産ういろうがiPhoneで大活躍?! 白ういろうを守れるのはあなただけ。ひゅーん、ぼよよーん!!
⇒AppStore ⇒LITE版


『こなへん』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒AppStore ⇒LITE版


『GEOSPOT』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒Windows ⇒Mac


『TieGunner』
マウス片手に大宇宙へ飛び立とう!『しっぽシューティング』というジャンルを作って頂きました^^; WinでもMacでも動きます。ソースもあるでよw
⇒Windows ⇒Mac
QRコード
QRコード
  • ライブドアブログ