2014年12月08日

バイナリ―オプション

どうやら数年前から話題にはなっていたようなのですが、某所でバイナリ―オプション取引というものがネタになっていて、初めてその存在を知りました。通過が10分後に値上がりするか値下がりするかの二者択一で予想するだけ、というヤツです。

そこで話題になっていた取引サイトは bo-box.com というところだったのですが、なんと倍率は 1.75 倍です。例えば 1000 円払って「値上がり」を購入したとして、その 10 分後、通貨が値上がりしていれば 1750 円戻ってきます。驚くことに倍率は固定で、たとえ購入した全員の予想が当たったとしても、戻ってくる金額に変化はありません。話がうますぎてなんとも不安になるじゃありませんか。

いったいどんなものなのか気になり、bo-box.com にフリーのメアドで登録だけしてみたのですが、なるほど単純でわかりやすく、ほとんどゲーム感覚で取引することができるみたいですね。
これって普通に現金を使ったギャンブルゲームに見えるのですが…確かにハマる人はハマりそうです。

で、自分はそんなものに手を出す余裕も勇気もないので、代わりに過去のチャートから次の値動きを予想するプログラムを組んでみました。「自分だったらここでこれを買うなあ」というのをそのままアルゴリズムにした感じです。

さっそく「過去2日間にわたり、5分毎にひたすら取引を繰り返した」という設定で実行してみたところ、勝率が 50.8% という極めて微妙な値になりました…。うん。サイコロ振って決めるのと変わらないですね。
というかこんなプログラムひとつで稼げるならだれも苦労はしないわけで。

なんとも当り前な結論になりました。
posted by JUNOSOFT at 18:51| Comment(0) | 雑談

2014年07月26日

自販機の難易度が高すぎる

数年前から、タッチパネル式の自動販売機をJRの駅で見かけるようになりましたね。
よく見てみると、タッチ操作しなくてもジュースが選べるようにカーソルボタンと決定ボタンがついていることに気が付きました。
試しにカーソルボタンを押してみたのですが、画面に全く反応がありません。あれ?と思ってポチポチやっていていたのですが、よくよく見てみると、うっすらと、本当にうっすらとスポットライトのようなものがジュースに当たっていることに気が付きました。カーソルボタンを押すことで次々とスポットライトの位置が変わっていくのですが、とにかくよくみないと分かりません。元々明るい背景に対して白いスポットライト画像が加算合成で重なっているため、全く目立たなかったというわけです。
カーソル選択モードのときだけ背景を暗くするとか、逆にスポットライト以外の部分を薄暗くするとか、どうにかしたほうがいいんじゃないかと(というか、変にオシャレにしないで素直に目立つ色のカーソル枠を表示したほうがよいと思う)。
アップデートとかで直るんですかね?
posted by JUNOSOFT at 01:42| Comment(0) | 雑談

2014年04月28日

SurfacePro2アップデート

ぜんぜん気が付かなかったのですが、Surface Pro 2 でこんなアップデートが来てたみたいですね
http://www.digitalgrapher.com/2014/04/type-cover-2windows-81-update-1.html

スライドパッドがとにかく使いづらいというのは激しく同意です。アップデートで少しはマシになるかな…?
posted by JUNOSOFT at 04:21| Comment(0) | 雑談

2014年04月22日

続 SurfacePro2

Surface Pro 2 がようやく届きまして、普段デスクトップでしか使ってなかった Win8.1 を初めて本格的にタッチパネルで使ったのですが…

タッチキーボードが微妙すぎる…

まず、デフォルト状態のタッチキーボードだと、上下のカーソルキーとファンクションキーが付いていません。文字を打つのに特化している感じです。
(※ちなみに、このタッチキーボードは「Windows簡単操作」のスクリーンキーボードとは異なります)

そこで「ハードウェアに準拠したキーボードにする」を設定すると、通常のキーボードとそっくりな外観のタッチキーボードが出てきます。
ファンクションキーだろうが Alt だろうがやりたい放題です。ただ… なぜかアンダーバーがないんですね…。

