Multiuserの最近のブログ記事

OpenSMUS

| コメント(0) | トラックバック(0)

Nebulae MultiUser Serverの後継としてOpenSMUSがリリースされた。
オープンソース、MITライセンス。
もうDirector使う機会はない気もするけどね。

参考:Shockwaves: Tabuleiro Announces OPENSMUS!

3Dチャット

| コメント(0) | トラックバック(0)

http://www.oide.org/
また別のを見つけたよ。

グループ名が半角60文字を超えると、そのグループに対してsendNetMessageしても伝わらないっぽい

Lingoで書いたサーバサイドスクリプトをNebulae Server用にJAVAで書き直してるんだけど、けっこう面倒。
分からない箇所をTabuleiroのサポートにメールしたら、親切に教えてくれた。まだ購入してもいないのに。

サーバサイドでのDBApplication.getAttributeの取得方法は、下記のような感じ。
レスポンスはincomingMessageハンドラで受け取る。

MUSMessage mymsg = new MUSMessage();
mymsg.m_errCode = 0;
mymsg.m_timeStamp = serverObject().timeStamp();
mymsg.m_subject= new MUSMsgHeaderString("subject");
mymsg.m_senderID= new MUSMsgHeaderString(this.name());
mymsg.m_recptID = new MUSMsgHeaderStringList();
mymsg.m_recptID.addElement(new MUSMsgHeaderString("system.DBApplication.getAttribute"));
LList attributelist = new LList();
attributelist.addElement(new LSymbol("my_attribute"));
LPropList pl = new LPropList();
pl.addElement(new LSymbol("application"), new LString("my_movie"));
pl.addElement(new LSymbol("attribute"), attributelist);
mymsg.m_msgContent = pl;
postMessage(mymsg);

ポートチェック【外部からポート開放確認】

自宅サーバだと外部から接続できてるのか確認しづらいので
こういうサービスは助かる。

3Dチャット

| コメント(0) | トラックバック(0)

Shockwaveを使った3Dチャットを新しく見つけた。Havok使ってるっぽい。
http://3d-yococho.ddo.jp/
すごいねー、隠しアイテムとかあって面白い。

球根3Dチャットも負けてられないのでそろそろバージョンアップしたいな。

Shockwave Multiuser Serverは楽ちんだけど、WindowsとOS9でしか動かないのがちょっと...、ということでNebulae Multiuser Serverに手を出した。
まず普通に起動すると、日本語(マルチバイト文字)が扱えない。
解決方法は、「-Dfile.encoding=ISO-8859-1」を付けて起動すれば大丈夫。

Windowsなら

cd c:\Nebulae
java -Dfile.encoding=ISO-8859-1 -cp Nebulae.jar;C:\Nebulae net.tabuleiro.nebulae.Nebulae

Linuxなら
cd /usr/local/nebulae
java -Djava.compiler=NONE -Dfile.encoding=ISO-8859-1 -cp Nebulae.jar net.tabuleiro.nebulae.Nebulae &

Nebulaeの情報自体ほとんどないし、JavaやLinuxの知識不足で一苦労。

MUS server-side lingo

| コメント(0) | トラックバック(0)

サーバサイドでsystem.group.joinを使おうとしても正しく機能しないので
ユーザをグループに参加させる時は下記のやり方を使う。

--グループオブジェクトの参照
GroupRef = pMovie.serverGroup(pRoomName)
--グループ存在しないなら作成
if GroupRef =void then
GroupRef = pMovie.createServerGroup(pRoomName)
end if
--ユーザオブジェクトをグループに追加
GroupRef .addUser(pUser)


マニュアルに載ってないサーバサイドLingo

Lingoメモ

| コメント(0) | トラックバック(0)

setAttributeする時のattribute名はシンボルでないといけないが、
変数に入れてあるシンボルを使いたい場合はプロパティリストにaddPropしてから使う。
attributeName=#rooms
attributeList = [:]
attributeList.addProp(attributeName, "dummy_value")
gMultiuserInstance.sendNetMessage("system.DBApplication.setAttribute", "subject", [#application: "appli_name", #attribute: attributeList])

今になってShockwave Multiuser Serverですよ。

サーバーサイドのLingoスクリプトでMUSのデータベース情報(例えばDBApplication.getAttribute)を取得したい場合は下記のような感じ。
on incomingMessage (me, movie, group, user, fullMsg)
myResult=movie.SendMessage("system.DBApplication.getAttribute","subject",[#application:"chat_appli",#attribute:[#rooms]])
put myResult
end
要はクライアント側でやる時と同じ要領でSendMessageを使って取得する。
クライアントの場合と違ってmyResultにプロパティリストが即座に返ってくる。

ドキュメントが少な過ぎというか、基本的なことがマニュアルに載ってない。

1 2