0_0_61

 obake   specification   version 

ソースコードを整理した 0_0_60C 以降、マイナーバージョンアップ版。

0_0_60 ~ 0_0_60C までは新機能の実装は無く、デバッグと不要なコードの削除/廃止等、新機能実装前にソースコードを綺麗にした。

大きな変更が加えられたのは .ev の create イベント用コードで、0_0_60B 〜 0_0_60C は特に大幅な変更および更新が加えられたため、万が一に備えてバックアップを細かく取ってある。万が一が起こった場合は 0_0_60A へ戻ること。0_0_60B は HDD にバックアップはなく、SD カード内のテンポラリのみ。B ~ C の差は create event を整理整頓した分なので、処理内容的には一切変更は無い( はず )

ソースコード

  • ev.create :: 0_0_60C
///Inits
FuncButtSwitch = false;/* flag for function Buttons ON = true , OFF = false */

SHEnFlg   = global.InitGames[8];// Flags of Shaders シェーダエフェクトの有効無効フラグ Pow2 and Bitwise
PiTEnable = global.InitGames[7];// show_message(global.InitGames[7]);// Bitwize
ScrnASP   = global.InitGames[6];// Screen Aspetc Type 1.=1080, 2.=1200, 3.=1440
//OPStyle   = global.InitGames[5];// obsolete from 0_0_60
OnDebug   = global.InitGames[4];// for Debug USE(Global)
OSDct     = global.InitGames[3];//
UIstyle   = global.InitGames[2];// OS Type checked -> windows or NOT
ASPFlag   = global.InitGames[1];// boolean :: Browser or NOT
ASP       = global.InitGames[0];// 

depth     = GameDepth;// -10

ScrScaleW = 0;// (display_get_gui_width()  / view_wview[0]);
ScrScaleH = 0;// (display_get_gui_height() / view_hview[0]);
Init_BoardSize();

/*   for Surfaces   */
Set_VariablesForShaders();
SReffeA       = noone;// Screen Effects #1  ex. SrGrey,SrWave -> to application_surface
ShaderSurface = noone;// for Shader
Surface       = noone;// for General Use
DebugSF       = noone;// For Debug Status display

/*   Setups for GameBoard on Screen    */
OX      =  SetBoard_OriginX(ScrnASP);
OY      =  BoardOriginY;           // (84 + 500);
RoX     =  SetBoard_RoX(ScrnASP);  //   8 ~ ;
RoY     =  (OY - BricksHalfSizeY); // (84 + 500) - 80 = 504.0;

TW      = (BricksHalfSizeX << 1);  // 76 * 2; = 152
TH      = (BricksHalfSizeY << 1);  // 80 * 2; = 160
var c;
c       = TotalArrayElement;       // TotalArrayElement == 7
AW      = c;
AH      = c;

GBWidth = ((TW << 3) - TW); // GameBoard Widht  = 1064 px
GBHeigh = ((TH << 3) - TH); // GameBoard Height = 1120 px
ReX     = (RoX + GBWidth);  // (OX + (TW *  c) - BricksHalfSizeX) = 1072.0 ~ 10xx.0;
ReY     = (RoY + GBHeigh);  // (OY + (TH * AH) - BricksHalfSizeY) = 1624.0;

/*    Array for  GameBoard  and  ObakeGenerator    */
var d,e,f,cx,cy
d                = ((c << 3) - c); // (c * AH) == 49;
e                = (AW - 1);
f                = (AH - 1);
cx               = (e >> 1);// floor(e / 2); /*   Grid Center X                 */
cy               = (f >> 1);// floor(f / 2); /*   Grid Center Y                 */
/*               -------------------------------------------------------------- */
/*               The Grids are holding the Object Instance  ID or Boolean.      */
MG               = ds_grid_create(AW , AH);/*   # Grid Create #1        "ID"    */
OG               = ds_grid_create(AW , AH);/*   # Grid Create #2        "ID"    */
Aval             = ds_grid_create(AW , AH);/*   # (for Copy of "MG")    "ID"    */
Bval             = ds_grid_create(AW , AH);/*   # (for TS_Ck_Chain(); "Boolean" */
/*               -------------------------------------------------------------- */
MTC              = d;
MvBricksPaiR[1]  = noone;/*   Keep the Pair IDs of Moving Bricks                */
MvBricksPaiRFlag = false;
MvTargetCT       = 0;    /*   Total Number of Moving Target Bricks              */
TDX[e]           = 0;    /*   ALL X position on Each Grids :: 1D array          */
TDY[f]           = 0;    /*   ALL Y position on Each Grids :: 1D array          */
RDT              = (room_speed >> 1);/*     Room Divide Speed ( INT )           */

