feature image

2024年7月7日 | ブログ記事

3日で実装した #2048

みなさんこんにちは。俺くん!?です。
Warframeのプレイ時間が1000時間を超えました。

先日2024/06/30~07/07に行われた1weekjissouに参加したので、その記録です。

1weekjissouとは

:tada:1weekjissou:tada:は1週間でお題のゲームを実装するイベントです。
ゲームエンジンや言語は問いません。
他の人が作った実装を見ることで知見を共有し、†つよつよゲームクリエイター†になりましょう!!!
テーマは「2048」です。
と書いてます。
タイトルにもあると思うのですが、3日で実装が終わりました。

出来たもの

主人公はマスアーミー社の参謀長官です。
タスク(タイル)をまとめて、2048を作りましょう。

一応ダウンロードリンク貼っておきます
https://drive.google.com/file/d/1N8L8t815zrTA_l6rMuX0p1vAKwcAMjbI/view?usp=drive_link

実装

いつもお世話になっております。GameMakerです。
Game_managerオブジェクトを作り、統括させます。
まず4x4のgridを作ります。

for(j=0;j<4;j++)
for(i=0;i<4;i++)
Grid[i,j] = 0;
//値は指数が入る

例えば、左に移動する時
Grid[0,y]の処理は要らない。
Grid[1,y],Grid[2,y],Grid[3,y]の順に処理する。
Grid[i,y]から見て場合分け

for(i=0;i<4;i++){
    //一個左が空きなら
    if(Grid[i-1,y] == 0){}\
        Grid[i-1,y] = Grid[i,y];
        Grid[i,y] = 0;
    }

    //一個左が同じ値なら
    if(Grid[i-1,y] == Grid[i,y]){
        Grid[i-1,y] ++;
        Grid[i,y] = 0;
    }
    }
}

このままだと[2 2 4 0]などの列がある状態で左動かすと、
1行目を処理すると[4 0 4 0]になり、
2行目を処理した際に[8 0 0 0]になるため、一度組み合わせたところに入らないようにする必要がある。色々やり方はあるけど、Block[i,j]=0とか専用の変数を作り、組み合わせた座標に入らないようにチェックするとか
演出とか考えるとオブジェクトの方が操作しやすいけど、あんま考えてなかったから併用してた

移動した後に空いているgridに追加する

var xx = irandom(3),yy = irandom(3);
var flag_ = 16;
//全埋まり判定
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(grid[i,j]){
    //gridが埋まっていたらflag_変数を下げる
	flag_--;
}

//空きがあれば
if(flag_){
    while(grid[xx,yy] != 0){
        xx = irandom(3);
        yy = irandom(3);
    }

    grid[xx,yy] = choose(1,1,1,2); //座標上で追加
    var I=instance_create_layer(xx*64+160,yy*64+96,"li_tile",Tile); //対応する座標にオブジェクトを生成
    I.value = grid[xx,yy];
    I.image_index =grid[xx,yy];
    I.grid_x = xx;
    I.grid_y = yy;
}


return(flag_);

作業行程

1日目

帰って18時くらいから「やるかーモルカー」と言い、作業
OTK-DE-(プロジェクト)の作業とか挟みつつ、1時くらいに完成した。
なんかショットガン撃たせたくなったので、気に入らないタイルを撃てるようにする。
---------79--2
1日でここまでいった。

2日目

ローグライク要素欲しくない?と思ったので、絵を描いた。
取ったカード、実際は何も役に立たないです。
でもアップグレードって楽しいよね。
card1-1

3日目

終了判定や細かい演出、ギャラリーなどを作り終了。

いろんなカードゲームから持ってきてます

選手コメント

めんどくさい実装をめんどくさがらずに実装する胆力が付いたように感じます。結果として、強度の高いゲームを制作することができたと思います。
今回はセリフテキストの文字送りを初めて実装してみました。やはり、数をこなすことが重要ですね。

--ハッカソンからの反省はどう生きたか。
今回は2048という元のゲームが存在するため、演出などはイメージが付きやすく、素材は作りやすかったですね。また、(OTK-DE-の)進捗もしなければならなかったため、どれを実装してどれを実装しないかの判断がついたのが良かったと思います。そこに自身の世界観と上手く融合できたと思います。
プログラミングに関してもですが、自分のできることと、できないことの領域が分かってきました。できることは伸ばしていき、できないことは必要に応じて勉強していきたいですね。

--次節は1monthonと厳しい日程の中の試合になるが。
そうですね。自分の中では何を作るかというのは徐々に固まりつつはあります。若くて実力のある選手が多くエントリーしているということで、強度であったりメンタル的な面で負けないようしっかりと1か月準備したいと思います。

最後に

いかがでしたか?みなさんも既存のゲームの実装をしてみても面白いかもしれませんね。
それでは、また今度。

Komichi icon
この記事を書いた人
Komichi

え、行きたい、エンカして宴会してええんかい!

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2023年11月21日
School Breakin' Tag -新感覚おにごっこ-
s9 icon s9
2024年9月20日
2024年 1-Monthonを開催しました!!
Synori icon Synori
2023年9月3日
タイピング&アクション『TypeTheCode』作りました
wal icon wal
2024年9月17日
1か月でゲームを作った #BlueLINE
Komichi icon Komichi
2023年4月25日
【驚愕】作曲4年目だった男が大学3年間ゲームサウンドに関わった末路...【ゲームサウンドのお仕事について】
tenya icon tenya
2023年4月25日
15時間でゲームを作った #Oxygenator
Komichi icon Komichi
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記