Placeholder Image

字幕表 動画を再生する

AI 自動生成字幕
  • Hi guys, welcome back to another video.

    やあ、みんな。

  • If you've seen some of my other videos, you'll know I like making games with redstone.

    僕の他の動画をいくつか見てもらえば、僕がレッドストーンを使ったゲーム作りが好きなことがわかると思う。

  • I really like making games with redstone.

    レッドストーンを使ってゲームを作るのがとても好きなんだ。

  • But what goes on behind the scenes?

    しかし、舞台裏では何が起こっているのか?

  • How do my projects get built from start to end?

    私のプロジェクトはどのようにして最初から最後まで構築されるのですか?

  • Today, hopefully, I'm going to answer those questions and take you along with me on my journey to build Flappy Bird with just redstone.

    今日はその質問に答え、レッドストーンだけでフラッピー・バードを作る私の旅にお付き合いいただこうと思っている。

  • I hope you enjoy.

    楽しんでほしい。

  • Flappy Bird is a mobile game by Miniclip, originally released in 2013.

    Flappy BirdはMiniclipが2013年にリリースしたモバイルゲーム。

  • However, it was removed from the App Store and the Google Play Store in 2014 because the creator felt like it was too addictive.

    しかし、制作者が中毒性が高すぎると感じたため、2014年にApp StoreとGoogle Playストアから削除された。

  • Well, sorry Miniclip, but today we're going to be spreading your game a little bit.

    さて、ミニクリップには悪いが、今日はあなたのゲームを少し広めることにしよう。

  • First, let's think about the screen.

    まず、スクリーンについて考えてみよう。

  • I think the best way to do the screen is with a lamp display.

    スクリーンはランプで表示するのがベストだと思う。

  • I don't see any advantage to using pistons here.

    ピストンを使うメリットはないと思う。

  • As far as how big it's going to be, I'm not really sure, so I'm just going to make a starter screen and we can always change the size later.

    どれくらいの大きさにするかについては、よく分からないので、とりあえずスタータースクリーンを作って、後でいつでも大きさを変えられるようにするつもりだ。

  • Okay, I just made one that's 16 lamps by 16 lamps.

    じゃあ、16灯×16灯のものを作ったよ。

  • Now let's talk about the bird.

    さて、鳥の話をしよう。

  • So, the bird is constantly falling.

    だから、鳥は常に落下している。

  • To me, when I hear constantly falling, I think of a degrading circuit.

    私にとっては、常に落ちていると聞くと、回路の劣化を思い浮かべる。

  • A degrading circuit would just lose value over time.

    劣化した回路は時間とともに価値を失うだけだ。

  • For example, you could have a comparator into another comparator like this.

    例えば、コンパレータを別のコンパレータに入れることができる。

  • If you imagine that this line right here is the height of the bird, if you start it like this, you can see how the height naturally falls down.

    この線が鳥の身長だと想像して、このように始めると、身長が自然に下がっていくのがわかるだろう。

  • Here, let me put some lamps so you can see it a little bit better.

    ほら、もう少しよく見えるようにランプを付けよう。

  • You start like this and see how the gravity part of the bird.

    このように始めて、鳥の重力の部分を見る。

  • All right, so I played with the timings a little bit and as long as we're trying to make this game run in real time, I think this is probably a good speed.

    このゲームをリアルタイムで動かそうとする限り、このくらいのスピードがちょうどいいと思う。

  • Yeah, it feels about right.

    ああ、ちょうどいい感じだ。

  • The one problem with this though is that right now, aesthetically, the bird is just a huge bar of lamps that gets shorter.

    ただ、ひとつ問題があるとすれば、今のところ、鳥はランプの巨大な棒が短くなっているだけだ。

  • I'd rather have it just be like the top of the bar, so a single pixel.

    むしろ、バーの一番上と同じように1ピクセルにしてほしい。

  • If we attach a red coder to this or a signal strength decoder, we can just get that top pixel.

    これにレッドコーダーか信号強度デコーダーを取り付ければ、一番上のピクセルを得ることができる。

  • I'll show you what I mean.

    どういうことか、お見せしよう。

  • All right, I attached a red coder on the end of Now, if we send in a signal strength here, it's only going to light up one lamp associated with that signal strength.

    ここで信号強度を送信すると、その信号強度に関連するランプが1つだけ点灯する。

  • When I press this button, it's still going to give a signal strength of 15 and start to degrade, but now it's just a single lamp.

    このボタンを押しても、信号強度は15のままで劣化が始まる。

  • Our lamp started up there and it falls all the way down to the bottom just like it had gravity.

    私たちのランプはあそこから始まり、まるで重力があるかのように下まで落ちていく。

  • All right, so we've got a bird on the ground.

    よし、鳥が地面に落ちたぞ。

  • We can set it up to the ceiling and then it'll fall down, but how do we make it jump?

    天井に設置すれば落ちてくるが、どうやってジャンプさせるのか?

  • Well, if we think about what a jump is, a jump is really just take the current height and add a value to it.

    さて、ジャンプとは何かを考えてみると、ジャンプとは現在の高さに値を足したものだ。

  • Why don't we just take this signal strength, which again represents the height, add some value to it, and then plug it back in whenever we want to jump.

    高さを表すこの信号強度に値を加え、ジャンプしたいときにそれを差し込めばいい。

  • It seems like it would work to me.

    私にはうまくいくように思える。

  • The way that we're going to add a value to the height is with a circuit like this.

    高さに値を加えるには、このような回路を使う。

  • This is the input signal strength right here, this is the output, and this is where you want to put the value that you want to add.

    これが入力信号強度、これが出力で、ここに追加したい値を入れる。

  • What we're doing here is what I like to call a double inversion, where an inversion is taking 15 minus your current signal strength.

    ここでやっているのは、私が二重反転と呼びたいもので、反転とは15から現在の信号強度を引くことだ。

  • We do it once right here because we're taking 15 minus whatever this signal strength is, and that's the output, and then we're doing it again over here. 15 minus 7 is 8.

    ここで一度、15からこの信号強度を引いたものを出力し、ここでもう一度行う。15マイナス7は8です。

  • If you don't do anything special to it in between the two inversions, then it's just kind of a comparator.

    2つの反転の間に特別なことをしなければ、単なるコンパレーターのようなものだ。

  • It goes in one signal strength, and it comes out the same signal strength, because inverting it once and then inverting it again puts it back to what it was.

    ある信号強度で入り、同じ信号強度で出てくる。一度反転させてからもう一度反転させると、元に戻るからだ。

  • But if we go over here and put some value here, that's going to subtract it from whatever it is in between the two inversions, and that actually adds it to the number.

    しかし、ここに行って、ここにある値を入れると、2つの反転の間にあるものから引き算され、実際に数字に足されることになる。

  • If you want a proof of this, I'll put it on the screen right now, but yeah, I mean this is just the way I remember it.

    その証拠が欲しければ、今すぐスクリーンに映し出しますが、ええ、つまり、これは私が覚えている方法なんです。

  • The way to add to signal strength is just to subtract while it's inverted.

    信号強度を増やす方法は、反転している間に引くだけだ。

  • So if you jump height to be let's say 3, then you just grab a signal strength barrel with 3, and now whatever signal strength goes in here, it's going to add 3 to it and come out here.

    つまり、高さを仮に3とすると、信号強度の樽を3でつかみ、ここに入る信号強度が何であれ、それに3が加わってここに出てくる。

  • So for this example, we have 8 plus 3 is 11.

    つまり、この例では8+3で11となる。

  • If I try something else, let's say 10 plus 3 is 13.

    例えば、10に3を足すと13になる。

  • So that seems to be working.

    それでうまくいっているようだ。

  • So now I just have to attach this to this, and we should have jumping.

    だから、あとはこれをこれにくっつければ、ジャンプができるはずだ。

  • Alright, I think it might be working.

    よし、うまくいきそうだ。

  • Let's try to spawn a bird and jump.

    鳥を産んでジャンプしてみよう。

  • Okay, maybe now it's working.

    よし、今ならうまくいくかもしれない。

  • No, not at all.

    いや、全然。

  • Okay, finally seems to be working.

    よし、ようやくうまくいきそうだ。

  • I changed some timings.

    いくつかのタイミングを変更した。

  • Alright, I think it's time to put this bad boy onto the screen.

    さてさて、そろそろこの不良少年をスクリーンに映し出す時が来たようだ。

  • To do that, I'm going to need a vertical red coder instead of a flat one like I have here, but I think I have a design for it.

    そのためには、ここにあるようなフラットなものではなく、縦長の赤いコーダーが必要になるのだが、そのためのデザインは考えている。

  • Yep, I was right.

    そう、私は正しかった。

  • I have one in my schematics folder.

    私の回路図フォルダに1つある。

  • So this is a vertical red coder.

    つまり、これは縦長のレッドコーダーだ。

  • It does the exact same thing as the other one.

    他のものとまったく同じことをする。

  • Whatever signal strength you put into the back here, it's just going to show whatever lamp that is.

    ここにどんな信号強度を入れても、それがどんなランプであっても表示されるだけだ。

  • So we've got 14.

    だから14人だ。

  • That's going to show the 14th lamp.

    これで14番目のランプが点灯する。

  • Okay, I took the vertical red coder, I attached it to this guy, and I put it behind the screen.

    縦長の赤いコーダーをこいつに取り付けて、スクリーンの後ろに置いたんだ。

  • I think it should work.

    うまくいくはずだと思う。

  • Let's try it out.

    試してみよう。

  • Nice.

    いいね。

  • It actually feels like Flappy Bird already.

    実際、もうフラッピーバードのような感じだ。

  • The next step is to generate the pipes.

    次のステップはパイプの生成だ。

  • Since we have pipes coming from the top and the bottom, you might think it's easiest to just generate like a random length pipe right here, and then another random length pipe right here, and that would look something like this.

    上と下からパイプが来ているので、ここにランダムな長さのパイプを作り、さらにここにランダムな長さのパイプを作るのが一番簡単だと思うかもしれません。

  • But I think a better way to generate them would be to generate one giant line and then pick a random hole, right?

    でも、もっといい方法は、巨大な線を1本生成して、ランダムに穴を選ぶことだと思うんだけど?

  • Because once you have this line, if you just pick a random hole, like say you pick here, there you go.

    というのも、このラインさえあれば、適当に穴を選べば、例えばここを選べば、それでいいんだ。

  • Those are your two pipes.

    これが2本のパイプだ。

  • To physically move the pipes across the screen, I think I'm just going to use a system like this.

    物理的にパイプを画面上で動かすには、このようなシステムを使えばいいと思う。

  • It's actually pretty simple.

    実は簡単なことなんだ。

  • We just have an observer chain and then a bunch of observers coming off of that chain.

    私たちにはオブザーバー・チェーンがあり、そこからたくさんのオブザーバーがやってくる。

  • Whenever you give it an update, it gives you a nice three-wide pulse across these lamps.

    アップデートをするたびに、これらのランプに3つのパルスが表示される。

  • Okay, I stacked it up a little bit and I simulated a little system to see what the pipes might look like.

    では、パイプがどのように見えるかを見るために、システムを少しシミュレーションしてみました。

  • Yeah.

    そうだね。

  • I mean, that looks pretty good.

    つまり、かなり良さそうだ。

  • My only concern is that this might be a little bit too fast.

    唯一の懸念は、ちょっと早すぎるのではないかということだ。

  • I mean, these are moving pretty fast across the screen and considering our bird only falls that fast, I don't think it'll mix well with those pipes.

    つまり、これらは画面内をかなり速く移動していて、我々の鳥がその速さでしか落下しないことを考えると、あのパイプとうまく混ざり合うとは思えない。

  • But I mean, at the same time, you can also just make the bird fall a little bit faster by making this clock a little bit shorter.

    しかし同時に、この時計を少し短くすることで、鳥を少し速く落下させることもできる。

  • So I'm not that concerned.

    だから、それほど心配はしていない。

  • You know too fast.

    早すぎるよ。

  • This would, even if the bird was at the same pace and it was falling really fast, this, I don't think Flappy Bird is meant to be, meant to be this crazy.

    これでは、たとえ鳥が同じペースで、ものすごい速さで落下していたとしても、フラッピー・バードがこんなにクレイジーになるとは思えない。

  • At least not until you get to the later levels or whatever.

    少なくとも、後半のレベルか何かになるまではね。

  • So I'm going to have to think of a different system to move the pipes across.

    だから、パイプを横に移動させる別のシステムを考えなければならない。

  • Okay.

    オーケー。

  • I just had a thought.

    ちょっと思いついたんだ。

  • What if we put repeaters on the back of these?

    この裏にリピーターをつけたらどうだろう?

  • They're one wide.

    幅は1つだ。

  • So, oh, okay.

    だから、ああ、わかった。

  • That's, that's much better.

    その方がずっといい。

  • Check it out.

    ぜひご覧あれ。

  • Dude.

    おい。

  • Oh my God.

    なんてことだ。

  • I can't believe how easy that was to fix.

    こんなに簡単に直せるなんて信じられない。

  • All right.

    分かった。

  • So like I said before, for each set of pipes, we're just going to create one long column and then generate a random hole.

    だから、さっき言ったように、パイプのセットごとに長い列を1つ作って、ランダムな穴を生成するんだ。

  • To me, when I hear one long column and a random hole in it, that kind of reminds me of the vertical red coder again, because if you just invert this, now it looks like one long column with a hole in it.

    私にとっては、1本の長い列にランダムな穴が開いていると聞くと、縦長の赤いコーダーを思い出す。

  • So I think if I can find a way to modify this to make the hole bigger, that'll be perfect.

    だから、これを改造して穴を大きくする方法が見つかれば完璧だと思う。

  • Okay.

    オーケー。

  • I've been working on it a little bit.

    少しずつ取り組んできたんだ。

  • I think I've got something promising.

    有望なものを手に入れたと思う。

  • So if we input a signal like that, we get a hole right here.

    つまり、このような信号を入力すると、ここに穴が開く。

  • And if we input a different signal strength, maybe you want a little bit higher.

    そして、もし違う信号強度を入力したら、もう少し高い方がいいかもしれない。

  • We get a hole that's higher up.

    より高い位置に穴を開ける。

  • Okay.

    オーケー。

  • That seems pretty cool.

    かなりクールだと思う。

  • All I did here was take the output from the red coder and make it go up a slab tower by a designated amount.

    ここで私がしたことは、レッドコーダーからの出力を、指定された量だけスラブタワーを上昇させただけだ。

  • So for example, I think the output's coming from about right here and you can see it came out with a single strength of seven, meaning that it's going to go up like this and create a hole.

    つまり、このように上昇して穴を開けるということです。

  • That's only seven long.

    たった7本の長さだ。

  • Everything else still has torches on it.

    それ以外のものにはまだ松明がついている。

  • Okay.

    オーケー。

  • I hooked up the fancy observer screen to it.

    私はそこに派手なオブザーバー・スクリーンを接続した。

  • And now we'll actually be able to see the pipes right now.

    そして今、実際にパイプを見ることができる。

  • It's set at this current height.

    この高さに設定されている。

  • And if we press this button, it releases it.

    そして、このボタンを押せば解除される。

  • And that's what the pipes look like.

    パイプはこんな感じだ。

  • That's actually pretty good.

    それはとてもいいことだ。

  • We can go over here and we can change the height.

    ここに行って、高さを変えることができる。

  • We can do something like this instead, press the button and we get a different height.

    代わりにこんなことができる。ボタンを押すと、違う高さになる。

  • Awesome.

    素晴らしい。

  • After playing with it for a while, I noticed that sometimes the holes are like too high and they chop off the top pipe.

    しばらく使っているうちに、穴が高すぎて上のパイプが欠けてしまうことがあることに気づいた。

  • So I modified the input system a little bit.

    そこで、入力システムを少し変更した。

  • And you go right here and press the button.

    そして、ここでボタンを押してください。

  • That is the highest possible hole.

    それが最高のホールだ。

  • Or if you go right here and press the button again, that's going to be the lowest possible hole.

    あるいは、ここに行ってもう一度ボタンを押せば、そこが可能な限り低い穴になる。

  • And that means that this redstone line is essentially our range.

    つまり、このレッドストーン・ラインは基本的に我々の範囲ということだ。

  • So now we just need a way to randomly assign a random piece of dust to full power.

    だから、あとはランダムにダストをフルパワーにする方法が必要なんだ。

  • The easiest way to do that is with a randomizer circuit.

    最も簡単な方法は、ランダマイザー回路を使うことだ。

  • So this is a 50, 50 randomizer.

    つまり、これは50対50のランダマイザーなのだ。

  • When I press this button, it's either going to give me an output or it's not, it's a 50, 50 chance.

    このボタンを押すと、出力が出るか出ないか、確率は50%か50%だ。

  • The way this works is we have a dropper pointing up into a hopper and the one non stackable and one stackable.

    この仕組みは、ホッパーにスポイトを上向きにして、スタックできないものとスタックできるものがある。

  • If it chooses the non stackable, which is the ax, it's going to output two signal strength and reach the lamp.

    もし、軸であるスタッカブルでない方を選ぶと、2つの信号強度を出力し、ランプに届くことになる。

  • But if it outputs the stackable, which is the dust, it's only going to output a one signal strength, which does not reach the lamp.

    しかし、埃であるスタッカブルを出力すると、信号強度は1しか出力されず、ランプには届かない。

  • So let's activate three of these at once.

    では、これら3つを同時に発動させよう。

  • And that way it's going to generate a random three bit binary number, which means it's going to be a random number in the range zero to seven or zero, zero, zero to one, one, one, zero, one, two, three, four, five, six, seven.

    つまり、0から7、または0、0、0から1、1、0、1、2、3、4、5、6、7の範囲の乱数ということになる。

  • Can you see where I'm going with this?

    何が言いたいかわかるかい?

  • All we have to do is use a decoder to decode the three bit binary number into its corresponding torch zero through seven.

    あとは、デコーダーを使って3ビットの2進数を対応するトーチの0から7にデコードするだけだ。

  • And now with three randomizers and a decoder, we can choose a random torch every time we press this button.

    そして今、3つのランダマイザーとデコーダーがあれば、このボタンを押すたびにランダムなトーチを選ぶことができる。

  • Okay.

    オーケー。

  • I made a little circuit to automate it and check it out.

    私はそれを自動化するために小さな回路を作り、チェックしてみた。

  • Random pipes.

    ランダムパイプ

  • Let's put this thing on the clock.

    これを時計に乗せよう。

  • Oh yeah.

    そうそう。

  • That is amazing.

    それは驚きだ。

  • All right.

    分かった。

  • We've got pipes.

    パイプはある。

  • We've got a bird.

    鳥を捕まえた。