そこで、タッチキーボードではなく、「Windows簡単操作」で使えるようになるスクリーンキーボードを出してみると、ディスク購入したほうの Win8.1 で使えるスクリーンキーボードと微妙に異なるんですこれが。
アンダーバーのキーが見当たらないんです。ディスク版 Win8.1(正確にいうと、ディスク版 Win8 購入後に 8.1 にアップデートしたやつ) のスクリーンキーボードではちゃんと右Shift の横に「ろ」のキーがあり、それにアンダーバーもついているのですが、Surface Pro 2 の Win8.1 だと、そもそもスクリーンキーボードにひらがなが表示されていません。記号とアルファバットのみが刻印されている感じです(しかし英語版キーボードというわけでもない)

Google先生に聞いてみるといくつか似たような質問があるのですが、「ろ」のキーにアンダーバーがあるでしょ何言ってんすか みたいな冷たい回答があるだけです。正直よくわかりません。
ディスク版 Win8.1 なら確かにそのキーがついてるんですけどね、Surface Pro 2 のやつにはないんですよ!!

なにか見落としているだけという気もしますが。

結局いまのところ、アンダーバーを打つにはデフォルト状態のタッチキーボードに戻して記号入力モードにして打ち込むか、日本語で「あんだー」と入れて変換するかしかありません。
うわあああああああああああ
posted by JUNOSOFT at 02:43| Comment(0) | 雑談

2014年04月10日

バージョン管理ツールのコミットログ

バージョン管理ツールを使っていると、当然コミット時にコミットログを書くことになるわけですが、特にフォーマットがあるわけでもなく、自由に思いつくままに書いていました。
が、ログを見返した時わかりづらい部分が多くなってきたので、そろそろ統一しようかなあと考えていたところです。

あまり細かいフォーマットだとログを書くこと自体が面倒になるし、あまりに大雑把だとログの意味が無いしで悩んでいたのですが、結局、変更種類と変更目的、場合にり変更箇所を書くのがよい、という結論になりました。

「変更種類」は以下の4つ:
追加 → 今までになかった動作を追加した
変更 → 動作内容が変化した(仕様が変更された)
修正 → 間違っていた動作を直した(仕様に変更なし)
リファクター → 動作に影響を与えない変更全般。ソース整形、クラスわけの修正など。コメント修正、タイプミス修正も含む


「変更目的」は、つまり変更理由です
簡潔に、「〜のバグ修正」とか、「○○が△△になるよう変更」 とか、そんなふうに書いています


「変更箇所」は差分を見れば一目瞭然なので、基本的には書かなくていいのですが、「差分を見ないとわからない」というのもアレだし、ログ一覧を見たときにすぐにわかるようにしたいので、一言だけ変更箇所を書いておくようにしています。
「○○クラス」とか、あるいは単に「描画関数」とか、本当に一言。変更箇所が多数にわたる場合は省略してます(それこそ差分をみてくれ、という感じ)

posted by JUNOSOFT at 06:18| Comment(1) | 雑談

2014年01月26日

SurfacePro2

たまたま店頭で触った Surface 2 が予想以上にサクサク動いたので衝動買いしようかと思ったのですが、一応、メモリバカ食いと噂の Google Chrome の動作具合を見るために、その場でダウンロードしてインストールしてみました。
ところがインストーラを起動すると「この環境ではインストールできません」と…。
「この環境では」というのが気になってよくよく見てみたら、Surface 2 に入っているのは Windows8 RT だったんですね。
全然知りませんでした。

というわけで、ノーマル Windows8 が入っているという Surface Pro 2 を注文して既に2週間。
いまだ入荷せずの状態が続いています。品薄だとは聞いていたけど、ここまでだったとは…。
こういうのってキャンセルしたとたんに「入荷しました!」となるのは目に見えているので、気長に待ってみることにします。
posted by JUNOSOFT at 16:05| Comment(0) | 雑談

2013年11月19日

SublineText2

Subline Text 2 では UTF8 しか開けない!!とか騒いでいたのですが、早とちりでした。
Preference メニューの Settings - Default を選ぶと設定ファイルが開くので、そこで
"default_encoding": "UTF8",
になっている部分を
"default_encoding": "SJIS",
にすればいいだけでした。
ついでに
"font_face": "MS ゴシック",
とも指定しておけばOK… だと思ったんですが、どうもうまくいかないんですよね…?
posted by JUNOSOFT at 20:18| Comment(0) | 雑談

