-- / --
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

06 / 07
Sat

いつもと同じく Ziphil です。

第 5 週目ですね。 今回はマップエディタとして最低限使えるものを作ってみました。

867_制作過程A

ちょっと画像大きいですね。 でも、 実は実際のゲーム画面はこのウィンドウサイズです。 いつも上げてるスクリーンショットは 1/2 に縮小しています。

さて、 マップエディタができてしまえば、 ステージ製作がはかどりますねぇ・・・。 ただ、 上野画像を見ての通り、 マップチップが 10 種類しかないのが問題ですね。 そろそろドット打たないと・・・。


スポンサーサイト
comment ×0
05 / 31
Sat

最近やることが多くなってきた Ziphil です。

さて、 第 4 週目の進捗報告です。 え? 第 2 週と第 3 週はどうしたのかって? ま、 まあ、 そんなところは気にするほどのことでもありませんよ、 はは・・・。

さて、 アクションゲームの方はどうなったかというと、 マップとの接触判定を修正し、 プレイヤーにカメラが追従する処理を実装しました。 ついでに、 ダッシュできるようにしたり、 ジャンプキーの押された長さによってジャンプ量が変わるようにしたり、 摩擦力の調整をしたり、 といろいろ細かいところを調整しました。 で、 こんな感じになっています。

860_制作過程A

この、 1 ブロックを渡っていくやつ、 普通に難しいんですよね。

さて、 来週の目標ですが、 マップエディタを作ろうかなーと思っています。 これまで全部マップはタイルデータを手打ちしていたので、 そろそろ欲しくなってきました。

では、 何もなければ、 また来週に。


comment ×0
05 / 10
Sat

土曜日更新が定着しそうな Ziphil です。

さて、 アクションゲーム作り始めました。 要するにスーパーマリオシリーズのようなものです。 現時点ではこんな感じです。

839_制作過程B

キャラが宙に浮いてますが、 地面との接触判定に問題があるだけです。 浮動小数点数嫌いです。

で、 操作なんですけど、 例えば [→] キーを押すと右に進むんですが、 [→] キーを離しても、 ほんの少しの間だけ右に進み続けます。 マリオとかでもそうですよね。 これを実現するために、 プレイヤーは座標情報と速度情報の両方をもつようにしたんですが、 両方ともピクセル単位で制御すると、 動きが大きすぎたりして不便だったんです。 そんなわけで、 数値を小数で管理しようとしたんですが、 浮動小数点数の誤差などのせいで微妙にうまくいかないんです。 浮動小数点数嫌いです。

それと、 動物 (人間含む) のドット絵を描くのがものすごく苦手です。 ドット絵そのものが苦手なのに、 動物なんて描けないよ! じゃ、 敵キャラはどうすんのって話なんですが・・・。 それ以上に、 私は浮動小数点数が嫌いですけどね。

とまあ、 こんなところまで進みました。 要するに、 浮動小数点数が嫌いということです。


comment ×0
05 / 03
Sat

毎週土曜日更新にしようかと迷っている Ziphil です。

Ruby でメソッドの返り値を明示したかったら return foo とか書きますよね。 まあ、 Ruby は最後に評価された値をそのまま返すので、 return 文はいらないんですが。 では、 ブロックの返り値を明示したい場合はどうしましょうか。 return foo と書くと、 ブロックだけでなくメソッドまで抜けちゃいます。 調べるとどうやら next foo と書けば良いらしいです。

え、 わざわざ next 文を使う必要ないじゃないかって? ・・・ええ、 その通りですよ。


comment ×0
04 / 26
Sat

Ziphil です。

さて、 実は私、 大学 1 年です。 まあ、 活動内容に関わらず、 ハンドルネームは Ziphil で統一していますから、 私の Twitter やもう 1 つのホームページなどを見たことがある人なら、 もう知っていることかもしれませんが。 で、 なぜ突然よく分からないカミングアウトをしたかというと、 忙しいんです。 つまり、 趣味の時間があまり取れないんです。 主に数学とフランス語とロシア語のせいで。

というわけでですね、 膨大な時間がかかることが予想される 『Eminentia』 ですが、 おそらく開発は中止となります。 だからといってゲームを作らないわけではありません。 使える時間がそれなりでも作れるようなゲームを、 趣味として作っていこうかなと思っています。

正直、 私は工学部に進んだりゲーム会社に入社したりする気はありませんので、 ゲーム制作はあくまで趣味の範囲です。 ですから、 また開発が頓挫になる可能性は大いにあります。 まあ、 期待せずにこのブログを読んでくれると助かるなー、 という感じです。


comment ×0
04 / 26
Sat

もう 4 月も終わりか…、 という感じの Ziphil です。

