本年もお世話になりました <(_ _)> The Java 使いこなす/ Javaでゲームを作ろう

もうすぐ今年が終わりですね。

1年、おつかれさまでした。
また新しい1年が始まろうとしていますが、
少しの休息をとって、またがんばっていきましょう(^^)

本年もお世話になりました <(_ _)>

来年もがんばっていきたいと思います。

Aki2氏!そろそろじゃ!
(その前にテスト勉強だけど(^^;)

シェアしていただけるとうれしいです。

クリエイターを目指して。

きんです。

今日は「クリエイターを目指して」ということで書きたいと思います。

まずは、「Javaでゲームを作ろう0 ゲーム基本編」の「さいごに」の部分を
そのまま転記したいと思います。

--------------------

ためになったであろうか?君の世界が広がることを願う。

わたしはもう中年である。おっさんである。今、思うのは、子どもたちにいろんな選択の幅を広げてあげる。そのお手伝いができれば、幸いだと思っている。
選択の幅とは何なのか。コンピュータに限らない。社会を担っていく若者に、いろいろな方向への選択、道の幅を広げてあげたい。と思っている。考えることを鍛え、その鍛えたものを社会に役立ててほしい。

自らの道を切り拓く、クリエイターになってほしい。
仮想世界に、ゲームに遊ばれてはいけない。ぜひとも現実世界に向き合ってほしい。生きてほしい。

--------------------

ここからは長いので、興味があれば、お読みください。

先日、Aki2氏に会ってきました。
いろいろと情報交換をしているわけですが、
その中の話題でひとつ、ここで話をした方がいいかな。
と思ったことがあったので、書きます。

わたしの伝え方が下手だと思っていますが、
ゲーム否定派と思われているようなところがあるかもしれません。
(Aki2氏からも指摘あったわけですが)
なのに、ゲームを作っている。矛盾がある。
という風に思われる。

わたし自身、矛盾を感じるところがあるのは分かっています。

わたしは否定派ではありません。肯定派でもないですが。
ゲームうんぬんより、言いたいことがあります。

わたしが思うのは、
「クリエイターを目指してほしい」
ということです。
ゲームうんぬんより、クリエイターを目指してほしい。
そのように思っています。

「クリエイター」とは、何でしょうか?
簡単に言ってしまうと、わたしが言いたいのは、
「自分で作っていく」
ことです。

ゲームにかぎった話ではありません。
なにかに向かって、自分で考え、想像して、ふくらませていく。
ある意味、職人気質とでもいえばよいでしょうか。
その中で、なにかしらの成果を上げて、後進の人に伝えていってほしい。

わたしもできればゲーム以外でクリエイトしたいと思うのですが、
わたしができることといえば、コンピューターであり、ゲーム作成なわけであって・・・。
(プチバイク乗りやプチ畑いじり、プチDIYくらいでは、公開することもできないですし・・・)

「クリエイト」する。そのために、「ゲーム」を、わたしは手段として使っている。
それだけです(ゲームは手段でしかない)。といっても過言ではありません。

ゲームにこだわる必要性はありません。
自分に合った、興味のあるものを追いかけてみてください。

自分自身の想像力を高め、しいては若い人に、何かしらを伝えていく。
若い人が想像力を高め、その人の幸福感を高め、よりよい世界を目指していく。

伝えていく。老いていく者が行っていくこと。そのように思っています。

話は少し変わりますが、今の時代は厳しいです。
会社で働いていれば、一生安泰。などということはありません。
そのような時代は、すでに終わってしまった。といっても、言い過ぎではないと思っています。

今の時代をどう生きていくか。
それを問われている時。と思っています。

自分になにができるか。
今、自分の置かれている状況を客観的に把握しながら、
一歩でも進んでいってほしいと思います。

かなりのハードゲーマーである方であれば
(いわゆる廃人レベル。普通のゲーマー位の人は、ここでは論じません)、
そのままでいいのか・・・。振り返ってみてほしいです。

「人は死ぬために生きている」
という言葉を聞いたことがあります。
生まれた時から、死への秒読みが始まっています。
何のために生まれ、何のために死んでいくのか・・・。
自分なりに思いに更けてみてください。

わたしも、わたしなりに考えたことがあります。
心理学を学び、死生学を学び、かなり落ちたことがあります。
そして、這い上がってきました。

もうひとつ、学んでいく過程で、自分を大きく動かす原動力になった言葉がありますが、
これはまた後ほど、機会があれば・・・。

関連投稿)

