過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2007/05/28
コンパイラとバーチャルマシン2

 
最初に、今日の文章は長いです。
しかも 99% の人にとってどうでも良くツマラナイ話なので観覧にはご注意ください。
 
 
どうも、適当えんじにあです!
 
様々な野望のためのバーチャルマシン制作、、今かなり熱い感じです。
 
 
な、なんと
全81個バイトコード命令をすべて実装終えたんですよ!(大袈裟
 
 
で、いま何ができるかというと、構文的に下記のようなものがすでに動作します。
( 長ったらしいコード。。 )
 


#include "system.h"
 
class Interface{ //  適当なインターフェイスクラス
    m_test;
 
    interface_call( api ){
           api.Trace( "★interface_call" );
           return (100 * (32+8)) >> 1; // 要は 2000 を返す
    }

}

// 名称は仮、メインの実行クラス
class Main extends Interface{
    m_api; // APIアクセス用( 今後は、内部定義にするかも? )
 
    run(){
       m_api = new SystemAPI();
 
       var array = new Array[6]{
           100, 200, 300, 400, 500, 0,
       };
   
       array[0] *= 10 + 2*5;
 
       // 配列のテスト  
       var i = 0;
       while( true ){
             if( array[i]==0 ){ break; }
    
             TRACE( "array[" + i + "]:" + array[i] );
             i++;
        }
 
  
        // 基底クラスのメソッド呼び出し
        TRACE( "戻り値: " + interface_call(m_api) );
        
        this.m_test = -777; 
        
    }
}

 
配列は1次元まで、とか細かい仕様もありますが、基本的には以下の事はサポートしています。
 
・for/while ループ
・++/--(インクリメント/デクリメント)
・if/elseif/else
・new
・continue/break
・this
・length( 文字列/配列に対して )
・extends( 簡易継承 )
・Array( 配列 )
・var( ローカル変数 )
・四則演算を含む、ほぼすべての演算命令
・true/false
 
 
とりあえず、簡易的に紹介すると、こんなところかな?
 
 
いま迷ってるのは継承時のコンストラクタをどうするか、仕様的に悩んでます。。
 
完全に特定のゲームジャンルにあわせようとすると、設計時に妥協コードが入ってしまうから、
現設計の内に、ゲーム種別問わないシステムを提供できるようにしないと。
 
特定の何かに向けて作るなら楽な部分はあるんだけど。。まぁそれはAPI の実装部が担当する
ことになる予定なのです。
 
 
現状だと、サウンドノベルとミニゲーム程度ならば API のみの実装なので、かなり短期間で
実装できる雰囲気。
 
自分のキレイ好き?な部分を一時的に捨てれば、妥協コードもバシバシ入れて完全専門コードとして
かなり大規模なのも作れます( 今はイヤダネ
 

ゲームジャンル別対応表はこんな感じ?

  ◎ - ノベル
  ○ - アドベンチャー
  △ - RPG
  △ - タクティクス
  △ - シミュレーション
  ? - アクション
  ○ - ミニゲーム( テーブル系/ミニアクション )

   ◎: すでに大規模なものを作れるレベル
   ○: ある程度の規模なら作れるレベル
   △: 厳しいが少しなら作れるかもレベル
   ?: 不明
                              ※どれも API 実装部を除いた話です。
                                 いまは基本API は一つしかありません。





 
 どういう流れでゲームイベントをコーディングしていくかというので、コンストラクタの役目は実は大きいので、
仕様的には明確に決めないとなぁ( ´д`)
 
これをどうするかによって、特定の関数を呼ばれるようにするのかとか色々変わるんですよ。
 
 
コンストラクタが終わったら基本APIの実装のみなんだけど、、、むぅ。
 
 
そんなところで、今回はこのバーチャルマシンの目指す実行環境を最後にちょろっと紹介します。
あくまでも、目指すということですが。
 
--------------------------------------------
・iアプリ / Doja3.5 以上
 
・auオープンアプリ
 
・Windows2000/XP以降
 
・FedoraCore4( デスクトップの使える linux系? )
 
・PSP( やってみたいw )
--------------------------------------
 
 
自分的には C++ ⇔ Java は基本的に抵抗無し!
 
とりあえず、Windowsは C++ で FedoraCore では Java で目指す予定です。
まぁ iアプリ上で完全に完成してからの話 ですが。。
 
ぐはっ、先が長い( ´д`)
 

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。