Rmakeでオンラインゲームを作りたいです。(2DアクションRPG)(質問掲示板

投稿: Aa mini #いお 投稿:2012/05/20 12:55:20(最新:2012/05/21 21:50:21)
オンラインゲームを作りたいんです。
僕の考えでは、

チュートリアル?完了↓
自分のデータを1ミリ秒ずつ更新(更新中ゲーム可能)↓
相手のデータを1ミリ秒ずつ読み込み(読み込み中ゲーム可能)↓
どうにかして相手のデータ(キャラクター)に攻撃を出来るようにする↓
どうにかしてキャラクター名を表示させる↓
ゲーム開始。


っていうのが僕の頭の中の考えなんですが、
まず調べてみたところ
「全国的ジャンケン」のシーンを見つけました。
しかし、
理解ができませんでした。
それに、
なぜか急にゲームクリアしたりするのも少し考えと違います。
ノベルゲームなので何とか2DアクションRPGに僕は移行したいと思ってます。
何かやり方はありませんか?

コメントする

コメントするには、ログインする必要があります。

コメント一覧

User icon mini 退会したユーザー(投稿日:2012/05/20 19:18, 履歴)
えーと……私のゲームの名前が挙がっているので、
一応私も答えたほうがいいのかな?
ただ、ちょっと質問が漠然とし過ぎていて、
正直答えるのが難しいですね……。

とりあえず、aoihikawaさんの仰る通り実行制限がありますので、
その考えをそのまま実現するのは現時点では不可能です。
ただ、ターン制のRPG風戦闘なら上手く工夫すればできるかもしれませんね。

問題は、どういう手法でターンを交代するのかですが……。
何でも、まだRmakeではあまり開拓されていない分野らしいですので、
本気で作りたいのならば、相応の気合が必要だと認識した方が良いかもしれません。


>なぜか急にゲームクリアしたりするのも少し考えと違います。
理由をちゃんと説明しようとしたら、かなり長くなります。
とりあえず、このゲームのシステムの性質上必要な動作なだけなので、
あまり気にする必要はないかと思います。


>ノベルゲームなので何とか2DアクションRPGに僕は移行したいと思ってます。
特に問題は無いと思いますよ。
むしろ、プレイヤー名やIDを所得できるので、
オンゲはノベルよりもRPG系で作ったほうが適しているかもしれませんね。
Aa mini #いお(投稿日:2012/05/20 19:31, 履歴)
>問題は、どういう手法でターンを交代するのかですが……。

いおの考えは、もう1度バトルを発生させて相手の方から仕掛けたようにしてダメージは回復しないっていうのが思い付きました

>とりあえず、aoihikawaさんの仰る通り実行制限がありますので、
>その考えをそのまま実現するのは現時点では不可能です。

しかし、僕は初心者だけどそれを実現したくて頑張ってるのです。



キャラクターを絶対に表示してみせる!
Aa mini #いお(投稿日:2012/05/20 19:36, 履歴)
今思い浮かんだきゃらくたー表示方法です。

全ユーザー共通でゲームデータをセーブロードできるなら、
こちらのキャラクターで実現すればいいのかと
座標を取得して
setEventTarget("loginuser1", 0, 0)
runEventMove()

で実行させるのは無理でしょうか・・。

あ、無理を実現するためにやってるんだった

キャラクター表示に上限があると思うので、変数でエリアに入れる人数を指定するっていうのも出来るようにしたい(できるかな?)

うーん。
大きな壁だけどなんとか乗り越えて見せます!
User icon mini 退会したユーザー(投稿日:2012/05/20 20:01, 履歴)
>しかし、僕は初心者だけどそれを実現したくて頑張ってるのです。
オッケーです。
説明が足りなかったようなので、説明し直しますね。
自分のデータを1ミリ秒ずつ更新(更新中ゲーム可能)↓
相手のデータを1ミリ秒ずつ読み込み(読み込み中ゲーム可能)↓
私が不可能だと言ったのは、この『1ミリ秒ずつ』という数字の部分です。

aoihikawaさんの書き込みを読み直してみて下さい?
データ通信の間には、最短でも1秒の間を空けなくてはならないのです。
その熱意は素晴らしいですが、これに関しては仕様なので
残念ながら、気合や工夫では現時点ではどうしようもありません。

私の言う『ターン交代の問題』とは、要は通信を
どういうタイミングで行い、どういう情報を行き来させるのか……です。
「1ミリ秒が駄目なら、1秒ずつ通信だ!」というのも一案ですが、
Rmakeのサーバー的にちょっと乱暴なゲームになるかもしれませんねww
Aa mini #いお(投稿日:2012/05/20 20:14, 履歴)
更新して読み込むのは2秒ずつになるんでは・・?
User icon mini 退会したユーザー(投稿日:2012/05/20 20:17, 履歴)
3秒ぐらいに間隔を空ければ
サーバーへの負荷もなんとかなるとは思いますが、
そうすると結構テンポが悪いですよね^^;

それよりも、万が一途中でブラウザを閉じるなどして
抜けてしまった場合にどうするか・・・
User icon mini 退会したユーザー(投稿日:2012/05/20 20:25, 履歴)
キャラクター表示に関しては、個人的にRPG系をあまり触ったことがないので、
ハッキリとした助言は言えないのですが……。

とりあえず、自分自身である程度のことを試してみては如何でしょうか?
そこで「具体的に何が分からない」という疑問を明らかにしてから、
他人に質問をするという風にするべきかと思います。
あまりに質問が漠然とし過ぎていますので。
Aa mini #いお(投稿日:2012/05/20 20:28, 履歴)
今なんて書いたらいいかわからないスクリプト一覧
ゲームをしながら1秒ずつあけてデータを読み込み更新する方法
オンラインユーザーキャラクターを表示して動かす
オンラインターンバトル
ターンバトル中緊急オフライン動作(ブラウザを閉じるなどして抜けてしまった場合)
Aa mini #いお(投稿日:2012/05/20 20:30, 履歴)
今なんて書いたらいいかわからないスクリプト一覧
ゲームをしながら1秒ずつあけてデータを読み込み更新する方法
オンラインユーザーキャラクターを表示して動かす
オンラインターンバトル
ターンバトル中緊急オフライン動作(ブラウザを閉じるなどして抜けてしまった場合)
ゲームしながらデータの読み込み、更新
データの保存方法

っていうところですかね
User icon mini 退会したユーザー(投稿日:2012/05/20 20:31, 履歴)
>更新して読み込むのは2秒ずつになるんでは・・?
えーと……確かに、読み込んでその情報を更新する場合はそうですが……。
読み込んで、情報に更新がなければ保存する必要は無いのでは?
Aa mini #いお(投稿日:2012/05/20 20:41, 履歴)
読み込みはどうしたらいいんでしょうか
座標を読み込んでイベントを動作させたいです
User icon mini 退会したユーザー(投稿日:2012/05/20 21:14, 履歴)
>今なんて書いたらいいかわからないスクリプト一覧
前途多難ですねww まぁ、頑張って下さい

>ゲームをしながら1秒ずつあけてデータを読み込み更新する方法
下のaoihikawaさんの書き込みとそれへの返信などを読んで下さい

>オンラインユーザーキャラクターを表示して動かす
ちょっとRPGのことは分かりません

>オンラインターンバトル
漠然とし過ぎです

>ターンバトル中緊急オフライン動作(ブラウザを閉じるなどして抜けてしまった場合)
時間制限をつけて、パス扱いをすればどうでしょう?
実質的に、抜けた者が負けになると思います。
難しいのが勝敗結果の扱いですが。

>ゲームしながらデータの読み込み、更新
これ、どうだっけなぁ……?
実際にやって、何か問題があったのですか?

>データの保存方法
下のaoihikawaさんの書き込みを読んで下さい。

>読み込みはどうしたらいいんでしょうか
下のaoihikawaさんの書き込みを読んで下さい。

>座標を読み込んでイベントを動作させたいです
すいません、RPGのことは分かりません。


あの……ほんとに、質問はある程度の試行錯誤をしてからお願いしますね。
さらっと文章を読んだだけで、簡単に「分からない」と言われても、
答える側ばかり骨が折れるので。
Aa mini #いお(投稿日:2012/05/20 22:20, 履歴)
if getTime() > 1001
saveGameData("旅行", "game")
if getTime() > 1001
game= loadGameData("旅行")
end
end

の間違っている部分を指摘してくれると嬉しいです。
やはり1度やってみないと回答側も大変ですよね
申し訳ありません。
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/05/20 22:34, 履歴)
このスクリプトは
何を目的としていて、
実行した結果はどのようになっていますか?
Aa mini #いお(投稿日:2012/05/21 15:38, 履歴)
何かをセーブしてロードしたいんですが良く分からなくてこのような結果に
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/05/21 17:56, 履歴)
スクリプトを読む、
その意味を理解する、という
基本的なところから
勉強することをオススメします。

