1. ソルラジ 〜ゲーム開発の挫折共有ラジオ〜
  2. #game29 パズルゲーム開発開..
2024-06-19 42:24

#game29 パズルゲーム開発開始しました 〜アメリカと日本で開発続けてます〜

<内容>

-アメリカにJOEさんが引っ越した話

-受託開発始めました

-マッチスリーゲーム作り

-アセットを丸々落として作るゲーム

-プログラムを追いかけて読み解く方法

-他の人のゲームを読み解くのは難しい

-関数を読むのが大事

-関数は醤油とって

-クライアントとの連絡はこまめが大事

-オブジェクト指向

-手続き型言語もある

-ご指導いただいています


SOLVENTERとは?

「世の中のつまらないことを無くし、好きな事で生きる世界を作る」を理念として立ち上がったゲーム開発チームです!

現在は、プログラミング学習の挫折率を下げたい!

という想いで

プログラミングが楽しく学べる

「EXEACT(エグゼアクト)」を開発しています!


SOLVENTER RADIO(ソルラジ)とは?

ゲーム開発の日々の挫折をRADIOで発信していきます。

開発の苦悩を面白おかしく共有していきます!


SOLVENTER

X/Twitter(フォローよろしくお願いします!)

⁠⁠⁠⁠⁠⁠⁠⁠⁠▼https://twitter.com/Solventer_jp⁠⁠⁠⁠⁠⁠⁠⁠⁠


EXEーACT

<ブラウザで遊べます!開発中のゲームはこちら>

プログラミングが学べる3Dブラウザゲーム

⁠⁠⁠⁠⁠⁠⁠⁠⁠▼https://unityroom.com/games/exe_act_stage01⁠⁠⁠⁠⁠⁠⁠⁠⁠

⁠⁠⁠⁠⁠⁠⁠⁠⁠▼https://unityroom.com/games/exe_act_stage02⁠⁠⁠⁠⁠⁠⁠⁠⁠

⁠⁠⁠⁠⁠⁠⁠⁠⁠▼https://unityroom.com/games/exe_act_stage05⁠⁠⁠⁠⁠⁠⁠⁠⁠


プログラミングが学べる2Dブラウザゲーム

⁠⁠⁠⁠⁠⁠⁠⁠⁠▼https://unityroom.com/games/test0000test