リンクになっていない場合は、検索で探してください。

ゲーマーの人たちへ(コアゲーマー・ハードゲーマー・ヘビーゲーマー・プロゲーマーな人たちへ)
【再考】任天堂のうんぬん
ゲームにはまるということ

シェアしていただけるとうれしいです。

近況ですかね~(きんのこれから)

おはようございます。きんです。

3Dゲーム編もとりあえずは一区切りできる段階まできたかなと思っています。
3Dゲーム編拡張編1を先日公開させていただきました。

いきなり話は変わる感じになりますが、
先日、映画館で広告をいろいろと見た時に(本編ではなくCM)、
3D編、まだまだやれることがあるな~とは感じてきたのですが、
(映画館で見ると、迫力が違いますわ。スクリーン大きいし、立体感もすごいね~)
また、どこかでより高められるとよいかな~・・・と思っている次第です。

Aki2氏がやる気が出てきたら、また、再開するかもしれません。
3Dは大好きだと思うけど、3Dオブジェクトを作るのは苦手なのかな~(笑)って感じかな。
3Dオブジェクトを作るのは、それなりに負担がかかるので、Aki2氏にも押し付けているところです(笑)ひとりでやるのはキツイからね~。

と、いうことで、3Dゲーム編の方の話は一旦、終わりにして、
そろそろ次にいくか~!って宣言も含めて、近況報告しようかな~と思います。

結論からいうと、Javaの本に挑戦してみようかなと思います。

Javaのゲームの本を今まで5冊出版してきました。
自分なりによくやってきたな~と思う次第ですが
(いろいろな意味というか、変遷?歴史?作りこんできた。Aki2氏とのコラボ。今までのいろいろ)
まだまだゲームの世界もいろいろとやろうと思えば、いっぱいやれることもあると思いますが、
(たまに要望のあるRPGやシミュレーションなど、アクションなんかもやってみたいな~とか)

そろそろJavaの本だろ。と思っている次第です。
わたしの作ろうとしている本は、全体的に網羅したものではなく、
「使う」に視点を置いた本にしたいと思っています。

Javaはデフォルトでいろいろなモジュールがあるので、
本で全てを書いたとしても、そのほとんどが見る必要のない無用の長物みたいなものに
なってしまうでしょう。
使える本を書いてみたい。
今はそう思っています。進捗度は0%ですが(笑)

