HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0216
デベロパhsp3dishでネット対戦14未解決


デベロパ

リンク

2016/2/16(Tue) 21:44:27|NO.74634

hsp3dishでチャットやネット対戦のアプリは作れるのでしょうか?
hspsockのサンプルをちょっといじって(といってもhspsockは全く理解していませんが)ビルドを試してみたりしてるのですが全く成功しません。hspsockはhsp3dishでは対応していないんですかね?
hspsockを勉強すればネット対戦のアプリを作れるのなら勉強したいと思っています。
どなたかアドバイスいただけませんか?



この記事に返信する


変人

リンク

2016/2/16(Tue) 23:15:42|NO.74636

以前にも数回同様の質問があるのですが・・・

以前の結論は不可能
僕個人としても不可能です

HSPdishは他に比べて優先されるプラグインなので
他のプラグインとの併用は基本できません
windowsに依存した一部の関数や命令も使えません
たしか説明書に書いてあったはず

ですので無視されるかエラーが出るはずです
仮にPC上でできても通信形式がPCとは違うので実機上ではできません

オンラインスマホアプリを作りたいのなら
C言語、JAVA等他の言語で行うことになります

どうしてもスマホでHSP製アプリをプレイしたいのなら

HSPlet
http://yuki-sato.com/hsp/hsp/whats_hsplet.htm

で作成し
http://android.app-liv.jp/hobbies/it/1195/
このようなアプリを使えばできるのではないでしょうか?



zakki

リンク

2016/2/16(Tue) 23:53:32|NO.74637

hspletはJava AppletでFlashではないので2つ目のリンクとは別の話です。

hspletはAWTに依存してるのでAndroidで動かすにはランタイム部分を
まるっとjava.awt.*からandroid.*に書き換える必要があり、
JavaとAndroidを十分把握してないときつそうです。
#原理的には可能なので興味と時間があればやってみる分には楽しそうですが

hspsockのhsp3dish対応はhsplet使うのに比べるとおそらくだいぶ楽です。
plugins/win32/hspsock/Hspsock.cpp がWinsockを使って書かれてるので
この初期化部分をBSD Socketに書き換えてhsp3dishのランタイムに組み込めば動くはずです。

JavaもC++も触らずにということだと、httpload命令を使ってサーバーと通信することはできます。
リアルタイムに通信する必要がないゲームならこれが一番楽ですね。



デベロパ

リンク

2016/2/18(Thu) 23:14:05|NO.74645

httpload がかなり気になります。
囲碁や将棋のようなターン制で相手の選択した行動を通信して取得するようなゲームはhttploadで作れたりするんですかね?
あまり使っている人がいないのかhttploadで検索しても中々情報が出てこないですね。

httpload、httpinfoは指定したurlからデータを取得するような命令だとおもうんですが、逆にデータを送信する命令もあるんでしょうか?



kanamaru

リンク

2016/2/18(Thu) 23:46:54|NO.74646

httploadとhttpinfoはあくまでも簡単なデータを受信したりするためのもので、
ゲームとかには使えません。
確にデータの送信って出来るのかな?
webクエリを使えば…。



zakki

リンク

2016/2/19(Fri) 00:31:52|NO.74648

sample/hsp3dish/http_test2.hsp が参考にはなるかと思います
httpload の第二引数に文字列を渡すとPOSTになるので任意のデータを送信できます
分量少なければ送信したいデータをURLに含めて第一引数だけ指定してGETで送っても大丈夫です



GravityNit

リンク

2016/2/19(Fri) 18:08:20|NO.74652

サイズが大きいファイルをダウンロードする際には、そのアプリを使っているユーザーが
通信プランが必ずしも定額制とは限らないので、そのことも考慮しなければ
悪さをするアプリになってしまうと思います。



デベロパ

リンク

2016/2/19(Fri) 18:47:02|NO.74654

例えば
select = 1 とか select = 2 みたいな変数だけを受け取ったり渡したりすることは出来るんですかね?



zakki

リンク

2016/2/19(Fri) 21:03:13|NO.74658

変数の値を送れば送れるし、受け取った値を変数に入れれば入りますね



変人

リンク

2016/2/20(Sat) 08:52:39|NO.74661

httploadとかだと
艦これの演習レベルのリアルタイムではないオンラインならいけると思いますが
マインクラフトみたいなのはダメでしょうね



デベロパ

リンク

2016/2/20(Sat) 10:34:56|NO.74662

変数をメールみたいにやりとりができるなら、たとえば将棋でこちらが選択した駒の動きを変数で送って、相手の駒の動きを変数で受け取るというやり取りができるという事ですよね?
その変数の受信送信がリアルタイムじゃなく、「相手が行動を選択中」みたいな待ち時間程度で行えるならオンライン対戦ができそうですね。
httpload勉強してみます!



GravityNit

リンク

2016/2/20(Sat) 16:18:15|NO.74667

確かに、httploadは向かないかもしれないですね。
受信が終わるまで、アプリが固まるので、リアルタイムだと完全にフリーズしてしまいます。
dishでのネット通信でリクエストには対応していないのでしょうか?



zakki

リンク

2016/2/20(Sat) 22:42:14|NO.74676

> 受信が終わるまで、アプリが固まる
Androidだと通信終わるまでブロックするんですね。
Windows版やEmscripten版だとリクエスト開始してすぐ処理が帰るのでそっちに合わせたほうが使い勝手いい気がします。

HspActivity.httpRequestXXX()の中でThread作るようにすればいいのかな…
何かAndroid固有の事情あるんでしょうか



デベロパ

リンク

2016/3/9(Wed) 04:04:03|NO.74830

httploadのデータ送信について質問させてください。

例えば
url = "※なにかしらのURL"

httpload url,"こんにちわ"

としたら、指定したurlに"こんにちは"という文字列を送信したという事になるんでしょうか?
つまり指定したurlのソースに"こんにちは"という文字列が追加されるという事なんでしょうか?


そもそもhttploadの使い方を勘違いしてるかもしれないんですが、
httploadで指定されたURLのソースが「1」とだけ書かれていた場合

httpinfo buf,HTTPINFO_DATA

x = int(buf)

if x = 1 : mes "1"

これで一応 x = 1 という変数を受け取れた事になると思うんですが使い方間違っているでしょうか?



skyblue

リンク

2016/3/9(Wed) 10:29:48|NO.74831

>としたら、指定したurlに"こんにちは"という文字列を送信したという事になるんでしょうか?
>つまり指定したurlのソースに"こんにちは"という文字列が追加されるという事なんでしょうか?
ソースには追加されません。
上記に書かれているように
POSTとGETについて自分でHSPに限らず調べて見て下さい。
1行目はあっていると思います。
ただし、専用のプログラム(cgi,phpなどで作られたもの)でないとだめです。



ONION software Copyright 1997-2021(c) All rights reserved.