00:02
ソルラジ  ゲーム開発の挫折共有トーク。この番組は、素人ゲーム開発者たちが、プログラミングにおける挫折を、ズレズレなるままに共有していく番組です。
ゲーム開発に興味のある方や、開発者の方の参考になることを目指した番組です。
それでは始めていきましょう。
はい、よろしくお願いします。
SOLVENTER代表のパキジョウです。
よろしくお願いします。
SOLVENTERのヤブです。
SOLVENTERのソーマです。
よろしくお願いします。
よろしくお願いします。
さあ、今日の議題ですが、
議題?
超、超、超久しぶりに、SOLVENTERのゲーム開発状況をお話ししたいと思ってます。
お待たせしました、皆様。
お待たせしました。
誰も待ってない。
これ、多分やけど、誰も待ってないと思うよね、これね。
俺って前らが言ったらおしまいや。
2ヶ月ぐらい経ったよね、あれから。
これ、はなしさんがね、たぶんね、第16回放送の時だと思うね。
3Dから2Dに移行しましたっていう回。
あー、そうね。
プロお話だったね。
あったね、そうそうそう。
いや、全然やってないじゃん、あれから。
2ヶ月経った?もう3ヶ月ぐらいか。
やりがいだけで頑張ってたけど。
そう、なんかブラックの開発環境みたいな。
いやいやいや。
全く話してなかったんですけど、進んでなかったわけじゃないんだよ、全然。
そうなんですよ。
コソコソやってたんですよ。
そうだよね、2人は絶対毎週会ってるもんね。
なんならね、毎日やってるね。
毎週アメリカ行ってますよ。
いや、オンラインでしょ。
そうそうそう、これ初めて言う感じから。
じょうさんが5月からアメリカに行っちゃいましたってやつだしね。
はい、行っちゃいました。
今もアメリカの寒いところと繋いでやってますってやつ?
シカゴからお届けしてます。
寒いよ。
言うて、今もう5月、結構半ば過ぎて、結構あったかいよ。
ただね、夜朝はね、なんかね、まだ9度とかでちょい寒いって感じ。
まあ過ごしやすいけどね。
そう、だからあれだよね、15時間くらいさ、時差があるから。
ヤブさんとゲームの進捗だったり共同作業みたいな感じをするのって、
俺がだいたい朝6時に起きるときに、日本が夜9時かな。
だからそこら辺から2時間ってのと、逆にヤブさん朝、日本が朝7時とかだったら、
俺のこっちの夜5時とか、そんなもんだから。
そうそう、そのくらいのタイミングで連絡取り合って。
ごめん、時間いろいろ間違ってるかもだけど、
だいたい半日プラス2、3時間くらい、サマータイムとかあるからね。
そんな感じで、お互い夜、朝反対にしながらね。
03:04
ただ、やってけそうだなっていうのはあるから。
朝大変そうだなと。
まあまあ、起こしてもらうこともあるしね。
でも、いやいや、時差ボケもやっと直ったしね。
そうか。
ヤブさん、あからさまに朝のテンションわかるもんね。
昨日の夜、つないでたときもめちゃ朝やったもんな。
本当?
そうよね。
おはようございます。
おはようございます。
どう?
朝弱いからね。
でも、逆に良かった。
朝弱いから、そこを起きないと逃しちゃうというか、
一緒に話せる時間逃せるから。
朝勝手の朝勝手。
そうそうそうそう。
健全な朝勝手。
そうです。
ゲームを前回は2次元というか、2Dゲームに変えましたっていうところから、
そこから続けて作っていて、
その中で途中でゲーム開発の受託というか依頼が来てて、
それで一応受託開発っていう形で進めているっていうところもやっていて、
ちょっと今回はその話をメインでしたいなと思ってます。
ぜひ。
作るものがまた変わってたらめっちゃ面白いですけどね。
変わってるけど、そのまま作ったやつはまたこっちで元々作ってたやつにガッチャンというか利用ができるやつだから、
そういう意味でもあって自宅したっていうところもあるんですけど、
経緯から話しようかな。
自宅ゲーム開発経緯。
とあるところから、ゲームっていうところを強化したいっていうところで、
学びができるゲームっていうのを作ってほしいっていうお話が来ました。
もともと僕らはプログラミング学習が学べるゲームを作っているっていうところがあって、
ゲーミフィケーションっていうところもあって、
作りたいものっていうのは似てるよねっていうところがあって、
依頼が来て作ることになったんですけど、
どんなゲーム作りたいっていうか、
そういう話をしたら、パズルゲームっていうところの要素が欲しいっていうところの要望をもらって、
ちなみにそれはどういう方、会社さんからのパズルゲームの依頼なんですか?
学習塾ですね。
教育系ね。
教育系。
教育系から来て、それでパズルゲームっていうのを要素を入れたゲームで、
かつ学びっていうのができるゲーム。
そういったものを作りました。
作っていますと正確に言うとね。
ヤブさんがまたメインで作ることになるんですけど、
またね、初めてのパズルゲームをゼロから、ゼロ知識から作るっていうところがあったから、
06:03
またね、いろいろ苦労とか困難はありましたよ。
ね、ヤブさん。
すごいね。
大変でしたね。
今の段階としては、サンプルがもうほぼほぼできつつあって、
サンプル、アルファ版っていうのかな、それを作り終えそうなんで、
来月中に、6月中には実践投入っていうのを。
そう、実用を使ってもらって、フィードバックもらって、改善してっていう。
もうそこはアップデートしながら、実用化するっていうような形で進めようとしています。
だから大体ね、もう見通しはついたっていうところで、
そういう意味ではちょっといろいろと経緯の話ができたらなと思ってるんですけど、
ヤブさん、どうですか、簡単に経緯話しますか。
経緯話しよっか。
どんなことを学習をしていたかって。
大変そうやね、作ったことないジャンルは。
一生さ、あれだよね、作ったことないものを要求されて、
やっと作り終えたと思ったら、違う、作ったことないものを要求されるから。
それはね、初めてのことばっかりだからね、まだ今は。
ゲーム作りっていうところは、俺がやりたかったところだから、
そういう面で感じていったら、むしろありがたいというか、そういう面もあるけども、大変だったね。
いや、そりゃそうだ。何から始めたんだろうと思って、
作ったことないジャンルのゲームを作るのに。
そうだよね。ちょっとここだけの話でいい?何から始めたかという意味で。
パズル以外のゲームはどうですかっていう提案をめちゃくちゃしてた。
最初。
なんとかちょっと得意技に持ってきたい。
そうそうそうそう。
こんだけやってるんだよね。
やはりさんはここら辺作ったことないんだよなって、他だったらあるんだけどなって思いながら、
ここはっていう抵抗を実は最初にちょろっとしてた。
抵抗。
まあまあね、要求っていうか、そこが一番大事だから、そこ合わせるのがね。
だから、パズルゲームは作りましょう。
ただ、そのパズルゲームだけだと、やる人がさ、プレイする人たちってイメージさ、学生さんだったりするんだけど、
そういう人たちがみんなパズルゲーム好きってわけじゃないじゃん。
確かにね。
だから、ちょっとパズル要素入ってるんだけど、ちょっと薄めた感じ。
かつ、プラスアルファでRPGゲーム要素も薄く入れて、ちょっと戦闘している感じとか、
冒険している感じっていうワクワク感っていうのを取り入れたいって思って、そこを提案したのね。
それで、いいねってなって、パズドラとかって言ったらわかりやすいのかな。
パズルゲームしながら適当に戦うみたいな。
パズルと言えばね、パズドラ。
そうそうそう。
そういうようなゲームを、サンプルを作ってますというところです。
それで、パズルゲーム。
09:00
パズルって言っても、四角のタイル上、ブロックが5x5のマス目でずらーって並んでて、それを2個、隣り合っている2個のブロックを入れ替えて、
入れ替えた結果、3つ横に並んでたら、その3つは消えるっていうような、結構よくあるゲーム。
よくあるね。
キャンディークラッシュとか。
キャンディークラッシュとか。
ジャンプだとマッチ3って呼ばれてる、ジャンプになって。
マッチ3っていうのがパズルゲームであるんですね。
ジャンルとして、そう呼ばれてるジャンルのパズル。
そうそう。
2人で調べてね、こうやって言うのねって。
その縦横斜めに同じ絵柄が揃ったら消えるみたいなイメージ?
そうなんですけど、縦か横に3つ以上。
3つ以上。
斜めはできないの。
そうなんだ、縦横。
縦横。
なるほど、そういうのがマッチ3なんだね。
マッチ3っていう。
最初さ、やっぱりパズルゲーム作ったことないから参考にしたいなっていって、
いろいろアセットとかインターネットで検索してたんだけど、
なかなか引っかからないねってなってたんだけど、
途中でマッチ3って言うんだって知って、
マッチ3って検索したらめちゃくちゃ出るようになったね。
へえ。
っていうところだよね。
ごめん、ちょっと戻るけど、パズルゲーム作りましょうってなって、
で、困惑したところから始まりました。
ヤブさんと僕は。
ヤブさんがどう作ったかと。
どう作ったかと。
そう、パズルゲーム作ろうってなって、
1から作るのはちょっと時間もないし、そこまでの。
っていうので、最初アセットとか、
そういうのを利用して作ろうっていうふうになって、
実際2人で協力して、いろいろ探してみて、
これ良さそうなんじゃない?っていうので、
一つ問わる。
今さらっとヤブさん言ったけど、時間がないって結構ポイントで、
なんで時間ないかっていうと、
単純に俺がそういうスキルを立てたから。
それで行きますって言って。
なんか、第16回もブラックみたいな話したけど、
結構キツキツの工程で作ったって。
いやいや、そういう動きじゃなくて。
ちょっとヤブさんがさ、
かばおうとするとさ、
余計そういう感じが出るから。
余計ちょっとなんですよ。
ちょっとやめてください。
僕はご指導いただいてるだけなので。
それは良くない。
ズーム越しに青技が見えるよ、ヤブさんの。
まあまあまあ、
このくらいでやりたい、
やれたら良いよねっていう、
実現可能なぐらいの感じでは言ったんだけど、
最初っていうのも考慮しながらね。
でもそもそもね、
パズルゲーム初めて作るって言っても、
何日もというか何週間もかけて作るより、
さらっとまずはシンプルなシステムからで良いから、
作ってみようっていうところで最初やったよね。
そうそう、そんな感じ。
そうか。
まずは気軽にとりあえず作ってみようみたいなとこね。
そう。
で、もともと自作したのも、
パズルゲームがメインってわけではないんだよね。
そう。
12:00
塾で使う、何て言ったらいいんだろうな、
タスク管理というか。
うん、タスク管理?
そう、学習したことの管理。
ここを勉強しましたよみたいな、
これだけやってますよみたいなのを管理しながら。
うんうん、そっか。
学習進捗管理みたいな文脈なの?
そうそう、そんな感じのツールというかアプリケーションに。
最初はそうだった。
ちょっとその成長を可視化できるように。
で、ゲームっぽいUIとかデザインにして、
勉強するとキャラクターが装備が強くなってみたいな、
自分の分身であるアバターのね。
そのキャラクターが強くなったりとかっていうのを、
パラメーターとして表示して、
勉強すればするほどキャラクターが成長するようになって、
そことリンクさせて、
その学習意欲を高めようみたいなところから、
ちょっと息抜きに、
あれ?たぶんそうだったよ。
ちょっと息抜きにパズル欲しいみたいな感じだったよね。
確かに。
そうだね。
そういう流れなんだ。
そうそう。
なので、本格的なパズルゲームを作るわけでもなく、
息抜きとしてのパズルだから、
あんまりめちゃくちゃそこに力を割くあれでもなかったというか。
そうか。
だから、まずは軽くこんな感じでいいんじゃないですかっていう、
簡単なものを準備してっていう流れだったの。
パズルゲーム。
そっかそっか。
っていうので、実際にインポートして、
触ってみて、
なるほどね、こういうゲームねっていうのは触って分かったんだけど、
実際にそれが何を、
なぜこうなってるのかみたいな、
人の実際ゲームの中身を見るときって、
もうパッと見じゃ全く分かんないですよ。
何でこうなってるかっていうのは。
ちなみに丸々そういうゲームのコードごと落として、
ユニティで動かすみたいなデータがあるってこと?
そうそうそう、プロジェクトというか、そういうのがあって。
それって検索で普通に落とせるやつがいっぱいあるんだ。
そういうのが有志の人が置いてくれたりとか、
あとはストアとかにも販売されたりとかあるんですけど。
ユニティストアで買えるし、
無料で誰かが、
買ってもいいよっていう。
個人開発の人が出してるんだ。
それをまず落としてきて見るとかなんだね。
まずこのパズルゲームが一体どうなってるのかというか、
なぜこういう動きをして、
どういう処理をしてるのかっていうのをまず調べなきゃいけなくて。
確かに。
ここがすごい大変でしたね。
それってどうやって分かってた感じなんですか?
読み解く方法?
人のゲームの動きを理解するために何してたって感じなんですか?
具体的に大きくは2つあって、
1つはゲーム内で使われているスクリプト、
プログラミングを読む。
人の書いたプログラムを読んで、
処理を追いかけるというか。
なるほど。
じゃあこういうふうに動いて、
こういうふうに消えるとかそういうのが書かれてるんですね。
順を追って。
15:00
その中の処理を一つ一つ追っていくっていうのがまず1つ。
もう1つはユニティ上で、
オブジェクト、例えばパズルのピース1つ1つに
何が割り付けられているか、
どのスクリプト、どのプログラミングがされているかっていうのを
1つ1つ見ていくっていう。
その上でテストプレイをして、
数字の動きとかを見て、
なるほど、こうやって動いてるんだなっていうのを
1つ1つ紐解いていくっていう感じ。
なるほど。
じゃあ例えば宝石のマッチングとかだとすると、
この紫がこっちに動いて、
この紫同士でくっつくと消えていくみたいなのを
動きつつ裏のプログラミングを見つつ、
確かにこうなってるわみたいなのを
生き生きしながら理解していくみたいな。
そうですよ、そんな感じですかね、イメージとしては。
自分で書き換えたりとかもするんですか、そこで。
あれ、これ本当にこうなってんのか。
そうですね、書き換えたりとか、デバッグログっていうので、
ここのタイミングでこの処理が走ってるよって。
可視化させたりとか。
なるほどね、そういうプログラムが走る順番のやつのログが残んだ。
そう、そのログを残すようにして、こうやってます。
なんかさ、よくあると思うんですよ、
ゲーム開発するときにね、
例えばブロック崩しだったり、
格闘ゲームだったり、RPGゲームだったり、アクションゲームだったり、
いろいろとイメージしてるものの土台って何かしらあるじゃないですか。
マリオみたいなものを作りたいなって言ったら、
マリオみたいなアセットとかってあったりするんですよ。
よくあるのが、アセットとかをダウンロードしたり手に入れたりして、
とりあえずユニティ上で動かすってところまでは、
すんなり行くんですよ、インポートさえできれば。
インポートしてテストプレイみたいな感じで再生すればね。
なんだけど、一番つまずくのが、
どういうふうな仕組みでこれ動いてるの?って理解しようとするときに、
たぶんめちゃくちゃつまずくんですよ。
なんか動くけどちゃんと、
ゲームになってるんだけど中身どうなってるかわかんないってなって、
プログラムも追いかけられない、読めないし、
それぞれオブジェクトがどんな役割してるのかもあんまりわかんない。
ごちゃごちゃしている。
自分好みに変えたいなって、見た目変えたいなとか、
ゲームシステム自分好みのものに変えたいなっていうアレンジをしようとすると、
まずそこでつまずくと思うんですよ。
これめちゃくちゃあるあるだと思うんですよ。
これ初っ端、最初3人でこれユニティ使い方どうしようかみたいなところ始まって、
とりあえず落として中身見てこうっていうところで、
最初につまずいたのがそれで。
やったやった。
名簿RPGみたいなの作りたいねって言ってね。
敵寄ってきて切り始めたけどこれなんでってずっと言ってた気がする。
そうそう、RPGのアクションゲームみたいなの作りたいってなって、
ちょっと高めの海外のアセットを買って落としたんだよね。
18:04
落としたら思ったより規模がでかくて、ゲームの。
3Dだしね。
ごちゃごちゃしすぎてて、何がどうなってるかわからなくて、
俺ら結局さ、
ショップ?ゲーム内にあったショップの看板をさ、
ちょっといじることしかできなかったよね結局。
ホットホット動かしてたもんね。ずらしてたもんね。
そうそう、ちょっと落書きするだけで終わったもんね。
何も知らなさすぎて。
高度なものから行きすぎるがゆえに、逆に挫折ポイントだよね、相野ね。
いやそうだと思う。急がば回れじゃないけど。
ベースを去ってダウンロードするのって早いだろうなって、
いろいろゼロから作る必要ないから、
早いな、楽だなって思いながらやるけど、
自分が作ったわけじゃないから、理解がめちゃくちゃ大変。
もっと単純な仕組みで動く、
2Dでも紙ペラ一枚で動くぐらいのやつの方が一番いいんだろうね、最初は。
マジ、ほんとそうだと思う。
シンプルな仕組みの、そんな面白いわけでもないけど、
ちゃんと形として、ゲームとしてなってますっていう最低限を取り入れて、
見た方が多分見やすいと思うしね、シンプルだから作りも。
だからそういう意味では結構シンプルなパズルゲームを一応持ってきたつもりではあるけど、
やっぱりね、そこからプログラムを追いかけるっていうところは、
順番にね、最初にプログラムを追いかけるってどんなイメージかっていうと、
ゲームってそれぞれシーンっていうのがあるんですよ。
そのシーンっていうのは場面みたいなイメージで、
最初ゲーム起動すると、タイトル画面とかあるじゃないですか。
それはもうタイトルのシーンみたいなイメージね。
ゲーム開始みたいなところで、ロードする画面とかいろいろ出てくるじゃないですか。
そこら辺はロードするシーンというか。
その後、ロードした後に旅の途中からのフィールドマップとかあるじゃないですか。
それがまたフィールドマップのシーンで、
敵と遭遇して敵とバトルするときはまた敵とのバトルシーンみたいな。
そんな感じで一個一個の場面場面がシーンっていう風なんですけど、
まずそのシーンっていう流れがあって、
例えばシーン一個抜粋すると、
例えば敵との戦闘シーンに入りました。
そしたら、まずはシーンの中で、
RPGゲームだったら素早さ早い敵、もしくは味方が攻撃するじゃないですか。
それって素早さを比較して、誰が早いかっていうのをコンピューター判断して、
プログラムで判断して、それが攻撃をして。
その攻撃した後は反対側のサイドが攻撃して、
誰かHPがゼロになったら負けて、ゲームオーバーか勝利かどっちかみたいな。
そういう戦闘の流れっていうのもプログラムを読みながらイメージする必要があるんですよ。
今回でいうとパズルゲームだから、
パズルゲームが最初どういうふうにしてブロックが並べられるかっていうところから、
21:04
ブロックをどういうふうにランダムで置いていって、
プレイヤーが操作する場面では操作した後に、
ブロックを3つ横並び、縦か横に並んでいるところを判断して、
同じものが並んでたら消えるみたいな。
そういう処理を1個ずつ追っていくっていうことをするのが最初大変だったよね。
それが読み解くっていうことなの?
そう、プログラムを追いかける。
追いかけるっていうところは、
ぶっちゃけプログラミングで、自論なんですけど、
プログラミングをバリバリできなくても追いかけることは比較的しやすいんですよ。
追いかけられるかどうかのポイントは、関数っていうのが読めるかどうか。
関数っていうのは?
関数っていうのは、一連の処理をまとめたことを言うんですよ。
ここでマッチングしたら光るとかそういうのを全部まとめて関数みたいな?
そう、関数のまとめ方は作り手の自由だから、一概には言えないんだけど、
例えば関数っていうと、まず最初にスタートの関数みたいなのがあるんですよ。
それは何かっていうと、
例えば戦闘の場面に入りましたって言ったときに、
最初に戦闘場面に入った瞬間に一発走るよっていう関数があるんですよ。
最初一発走るよってなった瞬間に、
そこに例えば味方と敵を配置するっていうプログラムを書いたりとか、
ステータスを設定するとか、そういうことをしたりするんですけど、
そういうところからその次に今度は、
例えば敵のターンだったらエネミーターンみたいな名前で関数が書いてあったりするんですよ。
その関数っていうのは、エネミーターン、敵のターンになったら敵はどんなことするかっていう一連の処理が書いてあるんですよね。
例えば敵のターンになりました。
敵は防御か攻撃かどれかをするみたいな。
もしもHPが少なかったら回復するみたいな。
そういうことがあって、敵は攻撃する。
その後に攻撃したら、もちろん味方はダメージ食らうので、
味方がダメージ食らうっていう処理を入れたり。
そういう一個一個の一連のものをまとめるっていうことが関数の役割の一つなんですけど。
なるほど。
走るプログラムをプログラマーごとにまとめ方があって、
それをまとめたやつ全体を関数みたいな。
そうそう。
関数って極論なくても一応プログラムって書けるんですよ。
上から順番にゲーム、戦闘開始、
24:00
その後キャラクターのステータスを見てスピードが一番高い人が行動する。
で、敵だった場合、敵が攻撃する。
味方がダメージ受ける。
その次は味方のターンで味方が攻撃するって。
それ全部一行ずつずらーっと書いても一応成り立つんですよ。
一応作れるんですよ。
だけどそれめちゃくちゃ見づらいのと、
一部できないところがあったりして、
基本的にはみんな関数で書いていくんですよ。
まとめられるところはまとめていくんですよ。
味方のターンの関数。
敵のターンの関数。
あるわ。
テキスト送られてくるとき、LINEとかでもそうだけどさ、
1〜について2〜についてって書かずにベタブチで書かれると全然わかんないし、
どこからどこまでみたいな。
あれを全部やってくれてる感じなんだね。
1についてとりあえず見といてって言ったら、
この1だけ見るみたいな。
その区分けの仕方はプログラマーごとに作ってて、
そのひとまとまりがどう動いてるかっていうのを見てくるって感じなんだね。
そんな感じ。
例えばさ、
今ソマさんに言った感じに近いんだけど、
例えばさ、家族でご飯食べてるとします。
醤油取ってってお願いする言い方を、
例えば醤油取っての代わりに、
ちょっとあなた右手をあげて、
右手を醤油さしの目の前まで手を伸ばして、
それを掴んで、
それをピックアップして、
持ち上げて、
それを私の目の前に置いて、
その後手を戻してくださいって言うのって、
めちゃくちゃそれ聞かれるのなんかちょっと、
なんかめんどくせえってなりません?
醤油取ってって言ってほしいでしょ。
むしろちょっと恐怖です、それ。
そうそうそう。
恐怖ですよね。
そんな感じ。
あーわかり、理解理解理解。
醤油取ってっていう関数。
あーそれが関数なの。
それが関数なの。
そのさっきの一連の処理をまとめたの。
理解した理解した。
連絡取っといてっていうのも、
じゃあ携帯電話の電源を起動して、
LINEを開いてとかそういうんじゃなくて、
そういうこと。
連絡しといてっていうだけでOKみたいな。
そうそうそう。
結構ね自分の中では関数っていうのは、
そういう一連の動作というか処理をまとめたもの、
分かりやすいものにまとめたものっていうイメージをしてて、
多分それが比較的伝わりやすいのかなって思って、
いつもこういう話してて。
それをヤブさんがその読み解くっていうのをやって、
そういうこと。
その後どんな感じに進んだんでしたっけ?
読み取る前にこういうパズルとRPGで、
こういうのが作りたいよねっていうのをまず構想設計して、
それを実現するために今インポートしたプロジェクト、
パズルゲームがそれを実現できるかどうかっていうのを、
まず調べるために読み解くっていうことをしたんですよ。
なのでそれを読み取って、実現できそうだねっていうふうにやって、
じゃあ実際にどういうふうに実現していこうかっていう、
そのRPGの部分、このパズルのピースを見つけたら
27:02
相手にダメージを与えますよみたいな的に。
なるほどなるほど。
じゃあまずそこで落としてきたものが、
作ろうという要件を満たせる土台かどうかっていうチェックをするんだね。
そうですね、そのイメージでしたね、今回やったことは。
ははは、そうだよね確かに。
パズルゲーム作りたいのに土台がRPGだってちょっとずれるもんね。
そうそうそう。
っていうのと、あと単純に理解をして、
こういう感じでパズルゲームって作られるんだなっていう理解をして、
じゃあ自分たちはこういうゲーム作りたいから、
じゃあここら辺の処理をいじれば、
例えばブロックの画像を変えれるねとか、
マッチ3がマッチ4とかにもできるよねって、
4つ揃ったら消えるようにっていうような変え方もできるよねとか、
で、RPGゲームとも合わせたかったんで、
じゃあここのタイミングで味方が攻撃すればいいよねって、
消えたタイミングで敵を攻撃すればいいよねって、
こういう処理を入れればいいよねとか、
そこら辺を理解してイメージをつけるっていうところが、
読むっていう目的だったんですかね。
追加拡張幅もちょっと一緒に見て、
あくまで作りたいものは作りたいものであるから、
あくまでただのベースなんで、
それを変更するための知識というか理解をしたっていうのが、
最初のやったことだよね。
てか最初にやったことだけど一番難しいところ。
難しいね確かに。
かつなんか下ろしてくるアセットっていうところの王道なのか、
ずらしてるアセットなのかっていうところからも読み解かないと、
素材としてこれを選んでいいのかっていうのが分からないもんね。
そうなんですよ。
だけど関数だけ読めるようになれば大丈夫。
地道に行けば全然できるようになる。
そうなんだ。
一部難しい文とかあったりするよね。
ラムダ式とか専門のやつもあったりするんだけど、
そういうのは一行レベルのやつは、
ググったらなんとなくイメージつくから。
関数を読めなかったら途中で途切れちゃうんよ。
関数の次、この関数に入りますっていう時に、
その関数の読み方分からなかったら、
続きが読めなくなっちゃうから単純にね。
だから逆に言えば関数さえ読めるようになったら、
最初から最後まで追いかけられるんで。
これは個人的にプログラミングやるときは、
変数やった後は関数をなるべく最優先に、
勉強した方が楽しいんじゃないかなっていうのは、
個人的に思ったりしてるんですけど。
とりあえずそこを地道にやったっていうのが、
最初のところ。
なるほど。
土台を今理解したとこまでいったんですね、それで。
その後はどんな感じなんですか?
理解して実践できそうになったので、
そこにスクリプトを足したりとか、
30:02
スクリプト作ってバトルの要素。
その処理を足していったりとか、
パネルの絵柄を変えたりとか。
じゃあ宝石だったのを別の動物とかに変えるっていうのも、
できるようになるわけですね。
それができるかどうか。
それをどこで知ってるのっていうのを見るために、
ひたすら関数を書く。
そういうことか。
これ変えたら絶対これ変わるっていうのを、
理解しておくって作業ですね。
そうするとどこを変えたらどうなるかっていうのが分かるので、
自分でアレンジの機械になる。
実際そこに当てはまれるであろうアセットを落としてきて、
組み込んでいくっていう。
拡張させるにはこれを足せばいいみたいなのを足していくっていう、
試行錯誤を始めるって感じ。
そうですかね。
でもそれが一番ネックなところで、
あとはそこが分かってからは、
RPGゲームの要素だったり、
セーブロードとか、
ちょっとそこは新しいのだったりしたんだけど、
セーブロードとかマップとか、
そこら辺の部分、
機能はある程度他のところでやったことがあったんで、
そこら辺で特になんなく、
そこからはスムーズに実装して、
もうすぐサンプルができそうっていうような感じですね。
なるほど。
そこからはもう後はスムーズなんですね。
そう、スムーズ。
あとはどっちかというと、
クライアントというか、
そこからの要求にちゃんと合ってるかなっていう擦り合わせのところ、
これでこんな感じで今作ってますよっていう話だったり、
こっちから連絡したり、
あっちからはこういう画像を使ったりとか、
こういう雰囲気がいいよとかって、
そういうのを要求してもらったりとか、
そういうところでやり取りしながら、
あとはアルファ版の完成に持っていくっていうところが今の段階ですね。
なるほど。
確かに作った後に、
こんなの違いますって言われたらめっちゃ大変よね。
そうなんよ。
本当そこそこあって、
そこのやり取りのサイクルは、
マジで短くしたほうがいいなっていうのは個人的に思ってます。
確かに。
宝石から動物でいいんだとかそういうやつもそうよね。
そう。
だってグループのチャットみたいなの組んでやってるもん。
それは関係性にもよるかもしれないんだけど、
それぐらいのほうがスムーズに全然いくよね。
大事やね。
コミュニケーションかなり大事やね、こういう受託開発は。
めっちゃ大事だと思う。
いかにストレスフリーな連絡方法っていうか、
連絡環境を整えるかっていうところだと思うから、
だからそこら辺で、
そうなったら自分の中でもLINEグループとか、
どこでもいいのかもしれないけど、
そういうやつが一番手っ取り早いかな。
すごいね。
技術的には今もアメリカと東京でできちゃうんですもんね。
こういう開発を作って。
そうね。
33:01
でもメインはYabuさんだけど。
いくつか見せたいんだけど、
そこは公開可能なときにまた公開させてください。
そうだね。
確かにクライアントさん的にもオープンにしていいのかもあるしね。
実際これはまだオープンしない方がいいなと思ってるし、
自分も。
オープンすべきじゃないので。
だからそこはそういうことやってるよっていう。
こそこそやってたよっていう話。
待ってないよね。
待ってないと思うよ。
そうそう。
お待たせしましたって言って始まったけど、
誰も待ってないんじゃないかと。
ごめんごめん。
100万人のアンチはいそうな。
開発中ですので。
そうだね。
あとはあれだね。
さっきプログラム追いかけたらなんとかなるよっていうところもあるし、
もう一個はUnityのこのオブジェクト。
オブジェクトにスクリプトを割り付けたりできるんですよ。
オブジェクトにスクリプト。
スクリプトがプログラミング。
そうです。
ごめんね。
スクリプトって言わずにちょっとプログラミングって言った方が分かりやすいよね。
オブジェクトにプログラミングを、プログラムを紐付けることができて。
オブジェクトがさっき言ったプヨプヨのプヨとか、そういう宝石とかそういうものみたいな。
そうです。
オブジェクト思考って聞いたことはありません?
それってプログラミングの使い方みたいなので、2つに分かれるみたいなので聞いたことあるんですけど、よく分かってないです。
そう。
あれもね、これもねちょっとね一言で説明ってなかなか難しいんだけど、簡単なイメージ、性格じゃないけどイメージで話すると、
オブジェクト思考じゃないものって、例えば手続型とか言語とかって言ったりするのもあったりするんだけど、
例えばね、画面を想像してもらって、
PC画面とかスマホ画面?
そうそう、PC画面を想像してください。
真っ暗の画面を想像してもらって、ボタンがクリックできるボタンが、例えば右下に置いてあるとするじゃないですか。
その時にボタンをマウスで、マウスのカーソルをボタンに持ってってクリックするとボタンって反応するじゃないですか。
反応してその画面が黒だったのが白になるみたいな、そんなものをちょっとイメージしてほしいんですけど、
その時にね、オブジェクト思考ってやつはボタンにプログラムが紐づいてるというか組み込まれてるんで、
ボタンをクリックするとその紐づいてたプログラムが走るんですよ。
それがオブジェクト思考っていうイメージなんですよね。
ボタン自体に何か走るものが組まれてる。
だからボタンAを押すとボタンAに割り付けられたプログラムが走って、ボタンBをクリックするとボタンBに対応したプログラムが走るみたいな、そんなイメージなんですよ。
36:03
もう一個の手続型っていうやつはそれに対して、手続型のイメージね、常に画面専用のプログラムみたいなのが走ってて、
その画面は上から順番に毎回スキャンして監視してるイメージ。毎回スキャンして監視してボタンは押されたか押されてない。
次0.1秒後またスキャンしてボタン押されたか押されてないみたいな。
そういうのをずっと見ててボタンが押されたら押されたっていうような反応をするっていうような。
ボタンっていうのにフォーカスしてなくて画面みたいなのにフォーカスしてるイメージかな。
例えばそれがボタンがあったとしても、画面の中でこの領域について何かを押されるという行為があったから画面が反応するとかそういうイメージなの?
そうそう、そんなイメージ。
なるほど。だからそこに表示されてるものには何も意味がない。意味がないって言ったらあれだけど、よりかは画面全体のこの部分に定期的に何かが走ってるっていう感じなのかな。
ごめん、ちょっとこれはあんまり正確ではないけど、ざっくりオブジェクト思考っていうのはさっき言ったボタンに割り付けられたプログラムみたいな。
手続き型は1個の中大きなプログラムがあるよみたいな。そんなイメージでオブジェクトが主人公とかフォーカスされてる意味合いでオブジェクト思考って言ってるんだけど、
そこからクラスとかいろいろ概念があったりして、細々としたものはあるんだけど、ざっくりはそんな感じのイメージかなって思ってくれればいいかなと思ってます。
なんでこの話なんでしたっけ。あ、そうか。関数とオブジェクトが何かっていうのを追いかけて見ていくっていう人もあるってことですね。
そういうこと。オブジェクトのユニティの使い方に近いかもしれないんだけど、ユニティ上にパズルもパズル1個でも1個1個のブロックボタンクリックできるじゃないですか。
だからこれクリックしたらどんな関数が走るのかっていうのはユニティの使い方をちょっと知ってないと追いかけられないんですよ。
だからプログラムの関数を追いかけられることとユニティのオブジェクトっていうところ、そこら辺の仕組みがちょっと理解できること、この2つが理解できてたら大抵のものは何とか理解できるっていう話です。
ごめんちょっと遠回りしちゃったけど、話が長くなったけど。
理解しました。なんか建物の構造を理解して柱を変えるならここで変えるとかいう設計図がわかるみたいなところですね。
まあそうだね、そういうところが。
ありがとうございます。さすがです。
すげえ斜めなんだけど。
そうか。
オブジェクト思考ね、ちょっともうちょっとね、なんかわかりやすくいい感じに説明したいからね。ちょっとまたどっかで話させて、これ。
それだけでもなんか一つのテーマとして話しそうやね。結構大事そうや。確かにゲーム作る上で。
39:00
そう、なんかね、結構言語によってね違うんですよ、そこ。なんかあのUnityって今ゲーム作ってる時に使ってる言語はCシャープ。これはオブジェクト思考なんですよ。
確かに。UnityだとCシャープですよね、イメージ。
うんうん、そうそうそう。UnityはCシャープ。それでオブジェクト思考っていうところ。
JavaScriptもオブジェクト思考。だけどC言語とかはオブジェクト思考ではないかな。
あ、そうなんだ。なんかそういう言語によってもそこら辺が違うんですね。
まあ得意不得意みたいなイメージもあるんだけど、それぞれね、あるんだけど、そこはまたおいおい。
おいおいですね。
最近プログラミングみたいなところのテーマで話もしてなかったから、またしたいね、そこら辺もね。
チョロさん多分ね、それを仕事にしてるからね、結構あの語りたいこととかいっぱい。
でも元々そこを起点にゲーム開発も始まってるからね。
あ、そうそうそう。
プログラミングの挫折を何とかしたいためのゲーム。
そう、一通りのね、そのプログラマーあるあるみたいなのは経験してきたから、そういう話もできたらしたいね。
そうね。
いいところです。
今日は受託開発中のゲームのどんなことやってるかみたいなところでお話をしたね。
はい。
まあ誰も待ってないっていう話ですね。
謝罪。
誰にも求められていない。
そしたら終わりやって、入手だけで盛り上げてこいよ。
いや待ってるよ、待ってるよ、めちゃくちゃ待ってるよ、僕。
つまるな、ほんとに。
ヤブさんにね、そんなプレッシャーかかってもね。
でもジョーさんめちゃめちゃな脳血くるでしょ。
そう、俺が個人的に。
期待しちゃダメとか言いながら。
ブラックなんでしょ、誤指導してるでしょ。
そんなことないですよ、そんなことないですよ。
ねえ、どう言っても、なんか一緒なんだよな、言ってることが。
そうそうそう、誤指導も勉強も一緒。
言葉変えても変わんないんだよな、伝わり方は。
すごいな、アメリカにおっても怯えるって想像やで、これ。
いやいやいや。
そうよ。
そんな感じね。
今回、自宅ゲーム開発の話ということで、これで終えていきますか。
なんかお知らせとかあります?
特にないです。
頑張って作ります。
残念ながら。
そこ頑張って作りますちゃうの、それ。
残念ながら。
やばくない?
じゃあ、これで終えていきましょうか。
出演した人、TwitterにX、なんか言って。
なんか言って。
宣伝させてください。
DMとかしてもらえると。
ぐらい。
42:00
ちょっと何時になるかわかんないですけど。
繋ぎつつ話しましょう。
そうですね。
じゃあ是非、Xのアカウントのフォローとかもよろしくお願いしますというところで。
また明日。
また明日。
じゃあ今日はありがとうございました。
じゃあね。
ありがとうございました。
42:24

コメント

スクロール