忍者ブログ
ゲームを作りながらFamous Writerを開発するブログ
[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [10]  [11
×

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

REALbasic製コンパイラは小じっかりと進んでおります。
これにより、2つのアプリケーション間でのデータのやり取りをする仕様が、ほぼ固まりました。
言語設計のほうは、if文が強力になったと申しますか、if〜elseif〜elseが使えるようになり(elseifはもちろん複数可)、and/orも軽くなりました。
あと、for文、アンカー、スプライトを実装すれば、あのシューティングゲームが再現できるかと思います。

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

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

あと、乱数生成にメルセンヌ・ツイスタを使わせていただくことにいたしました。
これはすでにプログラム内に織り込み済で、堅調に動作しております。
大変素晴らしいアルゴリズムで、私ごときのプログラムにはオーバースペックという気もいたしますが(笑)、この場をお借りして感謝申し上げます。
PR
変数は一晩で実装が終わりまして、ついでに配列も使えるようにいたしました。
前回のサンプルゲームで、敵機の座標などの保持に使っております関係上、配列が必要になってきます。
とはいえ、線形リストでの実装なので、数が膨大になると重くなります。いずれ何とかしたい所ではあります。
あと、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同様、テキストファイルに書いたソースを解釈して中間言語を吐き出すようなソフトを、別途用意いたしますので、そちらでゲーム作りしていただくようになるかと思います。
そのソフトを作るには、まだ変数の仕組みがないため、現段階では取りかかるタイミングではございません。
今週、中間言語で変数を扱える仕組みを作ってゆきます。

今のところそれなりに進んでおりますが、途中で挫折したらすいません(笑)。
今週もFamous Writerはお休みです。申し訳ありません。
C++は終わったつもりなんですが、どうしてもMac OS 9への夢が捨てられず、悪あがきしておりました。
相変わらずMPWでは#includeに失敗するので、もう仕方ないからREALbasicでプログラムを組んで、ソースを1つのファイル連結してからMPWに渡すという、かなり強引な技に出る事にしました。
スクリーンショット左側のリストボックスが、その謹製プログラムです。MPWにコマンドを投げるAppleScriptを内蔵しておりますので、これでビルドまで操作できます。


C++のソース自体は、Carbon版を元にClassicのAPIへの変更はあっさり終わったのですが、なぜか画像が表示されず、そこで時間を食いました。
単にSIZEリソースを作るのを忘れてて、画像を読み込むだけのメモリがアプリケーションにない、という間抜けな原因でございましたが、その究明だけで一晩半ぐらい潰れました。

サンプルに使った画像は、私の脳内マイラブソースイートであるEurydice A3であります(髪の毛はKoz's Long Hair)。
久々にOS 9で起動したため、Poserを使うことができましたので、レンダリングしてみました。
裸なのは、別にエッチな目論見からではなく(笑)、服を着せるとメモリが足りなくなってMacが死ぬからです! いいMac欲しい!(号泣)
これがBMPファイルでありますので、当然MacではQuickTime経由でないと読み込めません。従って、これが表示されているということは、QuickTime Graphics Importerが正しく動作しているという確認になっております。

これでMac OS X/Mac OS 9/Windowsで動くC++のひな形ができましたので、簡単なゲームエンジンでも作ってみたいですな。
やるとしたら中間言語式にして、コンパイラはREALbasicで作って、ランタイムがC++という形になると思いますけど。
C++のプログラムにQuickTime Graphics Importerを取り付け、Famosus Writerと同様の画像フォーマットが読み込めるようになりました。
直でQuickTimeを叩く分、さすがにC++だと早い。なんでこんなに重いんだろうREALbasic。
なお、市販のゲームをキャプチャした画像で試しておりましたので、スクリーンショットはお出しできません。すみません。

さて、ぼちぼちこのへんで、C++での遊びを終了します。
明日からFamous Writerの開発に戻りますが、マウスイベント等のコードの見直しから始めて、目先は選択ボタンを作ることを目標にいたします。要するに今までの続きです。

後日のこととなりますが、今回C++で遊んだ成果として、Mac版はCarbon/Classicとも、グラフィクス関係を全部C++で書こうかと思っております。
Graphics ImporterからWindowへの転送まで、一通り学習できましたので。
やってみないとわかりませんが、そこそこ速度の向上がみられるかと思います。

それから、どなたかWindowsのREALbasic Pluginの作成方法か、それを解説しているサイトさん(英語可)をご存じでしたら、教えてください。
一応、Plugins SDKのVC++6.0用のサンプルからDLLをビルドするところまではできたのですが、それをMac上のRbで使う方法がわからない状態です。
Windowsもグラフィクス関係をPluginにできると、画像の読み込みから表示まで、速度が10倍ぐらい向上するかと思うのですが。
よろしくお願いいたします。
<< 前のページ 次のページ >>
最新コメント
[06/07 みずき]
[12/21 Rocco Noble]
[11/05 f]
[03/02 Ming.]
[03/02 Ming.]
最新TB
忍者ブログ [PR]