言わないと(書かないと/ここで公言しないと)、
やらないのよね。わたし( ´▽`*)
自分を追い込まないとね。

と、いうことで、進捗度0%ですが、公言してみました(笑)

あと、わたしの本業の方ですが、
フレームワークの焼き直しによって、
JavaからJavaScript系かC#か、はたまた違うものか・・・
って感じで、Javaから少し遠ざかる可能性が出てきました。

もう少し言うと、フロントエンドの焼き直しが入りそうで、
JavaからWeb系もしくはC#の辺りになるかな?って感じ。
バックはJavaのままかな。

フロントエンドの焼き直しということで、
見た目のところがJavaではなくなってしまいます。

やっぱり、Javaからは遠くなってしまうかなって。

今までJavaで画面、ゲームを作ってきました。

これからどうなるのかは、流動的な状態ですが、
変わっていく。その位置に、今はいます。

いろいろと思うところもありますが、
Javaでゴリ押しするなんてことは、ないので(笑)、
いろいろなことを思いながら、進んでいくしかない。
そんな心境です。

まっ、そんなところもあって、
見た目にこだわったゲームから少しから離れ、
ロジック(論理的なもの)やJavaそのものに焦点を移して
一冊やってみたい。
そんな気持ちもあるかな~・・・って、付け焼き刃的に言ってみました(笑)

まだぜんぜん構成とか、な~んにも考えていませんが、
進めていきたいと思っています。

使えるJavaの本、やっていくかぁ~!

シェアしていただけるとうれしいです。

Javaの実行ができない事象がありました。

こんばんは!きんです。

Javaの実行ができない事象がありました。
(javacはできて、javaはできない状態でした。クラスが見つからないって)

どうも、環境変数に、「CLASSPATH」を設定している時と、設定していない時で、動きが違うようです。
(2019/02/05更新)

ん~でも、いまいち原因が分からないんですよね・・・。

「CLASSPATH」を設定している時の解決方法としては、
環境変数の「CLASSPATH」に「.\」を追加しました。
すでに設定があって、追加する場合は、「;」セミコロンを忘れないようにしてくださいね。

これで、デフォルトのフォルダがclassを追いかける場所になったようなのですが、

わたしのPCでは、この設定が見つからず!
「PATH」も見たりしたのですが、ないんですよね~・・・。

設定がないと、(コマンドプロンプトで)自分のいるフォルダは対象になるっぽいです(2018/11/11追記)。

もし、コンパイル/実行に困ってることがあったら、
言ってくださいね。

わたしも調べてみます。

シェアしていただけるとうれしいです。

Javaのバージョンの上がり方が変わりましたね。

こんにちは。きんです。

ゴールデンウィーク、いかがお過ごしでしょうか。

わたしは9連休ですね。あっ、最後の日は、出勤ですけどね。

ま~そんなこんなで、お休みの日々を楽しみつつ、ちょっと、違う話題を書こうかと思います。

お題は「Javaのバージョン」です。

すでにJava10が出てて、数週間が経ちます。
Java9は短命でしたね・・・って、ネットで検索すると、バージョンの上がり方が変わったそうです。

https://www.publickey1.jp/blog/18/java_10java_9.html

http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html

ん~どうなるんですかね~。
わたしの意見はここでは述べないようにしようかと思いますが(分かんないというのが正直なところですが)、
1ユーザーとしては、バージョンアップをこまめにしないと、古いのを使い続けてると、ばれちゃいそうですね~って感じかな。

本も古くささが目立つような気もするな~・・・あんまバージョンを書かない方が得策かもしれません。読者も逆に混乱しそうだし。
どこかで説明を入れていった方がいいかもしれないな・・・。

あ~、もっと、意見を書きそうになってきたので、この辺で(^^)

話はいきなり変わりますが、
もう少ししたら、JavaFX 3Dゲーム編の情報をアップしたいと思います(^^)

シェアしていただけるとうれしいです。

Java9-32ビット版について

こんばんは!きんです。

Java9-32ビット版について、
本日時点で9.0.4のようですが、
32ビット版はないようです。

つまり、OSが32ビット版だと、使えません。
実際、エラーになり、インストールできませんでした。

本業用のPCには、入れれなかったと・・・(汗)
(副業用というか(趣味?かも)、このPCには入りました。)

それで、サイトをいろいろと調べてましたが、
よい情報はなく、できなさそうという結果となりました。

PCが32ビット版の方は、Java8で動かすというのが、
現実的な選択肢かと思います。

----------

32ビットで扱える領域は、2~4G(ギガ)バイト程度でしょうか。
これ以上扱えるように、64ビットに寄せたのでしょうか?

しかし、2Gも使うって、どんなアプリなんでしょうかね~?
(わたしが始めた頃より、100万倍っす)

ん~、まともに動くんかしらね~?
と、ちょっと心配。
(GCとか、重いGC起きたら、大変そう~。今も重いGCはあるのか??)

シェアしていただけるとうれしいです。

SKK(シューティングゲーム編)でカクカクする問題について

おはようございます!きんです!

SKK(シューティングゲーム編)でカクカクする問題について、
やっと解決になりそうです。

どうも、GPUが非力だったようです。

コマンドプロンプトを起動するときに、別のGPUを選択することができます。

そうしたら、カクカク感がかなり改善!
画面全体表示でも、ほとんど気にならない状態となりました!

いやぁ~そういうことでしたか!
これは分からんっすわ~( ´▽`*)

わたしはノートマシンを利用していますが、
GPUを2台積んでいるノートだったりします。
今までGPUの恩恵は受けていなかったのですね。

しかし、デフォルトのGPUの非力さが分かりましたね~。

と、いうことで、強いGPUをお持ちの方は、おためしあれ!

ちなみに、上記状態でコマンドプロンプトを開くと、
開かれるフォルダが変わるようですので、
「cd SKKフォルダ」コマンドでフォルダを移動してくださいね♪

シェアしていただけるとうれしいです。

メールで問い合わせいだたいてる方へ

こんばんは。きんでございます。

メールで問い合わせいただいている方へ、ご連絡です。

もしかしたら、わたし、きんからの返信が届いていない可能性があります。

下記の方は、届かない可能性があると思いますので、
もし、返信がない・・・
と思われる方は、違う方法での連絡を検討ください。
(基本的に、わたしからは返信しているはずです)

・フリーメールを利用されている方
(ヤフーメール、GMail、Hotmail等)
・携帯・スマホのメールアドレスを利用されている方

プロバイダ・携帯会社のフィルタの設定で届かない可能性がありますので、
フィルタの見直しをしていただくか、メールアドレスを変えていただく等、
ご検討いただければと思います。

