忍者ブログ
ゲームを作りながらFamous Writerを開発するブログ
[1]  [2]  [3
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

一段落いたしましたので、公開いたします。
C++実験室
なお、以前にご紹介いたしました配列変数は、諸般の事情により今回は外してあります。
文字型変数もまだ作っておりませんがゆえ、今回は「変数は数値型変数のみ使用可能」ということになります。

特徴としては、VSync割り込みが表に出てきております。
これは、慣れが必要ではございますが、v3で言うところの画面効果を皆さんにも作ることができるように、と考えて表に出しました。
また、最近よくご要望をいただくのですが、雪や桜が舞うようなものですな。これも、VSyncとスプライトを使えば、高速に出来るかと思います。
もちろん、今回のようなシューティングや、例えばRPGの2Dフィールドマップなどでは、オーソドックスな割り込みとしてお使いいただけます。

記述方法としては、v3の言語仕様に慣れた方には、ローレベル過ぎる仕様に戸惑うかもしれません。
私としては、今までREALbasicに任せていた部分を、現段階では作っているつもりでおりますので、このあと徐々にv3のようなハイレベルの命令をつけてゆくつもりです。
逆に申しますと、Rbがやっていたレベルまで皆さんが使えるようになるため、ゲーム作成の自由度が高くなります。

なお、マニュアルからではなく、チュートリアルから見ていただいたほうが早いかもしれません。
チュートリアルは、前回公開したシューティングゲームの再現を目指して作り始めたものでございます。
今回は、冒頭で申し上げました通り、配列変数がないため、敵機は出てまいりません。
残りの自機移動・弾の発射・スクロールにつきましては、これであのゲームの再現になります。

さすがにハードコーディングに比べると速度が落ちておりますが、一応、こういう事もできるようになりました、ということで。
そもそも、毎フレームごとに背景をスプライトから描画しているという、ロジックの組み方が良くないんです(笑)。
まともにゲームにするなら、背景をバッファで持って、差分書き換えとかして然るべきなのですが、そこまでやるとチュートリアルの範疇を逸脱するソースになってしまいますので、ご了承ください。
そのうち裏バッファを搭載したり、楽に作ることが出来る仕組みをつけようと思っております。
PR
プログラムのほうは、コンパイラ・ランタイムとも、自機移動と背景のスクロールだけは、テキストファイルで書く事ができる段階まで、作る事ができました。
あと少しソースの整理をしてバグがなければ、第一弾として公開したいと思っております。
その後、敵機の処理ができるよう、作ってゆきます。

が、ちょっと時間が取れなくて、もう数日お待ち下さい。申し訳ない。

それから、半ば私信でございますが、検証する系のメールもお返事が遅れております。
昨日まで到着分は拝読しておりますので、ご報告を兼ねて、この場でお詫び申し上げます。
REALbasic製コンパイラは小じっかりと進んでおります。
これにより、2つのアプリケーション間でのデータのやり取りをする仕様が、ほぼ固まりました。
言語設計のほうは、if文が強力になったと申しますか、if〜elseif〜elseが使えるようになり(elseifはもちろん複数可)、and/orも軽くなりました。
あと、for文、アンカー、スプライトを実装すれば、あのシューティングゲームが再現できるかと思います。

ただ、C++製ランタイムで問題が発覚いたしまして、それが解消してからの公開になります。
昨日から急にCarbon版とWindows版が不安定になったのですが、相対ジャンプをつけただけで、数行しか書き足しておりません。
で、ちょっと調べるのに手間取ったのですが、結局、先日作った変数管理クラスが、使うたびに内部のメモリを破壊しまくっておりました。
修正にちょっと時間がかかりそうなので、数日お時間いただけたらと思います。

これもいきなり作るのではなく、FWEffectSequenceのように、クラスだけ外に出してテストしてみようかなと。
言語が違えど、同じアプローチを取ってみようと思っております。
そろそろ、落ち着いて物事が見えるようになってまいりました。
C++を学び始めて、舞い上がっている時期は過ぎたかなという感じです。

あと、乱数生成にメルセンヌ・ツイスタを使わせていただくことにいたしました。
これはすでにプログラム内に織り込み済で、堅調に動作しております。
大変素晴らしいアルゴリズムで、私ごときのプログラムにはオーバースペックという気もいたしますが(笑)、この場をお借りして感謝申し上げます。
変数は一晩で実装が終わりまして、ついでに配列も使えるようにいたしました。
前回のサンプルゲームで、敵機の座標などの保持に使っております関係上、配列が必要になってきます。
とはいえ、線形リストでの実装なので、数が膨大になると重くなります。いずれ何とかしたい所ではあります。
あと、Carbon版は、ClassicやWindowsと同様、データファイルをパッケージの外に出すようにいたしました。

C++の変更点はそのぐらいで、REALbasic製のコンパイラに着手しております。
変数ができたことで、中間言語化の目途がつきましたので。
実のところ、構文解析とかファイル管理とか、C++で書くと気が遠くなりそうなのですけれども、これを全てREALbasicにやらせることができ、結構この方式が気に入っております。
逆に、ゲーム実行のスピードが必要な部分は、REALbasicでまどろっこしい書き方をせず、C++で簡単に書けたりもしております。
今のところ、両方の「いいとこ取り」が、私なりにいい感じでできております。

今のところ、REALbasic製のコンパイラは『Famous Writer』として、C++のほうは『Famous Writer Runtime』として、2つのソフトで1セットとしようと考えております。
ゲームで配布する時は、Runtimeだけで、Famous Writerはいらないという形にして。

この方式ですと、Runtimeに限りますが、Intel MacやWindows Vista対応などはRuntimeを作り直すだけで、REALbasicの進化と関係なく進める事ができるようになります。
従って、ゲームを作る方々は今まで通りREALbasicの進化に縛られてしまいますけれども、ゲームで遊ぶ方々にとっては今以上に幅広い対応にできるかと思います。
ゲーム作りには、PowerPCのMacかWindows 98〜XPが必要ですが、遊ぶのは他のOSでもOK、みたいな。
原理的にできるようになるだけで、苦労するのはまた別の話ですが(笑)。頑張ります。
今週もFamous Writerはお休み…と申しますか、前回の終わりに少し書きましたけれど、ここ一連のC++シリーズを、Famous Writerに融合できないものかと試しておりました。

C++で書くメリットとしては、動作が高速になり、プログラム的な制約(何かするにはREALbasicの仕様から考えなくてはならなかった)がなくなります。
デメリットとしては、今までRbが行っていた各OSとの対話まで、全て自力でやらなければならないぶん、プログラムが大変になります。
大変とはいえ、私は面白いからいいんですけれども、そのぶん時間がかかりますので、新バージョンを楽しみにしている方には申し訳なく。
C++のメリットを、Famous Writerで享受できたらいいなという発想でやり始めました。

そんなこんなで、とりあえず大枠が出来ましたので、公開してみます。別ページを作りました。
C++実験室
簡単なアクションゲームです。カーソルキーで移動、Zキーでショット、ESCでポーズです。
もしよろしければ、動作報告いただけると非常に助かります。
まだ出来たてほやほやでございますので、不安定な部分があるかもしれません。遊ばれる際は自己責任でお願いいたします。

Classic版は、Famous Writerと同じ動作条件です。
Win版は、2000 SP4/XP SP2で動作確認しております。一部Unicodeを使っているため、98/Meは自信がありません。
Carbon版は、10.1.5で動作確認しております。目下Classicの延長のため、最近のOSでの動作は自信がありません。
それから、全OSともにQuickTime必須です。プログラム的にはQuickTime 3以降で大丈夫ですが、最新のものを奨励いたします。

ゲームのソースはハードコーディングしてあるため、まだ皆さんがいじることはできません。
とはいえ、描画命令などは、すでに中間言語で動作しております。
Famous Writer同様、テキストファイルに書いたソースを解釈して中間言語を吐き出すようなソフトを、別途用意いたしますので、そちらでゲーム作りしていただくようになるかと思います。
そのソフトを作るには、まだ変数の仕組みがないため、現段階では取りかかるタイミングではございません。
今週、中間言語で変数を扱える仕組みを作ってゆきます。

今のところそれなりに進んでおりますが、途中で挫折したらすいません(笑)。
最新コメント
[06/07 みずき]
[12/21 Rocco Noble]
[11/05 f]
[03/02 Ming.]
[03/02 Ming.]
最新TB
忍者ブログ [PR]