ツイッターに書こうと思ったが、ふとがっつり書きたくなったのでブログに。
ちなみに僕は車はおろか免許すらもってなく、ただ Top Gear が好きなだけなので車関係で色々間違ってたらごめんなさいorz
イギリスの車番組 Top Gear の司会者 Jeremy Clarkson は新しい高級車メーカーが現れる度にこう思うらしい
『また「フェラーリ以上の車を作るなんて簡単だぜ(鼻声)」と勘違いする馬鹿が現れた』と
実際そのとおりでタケノコのようには高級車メーカーがぽこしゃか現れては見事に爆発四散していった。
唯一生き残ったのは Pagani Zonda だけだった(多分他にもノーブルとか色々あるとは思いますが詳しくないのでorz)
「彼らは高級車を作ろうとはしませんでした」
どの回かは忘れましたが、とある新しい車メーカーを紹介するとき Jeremy はこう言った。
彼らは車の黎明期を彷彿とさせる車を作った。ニッチに食い込むという戦略のもとで。
ゲームでいうとレトロゲーを作るようなもんでしょうかね?
きっとアングリービデオゲームナードみたいな人が絶対買ってくれますよ!そしてバッファローの下痢をかけてくれるでしょう!
Unity 本体がブラックボックスの塊だったので長いこと避けてたんですが、最近ようやく触ってみました。
Unity は既存のゲームコミュニティよりは遥かにオープンですが、enchant.js(というより 9leap かな?)に比べたらかなりクローズドだと感じました。
Unity は自分も高級車メーカーに仲間入りができるかもしれない。と夢を見させてくれる魔法のアイテムだと思うんです。
だからある程度クローズドになるのは当然だなーと。そりゃみんな必死になりますよね。
自分の商品の生命線とも言えるソースコードを晒すなんてもってのほかだ。
Unity は遊びじゃないんだよ!!!
9leap のようなおもちゃ箱(最大限の尊敬と感謝を込めて)で遊んでる少年・少女(最近では3・40代でも少女扱いらしいですね・・・)には分からない、ほんとうに食うか食われるかの戦いをしている。
どうも楽しくなかった。
それもそのはずで、僕の総合的な能力(僕自身のスキルレベルとかグラフィッカーの人脈とか資金とか)では並み居る強豪たちにガチバトルを挑んで勝てるはずがないのは明らかだった。勝負にすらなってなかった。
Hunters 2 っていう iOS のゲームいくらか知ってるかい?450円なんだぜ?あのクオリチーで。まぁ多分あれは Unity ではないでしょうが。
嘘みたいだろ・・・こんなレベルの相手だらけなんだぜ?いい感じに絶望するだろ?
どうみてもレッドオーシャンです。本当にありがとうございました。
あと、ソースコードを晒さないというのは、誰からもアドバイスを受けられないということになります。
友達や先生のいない僕には致命的で、学ぶ機会がなくなり僕の成長は頭打ちになることは目に見えてました。
そんな答えが見つからない毎日の中、結局僕はプチ鬱(なんにでもプチをつけるないい加減にしろ!!)になってしまいました\(^o^)/
何週間も悩みぬいた末に僕が出した答えは、もう全部オープンソースでいいや。でした。
いいじゃないですが、一銭も稼げなくても、楽しければ。
それを誰かに丸ごと使用されて稼がれても大丈夫だ問題ない(むしろ感謝)
逆にそれが合図なんだと思います。「お前が作ったものに売りさばく価値があると判断する人間が現れ始めたぞ」と。
その時になってから初めてマネタイズについて考えたんでいいと思うんです。その時こそが高級車メーカーに挑戦するチャンスなんだと思います。
それ GPL でイイジャン。というツッコミもあるかもしれませんが、GPL は諸刃の剣。
ゲームを作っていつの日かこじんまりでいいからお金稼ぎたいなーと思うなら最低でも MIT でなくては将来的に自分の首を絞めることになると思いました。(もし商用利用する場合、使えなくなる可能性が大)
あと誰かにマネタイズを丸投げ(アウトソージング)できたならーという思いも正直少しあります。
誰かが稼いできてくれて分前もらえて生きていけたらなー・・・と(白昼夢)
とまぁーー長々と書いてしまいましたが三行(AA)でまとめますと。
だっておばんばんwwwwwwwww
現実逃避おつwwwwwwwwwww
後々になって思うと html5 ってどっちかというとソーシャルゲームの領域ですよね(失念)
彼らも壮絶なガチならぬガチャバトルを繰り広げているので html5 が公園の砂遊びと言ったのは間違ってました(謝罪)
http://d.hatena.ne.jp/alpha_neet/20120508/1336497694 の続きです。
| node | 0.6.12 |
| npm | 1.1.4 |
| socket.io | 0.9.6 |
2012/05/09 の時点で最新の node のバージョンは 0.7.8 ですが、
socket.io 付属のサンプルが 0.7 以上では動かないので、0.6 系をインストールします。
nave install 0.6.13
nave use 0.6.13
curl http://npmjs.org/install.sh | sh
ちなみに nave usemain <version> をすると、デフォルト選択になって、起動時にいちいち use しなくていいらしい。
cd ~/work(どこでもいい)
npm install socket.io
mv node_modules/socket.io/examples/chat/ .
cd chat
node_modules
web: node app.js
@@ -5,7 +5,7 @@ var express = require('express') , stylus = require('stylus') , nib = require('nib') - , sio = require('../../lib/socket.io'); + , sio = require('socket.io'); /** * App. @@ -42,7 +42,8 @@ app.get('/', function (req, res) { * App listen. */ -app.listen(3000, function () { +var port = process.env.PORT || 3000; +app.listen(port, function () { var addr = app.address(); console.log(' app listening on http://' + addr.address + ':' + addr.port); });
@@ -1,5 +1,9 @@ { "name": "chat.io" + , "engines": { + "node": "0.6.12" + , "npm": "1.1.4" + } , "description": "example chat application with socket.io" , "version": "0.0.1" , "dependencies": { @@ -7,5 +11,6 @@ , "jade": "0.16.4" , "stylus": "0.19.0" , "nib": "0.2.0" + , "socket.io": "0.9.6" } }
npm install
foreman start (or node app.js)
foreman がなければ node app.js で。
http://localhost:5000 か 3000 を開けばチャットが開始されます。
http://heroku-buildpack-nodejs.s3.amazonaws.com/manifest.nodejs
http://heroku-buildpack-nodejs.s3.amazonaws.com/manifest.npm
http://d.hatena.ne.jp/scalar/20120214/1329227856 を参考にしました。
git init
git add .
git commit -m 'first commit'
heroku create --stack cedar --buildpack http://github.com/heroku/heroku-buildpack-nodejs.git
git push heroku master
heroku open
上手く動いたら成功。
ローカルに比べて「Connecting to socket.io server」がちと長いかも。
いつまで立っても動かなかったり、エラーが出たら heroku logs を見てみる。
heroku では公式にサポートしてる node.js のバージョンが 0.4.7 だったり node 自体のバージョンパップも激しいので、すぐ切り替えれるように nave で管理することにしました。
(注)npm の削除には node.js が必要っぽいので必ず npm から削除しましょう
http://mochizblog.heroku.com/13を参考にしました。
npm uninstall npm -g
$ brew uninstall node
したところ、エラーが出たので、/usr/local/lib/node_modules/npm/uninstall.js を見てみると
// uninstall .. should not delete /usr/local/lib/node_modules/..
var p = path.join(path.resolve(nm), path.join("/", arg))
みたいなこと書いてあったので
var p = "/usr/local/lib/node_modules/'"
こんな感じに直接指定してみたら上手く消せました?(いいのかこれで(汗
cd ~/lib
git clone http://github.com/isaacs/nave.git
cd ~/bin
ln -s ~/lib/nave/nave.sh nave
適当に ~/lib とか ~/bin とかに入れちゃいましたけど、多分 git clone する場所は ~/.nave が正しいお作法っぽいです。
http://koexuka.blogspot.jp/2012/04/zshnaveno-such-option-rcfile.html
手抜きすいませんorz
小学生かよ!!!というような問題ですが。
きっと僕が小学生のころは覚えてたんですが忘れてしまったので復習しますた!
というか skype で教えてもらったのでそのまま書きました!
最初1が出る確率は 1/6 ですね。こんぐらいは分かりますよね!?(必死)
次はなんでもいいので 6/6 になります。
よって最初1が出て、次はなんでもいい確率は 1/6 * 6/6 = 6 / 36 になりあす。
最初1以外が出る確率は 5/6 です。1が出なかったので次は1が出ないとだめです。
1が出る確率は 1/6 です。
よって最初1以外が出て、次に1が出る確率は 5/6 * 1/6 = 5 / 36 になります。
サイコロを二個振ってどちらかが1でるのは(A)と(B)の場合のみなので、この二つ足します
6 / 36 + 5 / 36 = 11 / 36
よって、「サイコロを二つ振ってどちらかが1になる確率は 11 / 36 である」(きりっ
どちらかが1ではあるということは逆に言えば1(36/36)からどちらも1ではない確率を引いたものでもある。
両方1ではない確率は 5 / 6 * 5 / 6 = 25 / 35 になり 36 / 36 - 25 / 36 = 11 / 36 になる。
javascript さっぱり分かんないんで、repl で色々試したいなーと思い調べてみました。
他にもオススメあれば教えててくだしあ>ω<b
多分これが最強です。
現在作業中のページのタブにフォーカスを合わせて
右上のメニューボタン > ツール > デベロッパーツール をクリック。
下の >= っぽいアイコンをクリックするとコンソールが立ち上がって色々入力できます。
自動補完もしてくれてむちゃ便利です。
あと、作業中のページの js 全てを読み込んだ状態になるので、普通にここで enchant.js のクラスを作ったり出来ます。
brew install node
node
これで repl が起動するので、文法とかの確認をターミナル上でさくっと行いたい場合は node を使うもいいかもしれません。
| console.log() | println 的なもの。chrome の Developer Tools でも使える |
| _ | 直前に評価した値が代入される特殊変数 |
MongoDB のコンソールでも同じことが出来るらしいので、地獄のミサワっぽくカチャカチャカチャ...ッターン!すると相手に「こいつ、ただものではない」と思わすことが出来ます!!。。。とツイッターで聞きました!!
websocket が凄すぎるので(←遅い)javascript 始めてみました。
適当にどんな感じで開発してるか軽くメモっときます。
もっといい方法があれば教えてください!!
https://github.com/wise9/enchant.js/zipball/master
から落としてきて解凍。なかの examples/shooting/ を適当な作業ディレクトリにコピー
基本僕 Dropbox の下で作業してるので ~/Dropbox/work/js/test とかに移動。
中の index.html をダブルクリックしてシューティングが始まったら成功
cd ~/Dropbox/work/js/test
mv main.js main.old.js
touch main.js
新しい js ファイルを作って、サンプルのシューティングのソース(main.old.js)を見ながら色々弄るといいキガシマス!
あとここにいけば、むちゃくちゃサンプルプログラムあるので大変助かります!
iphone で実機確認が簡単に出来るとマンモスウレピーので mac 付属の apache を使ってみる。
sudo vim /etc/apache2/users/<username>.conf
- Options Indexes MultiViews
+ Options Indexes MultiViews FollowSymLinks
プロジェクトファイルは Dropbox の以下にあるのでシンボリックリンクを貼るため設定を変更する。
あとプロジェクトファイルまでのパーミッションが全部 755 になってないとダメっぽいです。
僕の環境だと ~/Dropbox が 755 になってなかったので chmod 755 ~/Dropbox にしました。
cd ~/Sites
ln -s ~/Dropbox/work/js/test/ test
これで、上のメニュー > リンゴマーク > システム環境設定 > 共有 > Web共有 を on にする。
「パーソナル Web サイトフォルダを開く」の上に表示されている URL をクリック。
URL の末尾に /test を追加して表示されたら成功。
PC と同じアクセスポイントの wifi 接続した iPhone で URL を開いて表示できたら成功。
恥ずかしながら今までタグジャンプ機能的なもの使用してませんでした( ;´。 `;)
こ、こんなに便利ならもっと早く使ってればよかった。。。
nnoremap <C-[> :pop<CR>
brew update
brew install --use-gcc ctags
cd ~/Dropbox/work/js/test/
ctags -R
これで vim で main.old.js 開いて、適当なところで C-] を押すと定義の箇所にジャンプしてくれます。
C-[ でジャンプ前に戻ります。スゴイ!!
あと、ちょい vim でのインデントが微妙だったので適当の探してきたの使わせて頂きましたorz
http://d.hatena.ne.jp/h1mesuke/20100701/p1 を .vim/indent/javascript.vim に入れるとまぁまぁいい感じに。
全然 javascript と関係ないですが、いい機会なので自分のレガシーな部分を一新してみました。
brew install tmux
unbind-key C-b set-option -g prefix C-t bind-key C-t send-prefix unbind-key l bind-key C-t last-window unbind n bind-key C-n next-window unbind p bind-key C-p previous-window bind-key c new-window bind-key q kill-server set-window-option -g mode-key vi
https://github.com/scala/scala/blob/master/docs/examples/swing/ButtonApp.scala#L16-L18
https://github.com/scala/scala/blob/master/src/swing/scala/swing/Reactions.scala#L19-L27
こんな感じに reactions に PartialFunction を足していく感じのを actor でも出来たら便利なんじゃないんだろうか?
色んなの reactions に足していけるし!みたいなことを思い付いたので実装してみました
http://d.hatena.ne.jp/yuroyoro/20100705/1278328898
http://www.ne.jp/asahi/hishidama/home/tech/scala/actor.html
を参考にさせて頂きました。
| scala | 2.9.1 |