2013年11月16日

TurboCのカラーテーマをまねる

デフォルト設定である白地に黒文字が目にやさしくないので、
昔懐かしい Borland Turbo C のエディタの色を思い出してみる事にしました。
このカラーテーマ、たしか Delphi にもあったような。

_TurboC.png

背景 - 紺
テキスト - 黄
文字列リテラル - 赤紫
予約語 - 白
数値 - 水色
プリプロセッサ - 黄緑
コメント - 灰色

でした。昔を懐かしんでみましょう。


-- 追記 --
うっかり書くのを忘れていましたが、これは一般的なテキストエディタでの色設定の話です
posted by JUNOSOFT at 17:36| Comment(0) | 雑談

2013年11月08日

テキストエディタSublimeText

Sublime Text がテキストエディタとしても、デザイン的にもすごくヒットなんです!
ただこれ、UTF8 がデフォなんです。SJIS とか開こうとすると盛大に文字化けします。
いや、Python も UTF8 だし、UTF8だいすきですけど、
それだと BOM つき UTF8にしか対応していないVisualStudio との互換性が…
なぜ MS は BOM なし UTF8 を使ってくれないのでしょうか?

http://www.sublimetext.com
http://snickerjp.blogspot.jp/2012/12/sublime-text-2windows2.html
posted by JUNOSOFT at 14:37| Comment(0) | 雑談

2013年11月02日

シワトリ

オタクグッズの中でも一線を越えてしまった感のある「添い寝シーツ」や「等身大抱き枕」ですが、一大決心して買って開けてみたら無残にシワシワだった、という悲しい経験は誰にでもあるのではないでしょうか?

正攻法で考えれば洗濯やアイロン掛けでシワを伸ばすべきなのですが、洗濯機に放り込んで色落ち、色移りは大丈夫なのか、一体どこに干せばいいのか、そもそもこんなデカイものにアイロン掛けられるのか、悩みは尽きません。


今回はそんな貴方に伝授する、洗濯もアイロンも必要ない、簡単なシワ取り方法です。

1.洗濯バサミ等を駆使して、広げて(壁などに)吊るします
2.扇風機で風を当てます

なんとたったのこれだけです。
風の当て方は、全体的にゆっくり波打つ程度にするのがコツです。
これなら布地を傷める心配もありませんし、要は風が当たればいいのでエアコンや空気清浄機の風でも大丈夫です。
原理は良く分かりませんが、風で揺すられる内に、少しずつシワや折れ目が伸びていくのだと思います。


最大の欠点は、ものすごく時間が掛かるところ……。

広げてみたらシワだらけになっていた月子ちゃん添い寝シーツ

まぁポスターみたいなものだと思って、半年ぐらい吊るして眺めてみてはいかがでしょうか。
ちなみに、一時的に外してもあんまり影響はありませんので、部屋に人が来るときとかは外すか、せめて裏返しにしておきましょうね!
posted by JUNOSOFT at 21:21| Comment(5) | 雑談

2013年10月21日

止まらない

131021.jpg

現在秒間47億枚ぐらい……しかし兵籐会長の「足らんわっ……まるで……!!」というあの気分。
まぁ、たまに見ては買えそうな物を買ってるだし、何がどうって事も無いんですけどね。


※なんのこっちゃ?という人へ
Cookie Clickerでググってはいけません。いけませんったらイケマセン。
posted by JUNOSOFT at 01:19| Comment(0) | 雑談

2013年06月26日

りりこポッキー

blogがプログラムの話題で埋め尽くされているので絵描けよと圧力が掛かる。
130626.jpg
仕方なく30分ぐらいでタブレット一発描き。ドット絵のほうが良かったかも?
posted by JUNOSOFT at 23:41| Comment(0) | 雑談

2013年05月27日

git

修羅場モードです。家で寝たのは何日前だったかな…
あ、この文章はいつどこで書いているんだというツッコミはナシで。

普段はバージョン管理に hg を使っているのですが、mac の xcode で作業すると、プロジェクトの新規作成時には「git リポジトリを作りませんか?」なんて聞かれるし、github なんて流行ってるみたいだし、なにより hg と違ってコミット済みのログの編集が簡単にできるみたいです。これはうれしい。

