過程を経て・・・
我々は成長する過程で様々なフェイズを通過する。
最もわかりやすいのが、学生時代遊んでいた人が社会人になって急激に真面目になるというパターンである。
これは一回メーターが振り切れてしまった方が、そうでない人よりも、経験してきたフェイズが一個多いので、その分気楽に物事に向き合えるせいだと、僕は解釈している。
過程を経ることで得るものはいくつもあるが、一つはこの「身体が軽くなる」感じだと言っていい。
思春期というのは、いわば精神の「増量期」とも言えるようなもので、誰しもこの時期に肥満性の状態というものを抱え持ってしまうのだが、これは後になって、きちんと消化されれば、たくましい魂の筋肉となって昇華される可能性を秘めている。
つまるところ、人生にはフェイズが必要だということだ。
フェイズが変わるまでに飽きることなくルーティーンをこなし続けられる力というのは意外に重要である。
例えば、好きな女の子がいるとしよう。いわば、自然にこの子のことを考えるようになったとして、そこから「何らかの重圧」を感じるようになったとすれば、人は二択を迫られることになる。
①その選択肢から身を遠ざける
②その選択肢を自分の使命として受け入れる
ここで①を選んだものは、その女の子に対しての責任を放棄したのみならず、「自分の迎えようとしていた成長のフェイズ」からも目を逸らしたことになり、これ以降、出会う女の子全てに対して猜疑心のこもった視線を向けなければいけなくなる。
しかし、②を選んだものは、そこにおいて、自らの新しいステージの扉を開くことになる。そこには当然のことながら、受難があり、危険があるのだが、そういった経験をもって人は自己の中に秘められた可能性を受け入れていくのだろう。
過程を経ることというのは、いわば、自己の生まれ直しを見るようなものだからだ。
プログラミング上達記
僕がプログラミングを始めたのは、去年の12月のことだった。
どういったタイミングだったかは忘れたが、とにかく、暇だったことをよく覚えている。
どこかで聞きかじった話だが、大抵の偉業は「暇だったから」とか、「誰かに頼まれたから」「面白そうだから」とかいうどうでもいい理由で始められるという。
要するに、その余裕というものが大事なのだろう。
僕の場合も、スケールの差こそあれ、やはり、「暇だったから」という理由でスタートしている。
なんでもそうだが、切羽詰まった状態で詰め込むより、はるか先を見越して、目線は遠くにやりながら、しかし、着実に目の前をこなしていく、という感じが丁度いい。
確か、数学者の加藤和也さんも、遠くの山並みを見据えて、というようなことを言うのが好きだった。
彼の中では、ゼータ関数の予想、とか、類対論の統一、とか、ラングランズ予想、とかの遥かなる大目標があって、その大目標を遥か遠くに見据えて歩いていく、というようなイメージだった気がする。
それはさておき、僕の場合、特に遠大な目標があるわけではなかった(エンジニアになりたい、とかの)のだが、とりあえず、クリエイティブ ・コーディング上手くなりたい、くらいの感じで始めた。
最初の頃、とりあえずインターネットの記事を見ながら、必死に勉強を始めた。
頑張ってみたけど、一ヶ月(?)くらいやって、すぐにやめたことを記憶している。
僕の場合、目標がなかったし、特に食らいついていく理由が見当たらなかった。
それもそうだし、インターネットの記事を見ていても、イマイチ実際のコーディング作業がイメージできなかったのだ。
インターネットでコーディングの勉強を始めたことのある人ならわかると思うけど、コーディングの記事って、実際に作る作業とは無縁な書き方をされていることが多い(?)。
要するに、技術の活かし方までは書かれていないのだ。
だから、当然のことながら、知識を溜め込んでいって、「そういえば、あの時習ったやつで、ここの処理できるかも」みたいなことがあるまで、待っている期間が必要なのだ。
ですので、技術そのものにはあんまり魅力もないし、面白くないです。
それがしっかりと活かされているところを目にするまでは、プログラミングへの開眼はしないと思います。
なんか大したこと書いてないな〜、っていう記事を読んでいく時期(①)を経て、しばらく放置し(②)、ふとしたきっかけでそういえば、あのプログラムってどうやって書かれているのか?と思って、調べたりしているうちに、そうか、よくわからんけど、プログラミングって料理と似てるな!っていう開眼のポイントへ至るのである。
どういうことだろうか?
つまり、配合の度合いなのである。塩梅が大事なのだ。
WEB製作でも多分同じだと思うんだけど、結局、細かいちょっとしたバランスで全ては変わってくるのだ。
これは、もう、どんな製作物でも同じだろう。
感覚が全てですね。で、感覚の部分って「教えれない」。
僕は今、ちょっとしたプログラミング講師のようなことをしているけど、まだ感覚的な部分については教えていない。
そういう部分の微妙な話ができるようになったらとても面白いだろう。
ちょっとした部分の数値とかって、もう、自分で何度も試すしかない。
ラーメン屋のスープ開発と同じだ。
自分のぴったりくる配合を探すしかない。
というところで、今回の記事を終ろう。
WEB開発の面白さとは、様々な技術を自分なりの配合で取り入れるところにあるのではないか、とふと思うのだ。
これからのゲーム開発における課題
three.jsを触り始めて一週間ほどになるが、ステージを作る上で課題となる要素がだんだんわかってきた。
これまでのところ、ゲームステージの作り方としては、
①JavaScriptのグラフィック表現専用の要素canvas を用いて、2Dの俯瞰図をまず作ってみる。
②俯瞰図である程度納得のいくものが作れた時点で、three.jsで3Dステージにしてキャラクターを動かしてみる。
②を行った上で、俯瞰図に戻って、より面白いステージは何か?と考え直す。
three.jsにおいて、物体を作り、それを座標指定して置く、という作業はさほど難しくないので、大雑把なステージはすぐに構成可能だ。
やってみてわかったのは、実際のステージに身を置いた時、ステージにある様々な物体がどう見えるか?というところがグラフィック的に面白くなるポイントだということ。
そして、雰囲気を決めるライティングの設計が案外難しい、ということ。
ライティングはゲームの雰囲気にすごく影響するので、とても大事だと思う。
ライティングの設計は、プレイするためのステージ設計とは別に行わなくてはならない要素であるとわかった。
従って、当面の課題としては、影のでき方など含めて、ステージのどこに光を置いたらより、雰囲気がよくプレイしてもらえるゲームになるのか?というあたりから、まずは小さなステージでライティングを研究するところから始めていこうと思う。
なお、three.jsには標準的な機能として、ムーディなネオンのような表現や、非常ランプのような淡い光り方をする光源は用意されていないようだ。(現在まで、ネットで調べてみた情報)
これらを実装するには、それなりに準備が必要になるようで、three.jsの弱点はこの辺りにあるのではないか?と思った。