・getTime関数は、それ単体では意味がありません。
・if文の条件の中にあるif文の条件が同じ場合、
 中のif文の存在意味がありません。
・saveGameData関数のすぐ後に
 loadGameData関数が実行されるようになっているため
 1秒以上間隔をあけなければいけない仕様を満たしていません。
Aa mini #いお(投稿日:2012/05/21 18:02, 履歴)
>・saveGameData関数のすぐ後に
 loadGameData関数が実行されるようになっているため
 1秒以上間隔をあけなければいけない仕様を満たしていません。

setBaseTime()、getTime()は例文としてどのように使うのでしょうか
1秒以上間隔を開けたいのですがどのようにして使えばいいのかわからず、使えません。

>・if文の条件の中にあるif文の条件が同じ場合、
 中のif文の存在意味がありません。

ごめんなさい。いおくんには理解ができませんでした・・。

>・getTime関数は、それ単体では意味がありません。
それ単位とは何でしょうか?

まだまだ分からないことだらけですけどよろしくお願いします

Cdv30200 aoi icon mini aoihikawa(投稿日:2012/05/21 18:38, 履歴)
配列をオリジナルデータ領域にセーブロードする
ランキング関数

スクリプト言語のマニュアル「if文」

時間の計り方

いずれもRmake上部の検索やノウハウで得られる内容です。