ひとまず hg のリポジトリを git 形式に変換して、同時運用しながら様子を見てみたいと思います。

前にも書いたような気がしますが、バージョン管理ツールは複数人数による開発や巨大プロジェクトのためだけにあるのではなく、個人が作成する小さなプログラムでも十分に利用価値がありますよ!!


話は変わりますけど、gif の正しい読み方が「ジフ」であると判明したみたいですね。
元々自分の周りではみな「ジフ」と呼んでいたのでいまさら感がありますが、「ギフ」派の間では衝撃が走ったようです。Gimp は「ギンプ」なのに。
ちなみに自分は普段「wav」を「ウェーブ」と呼んでいるのですが、以前会った人が「ワブ」と呼んでいてカルチャーショックを受けたことがあります。

ちなみに一番悩んだのは「ルズハを展開したらバンプがでてきた」という台詞で、lzh と bmp のことだとわかったときには衝撃を受けました。

ではでは。
posted by JUNOSOFT at 22:17| Comment(1) | 雑談

2013年05月02日

BASIC

こんにちは。

なんだか急にポケコンが懐かしくなったので、適当なエミュレーターがないものかと App Store を探してみたのですが、これだ!というものはありませんでした。

そこで、ポケコンではなく、単にプログラムが実行できるだけのアプリ、を探してみたところ、Python、Lua、Visual Basic、BASIC が使えるものがいくつか見つかりました。しかし、プログラムの入力を iPhone で行うことを考えると、あまり長い単語は打ちたくないし、できれば記号なども打ちたくありません。そうするとやっぱり BASIC かなということになりまして、アプリをいくつかインストールしてみました。

ところが…

どの BASIC アプリも入力画面のフォント解像度が高すぎます。こんなに綺麗な画面なんて BASIC じゃない!!
ひどいのになるとプロポーショナルフォントで打ち込ませようとしてきます。
黒い画面に緑のビットマップ等幅フォントでプログラムを打ち込む、これがやりたかったのに。

というわけで注目したのは HAND BASIC と BASIC! というアプリです。実際に使ってみましたが、なかなか雰囲気が出てます。


Hand Basic - App Store
https://itunes.apple.com/jp/app/hand-basic-cbm-flavor/id394924289

Basic! - App Store
https://itunes.apple.com/us/app/basic!/id362411238


秋葉原行って探してこようかな…
posted by JUNOSOFT at 11:20| Comment(1) | 雑談

2013年01月05日

リプレイの実装

こんにちは。友人がプライベートジェットに乗ったときの写真を見せてもらい、身分の差を思い知ったプログラム担当です。


今日はリプレイの実装についてです。
リプレイの実装は非常に簡単で、プレイヤーのキー入力を記録して、再現しているだけです。
つまり、リプレイ機能なんて実装するまでもなく、
人間が1フレームの誤差もなく、全く同じ操作をすれば、結果も必ず同じになるということです。
ただしゲーム中で乱数を使っている場合は、その乱数の生成順序も同じになるようにしなければなりません。
といってもやり方はこれまた簡単で、乱数生成に標準関数 rand() を使っているなら、ステージが始まるときに

srand(0);

とやっておけば、毎回必ず同じ乱数が生成されます。
とはいえ、ゲーム内のすべての乱数発生を共通化してしまうのはあまりよくないので、実際には標準乱数関数は使わず、自前の乱数ジェネレータをいくつか用意して、それを使い分けるようにます。
たとえばゲーム進行に関係のある乱数(敵の出現・攻撃パターンなど)と、ゲーム進行と無関係な乱数(エフェクトの飛び散り方など)で別々の乱数ジェネレータを使うようにすると、リプレイに影響せずにエフェクトのON/OFFだけを切り替える、なんてことができるようになります。

あと、当たり前ですが、リプレイに影響する乱数ジェネレータは、描画関数から呼び出してはいけません。
更新回数=描画回数なら問題ないのですが、フレームスキップ機能を入れたり、リプレイを早送り、一時停止できるようにすると、更新回数と、実際に描画される回数が一致しなくなります。
回数が一致しなくなると、乱数の値が期待通りにならず、リプレイがずれてしまいます。

