Large Display Size Middle Display Size Small Display Size

2018 年 1月 の日記

2018/1/14(日)

サイドビューキャラの試作品を掲載します。

”サイドビューキャラ” とは、「キャラクターを身体の部位ごとに分割して、プログラムでポーズを付けられるようにした JavaScript」です。私が個人的に開発しているもので、プログラムは著作権フリーです。将来はRPGの戦闘の場面を描くような用途で使おうと思っています。

今回の試作品は、ジャンプができるようになっています。

具体的にはキャラクターが移動する際のアニメーションで任意の数学関数を使えるようになっています。

たとえば、キャラが水平方向へ移動する際に、数学の2次関数を使って垂直方向へも移動(放物線運動)を行い、ジャンプを表現できます。

以下の試作品1では、その「水平方向に移動+ジャンプ」の動きを作り忘れてしまいましたが、真上にジャンプする動きがあります。

▲試作品1(両端のキャラは飾りです)

そして、以下の試作品2は、プログラムは試作品1と基本的に同じで、キャラデータを人間にしました。

しかし、最近いろいろボケてるので、こちらの試作品2は内部的にはジャンプのプログラムがありますが、試作品で試せるように盛り込んでいません。


▲試作品2

ソースコードです。

  1. canvas.html
    動作本体です。
  2. class_SVC.js
    サイドビューキャラのクラス。
  3. class_ANM.js
    アニメのクラス。オブジェクトの1つの値に注目し、値を開始値から終了値まで変化させます。
  4. class_Calc.js
    たとえばスーパーマリオみたいなジャンプを表現したいとき、数学関数(放物線、2次関数)のグラフの一部を使うためにどのようにプログラムするか迷いますが、その迷いを解消するためのクラスです。

一連のファイルの ZIP です。試作品ですが著作権フリーとしています。

20180114-サイドビューキャラ試作品.zip(284KB)


2018/1/4(木)

オブジェクト指向のプログラミングの話題です。一般の人向けのたとえ話も加えています。

プログラマーの人ならだれでも遭遇する問題…、または私だけ解決方法を知らないだけかもしれませんが…。

「こんな問題があり、未解決だ」という話題です。

一般向けにわかるようにする必要はなさそうですが、プログラマーでない人も目を通すこともありえるので、、。


この命題に対する案(方法)を4つ挙げます。

社会人向けに言うと、あるプロジェクトを進めるのに、A社の技術と、B社の技術が両方必要。プロジェクトはどこで行う?

学生向けに言うと、学校の委員会で ある議題「もっと学校を綺麗にしよう(、と毎週放送する)」がある。放送する放送委員会と清掃する生活委員会のどちらで議題を進めるのが一番良いか?


社会人向けに例えていえば、B社の社員がA社に出向して、A社の中でA社の社員と共にプロジェクトを進めるようなものです。

学生向けに例えていえば、生活委員会の生徒が放送委員会におじゃまして、放送委員会の生徒たちと共に「もっと学校を綺麗にしよう(と、毎週放送する)」について話を進めるようなものです。


社会人向けに例えていえば、同じようにA社の社員がB社に出向して、B社の中でB社の社員と共にプロジェクトを進めるようなものです。

行うプロジェクトは方法1の例と同一で、A, Bどちらで行っても問題のない内容です。

学生向けに例えていえば、同じように放送委員会の生徒が生活委員会におじゃまして、生活委員会の中でその生徒たちと共に議題を進めるようなものです。(そういう学校ってだいぶ進んでる学校だな…)

議題の「もっと学校を綺麗にしよう(と、毎週放送する)」はどちらの委員会で進めても実行できそうです。


※エレガント(elegant) 落ち着いて気品のあるさま。優美なさま。「エレガントな身のこなし」

社会人向けに例えていえば、行うプロジェクトというのが実はM社から下請けしたプロジェクトであって、M社に特別に作業場を設けて、A, Bの社員がM社に出向(出張?常駐?)して一緒にプロジェクトを進めている感じです。(ちょっとたとえに無理があるか…)

学生向けに例えていえば、行う議題というのが実は職員室の話題から上がってきた話であって、職員室に放送委員会と生活委員会の生徒を数人集めて一緒に話を進める感じです。(ありえる?)


社会人向けに例えていえば、A社とB社がプロジェクトのために合弁会社Cを作り、プロジェクトを進めている状態です。

どのような形態で進めても できあがるプロジェクトは同じですが、後に残る「設備(作ったクラス)」がA社に残ってその後メリットがあるのか、それともB社に残すべきか。M社で似たようなプロジェクトのたびに繰り返し作業場(プログラム)を設けるのか。それかC社を作る方法もあるが、その後C社を活用し続けられるのか…。

学生向けに例えていえば、生活委員会の生徒と放送委員会の生徒を何人か集めて、新しく「生活放送委員会」を作り、学校を綺麗にするためにいつでも清掃に関する放送ができるようにします。

どのようなかたちで進めても 進める議題「もっと学校を綺麗にしよう(と、毎週放送する)」は同じですが、後に残る「議事録やノウハウ(作ったクラス)」が放送委員会に残ってその後経験として得するのか、それとも生活委員会に残すべきか。職員室で似たような話題のたびに繰り返し両方の委員を集めるのか。それか新しい委員会を作る方法もあるが、その後活動し続けられるのか…。

どういう形態が一番納得できて気持ちよく、後活用もできるか…という問題です。

一般向けにたとえ話を、しかも社会人と学生向けに作って、大掛かりになってしまった…。



fig.
▲サイドビューキャラ アニメテスト

その進行中のプログラムはこれです。

リンク先ページ左下の アクション1 というリンクをクリックするとテストでアニメーションします。 ポーズ1からポーズ2へアニメーションするというものです。

左の画像リンクをクリックするとJavaScriptを実行します。


ポーズ1(棒状)からポーズ2(三角形)へのアニメーションの「アニメデータ作成」を、SVCMというクラス(サイドビューキャラというキャラクターモデルのクラス)に行わせるのか、それともANMMというクラス(アニメシステムのクラス)に行わせるのか悩みました。

データ作成にはSVCMが持っているデータ(キャラデータ)も、ANMMが持っているデータ(アニメのスピードであるtimerMS)もどちらも使います。(A社の技術もB社の技術も、放送も清掃も使う)データ作成をどちらに行わせるにしても、もう片方の参照(出張、おじゃま)が必要になります。

▲菖蒲の花 (描きかけ)

そのデータの主体はどちらなのか…。「キャラに属しキャラが作るアニメデータ」と考えるか(そのプロジェクトはA社よりである、「綺麗にしようと放送する」は放送委員会に近い活動だ)、「アニメシステムに属しアニメシステムが作るアニメデータ」(いやB社よりだ、清掃委員会に近い)と考えるか。

このプログラムにおけるアニメデータの正体ってなんなんだろう…と深く考え込む…。

”拡張性や合理性を考えすぎるといつまでも前に進まない”、というのがあるので、気になる状態のまま前に進むのが良いという選択肢もあります。でもな…”ちらかっているものを綺麗に整頓すると進行が速い”、というメリットもあってそこを望むところも大きいんです。

ところで、こういう話題って面白いと思って読む人っていますかね? 同じことで悩んでドンピシャな人には、面白い話題でしょう。


2018/1/2(火)

新年あけましておめでとうございます。

今年もよろしくお願いいたします。

ページ制作 homepage6047



ページの上端へ (もくじ開く)