【月一最終回(?)】スツルムウントドランク

こんにちわ、kurokuです。

 

突然ですがいま僕は不機嫌です。(ABCでくそみたいな成績だったので(自業自得なんだよなぁ。。

そもそも今日一日を通して集中力があまりなかったです。コンテスト中もずっとそわそわしてました。

 

まぁそんな中でも記事を書いていきますよ。ええ。

トピックは、

・競プロ

・ゲーム制作

・CTF(Capture The Flag)

 

きょうぎぷろぐらみんぐ

冒頭でも書いたようにストレスの塊です。

競技プログラミングやめらんないんだけどwwwwww(錯乱

という状態がもうすぐ1年を迎えようとしています。(始めたのはもっと前だけど

 

今日のABC(ABC160)についていうと、今日みたいな5完速解き回(6問中5問が簡単なためどれだけ速くその5問を解くかで成績が大きく変動する回)は非常に苦手で、4問目で考察ミス、5問目でうんち構築をしたので遅い4完になってしまいました。

 

いつになったら水色行けるんでしょうね。

 

こんなストレスを抱えたまま半年~1年たつので禿げそうです。

というのも競プロをやる以上、Ratingを気にしてしまいます。一方で大学対抗のプログラミングコンテスト(一番?大きいコンテスト)ICPCは一発勝負です。なのでICPCアジア大会出場を目指している身としてはこんなRating、なんの役にも立たないんですよね。

とはいうものの、何か物事を長く続けるためには何らかのモチベーションがないと精神的にきつくなります。競技プログラミング(AtCoder等の競技プログラミングコンテストサイト)においてはモチベーションこそがRatingなわけです。

逆接が多くなってしまいましたが、つまりは、「競プロerは強くなる(Ratingが増える)とモチベーションが上がり、そうでないときは下がる」ということです。

これは非常にストレスになります。過去問を解いても解いても本番でミスして「この一週間何してたんだろ」と思ったり、「今週はなんもしてないから、明日のコンテストは出なくていいや」と思ったり。

 

まぁ、以上は僕ごときの愚痴です。

最終的には、「もっと強くなりてぇ~」というごく単純な理由で競プロを続けられています。学部にいる間は精進し続けようかと思います。

 

なにも競プロerとして食っていくわけでもないんでね、気楽にやればいいんです。

 

はい、機嫌なおった

ゲーム制作

今週の月曜日にすることねぇ~ってなったので、作りました。作成期間のわりにはなかなか達成感のあるゲームができました。

 

始業が延期されたので気が向いたらもう1作品でも作りたいと思います。

CTF

CTFについてもいろいろ触ってみました。

 

【CTFとは】

https://cybersecurity-jp.com/security-measures/33780

 

【モチベーションが上がるかもしれないCTFが題材の作品】

https://kakuyomu.jp/works/1177354054885669846

 

 

とりあえずハリネズミ本を買いました。

 

まだ一章しか読んでいませんが、、、

環境構築がだりぃ~~~~~~

Linux系は講義でちょっと触ったくらいなのでまじでなんもわからん。(特にPATHの通し方がわからん、どれがアプリケーションだよ

 

直接は関係ないですがホストOSとゲストOSとのファイル共有の設定にも3時間くらいかかった。だれかOS補完計画やってくれ。

 

 

 

って感じで、ほぼ環境構築しかやっていないのでとくに話すことはなかった。

 

日本のコンテストとしてはSECCONが秋くらい?にあるっぽいのでそれに出てみようかなと。(海外のコンテストはいっぱい開かれてる)

 

これもICPCと同様にメンバー募集です。

 

人数は、、、上限なしです。これが何を意味しているか分かるでしょうか?

 

CTFの出題範囲は、「リバースエンジニアリング」、「パケット解析」、「暗号解読」、「競プロ(またお前か)」、「データベース攻撃」などなど。そして時間制限は1~3日

 

 

 

あほか???

 初心者が1人でやるには競プロ以上に禿げてしまいます。

ダレカタスケテクレルヨネ?

 

別に本気でやろうとは(今のところ)考えていないので気軽にお声がけください。

まとめ

月一での投稿もとうとう最終回です。

なんとなく決めたことでしたが全うできてよかったです。(質の話はするな

 

 

感染症が流行していて大変ですが、皆さんも体調には十分気を付けましょう。

 

 

 

それではさようなら、またいつか

【ポエム】【現役向け】最近思うこととか語る

はじめに

 こんにちは、2年次のまんじゅうです。3年次なるまで後1週間切りったので新3年次って名乗った方が良いかもしれませんが。

今回はいつもの活動報告ではなく、現在進行中で暇を持て余しているので、ポエム枠として(関係ないことも含めて)色々語っていこうと思います。

ポエム枠書くの初めてなのでぐだぐだです。超長いです。あと実になる話があっても現役向けばっかりになるかと。そのため、興味あるところだけ見てもらえればと思います。一応要点は太字にしているので、そこだけ追っても最低限言いたいことは伝わる‥かな?それと気楽に書きたいので文体とか適当になると思うのでその辺ご了承下さい。

新入生向けの記事はまた別に書きます。このサークルがどんなことをしているのかを知りたい人はこの記事ではなく、後ほど上げる記事を見ることをオススメします。

追記:3月31日にたか君が新入生向けの記事を書いてくれました。ありがとう!見たい方はこちらからどうぞ

追記2:4月2日に僕の方でも新入生向けの記事を書きました。たか君の記事とはまた違う話をしています。見たい方はこちらからどうぞ

 

 

 

 

 

 

 

‥‥いいですね?

(こういうの1回やってみたかった)

 

 

 

 

目次

 各項目であまり話が繋がってないので、見出しだけまとめておきます。タイトルは上の「目次」みたいに大文字になっているので見つけやすいと思います。

今回は下記の6つでお送りします。

・この記事を書くに至ったきっかけ

・最近の進捗

・RPGツクールについて思うこと

・競プロの話

・ゲームジャムについてのあれこれ

・あとがき

それではどうぞ。

 

この記事を書くに至ったきっかけ

 皆さんは最近どう過ごしてますか?僕はとにかく暇です。元々春休みが暇になりやすいのに加え、新型コロナの影響で大学から「無駄に外出ないで(意訳)」と言われ、始業日も2週間ほど延びたことも大きいです。

あ、あとtwitterでも発言しましたが、C98当選したものの、新型コロナの影響を考えた結果5月開催の場合は参加自粛します。残念だけど仕方ないね。‥って書きましたが、先程C98が中止になったとメールが来ました。しゃーない。

ついでにGWに授業日が割り振られるってニュースでやってました。マジ?これが本当ならなおさら5月開催には参加できなかったっす。もう開催ないけど。

 ただこれだけなら「基本情報(基本情報技術者試験)の勉強に集中できるじゃ~ん」って思ったんですが‥

今朝メール見たらこんなの届いてました。

基本情報の対策を進める自分に突然襲いかかる衝撃

‥なんてこったorz。僕としてはこれちょっとまずいですね。というのも秋の試験は秋大祭と被るけど、実は僕会長なので、可能なら展示の方もいるべき‥、しかも来年の春だと色々と手遅れ。このままだと秋大祭の参加捨てて受験しなきゃいけないです。初年次の時も用事で参加できなかったので、秋大祭行きたいという気持ちに反して出席率がどんどん悪くなっていく‥。

ただ試験の延期も検討しているとのことなので、なんとか中止じゃなくて延期になって下さいお願いします。

 とにかく、これで僕に残された道は

・ゲーム制作(やれ)

・暇つぶし(ゲームで遊ぶ、動画見る、小説読む)

・ブログ書く(この記事)

位となってしまいました。あ~暇だあ~

こんな経緯があり、せっかくだから記事でも書こうと思ったので最近の進捗でも語っていこうかなと思います。

 

最近の進捗

 さっきは勉強いらなくなって暇だ暇だ言ってましたが、実はゲーム制作も地道にやってます。むしろハイペースかも(今までが遅すぎ)。TNP現役の皆さんは進捗どうですか?(突然のジャブ)

僕は2/3まで作ってたRPGツクールMVの練習作を完成までなんとか持っていきました。完成まで約1年かかる練習作があるらしいっすよ(プレイ時間目安:3~4時間)

問題の作品。タイトルから既に嫌な予感がする

 作った感想としては、最初一発ネタから始まったのになんでこんな長編作品になったのかと自分でも驚いています。いやほんとに。

 次に参加するコミケの作品集には入ってるとは思いますが、RPGアツマールに投稿するかは検討中です。というのも僕はニコニコは一般会員なので、今後も考えるとあまり容量ないんですよね。なので容量削るだけ削ってWeb上での動作に問題が無ければ投稿します。そこまでやる気力が無かったら‥察して下さい。

 

 そんなこんなでやっと(作りたくも無いけど)作っているゲームを完成させなければならないという呪いから解放されたので、東方の二次創作RPGの制作に着手し始めました。初年次の頃からずっと作りたいって言ってて、そのために(セール外に)RPGツクール買ったというのもあるので、やっと夢が叶った感じです。

 ちなみにこちらは素材の利用規約の関係上、コミケには出せません。アツマールと適当なサイト配布になると思います。在学中に完成すればですが。

 それで作り始めて思ったんですけど、作りたいゲームを作るのってめちゃくちゃ楽しいっす。楽しすぎて気がついたら毎日平均5時間位制作活動してました、みたいな状況になってます。え、全然暇じゃなさそう?これしかやることが無いんです‥

 話戻しますが、さっきのを踏まえると、制作のモチベ上げたい人は「○○みたいなゲームつくりたい!」というように「こういうの作りたい!」というのを見つける方が良さそうかなと。純粋に作りたい物を作るのでモチベが上がります。

 あとミニゲームみたいに構造が簡単で、短期間で作れそうな作品にするのもコツですね。モチベが長続きするかは本人次第ですが、短期間で作れるものにすれば無理矢理完成まで持っていけるので。間違っても完成まで半年とか1年かかるようなゲームを作るのはやめよう、ほんとに(経験談)

 目標を決める方はともかく、短期間で作れる作品選びについてはゲームジャムである程度決め方の練習ができます。未完成で終わってしまってもある程度制作が進んだ状態なので0から作るより楽ですし、必然的にミニゲーム作ってる(はず)ので短期間で完成しやすいかなと。そのためにゲームジャムがあったのかあ()

 簡単そうとか難しそうとかはLineで僕とかに聞いてもらえれば意見くらいは出せるので、困ってたら遠慮せずに是非質問下さい。春休み中は皆暇だと思うので。

 

RPGツクールについて思うこと

 で、そろそろ皆さんこう思ったんじゃないですか。「あれ、こいつプログラミングしてなくね?」と。実際RPGツクールはプラグインを自作したりゲーム内で細かいゲームデータを参照したりしない限りはプログラミング必要ないんです。当サークルでRPGツクールが流行らない理由ですね。会長なのにそんなの使ってていいのか‥?

しかしゲームデータの参照は検索すればある程度出るのでややこしくてもなんとかなりますが、仮に他人のスクリプトを改変したり、なんならスクリプトを自作しようとすると結構大変です。

どんな感じのことをしているか、雰囲気をつかんで貰うために適当なコアスクリプトの一部分を用意しました。

 で、これを見て大体の人は「は?」とか「なにこれ?」とか「いきなり変なもん見せんじゃねーよ」とか思うでしょう。

ですが、安心して下さい(?)、全文読んでもさっぱり分からないです。というか長すぎて読めません(確か合計6万行くらい)。僕がJavaScriptをあまり知らないってのもありますが、それにしても厳しいです。分かりにくいと思う理由としては、クラス継承のしすぎで子クラスのメソッドとかフィールド変数が膨大な数になってるんですよね。そりゃ分からん。更にRPGツクールMVはコメント文によるコード説明がほぼ無いので解読は地獄です。

で、僕は変えたい機能が見つかり次第これを解読して書き換えていると。といっても僕は有志が作ったプラグイン(拡張機能)を多用しているのでそちらのコードを書き換えますが、そちらはヘルプがしっかりしているのでなんとか理解できます。公式のスクリプト書き換えは死ぬ

なんでこんな話をしたかですが、ツクールに興味がある人(このブログ見てる人でいるか分からないけど)に自力でスクリプトを書き換えるのは大変だよって伝えたかったからです。ま、自分がプログラミングしない限りは制作が楽な制作環境なのでそこを最大限活用しましょう(本末転倒)

僕自身は仲間が増えるのは大歓迎なので、興味があったら是非。有料で結構高いですが、セール中ならほどほどな値段になる上に頼めば部費から補助金出してもらえるかも?(僕の時は半分負担して貰いました)

 

競プロの話

 長々とツクールの話をしてきましたが、ようやくまともなプログラミングの話に入ります。え、さっきの?一般的なプログラミングじゃ無いでしょあんなん()

 これは経験談ですが、RPGツクールでの制作(上述のプログラミング要素無し)みたいなことしてるとプログラミングができなくなっていきます。ほんとに。

このサークルに所属している以上、どうやってコーディング力を向上(最低でも維持)するかは課題になってくると思います。まあコーディング環境(DXライブラリとかSiv3DとかUnity(物による)とか)でゲーム作っていけば他の人から教わったノウハウを吸収していくので徐々に上手くなっていくと思います。

ただ、僕みたいにRPGツクールのようなコーディングいらずの環境で制作する人やそもそもゲームを作りたくない(素材制作勢は例外)人はどうするのでしょう?

 そこで競プロです。なんと毎週100分頑張るだけでプログラミングがだんだん上手くなっていき、ついでに+で解法を読むことでアルゴリズムのノウハウも学べます(個人差あり)。これはやるしかねえ!

 やり方は簡単。AtCoderに登録した後にAtCoder Beginner Contest(ABC)に参加登録して、時間になったら問題を解くだけ!ね、簡単でしょ?

ABCは毎週末開催されているので、暇だったらやってみよう!‥という宣伝でした。実際オススメなので、とりあえず1回やってみて貰えると嬉しいです。暇でしょうし。

きっとそのうちkurokuくんがまた競プロ勉強会でも開いてくれるでしょう(無茶振り)

 僕は春休み中も継続してやっていますが、遂に来てしまったというべきか、レートが伸び悩んできたので困ってます。一応C問題はほとんど解けるようになり、物によってはD問題も解けるようになってはきましたが、いかんせん解答時間がなかなか短くならなくて‥。今はA~C問題までを20分以内に解くことを目標に頑張ってます。

あと企業コン、テメーはダメだ。

 

ゲームジャムを開催する理由

 実はこの記事で一番伝えたいことです。というのも以前開催したときの記事(センター試験直前編)で「ゲームジャムでお題を無視して自分が制作したい物を作る」という事について「長くなるので機会があればポエムで」みたいに書いていました。丁度良い機会なのでここで書こうかなと。既にここまでで超長文と化していますが。

興味ない人は「またあの人なんか喋ってるよ」位でいいですが、興味あるけど難しそうとか参加するのに勇気が要るとか思っている人には是非読んで貰いたいです。1歩踏み出せるかは本人次第ですが、理解は深まると思います。要点だけ見たい人はこの見出しの最後の方に箇条書きしてるので、そちらを見て下さい。

じゃあ早速本題に入ります。

 改めて述べますが、ゲームジャムお題を無視してに自分が制作したい物を作る事については、個人的には全然アリだと思います。

 理由としては、僕個人の意見としてお題はあくまで指標の1つであって強制する、強制される物ではないと考えているので、無理にお題に沿おうとするよりも作りたい物を作る方がやる気が出ていいのかなと。

ただ、お題も使いやすい物にするよう注意して選んでいるなので、出来そうならお題を使って制作に挑戦して貰いたいとは思ってます。発想力と柔軟さが増すと思います。

 また、ゲームジャムは話だけ聞くと難しそうとかそんな短期間で完成しないとか考えてしまって手が出づらいと思います。

ですが慣れない内は一日二日で完成できなくても仕方ないですし、その分他の参加者が助けてくれます。皆通った道なので。また、そもそも慣れている人でも時間の都合もあり成果物のクオリティは低くなりがちです。僕とかその筆頭ですし。そのため、出来とか質に関しては皆寛容で、あまり気にしない傾向にあります。これらのことから、参加するハードル自体は結構低いと思ってます

少し話はそれますが、成功体験ってすごく大切です。自信がつくので次の制作のモチベが上がりますし、行き詰まっても「あの時完成できたから今回もいける!」みたいに前向きになれます。

ただ、まだ作品を1つも作れていない人にとっては初めての作品というはかなりハードルの高い物で、一生完成しないんじゃないかとも思えるかもしれません。実際僕は初作品で変なジャンル選んだせいで完成まで半年かかり、完成するまでは「これ永遠に完成しないでしょ‥」とか思ってました。でもそれが完成した後は、完成まで持って行こうという意思が強くなり、それが反映されているのか今までよりもスムーズに作業が進むようになりました。

なんか広告みたいで胡散臭い?実話なので勘弁して下さい。

話を戻しますが、ゲームジャムは作品を完成させる事を目標にしているので、成功体験を得やすい環境だと感じています。先程も述べたとおり行き詰まったら他の参加者に手助けしてもらえるので完成まで持っていきやすいです。

 他にも、こういう会に参加することで新しい技術を習得したり発想が柔軟になったりと確実に制作方面の力が身につきます。なので、僕としてはこのような機会を通して制作活動に慣れたり、今後の活動への足がかりとして欲しいと思うので、気軽に参加してもらいたいです。ただゲームジャムは活動日以外に開催されるので、無理して都合をつけてまで参加する必要は無いです。新型コロナの問題もありますが、隙を見てちょくちょく開催するように努めるので、暇なときに参加して下さい。

こんなとこですかね。要点だけまとめると、

・ゲームジャムに参加すると色々学べるから、暇だったら参加すると良さげ

・ゲームジャムのお題は無理して従わなくてもいい

・ゲームジャムはいいぞ

ってとこですね。

ただし、今は新型コロナの問題もあるので、普通にサークル活動出来るようになるまでは開催を自粛します。たまには他の人開催しても良いのよ?

 

あとがき

 ここまで読んでくれてありがとうございます。気がついたら8時間経ってた上に5500字超えてたんですね。次からはもっと読みやすくなるよう気をつけます‥

 最初に予防線張ったので新入生でこの記事をここまで読んでる人いないとは思いますが、もし読んでたら長々と訳分からない(であろう)話を読んでくれてありがとうございます。もうあなたは期待の新人です。見学に来たら(僕が)喜びます。

 書いてみた感想ですけど、最近のあれこれをぼやきつつ、伝えたいことは書けたかなと思います。長いので要点探すのも一苦労ですが(特にスマホから見てくれてる方)。

最後になりますが、春休み、もとい自由に使える時間があと3週間もあるので、今後の糧になるよう大切に使っていきましょう。

それではこの辺で。また次の記事で会いましょう。まんじゅうでした~。

ゲームジャム(1年生向け&春休み突入編)

 こんにちは、2年次のまんじゅうです。今回は2月11日(火)にゲームジャムを行いました。今回はいつもの個人作業では無く、ゲーム制作が苦手な人が主となって制作し、詰まったらペアの得意な人に助けて貰いつつ制作していく、ペアプログラミング形式(厳密には違う気がしますが)で行いました。

 今回のお題は「階段」、「決闘」、「超常現象」、の3つと、時期的に丁度良かったので「チョコレート」を含め、計4つに設定しました。

 下に各参加者の成果物を紹介していくので、是非ご覧下さい。

成果物紹介

1年 なりょー (補助 ズッキー(2年))

制作環境 Unity

 「決闘」を使った対戦ゲームで、一言で言うと「スマブラ」とのことです。相手に攻撃すると20%のダメージが溜まり、一定のダメージが溜まるとスマブラの様に場外に吹っ飛ばせます。見ていて爽快感があるゲームだと感じました。

右側の生物が伸ばしている触手みたいな奴が攻撃です
勝利判定もしっかり出ます

 

1年 ハイブリッジ (補助 まんじゅう(2年)、いっちー(3年))

制作環境 DXライブラリ

 「階段」を使ったアクションゲームで、次々に出てくる床に飛び乗っていくゲームです。ゲーム自体はどんどん生成される床にひたすら乗り続けると単純なものですが、強制スクロールをさせたり、画面の左右をループさせたりとシステム面でいろいろな工夫を凝らしているのが印象的でした。

常時ジャンプしていることもあり、意外と難しいんです

 

2年 クマ (補助 まんじゅう(2年))

制作環境 DXライブラリ

 「決闘」を使った作品で、一言で言うとカービィの「刹那の見切り」ですね。3ラウンドあり、ラウンドごとに入力猶予時間(敵の強さ)が厳しくなっていきます。早押しが始まるタイミングを乱数でずらしているようなので、結構再現度が高く仕上がっていると感じました。

直撮りで申し訳ないとの事でした。勝敗画面はかなり面白かったです(ここでは色々まずいので割愛)

 

2年 こうぐち (補助 いっちー(3年))

制作環境 DXライブラリ

 「超常現象」を使ったタイピングゲームで、タイピングによる不思議な力でリア充を不幸にするゲームのようです。ゲーム自体は普通のタイピングゲームですが、ゲームの設定が凝っていたり、タイピングが成功した際の加点がやたら高得点だったりと印象に残る所が多い作品でした。

開催したときはホットな話題でした。投稿遅くて申し訳ない
タイピングに成功するとここから1億点(確か)増えます

 

4年 HIM

補助 まんじゅう(2年)

制作環境 DXライブラリ

 4年次ですが、「慣れていないDXライブラリで何か作ってみたい」ということでこちらの枠で紹介します。「決闘」を使ったゲームで、簡単に言うと「本田のじゃんけん」ですね。ただ元ネタの関係で、勝率3分の1の普通のじゃんけんでは無く、相手の勝率が7割程になっているそうです。勝敗を決め、それから相手の手を決定するようにしているということで、上手く再現できていたように感じました。

手の選択は緊張します
相手が勝ったら煽ってきます。3通りあるそうです
こちらが勝った版も。こちらも3通りあるとのこと

最後に

 今回は普段と違う形式でしたが、教えて貰う側はもちろん、教える側も教える立場ならではの発見もあったりしたので、両者が学べる良い会になったと思います。

 ただ、今回意図せず「決闘」という非常に簡単にゲームの方向性が決まるお題を入れてしまったためにそれを選んだ参加者同士が似たような作品になりやすい環境にしてしまいました(今回は完全な被りはなんとか回避しましたが)。そのため、今回の反省を活かして次回以降の開催ではもう少し慎重にお題を決めたいと思います。

 また、実は今回ちゃんと意図があってゲームジャムの形式を変えていました。というのも、あと1ヶ月程で新入生が入ってくる(はず)ので、この会でノウハウを学んで春休みや今後の制作活動の糧にして、今のうちに制作活動に対する抵抗や苦手意識をある程度和らげてもらいたいと考えたからです。結果としては計8人と普段より参加者が多く、またゲームジャム初参加の人もいたため、悪くは無かったように思います。欲言えばもうちょい1年来て欲しかった

 ここだけ現役部員向けの話になりますが、春休みもまだ1ヶ月残っているので、今のうちに夏コミの作品を作っておく事をオススメします。今年は5月の連休に開催で、4月が忙しくなりがちなので、春休みが終わってしまうとほとんど時間がありませんし。皆で頑張っていきましょう。

 長くなりましたが、最後まで見て下さってありがとうございました。

ゲームジャム(センター試験直前編)

はじめに

 

 お疲れ様です。2年次のまんじゅうです。今回はセンター試験直前の数日が休講日であったため、1月16日(木)にゲームジャムを開催しました。
約1ヶ月程遅れてしまったので、すっごく今更な報告となります。申し訳ありません(見てる人どれだけいるか分かりませんが)。

 今回のお題は、「太陽系」、「エネルギー」、「瓦」と、センター試験直前ということで「受験戦争」を追加し、合計4つ設定しました。

 今回も参加者からの成果物の紹介や感想を貰っているので、最後まで見て頂けたら幸いです。

成果物紹介

1年次 ハイブリッジ

開発環境 DXライブラリ 
テーマ:瓦

 エンターキーを連打してパワーを溜めて、瓦を割った数を競うゲームです。システムは出来たと思うのでグラフィック面を今後の課題として頑張ります。

1年次 なりょー

開発環境 DXライブラリ 

 どうも。1年次のエターナルデスサイズです。嘘です。なりょーです。
 今回のゲームジャムではunity3Dを使ってエー〇コンバットのような操作を実装したかったのですが、 自キャラが旋回すると前後上下左右がずれていくという問題を残したまま終わってしまいました。
 自キャラの上、前、右に適当なオブジェクトを置いてそれとの相対ベクトルを取ればよくね?と思いつきましたが試していません。また、制作当初はAddForceを使って瞬間的な加速の実装も目指していましたが、慣性の効き具合が納得いかなくてやめました。どうするといい感じになるのか、教えてエロい人。

1年次 UMA

開発環境 Unity

 「カ〇ジの沼」です。音声素材については著作権ガン無視なので未来永劫公開されることのないプロジェクト・・・とのことです。

2年次 まんじゅう

開発環境 DXライブラリ 
テーマ:太陽系、エネルギー

 今回はキーを連打する、タイミング良くキーを押す(2種類)の3種類のミニゲームをこなして、それらで貯めたパワーで太陽系の星々を破壊していく、という感じのゲームを作成しました。○ービィの○ガトンパンチを彷彿とさせますね(似せたつもりは無かったのですが、気がついたらこうなってました。許せサスケ)。
 システム面は完成しましたが、グラフィック面がしょぼい(背景のループ処理位しか実装できていない)ので、今後はちゃんと楽しめるゲームに仕上げていきたいと考えています。

2年次 ズッキー

開発環境 ブレンダー

 ブレンダーを使った初めての作品です。あまり複雑でないもの(ツール?)の中でポケモンのコオリッポを作成しました。
作業を通してブレンダーの基本的な操作を学べたと思います。

3年次 いっちー

開発環境 DXライブラリ 
テーマ:受験戦争

 適度に休憩を取りながら受験勉強に励み、志望校合格を目指すゲームです。
 遊び方は簡単で、勉強や睡眠などの行動を選択してストレスや眠気が限界を超えないように勉強量を増やしていくだけです。
 勉強以外の行動は1回しか選択できず、ストレスや眠気が限界の状態で勉強を選択すると、倒れてしまいゲームオーバーとなります。

 各行動時のパラメータ変化
[ 勉強 ]  勉強量:+1 ストレス:+2 眠気:+1
[ 睡眠 ]  ストレス:-2 眠気:-2
[ お風呂 ]  ストレス:-1 眠気:+2
[ マンガ ]  ストレス:-1
[ お菓子 ]  ストレス:-1 眠気:+1
[コーヒー]  眠気:-2

最後に

 やっぱりゲームジャムはいいですね(いつもの)。
こういう機会があれば初めて触る環境や技術も試そうと思えますし、なにより長時間制作活動に専念できる上に分からない点は他の人から教えて貰えるので、作業が捗ります。
 また、今回は人数が多めだったので、作業中は部屋に活気があったように感じました。次回以降もこのくらいの人数は欲しいなあ(願望)。

 それと、今回はお題を考えずに自分が制作したい物を作っている人が多かったですが、個人的には全然アリだと思います。理由としては、一番大きいのは参加者自身のモチベが上がりやすいからですね。

 他にも色々理由っぽいのはありますが、長くなるので今回は割愛します。この辺りは近いうちにポエム枠の記事で気持ちを語るかもしれません。

 最後まで見て頂きありがとうございました。また次回の報告で会いましょう。

【月一】もう年末ってマ?

実家にいるときは親戚が来たり、餅の準備的なことがあって年末年始感がありますが、一人暮らしだとほんとに何もかんじないですよね。

どーも。kurokuです。

12/30、僕は15時に起きて、16時からRiJのマリオ5リレーを見てからこの記事を書いています。脳みそどこ…?ここ…?

RTA面白いからみんなもみよう!(見よう!)

 

RTAinJAPAN

https://www.youtube.com/channel/UCV8gEA4XEycdFx-myEpokLg

 

 

今回で2019年最後の記事となりますが、そんなの関係なしにつらつらと書いていきます。

さて、今回の題材としては「ゲーム制作でのポインタの使い方」、「ブログのおすすめ」があったのでそれについて触れていきます。

ポインタって何だっけ?

ポインタは変数をメモリ的に直接扱うことのできる型でした。

変数とはあくまでメモリ上のどこかに確保された領域であり、そのアドレスを指し示すのがポインタです。ポインタは*や&といった演算子を用い操作を行います。

*aと書けばアドレスaに格納されているものを表すことになりますし、&aなら変数aのアドレスを表すことになります。

例えばaをint型としてscanf(“%d”,&a)と書いた場合、変数a(のアドレス)に入力した値を格納します。ここで、aをはじめからアドレスを表す方で宣言した場合は以下のようになります。

int main() {
  int a_;
  int* a = &a_;         //ポインタは初期化が必須
  scanf(“%d”, a);       //3を入力
  printf(“%d\n”, *a); //3
  printf(“%d”, a_);     //3
}

scanf()入力された値をアドレスに格納するので、int*で宣言されたaには&をつける必要がありません。またa_とaは実質的に同じアドレスを指しているので、a_に入力していないにもかかわらず*a(アドレスaの中身)に値が格納されたことで、a_にも値が入ったということになっています。

ポインタを使おう! 使お… 使うの…?

さて、このポインタという概念ですがゲーム制作をする上では全く(は言い過ぎですが)意識する必要がないことが多いです。

皆さんはメモリを意識してゲームを作っているでしょうか?

「この値は高々10000だからshort型でいいや」とか「そんなに精度いらないからfloatで」とか考えてないですよね。その理由はリソースがたくさんあるからです。皆さんのPCのドライブは何GBくらいでしょうか。どんなに少なく見積もっても100GBはありますよね(知らんけど)。ゲーム会社が販売してるゲームでも100GBのメモリを必要とするゲームはないでしょう(多分)。

つまりラズパイなどのハードウェアをいじるのを除けば、メモリを意識する必要なんて今のご時世そうそうありません。なのでポインタのことなんて今年で忘れちゃいましょう!

なんて言うと思ったか!

いや、その通りなんですが、普通にプログラミングをしていてもポインタを使えると便利な場面が多々あります。

最たるものが関数への参照渡し。

以下のプログラムを考えます。

void f(int a,int b) {
  a = a + b;
}

void g(int* a, int* b) {
  *a = *a + *b;
}

int main() {
  int a = 3, b = 5;
  f(a, b);
  printf(“%d\n”, a);
  g(&a, &b);
  printf(“%d\n”, a);
}

これを実行すると

と表示されるはずです。ほとんど同じ関数なのになんで結果が違うのか、そもそもfでa=a+bされているんだから最初の表示も8じゃないのかという疑問が起こりますね。

なぜこんな挙動になるのか、関数では変数をコピーし、その新たな変数を変更するからです。

つまり上のプログラムで、関数fのaとmain関数内で定義したaのアドレスは異なり、関数fで足し算を行ったaはmain関数のaとは何の関係もないのです。

一方で、gではaのアドレスを関数に渡していますね。これを参照渡しといい、関数g内のaとmain関数内のaは同じものです。

 

これによって、ポインタを使えば関数内で変数の値を変更できることがわかりました。

ただし上のプログラムは関数fをvoid型ではなくint型にしてaを返せばよいです。これではあまり恩恵があるとは言えません。

 

しかし、複数の変数に対して操作を行いたい場合はどうでしょうか?

C言語では複数の型をまとめて扱う型がないので、複数の型の変数を返り値とする関数を作ることができません。

ここで参照渡しが威力を発揮するわけです。なぜなら返り値がいらないので。

 

また、ポインタが使われている代表的な構造として配列がありますが、C言語では固定長(つまり長さを決めたら増減できない)の配列しか宣言できません。が、mallocやcalloc、new演算子などを使うと任意の長さの(つまり可変長の)配列にすることができます。

これもメモリ上のアドレスをいくつか確保することにより実現されているのですが、メモリの領域にも種類があり、<s>よくわからない</s>複雑なので割愛します。

 

ということで、ゲーム制作に使うだろうポインタ知識はこのくらいで。

ブログは何がいいのか?

次の話題です。

ブログ始めたいけど、おすすめのブログあるか~って感じでしょうか。

自分もブログの種類詳しくないので、ゆる~く紹介していきます。

 

まずブログを2種類に分けたいと思います。

①発信のためのブログ

②まとめノート的なブログ

です。

 

①は自分が書いた記事をいろんな人に見てもらって、コメントをもらいたい。アフィで稼ぎたい。意見交換がしたい。など不特定多数に見られるのを前提とします。

一方で②はあくまで自分用。まとめノートやメモ書きなどとして書くものとします。

(正直非公開設定があると思うので分類がしなくてもですが)

 

①の代表例:

WordPress、はてなブログ、アメブロ、Qiiita

とかですかね(詳しくはhttps://ferret-plus.com/1301

 

②の代表例:

ScrapBox、note

とか…?(正直非公開にすればいいので

 

特に、理工系のまとめを書きたいならLaTeXで書けるScrapBoxがおすすめです。

 

LateXのコマンド一覧:

https://medemanabu.net/latex/latex-commands-list/

 

ただ、見やすくなりますが書くの面倒です。

また手書きしたものを画像として載せることもできます。(ペンタブ的なの持っていればそっちの方が楽)

 

あ、31日になりました。

 

まとめ

 

 

 

 

特になし。

 

ということで2019年最後の記事でした。

来年はインターン、TOEIC、研究室配属と大学が牙を剥いてくる一年になるかと思いますが、競プロやソフト製作も続けていきたいですね。

 

以上、kurokuでした~

ゲームジャム(文化の日編)

はじめに

 こんにちは。まんじゅうです。秋大祭お疲れ様でした。秋大祭という一大イベントも終わったことで、ついにTNPにも代替わりの時期が訪れ、新会長になりました。改めて、これから一年よろしくお願いします。

 本題に入りますが、11月2日(土)にゲームジャムを行いました。今回は企画したのが前日だったため、あまり集まらないだろうと思いましたが、参加者は4人とそこそこ集まりました。今回は文化の日前日ということで、「食欲の秋」、「運動の秋」、「芸術の秋」にちなんだお題として、「目玉焼き」、「障害物競走」、「一筆書き」の3つを(単語ガチャで)設定しました。

 参加者から成果物の紹介とコメントを貰っているので、 そちらも見ていただけたらなと思います。

制作物一覧

1年次 ハイブリッジ

開発環境 DXライブラリ

 このゲームは、自機である白い丸を操作して赤い丸に見つからないようにゴールを目指すゲームです。今回は自機と敵、フィールドと敵の視界まで実装できました。今後は敵の行動とスタート、ゴールを実装して、ゲームとして遊べるように頑張りたいです。

2年次 まんじゅう

開発環境 Unity

 「障害物競走」というお題があったので、3Dのシンプルな障害物競走を作ってみました。Unity初日でどこまでできるかやってみようと思って始めましたが、ほぼコーディング無しでゲーム部分が作れたのでとても驚きました。今後はシーン遷移を実装してタイトル画面とクリア画面を作って遊べる形のゲームにできるよう頑張ります。

3年次 いっちー

開発環境 DXライブラリ

 お題のひとつ「目玉焼き」を飛ばすゲームです。マウスをドラッグすることで、目玉焼きの飛ばす方向と力を決定します。目玉焼きをお皿の上に乗せることができればゲームクリアとなりますが、床の上に落ちるともう一度となります。

 ゲームジャム終了後に思い付いた上に、開発期間として1週間ほどかかったので、限られた時間でゲームを作るゲームジャムの趣旨とは違うものになってしまいました。

 ゲームジャム当日は、目玉焼きを作るゲームを作ろうと思ったのですが、良い案が浮かばず、ただ卵を割るプログラムができました。

4年次 HIM

開発環境 Webアプリケーション

『お絵かきソフト』

お題: 一筆書き
という訳で、作りました。
一筆ではないですが(挫折しましたorz)、お絵かきできます。

Javascriptとcanvasで作りました。

マウスで描きます。色とペンの太さを選べます。

一筆書がどーしても動かなくて断念したのが悔しかったです。次こそは…

最後に

 やっぱりゲームジャムは良いですね(テンプレ)。やる気も出ますし、何か新しいことにチャレンジする機会にもなるので。冬休みとかにまた開催したいですね。

 それと、今回試験的に1日だけの超短期間ゲームジャムを開催しましたが、皆ある程度形になっていて良かったです。これの影響でジャムの参加ハードルが下がればいいなと思います。

 それでは今回はこのあたりで。最後まで読んでいただいてありがとうございました。また次回のゲームジャム記事(多分)で会いましょう。

【月一】C++っておいしいの?

はじめに

お待たせ。待った?どうもプログラミングサークルTNP所属の広報担当kurokuです。(キツ…

先日サークル内で役職の引継ぎがあり、見事、広報担当(ブログ・Twitter更新)になってしまいましたなりました。

引継ぎの際に反省会も行われ、更新頻度について触れました。いい機会なので僕の目標というか、目安として(最低でも)月一回はブログを更新していきたいと思います。

 

そうはいうものの、毎月更新するとなると話題がなくなります。ただでさえ僕はグラブル、YouTubeでしか時間をつぶしていない気がするので、こんなことなら別に書かなくてもいいよなぁとか思うわけです。(むしろ書かない方がいい

そこで、サークル室のホワイトボードにブログの題材として質問などを受け付けようと考えました。誰でもいいのでゲーム制作でわからないことやプログラミングについてなどどんなことでもいいので書いてみてください。(コメント等でも歓迎です!

それについて僕が少し勉強して、このブログでできるだけ簡潔に、情報共有ができればなと思います。

(ただ、あまりにおじさんを悩ませるような難しい質問をすると僕の独断でなかったことにしてしまうかもしれません…)

 

C++ってどうなの?

さて、いよいよ本題です!ホワイトボードに早速題材が書いてありました。

「C++について」

 

いやいや。。

(雑じゃない?)

 

まぁいいんです。書きます。こんな感じでどんどん題材ください!

(できればもうちょい具体的に!

C++とは、手続型プログラミング言語であったC言語にオブジェクト指向やジェネリックプログラミングの考えを取り込んだ言語です。それぞれわかりやすく言うと、

・手続型

 プログラムを順番に実行していく

・オブジェクト指向

 オブジェクト(データと処理内容)ごとに独立させる考え

・ジェネリックプログラミング

 型などを意識させないように抽象化して記述する

といった感じ。

一見してC言語をもりもりにパワーアップさせたのがC++といった感がしますが、それは間違いありません。

しかし、そんなC++にも弱点はあります。

それは文法が難しいこと。

 
(僕はC言語由来のプログラムしか書けないのでわかりませんが)多重継承というのを組み込んだせいでポリモーフィズムにも影響が出たりでなかったり(?)
 
 
 
 

よくわかんないですねーー。

 
 
 
ですがサークル内でゲームを作る分には使えて損はないです。ライブラリもリファレンスも結構多めですし、何よりC言語が書ければC++も書ける!

これで終わってもいいんですが、内容がなさすぎるのでどんなことができるのかについて軽く触れたいと思います。

#include<iostream>

#include<string>

int main(void) {

std::string s = “hello”;

std::cout << s << std::endl;  //hello

       return 0;

}

C言語だとchar型の配列で書く必要があった文字列もC++ではstring型(正確にはstringクラス)に格納することができます。それに加え、文字列同士の足し算や部分文字列(例えば”ell”)を取り出したりなんかもできます。

std::cout<<s+s<<std::endl;  //hellohello

std::cout<<s.substr(1,3)<<std::endl;  //ell

#include<iostream>
#include<vector>
int main(void) {
  std::vector<int> vec;
  vec.push_back(0);
  vec.push_back(1);
  vec.push_back(2);
  for (int i = 0; i < vec.size(); i++) {
    std::cout << vec[i] << std::endl;  //0,1,2
  }                   

      return 0;
}

vector型(クラス)は配列とほとんど同じ挙動をします。ただ、宣言の部分で要素数を書いていないにもかかわらず値を格納することができています。

vectorは可変長配列と言われ、要素数を自由に変化させることができます。上の例だと宣言時は要素数は0でしたがpush_back()するたびに自身で要素を増やし格納しています!(push_backは末尾に格納するメソッド(関数))

さらにvectorはジェネリックプログラミングの要素も持っています。宣言する際にvector<int>としていますが、これはint型を要素に持つvectorを宣言しています。たとえばintの部分をdoubleやboolあるいは、自作の型MyDataとしてもvector<int>と同じく扱うことができます!

最後に紹介するのは演算子のオーバーロードです。

関数やデータ構造をユーザ側で定義できるのは知っていると思いますが、演算子についてもユーザが定義することができます!

例えば、

#include
#include
std::vector<int> operator*(const std::vector<int>& vec, const int& t) {
  std::vector<int>v(vec.size());
  for (int i = 0; i < vec.size(); i++) {
    v[i] = vec[i] * t;
  }
  return v;
}
int main(void) {
  std::vector<int> v = { 0, 1, 2, 3, 4 };
  v = v * 5;
  for (int i = 0; i < v.size(); i++) {
    std::cout << v[i] << std::endl;  //0,5,10,15,20
  }
  return 0;
}

と書いてみます。本来vector<int>*intなんてできませんが自分で*を定義することでそれを実現できてしまいます!

しかし、演算子オーバーロードを闇雲に使うと演算子本来の挙動と整合性が取れなくなりとても危険です!詳しいことは各自で調べてもらうとして、できるだけあらかじめ実装されているものを使うようにしましょう。

まとめ

大したこと書いてないのでまとめもくそもないんですが、まぁC++はいろいろ楽だよってことが伝わればいいかなと思います。興味が出てきた人はC++について調べたり、聞いたりして闇をのぞき込んでみればいいと思います。

こんな感じの雑まとめをこれからも月一以上で出していくのでどうぞお楽しみに!kurokuでした~。

ゲームジャム(1年生向け編)

はじめに

こんにちは、3年生のいっちーです。9/27~9/28に1年生向けのゲームジャムを行いました。

今回は1年生向けということで、2年生以上とペアを組んでゲーム制作を行うペアプログラミングを行ってみました。

ただ、ゲームジャムは2日間を予定していましたが、2日目は日程が合わない方が多く、私を含め2名だけの参加でした。なので、1日目と2日目でテーマを変えた実質1日のゲームジャムになりました。


1日目

1日目のテーマは「」「消える」「疾走感」でした。参加者は1年生が3名、2年生以上が3名で丁度良くペアを組むことができました。

なりょー(1年) & まんじゅう(2年)

開発環境:DXライブラリ

落ちてくる雨粒や障害物を避けながらゴールを目指すアクションゲームです。

コードを書く前に、ステージの概略や当たり判定の計算方法などを紙にしっかり書いていたのが印象的で、丁寧にプログラミングをしていると思いました。私は行き当たりばったりで進めていくことが多く、それがバグの原因にもなっているので見習いたいと思います。

T.S.(1年) & ずっきー(2年)

開発環境:Unity

プレイヤーを操作して、落ちてくる雨粒を避けるゲームです。

プレイヤーは雨粒に当たると小さくなっていき、最後には消滅してしまいます。当たり判定はプレイヤーの大きさに依るようで、プレイヤーが大きいうちは避けるのが難しく、プレイヤーが小さくなり消滅寸前になると避け易くなるという、バランスの考えられたゲームだと思いました。

UMA(1年) & いっちー(3年)

開発環境:DXライブラリ

前回のゲームジャムで制作した、鳥を火炎弾で焼き鳥にするストレス解消ゲームの改良版です。

当たり判定や火炎弾の連射の修正、焼き鳥を画面上方向に移動させて昇天させるなど、システム面と演出面で改良を加え、より一層ストレス解消が見込めるゲームとなっていました。


2日目

2日目のテーマは「強靭」「丸い」「焦燥感」でした。

まんじゅう(2年)

開発環境:RPGツクール

ボールをぶつけあうスポーツのようなゲームだそうです。

今回はアニメーションにこだわったようで、ボールがプレイヤーと敵の間を動くようにアニメーションし、ボールを投げている様子が表現されていました。

また、ある条件を満たすとプレイヤーの覚醒イベントが発生し、ステータス向上に加え、強力な必殺技が使用可能になるなど、一方的な試合になっていました。

いっちー(3年)

開発環境:DXライブラリ

ボールを操作して、制限時間内にスタートからゴールまで移動するイライラ棒のようなゲームです。

ボールには慣性が働いており、床には傾斜がついているので、思いのほか操作の難しいゲームになりました。また、壁に当たると加速度が反転します。


おわりに

制作期間がほぼ1日と短い時間でしたが、1年生全員がゲームを完成させることができたので、ペアプログラミングは成功と言えるのではないでしょうか。TNPはほとんど個人制作で今回のように複数人でゲーム制作を行うことがないので、これをきっかけにチームでプログラミングする機会が増えればいいなと思います。

Top