2018年7月31日火曜日

MMOってやりたいよね。

やっぱもうレベル製MMORPGは無理だと思うんだよなー。

だからこそ完全スキル制MMOARPGだと思うわけよ。

しかも放置要素入れちゃう。
ゲームをプレイしてない際に、例えば朝、昼、夕に何をするか設定出来る様にしちゃう。で、そこで各種スキル上げの訓練、採取等の資源集め、遠征等の経験値稼ぎもやらせちゃう。


そんでスキルは、大きく3カテゴリ。
 キャラ作成時のみに得られる特性スキル。
 ほら異世界転生時のさ?w

 プレイ時に皆覚えれる通常スキル。
 大抵のは誰でも覚えれないとキャラメイクに不公平感が出過ぎるからね。

 条件を満たしてキャラに設定したクラスの時にのみ使えるクラススキル。
 例えば剣系のスキルと一定のステータススキルがあれば剣士に成れて、剣士用のスキルが覚えれる~みたいな。

これでかなりのキャラ差が出ると思うんだよね。シナジーもてんこ盛りにしてさ。装備にもスキル付きを登場させる。

さっこんの異世界転生物はスキルがどうのと多いので受けるんじゃない?


アイテムの取引は露天にして、市場に出せばいいってのはやらない。
つまり放置時に露店やらすか、プレイ時に露店に居なきゃならなくする。
で、クエストの重要アイテム以外は課金アイテムも全部売れる事にしちゃう。


装備品は通常のは消耗して、耐久度なくなったら壊れないけど性能落とすか使用不可にする。

飲み物と食い物要素を入れる。
 飲み物はバフと永続スタミナ回復効果
 食い物はバフと永続HP回復効果
まあ飲み食いしなくてもバフが付かないってのと自動回復ねーよってだけやな。でも飲み食いすれば十分効果あるよね、これで。

そんで消耗品を多くしてゲーム内マネーを減らしていき、価値を落とさないようにする。そしたら課金アイテム売りで稼ぐのが有効になるし。


あとはフォロワーやな。黒い砂漠で作業させれる連中居るやん?
あれをスカイリム的にもっと身近なものにして、一人だけーとかにする。
プレイ時はフォロワーが代わりに裏で放置時の作業してくれるみたいな。アイテム集めだの露店の店番だの、作業を代わりにやっといてくれるわけ。

で、場合によっては一緒に連れで回ったりさ。もちろんフォロワーも成長要素あり。フォロワーのキャラメイクもあった方がいいよね。もちろん装備も自分で色々と用意してさ。


これで基本は各地にいってフィールドの敵と戦うってやって、周回したい人向けのIDダンジョン、対人、町でのハウジング、クラフト要素、だどコンテンツをちょいたしでいいよね。基本はフィールドやねん。出来れば人が分散してほしくないので、中央の土地でみんな活動し各方面に探索して帰ってくる感じが良いよね。

ゲーム内の町は一個にしちゃえばいいんだよ、中央の都市だけ。
で、都市から離れれば離れるほど敵強くして資源やら良くする。

実装増えてさすがに遠くに行くにはプレイ時間的に大変となるだろうから、そうなったら中継地点を用意してあげて、移動手段としての自分用の乗り物や公共の乗り物を用意する。

んー、あれやな、フィールドはアインクラッドにして100層まで行くのが目的って感じにしちゃうのもありだよね。世界観をシステム的にしてしまうって事とね。世界観出そうとすると、ゲーム性的によくない点が出ちゃうからさ。




もうオワコンと言われてるけど、MMOを知ってる人としては、これはと思えるMMO出てほしいわけよ。

2018年7月24日火曜日

[ゲーム:セカンドライフ]リンクナンバーと名前に関しての。


list LinkMap_list=["Link_map"];
       
integer LinkMax_integer = llGetNumberOfPrims();
llOwnerSay("Prims : " + (string)LinkMax_integer );

integer Loop_int;
list Sub_list;

LinkMax_integer += 1;
for(Loop_integer=1;Loop_integer<LinkMax_integer ;Loop_integer=-(~Loop_integer) ){
    LinkMap_list = (LinkMap_list = []) + LinkMap_list + llGetLinkPrimitiveParams(Loop_integer,[PRIM_NAME]);
}

integer i;
string Sub_str;
for(Loop_integer=1;Loop_integer<LinkMax_integer ;Loop_integer=-(~Loop_integer) ){
    llOwnerSay(llList2String(LinkMap_list,Loop_integer) );
}


~~~~~~~~


リスト:LinkMap_listにリンク順にプリムの名前を入れる処理です。


最初のオーナーセイは総プリム数確認の為だけなので省略可。


一つ目のfor分でLinkMap_listに名前を格納しています。
0にはダミーの"Link_map"を入れてあるので、1から順にリンクナンバーと同じ位置に名前が入ります。


二つ目のfor分はどう格納されたのか確認用に喋らせたものです。
実装するなら必要ありません。


リンクされていないオブジェは想定していません。
    if(1<lGetNumberOfPrims(); ){}
とでもやれば良いかとは思います。



〇取り出し方
・特定のリンクナンバーのプリムの名前が知りたい。

    string PrimName_string = llList2String(LinkMap_list,integer linknumber);

という感じでリンクバンバー指定でstringの取り出し。


・特定の名前のプリムのリンクナンバーを知りたい。

    string PrimName_string = "hoge";
    integer LinkNumber_integer;

    LinkNumber_integer = llListFindList(LinkMap_list,[PrimName_string]);


これでhogeという名前のプリムのリンクナンバーが分かります。

あとはこれを変数に入れておけば、hogeに対する処理は変数指定で行けるわけです。


注意点としては、オブジェ内に同名プリムが存在する場合、若い方のプリムのリンクナンバーしか取れないという事。なので基本的にプリム名は被らない方がいいです。


~~~~~


〇で、これ何に使うの?

リンクメッセージで送信したり、link系命令で親から子を操作する場合に、プリムの名前は判るんだけどリンクの仕方が変わったりしてリンクナンバーが変わっちゃったよ。幾つなのかもっかい調べて指定しなきゃってのを無くすために使います。

そして処理の度に取得してたら重いだけなので、リスト化し変数に入れ込んでおく処理を最初とかにしちゃうわけです。



~~~~~
という事でなにかしら作ってる際に有効な処理ではないでしょうか。

ぶっちゃけさ、editでリンクナンバーの管理を行えるUI入れろよとは思うんだけどねw