■リプレイファイル
キー状態を毎フレーム保存するのではなく、キー入力に変化があったときだけ保存するようにしておくと、データサイズが少なくなります。
さらにバイナリでなくテキスト形式で書き出すようにすると、リプレイファイルをテキストエディタで簡単に編集できるようになります。
特定のフレームでで特定の行動をとったときにだけ発生するバグを再現できるようにしてみたり、
キー入力パターンを自分で編集してノーミス最速クリアデータを作るなど、いろいろ使い道がありそうです。


■リプレイの早送り
FPS制御のためのウェイトを調整する方法でもよいのですが、描画をスキップさせたほうが簡単です。1フレームにn回更新関数を通せば、それだけでn倍速再生になります。


■リプレイの巻き戻し
いつかはやってみたいことなのですが、超絶面倒くさそうです。リプレイはあくまでもキー操作を再現しているだけであって、1フレームごとのゲーム状態を記録しているわけではないからです。
ゲーム状態を1フレーム進めることはできても、1フレーム戻すことはできません。

しかしこれ、実装を検討する価値はあると思います。
なぜなら、リプレイの巻き戻しができるということは、ゲーム中に任意のタイミングで任意の時間だけ巻き戻し、そこからまたプレイできるということだからです。
プレイヤーが死んだら逆再生状態になり、死ぬ前の状態まで巻き戻して、もういちどプレイする、なんてことができるようになるのです。これは面白い効果ですね。

というわけでリプレイ or 実際のプレイ中での巻き戻しの実装方法を考えてみました。

・ゲームのすべての状態を丸ごとエクスポート・インポートできるような仕組みを作っておく
・ゲームプレイ中、一定時間ごとにゲーム状態を保存しておく(以後キーフレームと呼ぶ)
・逆再生を開始するとき、その時刻(以後 T と呼ぶ)に一番近いキーフレーム(以後 K と呼ぶ)のデータを使って、ゲーム状態を K の時点まで戻す
・時刻 K から時刻 T までの状態を再現し、それぞれのスクリーンショットを保存する
・スクリーンショットが用意できたら逆再生を開始。プレイヤーには T から K までを順番に表示して、逆再生しているように見せる
・K まで戻ったら、K よりもうひとつ古いキーフレームのデータを使って同じことを繰り返す
・逆再生は必ずキーフレームで終了するようにしておく。どこかのキーフレームで逆再生を停止したら、そのデータを使ってゲーム状態を復元し、そこからプレイを開始させる

ここで、用意されたスクリーンショットを表示するスレッドと、スクリーンショットを用意するスレッドを別にしておけば逆再生とスクリーンショットの用意が同時にできます。
スクリーンショットの用意はそれなりに負荷がかかるので、巻き戻し実行時にはフレームレートを落としておいて、スロー再生するのがよさそうです。

問題はキーフレームでの保存と復元です。プレイヤーだけならまだしも、敵とエフェクト、その他のオブジェクトをすべて保存・復元する、というのはかなり面倒です。
そこで思いついたのが、イベント発生や敵の配置などを工夫して、画面上にプレイヤーしか存在しない状態を意図的に作り出しておく、という方法です。
そのタイミングでゲームの状態を保存するようにしておけば、エフェクトや敵の状態を考慮せずに、プレイヤーの位置と各種フラグを記録するだけでよくなります。

と、ここまで考えてみたのですが、どうもうまくできる気がしません…。
プリンス・オブ・ペルシャ時間の砂、どうやって実装してるんでしょうね?
posted by JUNOSOFT at 09:18| Comment(0) | 雑談

2012年12月25日

メリークリスマス!

作業待ち時間にこっそりクリスマスっぽい絵を描いてみました。
121225.jpg

あんまりクリスマス関係ない人(自分も含む)にも何かいいことがありますように!

posted by JUNOSOFT at 02:15| Comment(0) | 雑談

2012年12月06日

トラブル続き

今日は仕事が休みだったので、さーて朝から晩までゲーム作りだよ〜やっちゃうよ〜!
とかいうときに限ってトラブルが起こるのは何故でしょうか?