いつの間にか Java8 がリリースされていました。 どうやら、 ラムダ式が追加されたみたいで、 これは Rubyist である (だった?) 自分には嬉しい仕様です。 どんなのかというと、 こんなのです。

List list = Arrays.asList("foo", "bar", "baz", "hoge", "huga");
list.forEach((String s) -> {
  String data = "[" + s + "]: " + s.length();
  System.out.println(data); 
});

map とか filter とか reduce とかもちゃんとあります。 ただし、 この場合は一度コレクションを Stream オブジェクトに変換しないといけません。 これがちょっと面倒。

List list = Arrays.asList("foo", "bar", "baz", "hoge", "huga");
String result = list.stream().filter((String s) -> {
  return s.length() > 3;
}).map((String s) -> {
  return s.toUpperCase();
}).reduce((String s, String t) -> {
  return s + ", " + t;
}).get();
System.out.println(result);

ラムダ式では型推論が働いてくれるので、 引数の型は省略できます。 また、 ラムダ式を 1 行で書くばあいは return 文も不要です。 さらに、 引数が 1 つだけの場合は、 引数の前後のカッコも省略できます。 ・・・ということで、 上のプログラムは下のようにも書けます。

List list = Arrays.asList("foo", "bar", "baz", "hoge", "huga");
String result = list.stream().filter(s -> s.length() > 3).map(s -> s.toUpperCase()).reduce((s, t) -> s + ", " + t).get();
System.out.println(result);

Ruby を長いこと使ってきた私にとっては、 こう書けると非常に親近感がわきます。 Ruby だとこんな感じで、 似てますからね。

list = ["foo", "bar", "baz", "hoge", "huga"]
result = list.select{|s| s.length > 3}.map{|s| s.upcase}.reduce{|s, t| s + ", " + t}
puts result

さて、 この Java のラムダ式ですが、 実装はどうなっているかというと、 ただの匿名クラスです。 たとえば、 Stream#filter の引数の型は Predicate<T> です。 つまり、 Java がラムダ式を Predicate<T> を継承した匿名クラスに勝手に変換してくれるイメージです。 ちなみに、 Predicate<T> は T 型の引数をとり Boolean 型を返すラムダ式に相当します。

ということで、 今までラムダ式とかクロージャとか、 そういう類のものが使えないせいで、 for 文が嫌いな私は Ruby とか Scala とか Groovy とか Kotlin とか Fantom とか Xtend とかに逃げてましたが、 その必要もほとんどなくなりましたね。

あ、 そうそう、 ラムダ式の変換先となる関数型インターフェースには、 引数の型や返り値の型などによって Supplier とか Consumer とか Prdicater とかいろいろあるんですが、 プリミティブ型専用に IntSupplier とか IntConsumer とかがあるんですよね。 それならプリミティブ型廃止すれば良いのに!


comment ×0
04 / 19
Sat

細々と生きております、 Ziphil です。

私が (最低限は) 使える言語というと、 だいたい 10 種類ほどあるわけですけど、 どういうわけか C 系列だけ全く使えないんですよ。 理由は諸説ありますが、 C をちょっと学んでみると、 Ruby の方がプログラムをきれいに書けることに気づいてしまい、 C が捨てられると、 まあそんな感じでしょう。

で、 たぶん C とか C++ とか C# には縁がないんだろうなー、 とか思っていました。 思っていたんですが、 紆余曲折あって C# を学ぶ (そして人にある程度教える) ことになってしまいました。

ということで、 Visual Studio Express を急遽ダウンロードしたのが一昨日、 C# を勉強し始めたのが昨日。 で、 ついさっき、 ゲーム作成の基礎部分 (ウィンドウを表示したり FPS を安定させたり) が完成したわけです。 まあ、 C# はだいたい分かりました。 さすがに Ruby より詳しくはなってませんが、 Java と同程度の能力にはなったと思います。 同じオブジェクト指向言語なので、 難しくはなかったですね。

で、 長年敬遠していた C 系列の言語ですが、 少なくとも C# は悪くないかな、 って感じです。

でも、 ForEach がしっくりきませんね。 Ruby の影響から、 どうも foreach 構文ではなく、 ForEach メソッドを使いたくなるんですが・・・。

Array.ForEach(array, (Foo foo) => {
    DoSomething();
});

・・・とまあ、 そうするとこんな風になるわけですよ。 Array#ForEach じゃなくて Array.ForEach なんですよね。

array.ForEach((Foo foo) => {
    DoSomething();
});

こう書きたいなぁ・・・。 いや、 まあ、 書けるんですけど、 あんまり推奨されませんよねぇ。

そんなわけで、 C# でした。 今後のアプリケーション開発は JRuby か C# かな。


comment ×0
back-to-top
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。