var a,b,px,py,u,dy,s,t,rt, co,ca;
a   = true;
b   = 0;
px  = OX;
py  = OY;
u   = DistanceFreeFall;
dy  = (u - py);                    /*    distance Y     */
s   = (dy / RDT);
t   = FreeFallDirection;
rt  = RDT;

    for (var i=0; i<c; i++)
    {
            for (var k=0; k<AH; k++)
            {
              t          = instance_create(px, py, tile);
              MG[# k, i] = t;      /*   Get Object.ID   */
              co         = (py - u);
              ca         = (1 << i);
              Init_CreateObake( t, s, co, k, i, rt, ca );/* Create a New "OBAKE" on GameBoard */
                if (a == true) { TDX[k] = px; };
              px += TW;
              b++;
            };
        TDY[i] = py;
        a      = false;
        px     = OX;
        py    += TH;
    };
    
Init_RoomColour();
BCX           = TDX[cx];/* (Brick) Center X Position  on GameBoard on Screen  */
BCY           = TDY[cy];/* (Brick) Center Y Position  on GameBoard on Screen  */
GCX           = cx;     /*  Gid Center X  (on Grid)                           */
GCY           = cy;     /*  Gid Center Y  (on Grid)                           */
CID           = MG[# cx, cy];
CIDA[MaxCIDA] = noone;  /*  Center ID List( 1D Array )                        */
VBS           = noone;  /*  store "Vks" Button Selected.                      */
VBSFlag       = false;
/*      an array for EFFECTS  when pushed "vks" any button                    */
    for (var i=VKEFsMax; i>=0; i--){ VKEF[i] = VBS; };

/*           grid copy func for "Aval"  and Clear  "Bval"                     */
ds_grid_copy(Aval  , MG);   /*    Get Copy ALL Object.ID from "MG"            */
ds_grid_clear(Bval , false);

SOLvHP           = 1;       /*      1~3 (binary looping counter)              */
hint.image_speed = 0;

PiTCount         = 0;       /*    Cunter of preserve to death tiles           */
//PiTEnable        = 0+1;// Pow2:::Enable or Disable chain desrtroy with same type color Bricks.
VanishFlag       = false;// will be Vanished the Target of Pair Bricks when 3-Match is founded.
VanishList       = ds_queue_create();// will be Vanished list

CtCaptuN         = noone;// (at Combo going) count the Total Number of Captured "Obakes".
DoronFlg         = false;// "Doron!" Boolean flag.

DoronLoop[f]     = 0;

DoronBitXY[WG_MaxArray] = false;     // Flags will record on array when New Object was created.

CtMovesN         = 0;                // Total "Effective" swap count Number
CtTimesN         = 0;                // Total past time at game starting

SwapColorQue     = ds_queue_create();// Swap Color Queues
SwapReColorQue   = ds_queue_create();// Swap Retrun back to the Color Queues
SwapReColorCt    = 0;                // Swap Queue id's count Number
TouchDisable     = false;            // Temp Disabale Touch operation by player controll

TryCombTimer     = 0;                // Timer for Combo Challenge
ComboCounter     = 0;                // Combo Counter
ComboRecord      = 0;                // Combo Highest Record

Phy_Start        = false;            // Physics Start Flag
Phy_Falling      = false;            // if (TryCombTimer==0 and Phy_Start==true) then TRUE;
Phy_NumOfBricks  = noone;            // Number of Physics effcted objcet(falling)
Phy_StandLiST    = ds_list_create(); // ID
Phy_FaLLiST      = ds_list_create(); // ID
Phy_CHaiN        = ds_queue_create();// ID


/*    for OG Array --- Grid for "Obake Generator"      */
ODY[f]           = 0;                // Records of "Tama"'s Y-Position on the Grid on Screen.
OBQ              = ds_stack_create();
OBQCt            = OBQsetTime;       // TamaFlag  = true; ODY[3];
OBKSummon        = noone;            // Counter how number Summoned "Obake".
OBKFinalize      = false;            // Boolean 
OBKQue           = ds_queue_create();// ID for copy
Init_ObakeGenerator();

/*        for Scores DataBase        */
BusteredObake[f] = 0;// Init array :: BusteredObake[6] = 0; -> where to finalize "ST_CheckPos" func

今後ユーザインターフェース用の仕様書を作成する。ゲームエンジンがほぼ完成、ゲーム仕様がまとまり、次にインターフェースの仕様をまとめる必要がある。

バグ

新規 Bricks の補充時、3-Match 判定が一部おかしい。選択されている連鎖仕様が一部反映されていない場合がある?

メモ

レイアウト下部の GridFunctionButtons は専用の管理オブジェクトが Create Event から初期配置や初期設定を管理している。

オブジェクトの作成される順番は .ev → .vks の順番なので注意。room の Instace Order などをチェック。

.vks は ev.Bflag == true の時作成されていたが、今後は UI 管理用オブジェクトとして常に作成される。

.vks の create event 処理を修正。U.I. の作成を .vks オブジェクトに一任する。

.ev はゲームエンジンを総括する機能全般を担当し、.vks は追加的ユーザインターフェース全般を担当。

.ev の create event を更に整理。codes を一部統廃合。

.bcc を廃止。.vks に統合。

ユーザインターフェース作成にツールを作成? >> インターフェース用のパーツを作成して、インタラクティブで配置したパーツのポジションを自動出力させたい

UI 用パーツの配置は ev.BCX を基準とする。

モード

  • 手詰まりにならず何個お化けを消せるか → 「制限時間内
  • 手詰まりにならず何個お化けを消せるか → 制限時間「無制限

作業中

( あれこれ目移りするが、 ) 小さな機能実装を優先して行う

  • textures をグループで分ける作業
  • 起動後のメニュー画面を更新
    • ゲーム開始〜経過時間を記録、表示( ev.CtTimesN → step 数を計測)
    • 時間計測中に計測を一時停止する機能 ( ev.CtTimeFlg )で管理
    • 手数(moves) をカウント(ev.CtMovesN) → 手数の実装
    • GridFunctions から何を使ったかをカウント → 手数に含める?
    • GridFunctions を利用した回数を記録

Steps を時間単位( 分・秒 ) へ変換する処理をユーザ定義関数として追加。

パーツ単位で細かく処理を分け、オブジェクトを作成中。

レイアウト

Objects List

Game Parts

Screen Layout




次へ

前へ