返信がない・・・と思いましたら、
改めてご連絡をお願いいたします。
(_ _*

シェアしていただけるとうれしいです。

Graphics2D版とJavaFX版の違いについて

Graphics2D版とJavaFX版の違いについて

○描画処理の違い(1)
Graphics2D版では描画エンジンを自前で作成していた。
JavaFX版では、描画はJavaFXの仕組みの中で描画している。
(元々、処理速度低下にならないか懸念していたが、結果は問題なし)

○軽量化
Graphics2D版では、Componentを継承した部品群は利用せずに、
独自のオブジェクト(スプライトオブジェクト)を作成し、
Objectを継承していた。
Componentを継承した部品を多用すると、メモリの面、スピード面で、
不利と感じていた(検証はしていない)。

そのため、必要な機能のみに絞ったオブジェクトを作成することで、
軽量化を図っていた。
それが できた(実現できた)という背景もある。

○描画処理の違い(2)
しかし、JavaFX版ではその方法(独自オブジェクト管理)が使えないことが分かる。
JavaFXでは、Canvas-GraphicsContextで、
似たような仕組みを作ることは可能だが、同じではなかった。
回転/拡大縮小が、そのCanvasp全体に対して行われ、
途中の座標変換計算が、すべてサマリされた状態になるだけの模様。

Graphics2D版では、回転させて描画、また別の回転させて描画ということが可能だったが、
JavaFXでは、これができない。軸が全体的にずれてしまう。

自前で描画することを断念。
Nodeオブジェクト(Graphics2D版ではComponentに相当)を継承させ、
描画をJavaFXに任せる方式に変更。

○JavaFXアプリケーションスレッド
JavaFXでは、描画はJavaFXスレッドの中で自動で行われる。(最大1/60秒)
また、JavaFXスレッド以外から、JavaFXへのセッターメソッドなどを利用して値の変更を行うと、
Exceptionが発生する場合がある。

定期的な処理が必要な場合、定期的に呼び出されるタイマーを作成し(JavaFX用の)、
JavaFXスレッド上で処理を行う必要がある。

〇参考にさせていただいたサイト
http://krr.blog.shinobi.jp/
軽Lab。非常に参考にさせていただきました。
ありがとうございます(_ _*

シェアしていただけるとうれしいです。

音楽や動画GIFを扱う際の注意点

音楽や動画GIFを扱う際の注意点

javax.sounndパッケージではMIDIやWAVEを取り扱うことができる。
動画GIFはjava.awtの辺りで取り扱っていたと思う。
(何年も前に試してたので、記憶が・・・)

この動きのあるものは、実は、裏でスレッドとして動いている。
スレッドで動いていることを知らないと、思わぬ落とし穴に遭うことになる。

スレッド自体は、動きを実現するために(画像を変更する/音楽を鳴らすために)
存在しているものと思われる。
(そういう仕組みであることを知らなかった…)

MIDIオブジェクトなどを、closeせずに、
そのまま次のオブジェクトを生成すると、元々のMIDIオブジェクトが生き残ったままとなる。
スレッドも残ったままとなる。(複数スレッド存在する状態となる)

スレッドと対象オブジェクト位が残る分には、問題ないレベルかもしれないが、
それに関連する(紐ついた)オブジェクトも生きていると判断され、GC対象とはならずに、他の多数のオブジェクトがメモリから消えない状態となる。
つまり、メモリリーク状態となる。

深刻になると、OutOfMemoryErrorが発生する。

実はSKK3.1FXを作成する際に、分かったことである。
つまり、SKK3.1(Graphics2D版)も同様の現象が起きている。
(問題は出にくいが、修正する予定です)

SKK3.1FXでは、実際にOutOfMemoryErrorが発生した。
JavaFX版は、メモリ消費量がGraphics2D版に比べて、高い傾向にある。
(こちらは別途、覚え書きを書くかも)

そのためJavaFXは、OutOfMemoryErrorが発生する確率が高かった。(他の要因もあるかも。他も修正しているので)
3周目に突入すると、異様に遅くなり、最後はメモリを食い潰してしまった。

まとめると、
スレッドが作成されているもののクラスの取り扱いは注意が必要である。
ちなみにJavaFXでは専用のスレッドで管理しているため、改善しているものと思われる。

(もう少し追記)
javax.sounnd等はJavaFXの仲間ではない。Javaの拡張機能の模様。
独自のスレッドを作成している。

シェアしていただけるとうれしいです。