みなさんこんにちは。俺くん!?です。
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時くらいに完成した。
なんかショットガン撃たせたくなったので、気に入らないタイルを撃てるようにする。
1日でここまでいった。
2日目
ローグライク要素欲しくない?と思ったので、絵を描いた。
取ったカード、実際は何も役に立たないです。
でもアップグレードって楽しいよね。
3日目
終了判定や細かい演出、ギャラリーなどを作り終了。
選手コメント
めんどくさい実装をめんどくさがらずに実装する胆力が付いたように感じます。結果として、強度の高いゲームを制作することができたと思います。
今回はセリフテキストの文字送りを初めて実装してみました。やはり、数をこなすことが重要ですね。
--ハッカソンからの反省はどう生きたか。
今回は2048という元のゲームが存在するため、演出などはイメージが付きやすく、素材は作りやすかったですね。また、(OTK-DE-の)進捗もしなければならなかったため、どれを実装してどれを実装しないかの判断がついたのが良かったと思います。そこに自身の世界観と上手く融合できたと思います。
プログラミングに関してもですが、自分のできることと、できないことの領域が分かってきました。できることは伸ばしていき、できないことは必要に応じて勉強していきたいですね。
--次節は1monthonと厳しい日程の中の試合になるが。
そうですね。自分の中では何を作るかというのは徐々に固まりつつはあります。若くて実力のある選手が多くエントリーしているということで、強度であったりメンタル的な面で負けないようしっかりと1か月準備したいと思います。
最後に
いかがでしたか?みなさんも既存のゲームの実装をしてみても面白いかもしれませんね。
それでは、また今度。