必要な情報にたどり着くための調べ方などのコツも
自分で何度も経験することで
勉強されることをオススメします。


例えば、登山で登る道を教えることはできますが、
あなたを背負ってまで登るつもりはありません。
私自身も自分の道を登らないといけませんから。
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/05/21 18:46, 履歴)
それこそ、
ご自身の勉強されたことを少しずつ
スクリプト図書館にまとめて、

ノウハウをはじめ
関数リファレンスの内容や
掲示板・wikiの情報までが
スクリプト図書館に全て網羅されたとき

改めて挑戦されてみる、
というのはいかがでしょうか?
Aa mini #いお(投稿日:2012/05/21 21:50, 履歴)
それでいってみます!
ちょっとずつ成長していっても
いつまでも時間がかかっても
一緒ですからね!
頑張ります!
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/05/20 17:39, 履歴)
現在、全ユーザ共通の
ゲームデータをセーブ/ロードする方法は
saveGameData関数loadGameData関数
でのみ行うことができます。


この関数は実行の制限として
それぞれ、1秒間に1回以上の頻度では
利用することができないようになっています。

つまり、セーブ/ロードの1セットで
必ず2秒以上の時間が必要となります。


また、セーブデータのサイズは
1個の領域につき500文字以内、
1つのゲームにつき100個の領域までとなっております。

各キャラクターの状態を示すのに必要な
全てのデータを50000文字以内に
収める必要があります。


スクリプト実行のタイミングについては
過去の記事にある
経過時間表示方法などが
参考になると思います。
Aa mini #いお(投稿日:2012/05/20 18:43, 履歴)
経過時間表示方法の記事が見つかりません
128 mini fragile(投稿日:2012/05/20 18:53, 履歴)
コレとかは?
Aa mini #いお(投稿日:2012/05/20 19:50, 履歴)
使い方がいまいちわかりません・・、
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/05/20 22:36, 履歴)
fragileさまの記載された
リンク先の記事は
スクリプト実行のタイミングに関する
やり方のアイデアですね。

これを元に、どのようにイベントを用意し
イベントのスクリプトをどのように記載するかは
実行したい目的ごとに異なるため、
自分で考えて作成する必要があります。
Aa mini #いお(投稿日:2012/05/20 16:29, 履歴)
ミスでつくってしまったのでURLを変えました
Aa mini #いお(投稿日:2012/05/20 12:58, 履歴)
申し訳ありません。
2DアクションRPGではなく2DRPGでした。