PCの電源を入れ、Windows8 が立ち上がったのですが、なぜか一切反応がありません。
よく見たらキーボードとマウスのLEDランプが消えています。
で、困ったときの再起動をしてみたのですが、まったく同じ。キーボードも、マウスも反応がありません。
BIOS画面では普通に使えるので、接続が間違っているとか、壊れているわけではなさそうです。
とはいえ、Windows8 相手に入力デバイスが全く使えないのでは、もうなにもできません。

ここは早々にあきらめて、Win7をクリーンインストールしてみることにしました。
こういうこともあろうかとバックアップは常にとっておいたので、何のためらいもなくフォーマットしてインストールします、Win7のインストールディスクを入れてみると、やはりそこではちゃんと入力できます。そのまま順調にインストールが進んでいるのでちょっとトイレへ。
で戻ってくると画面が真っ暗になっています。そのまま5分何の変化もなし。まっくら。

ああ…

つい最近、電源を交換しました。ハードディスクも新品にしました。CPUがおかしくなったなんて考えたくありません。となると…?
というわけで、車を飛ばして某電気屋に行き、新しいマザーボードとメモリーを買ってきました。
するとアラ不思議、何の問題もなく起動し、インストールできたのです。
一体あの現象はなんだったんだろう…?


結局何もできない一日でした (T_T
posted by JUNOSOFT at 14:50| Comment(0) | 雑談

2012年11月22日

りりこタイル

ゲーム製作やイラストの背景などで、パースの付いた地面を描くのに苦労したことは無いでしょうか?

タイルやテクスチャーを使ってパースの付いた地面を作る場合、一見簡単なようで、実際にやってみるとかなり面倒な事が分かります。

121122a.png
例えばこんな絵に

121122b.png
こんなタイルをパース付けて地面に並べたい、という場合

私がメインに使っているのはEDGE2(ドット絵用)とフォトショップ(イラスト用)ですが、自由変形でパースの付いた地面を作ろうとすると、元の画像はかなり巨大で無いと地面のテクスチャーが見切れてしまい、そうならないように大量に並べるのはめちゃめちゃ手間が掛かります。

無理をすれば出来なくもないんですが、例によって「助けてド○えもん」の精神で、プログラム担当にツールを作ってもらいました。
それがこの「りりこタイル」です。せっかくなので公開することにしました。名前に意味はありません。

ダウンロードは以下のリンクをクリックして下さい。
http://junosoft.net/ririkotile.zip


121122c.png
まずりりこタイル起動後、元になる画像(対応形式はJPG,BMP,PNG形式)をドラッグ&ドロップで放り込みます。
画像は2のn乗ピクセルの正方形のみに対応で(多分、最大1024×1024まで)、サイズが合わない部分は黒くなってしまうので64×64とか512×512とかの画像を用意して下さい。

うまく画像を読み込めたら、マウスでドラッグすると画像がぐるぐる動くので、希望の形状になるまで適当に動かして保存するだけです。
出力は4096×4096ピクセル固定にしてあるので、あとは縮小するなり回転するなり好きに加工してご利用下さい。

121122d.png
背景とは関係なく、こういう画像は作り放題です。
これが何に使えるのかは私にもよく分かりませんが。


121122e.png
ちなみに最初のサンプルにりりこタイルで作った画像を組み合わせるとこんな感じ。
(りりこタイルにはY回転が無いので、合成する段階で絵に併せて斜めに回転してあります)
あとは影とか、光源の調整とか、周囲のモノとか描き込むだけですね。


余談ですが、プログラム担当は「3Dツールで地面作ってレンダリングすればいいじゃないですかァーッッ!!」とかなり嫌々作っていたので、細かい部分はワリと適当と思われます。

不具合とかあるかもしれませんが、ご了承下さい。
(要望とかたくさん来れば改良されるかも)
posted by JUNOSOFT at 22:13| Comment(0) | 雑談

2012年09月23日

白バージョン

スク水描いたんなら色変えて白も作れよ!と怒られました。

理不尽な気もしましたが、なるほど作るべきですよね。
いや、決して私自身がスク水好きとかそういうわけではなく(以下略)
120923.jpg
posted by JUNOSOFT at 01:02| Comment(0) | 雑談

2012年08月13日

ご感想メールありがとうございます

120813.png

……なんか読み辛くてスミマセン
posted by JUNOSOFT at 21:01| Comment(0) | 雑談