2017年12月12日火曜日

UnrealEngine4をはじめた(n=2回目)

この記事は、 kosen14s Advent Calendar 2017(本ページをリンク)のn日目の記事です。

昨日はのぞ君が高専カンファレンスの話をしてました。面白かったです(こなみ)
僕も参加してましたが、のぞ君かなり忙しそうにしてました...
いつか僕も奈良かどこかで運営をするかもしれないので、参考になりました。

いんとろだくしょん

皆様はUnrealEngine(以降UE)って知ってますか???
以下wikipediaから抜粋
Unreal Engine(アンリアルエンジン)は、Epic Gamesより開発されたゲームエンジンである。1998年ファーストパーソン・シューティングゲーム (FPS) である『Unreal』で初めて実装された。
 へー。結構昔からあるんですね。
ゲームエンジンといえばUnityもあるので一応wikipediaを。
Unity(別名:Unity3D)とは、統合開発環境を内蔵し、複数のプラットホームに対応するゲームエンジンである。ユニティ・テクノロジーズ英語版が開発した。日本法人はユニティテクノロジーズジャパン合同会社。ウェブプラグイン、デスクトッププラットフォーム、ゲーム機、携帯機器向けのコンピュータゲームを開発するために用いられ、100万人以上の開発者が利用している[3]。Unityは主にモバイルブラウザゲーム製作に使用されるが、コンソールゲーム機およびPCにゲームをインストールすることもできる。このゲームエンジン自体はC言語/C++で書かれているが、スクリプト言語としてC#、UnityScript (JavaScript)、Booの3種類のプログラミング言語に対応している。2005年にMac OS Xに対応したゲーム開発ツールとして誕生してから、今日ではマルチプラットフォームに対応したゲームエンジンにまで成長した[3]...(以下略)
UnityよりもUEって古いんですね。知りませんでした。多分知名度がWikiの概要文の長さにも現れてると思います...。僕も「Unityで神になる本」で初めて知りました(実はUnityをやろうとして挫折した)

これは余談なのですが、kosen14'sにはUEの:pro:であるyamasu君がいるので、まさか僕がこんな記事を書くことになるとは思っていませんでした。

ほんぺん

現在私は、『Unreal Engine 4で極めるゲーム開発』という参考書を使いながらチュートリアル代わりに勉強しております。なかなかわかりやすく、入門書の9割を最初の20ページでやめる私にしては、200ページまで読み進めていることからもわかるように、良書でした。みんなも読んでね。

で、感想なんですけど、UE4重すぎ!!
私の環境は推奨スペックの最低ラインと同程度なのも原因の1つなのですが、初心者が始められない最大の原因がそこなんじゃないんでしょうか。推奨クロックが2.5GHzと私の第四世代のintelハイッテルには少々厳しい制限なんですよね。多少設定を変えれば向上するんでしょうけど、私が所属している部活動の部屋に置いてある第7世代のi7(RAMは16GB)でもたまーにプチフリーズを起こすんですよね(多分これはswapの影響)

さて文句はこのくらいにしておいて、良いところですが、ちゃんと上のような参考書があれば、よくわからないC#を書かずともブループリントをサクッサクッと書いて試せるのはいいですね。[新規レベル]→[新しいBlueprint]→いろいろ書く→blueprintを画面に配置→動く!!

これ。手軽に試せるのがすごく良いです。どうしてもUnityだと、マテリアルなどのアセットの設定はせっかくGUIで出来るのに、いざアニメーションをアタッチ!とかイベントを作成!とかするとC#でプログラムをしなきゃいけない。C#ってことは、コードを書かないといけないわけですよね。そりゃ手練、熟練、玄人。色々言い方はありますが:pro:の:programmer:だったら自由自在でしょうが、ゲームをとりあえず作りたい人にとっては、よくわからない考え方(ざっくり言うとC#の言語仕様)にのっとって書くことは、大きなハードルです。所詮コードを書くのは手段であって、目的じゃないんですよ。Blueprintでは型が違う!とか引数は何???とかそんなことはあんまり考えなくてもいいですよね。これ最高。

最後に

