おはよう君需要なし

求不得苦な日々

Javaで3Dゲームプログラミング※(第0回)

(※ただしOpenGLなどGL系の支援は使用しない。)

第0回としましたが、第1回があるかは謎です(笑)

はじめに

OpenGLとか勉強していると、ややこしい行列とかがバババーッと出てきて知らない間にうまい具合に表示されておーすごいって感じなんですがイマイチ直感的じゃない気がしていました。

数学的に正しいのはわかるんだけど手を動かして実際に計算してみればわかるんだけど、それを再確認することって大切だと思います。OpenGLをそのまま使ってしまうのは完全にブラックボックスなわけで計算している実感がわきませんし

というわけで、これからOpenGLを使用せずにJavaで3Dレンダリングを用いたゲームプログラミングについて記事を書いていこうと思います。

なぜゲームプログラミングなのか

ゲームプログラミングって色々と学べることがあるんじゃないかと思います。例えば、

などなど。最近はCPUパワーで押せばほとんど書けてしまうので意識しないとあんまり使う機会がなくて微妙かもしれませんが。クオリティを上げていけばわかりやすく効率的な書き方が求められていくと思うので、こういった勉強も無駄にはならないと思います。

現状

現状としてはベースの部分は割としっかり実装できてきて、シェーディングやテクスチャについても考慮したレンダリングができています。ただ、ハードウェア支援を受けていないCPUのシングルスレッド処理ですべて書いているため解像度を上げると途端にFPSが落ちてしまいます…

それを改善すべくあーだこーだ実装してみているんですがあまり改善する兆しは見えません。というかCPU100%に張り付いていないのにFPSが落ちるってどういうこっちゃ(CPU以外がボトルネックになっている?!)

というわけで

現状あまり人様に見せられるような仕上がりにはなっておりません…

とりあえず、次回から行列演算についてちょっと書くぞ~~~

ルータ(WZR-HP-AG300H)でLTEルータ(501HW)を使用する

完全にタイトルがあれですが、前回書いたのと似たような内容です。例によって暇が無いので、今回もこんなことやってるよ的な記事になると思いますが…

nodemand.hatenablog.com

501HWにはクレードルがない

501HWにはクレードルがありません。よって、Wi-Fiに対応していないデバイスで使えないことや、電子レンジや無線LANの飛び交う環境での使用にちょっと気持ち悪さを感じます。

別に有線にした方が速度や安定性が向上する!ってわけでもないです。気持ちです。気持ち。

今まで感じた不満点

前回までに作成したLinuxマシンやWindowsマシンを使用した中継方法で、とりあえずクレードルのないWifiルータを有線化することができました。しかし、以下のような問題点がありました。

  • ポート数が少ない
  • 消費電力の高いPCを使用する
  • 中継器常時起動の不安

まず最初のやつですが、中継に使用していたのはPCについているイーサネットポートです。なので現在使用しているマザボ的に中継できるのは1台のみで、もっとつなぎたいのに!っていう感じでした。これを解決するにはスイッチングハブを使用するしかないわけですが、ギガビット対応のスイッチングハブって単体で結構お値段しますよね…

次に消費電力について。現在中継器に使用しているのはPCなので結構ストレージとか繋がってますしそれなりに消費電力は大きいはずです。ゆくゆくはRaspberry Piや最近登場したTinker Boardに変えたいななんて考えていました。

最後に常時起動の不安ということで、中継器のストレージや電源など、別段高いものを使用しているわけではありませんが常時起動を前提に組んだわけではありませんし不安が残る、ということです。

ルータでLinuxを動かそう

結論としてTinker Board + スイッチングハブの組み合わせでいこう、と考えていました。しかし予算おおよそ10,000円… ちょっとの赴任のためにそんなにお金を出せるか??とか考えちゃいました。

というわけで、前々から気になっていたOpenWRTやLEDEに挑戦してみることにしました。

「LEDEもLinuxだし、どうせドライバコンパイルすれば動くだろ」的な。

WZR-HP-AG300H購入

というわけで購入しましたWZR-HP-AG300H!。OpenWRTやLEDE界隈では定番らしいです。

Amazonで中古の3000円ぐらいのやつを購入したんですが、開封未使用品ということでとてもきれいなものが届きました。ラッキー

f:id:yoh_mar28:20170823233606j:plain

手順

申し訳ないですが、暇があったら書きます。

ロスコンパイルするだけです。

終わりに

f:id:yoh_mar28:20170824232813j:plain

結論としては、思ったより簡単にできてしまった上にLEDEなどの新しいことにも挑戦できてすごいコスパ良かったなという感じでした。

オープンソース界隈、何かしら貢献したいなとは思うんですが、何もできないので楽しい使い方をこうやって紹介できたらなと思います。