この記事で書いていることはあくまで個人の意見なんで、他の人による忌憚のない意見は承っていません(サヨナラ
まだチュートリアルをなぞっているだけなんで、大口を叩きすぎたかもしれません。
ただゲームを作りたいけど、渋っている人には本当におすすめです(3Dモデリング出来たらっていう制約がつくかも)
来週までにちっさなミニゲームが作れる程度になれるよう頑張ります。
それではまたこんど。

2017年10月22日日曜日

高専セキュリティコンテスト2017writeupとか

がいよう

ふるつき君(@theoldmoon0602)とスラスト君(@thrust2799)とはいんど君(@miwpayou0808)と僕で参加してきました。結果は3930点(内私は600点)を取って優勝しました。

writeup

[Crypt200]Week RSA1

[Description]

How can you break RSA encryption?
 N=p*q
 N=...
 e=65537
 encrypted=answer^e mod N
 encrypted=...

つまり公開鍵N,eと暗号化されたflagであるencryptedが渡されます。
適当に調べていたら過去のctfの記事があって、とりあえず色々な解析方法を試してみようと画策していた所、はじめに試したフェルマー法があたりました。具体的なアルゴリズムは調べてくれたらすぐ出ます。コピペでも通ります。

[Crypt300]Week RSA2


[Description]

Same modulo, different key.
 That means...?
 N=...
 e1=65537
 e2=65539
 c1=...
 c2=...

同じ平文と同じ鍵Nと違う鍵e1,e2を使った場合拡張ユークリッド互除法で復号できます。具体的なアルゴリズムは調べたらすぐ出てきます。
余談ですが、公式が値を間違えて掲載していたようで、いろんなチームが困ってたらしいですね。僕もその一人で報告して事なきことを得ました。

[Misc100]便利なプロトコル

[Description]
DHCPは便利なプロトコルだが、IP対応機器に対してしかIPアドレスを配布できない問題がある。1998年、この問題を克服した画期的なプロトコルが提案された。そのタイトルを答えよ。

RFC2322に洗濯バサミDHCPによるIPアドレスの管理方法というのがあります。英語名を答えたらおわり。

[Crypt400]

In the server, addition with encrypted flag and your encrypted message is computed.
Following cryptosystem has additive homomorphism.


日本語に直すと、鯖に暗号化した値を送りつけると暗号化されたフラグと足されて帰ってくるそうです。で、送りつける値は暗号化した値と公開鍵でした。

pdfに掲載されている暗号方式は岡本内山暗号と呼ばれるものであり、加法準同型の特性があり、ざっくりというと暗号化した状態で足し算の出来るというものらしいです。

wikipediaに概要が載っています。pdfが読めない過酷な環境をお持ちの人はこれ読んで下さい。

解法としては適当な文字('A'とか)を暗号化して、鯖に送りつけて、帰ってきた値を復号化して、'A'の文だけ値を引いたら答えが得られます。




で解けませんでした。

なぜ解けなかったかと言うと、代数学をちゃんとやったことの無い私には鍵を生成する方法がわかりませんでした。なのでわかったことをレポートします。

暗号化に必要な値はn,g,h,rから成り立ち、
n=p^2*q(p,qは素数)
gはnを法とする剰余類環に属する値(この作り方がわかんなかった)
h = g^n mod n
rはnを法とする剰余類環に属する値
です。この内、n,g,hを公開鍵とし、p,qを秘密鍵とします

pdf読んでるとわかったのですが、pは暗号化する値よりも大きくないといけないそうです。それ以外にも条件があるかもしれません。分かる方は教えてください。

以上です。プログラミングと数学があんまり得意でない私には解くことが出来ませんでした。めっちゃ悔しいです。

ふるつき 
gは0から(n-1)までのあたいで gcd(g,p) != 1かつgp = pow(g,p-1,p*p) としたときに pow(gp, p, p*p) != 1を満たす値

へーそうなんだ。知らなかった。

まとめ

正直私が解けた問題は以上です。Crypt400の準同型暗号のソルバは書ききれず死亡しました。あんまりよろこんでいないのは僕がこの問題を解くぞ~と大口叩いていたのに解けなかった所によるものです。
同じチームのふるつき君や公式のスタッフによるとチームワークがよかったそうです。僕は正直みんながやっていたbinやKoHには参加していないので、能動的にチームに参加したかと言われるとあまり頷けませんが、自分が解くときに協力してもらったので、これもチームワークかなと振り返ります。
すらすと君がパケットを読む鬼と化してて強かった ハインド君のバイナリ解析能力が一年間で強くなってて危機を感じた
ふるつきがふるつきしてた

最後になりますが、チームの皆様控えめに言って最高でした!!スタッフの皆様も対応ありがとうございます!!台風お前は許さねぇ!!皆様方お疲れ様でした!

2017年8月22日火曜日

反省

いくつかイベント(kosenconf in 舞鶴2とか)参加しましたが、投稿できてません...
(実はこのブログの存在を忘れてました)

2017年3月5日日曜日

「人工知能が感情を持つとき」に行ってきた

https://kscan.jp/events170305/

2017年3月5日にサイエンスワークショップinけいはんな「人工知能が感情を持つとき」に行ってきました。弊学の教授からパネラーとしての募集があり参加することになりました。

瀬名秀明先生による基調講演

冒頭によくある疑問(AIによる支配、職業を奪う等)と回答が紹介されましたが、あまり言及されなかった。
メモ長いので、感想の後に書きます。

学生とのディスカッション

瀬名秀明先生と同志社大学の学生さんと奈良女子大の学生さんと弊学の学生がATRの堀川さんがファシリテータとしてディスカッションする
...予定でしたが、瀬名秀明先生の基調講演が白熱したものとなり、学生たちが自分たちの思う「人間らしさ」について順番に話した。
不満を言う、空気を読むこと、究極の柔軟、インサイトを判断すること、忘れることなどなど。
あまり哲学について書くと批判されるので書きませんが、スタンフォードの監獄実験やカントの考えを持ち出し説明しました。

昼ごはん

けいはんな近くのマクドナルドに行きました。弊学教授と同志社大学の人達と弊学の人達で同じテーブルを囲み話しました。あんまりおもしろいことはなかったので略。

Microsoftのエバンジェリストの増渕さんによる講演

講演に聞き入ってしまいあまりメモ出来なかったので心に残ったこと。
子どもがスマホをさわる機械が多くなる昨今。スマホは消費者マインドがついちゃって、あんまりよくない!
だから http://www.town.seika.kyoto.jp/contents_detail.php?co=kak&frmId=13036 の3番のようなことをやってるそうです。
生産者マインドを体験して欲しいそう。

私もやってみました。

直前に学習済みのAIを使って表情を判定するデモをやっていたので、そこからインスピレーションを受けてガガガガガーッとプリントを埋めました。作ってみたいな。

感想

瀬名秀明先生とのディスカッションは普段授業でもやる機会がない哲学的なことについて話すことが出来て認知欲求が満たされました(素人質問にやさしく答えて頂いた先生とファシリテータの堀川さんありがとうございます!!)
マイクロソフトさんの講演は何度もエンジニア魂に火をなんどもつけるような刺激を受けるものだったので非常に楽しかったです。上に書いたヤツは春休み中には作る。
何より楽しかったです。ありがとうございました。

基調講演の内容のメモ

「不気味の谷」

「人間」に似て非なるものが不気味の谷となるのではなく、「自分」に似て非なるものが不気味の谷である。


ダナ・ハラウェイ氏の2つの宣言

「サイボーグ宣言」(現代人はキメラである=人間は機械と生命の混合体で、脱性差)という考えを発表した後、「伴侶種宣言」で異種間との生物の共生、コンパニオン動物とのありかたに変わったとかなんとか
(メモをあんまとっていなくて覚えてない)
瀬名先生は前者の宣言より、後者のほうがおもしろいと考えているらしいです。


ショートショートの作り方から学ぶ考え方

形容詞と名刺のペアをいくつも作り、それを1つずらす。それにより産まれた新たな言葉に対して発明品を考え、メリット・デメリットを考える。という方法論を説明した後、機械的に基本構造は作れても、これでは起承転結のストーリーは作れない。
つまり、ある程度機械化(AI)出来ても、ストーリーを生成することは難しい(ルーティンを超えなければ、本当に面白いお話はつくれない)
即ち、好奇心とか何がおもしろいかを考えるのは人間しか出来ないそう。


いろいろ

人間らしさとは何かを知りたいから、棋士や作家がAI研究に協力する
小説の評論やレビューはAIが代行する可能性がある
電脳戦は棋士とAIのバトルでは無く、人間がルールを変えていく(ここがルーティンでは無く人間らしさ、だそうです)ことにより観客を楽しませた歴史。
枠組みの中で考えるのでは無く、枠組みを変え、ルールを変えていくことで、新たな楽しみや評価の仕方、社会倫理・道徳観の想像が産み出される。


石黒先生と池上先生の対話から学ぶ

石黒浩「生命の最低の条件とは何だろう?」→池上高志も答えられない。より、
知能や生命の本質とは何か?を研究したいのに「人間そっくりなら人間だ」で終わってしまって、その先は一流研究者でもうまく答えられない。


他人を思いやるあたたかい心とは

共感(シンパシー):他人の気持ちといつの間にか同調している、受動的な心の状態(state)
感情移入(エンパシー):自分とは違う立場の他人の気持ちを忖度する、能動的な心のパワー(ability, power) ヒトが進化の過程で獲得した高度な情動


「思いやり」は機械でもできる

ドアを開ける、椅子を引くなどは技術的なこと。これはロボットでもできる。それよりも人間はもっとロボットになるべきでは...?という主張もあった。
サービスはロボットと人間が行うこと。


まとめの話

どんな人の生活にも「人間らしさ」と「ロボットらしさ」が共存している。
それを見極めて賢くデザインしてゆくことが、これからの本当に豊かなロボット/AI社会ではないだろうか。

2017年3月1日水曜日

n回目の開設

bloggerを開設しました。
前まで使ってたサービスが使いにくかったので乗り換えました。
イベントが起きたら更新します。