2017年9月23日土曜日

PocketMine(pmmp) Minecraft PE1.2対応版phar配布

こんにちは。はにおかさいです。
アプデ対応がつらかったのですが、公式を改造して使用可能な状態にしました。

注意:PHP7.2ですので、Binの更新が必要です。
ソース https://github.com/haniokasai/PocketMine-MP/
phar   http://jenkins.haniokasai.com/job/PocketMine-72/

バイナリ: Linux x64 https://jenkins.pmmp.io/job/PHP-7.2-Linux-x86_64/
Windows https://ci.appveyor.com/api/buildjobs/30k579nj3xn4kc5j/artifacts/php-7.2.0RC2-vc15-x64.zip

本家との違い:
onCommandが旧API仕様なので、プラグインの更新の手間がない。

composerをごまかした

pluginのapiバージョンの無視

2017年8月21日月曜日

無料のMinecraftPEマルチプレイサーバーのMiRmMCPE運営して早2ヵ月...

どうも。はにおかさいです。

MiRmを運営して早く、2ヵ月経ちました。6月14日から運用しています。

mirm.infoとは、MinecraftPE/PCの完全無料のレンタルサーバーです。
プラグインはすでにいれてあるものを使えます。

そもそも、MiRmの名前の由来を知っていますか?私はあまり知りませんw
たぶん、MiはMinecraft,Rmはもともとの仮プロジェクト名”Racoom”が由来します。

運用していて、いくつかわかったことがあります。


・Javaは割と長く動かしてもメモリリークしない
-かなり安定して動いてます。

・やっぱ利用者の質は、、、
-小中学生の利用者が多いので、どうしても民度が下がるようです

・内容がマンネリしやすい
-プラグインがダブるので、どうしても

・バグ報告がうまくいかない
-利用者的にあまり報告がうまくなされません。チャット検索等で運用状況をすくう必要があります。

・使いこなせないユーザーも一定数いる
-使い方を理解したユーザーが教えあっているようで、一応はなんとかなっています。


今は夏休み需要で利用客が多いのですが、今後も維持するにはさらなる改善が必要とは感じます。ただ、有料の方との兼ね合いもあるのでなかなか大変そうです。

☆課金制度は導入しないと思います




2017年8月20日日曜日

[PocketMine-MP]チャット制限プラグイン公開!

こんにちは、はにおかさいです。
今回は、MiRmで使っているチャット制限プラグインを公開します。

https://github.com/haniokasai/ChatPermitter/

このプラグインは、MiRmで嫌われているプラグインナンバー1でしょう。



こんな感じでチャットを制限できます。

こうするメリットは、チャット荒らしや、不毛な会話を減らすことができます。
コードも公開してますから、自由に改造しちゃってください。

@config_enable コンフィグを読むか
@chaturl チャットコードを見れるurl
@deleteurl チャットコード消化用url
@deleteday チャット権限の削除日数

2017年7月17日月曜日

cloudflareのUnder DDoS Modeのサイトからファイルを拾ってくる in Python

こんにちは、haniokasaiです。

https://forum.pmmp.jp が廃止になるため、慌ててデータを落としたくなりました。

https://github.com/haniokasai/XenDownloder

こちら。

import cfscrape


scraper = cfscrape.create_scraper()


print scraper.get("https://forum.pmmp.jp/").content
これで、ふつーのテキスト的な感じでダウンロードできます。

res = scraper.get("https://forum.pmmp.jp/attachments/" + str(i) + "/", stream=True)
fname = re.findall("filename=(.+)", res.headers['content-disposition']) #ファイル名を取得します。
parsedfname = fname[0].replace("\"", "")
#phar名編集
\
if res.status_code == 200:
with open(parsedfname, 'wb') as file:
for chunk in res.iter_content(chunk_size=1024):
file.write(chunk)

こちらのコードで、ファイルを保存できます。

これで、cloudflareがあってもdlできます。

参考;https://torina.top/detail/161/

2017年6月12日月曜日

Javaがメモリ足りてるのにメモリ不足で動かないとき。Ubuntu

Javaで、立ち上げるとKilledやら強制終了やら、
Native memory allocation (mmap) failed to map 262144 bytes for committing reserved memory.
やらOut of memoryとか言われることがあります。
でもメモリは10GBほど余っています。

4時間ほど格闘した末、Jenkinsだけがはっきり答えを示してくれたので、まとめました。


環境 Ubuntu 16.04 64Bit ,"Oracle" Java 8

最初に以下のことを試してみました。

Javaが動いてると、Text file Busyって言われますから、
killall Java
killall Java
killall Java
....
でJavaを殺してあげてください。

初回の時のみ最初に(このコマンドが扱える形式にする?そうです)
paxctl -c /usr/lib/jvm/java-8-oracle/jre/bin/java

1度でいいかは不明ですが、MPROTECTを解除します。
paxctl -m /usr/lib/jvm/java-8-oracle/jre/bin/java

これで、立ち上げられました。と思ったらこれでもダメ。

仕方ないので、OOM Killerに黙ってもらうことにしました。

テキストエディタで  /etc/sysctl.confに追記してください。

vm.overcommit_memory = 1

保存して、コンソールで

sysctl -p

と打つとapplyされます。これで解決したのですが、根本的な対策ではないと思うので、原因が見つかったら直さないといけませんね。この修正で今のところシステムは快調です。


参考

https://stackoverflow.com/questions/27262629/jvm-cant-map-reserved-memory-when-running-in-docker-container

http://passingloop.tumblr.com/post/11957331420/overcommit-and-oom-killer

2017年5月28日日曜日

nginxでライブストリーミング!nginx-rtmp-module

生配信サーバーを構築してみたかったのですが、nginxのエクステンションでできることがわかって構築しました。
サーバーはこれで構築できました。
macbook air obs-(wifi 100mbps)>ubuntuサーバー-(wifi)>macbook air vlc
での遅延が3秒のようですから、私には実用的な遅延レベルです。

しかし、クライアントがHLSとなると36秒遅延しています。

なぜそうなるのかはどうやら、HLSは遅延をなくすには向いていないようです。
HLSでも遅延を減らせなくはなさそうなので、最初はHLSで頑張ってみます。
今回の受信者はAndroidを想定しています。視聴者は少数であるという想定です。

まずは、nginxのrtmpの設定で、

# HLS fragment の長さ(1個のtsファイルの動画の長さ)
hls_fragment 1s;

としてみました。

すると、遅延は25秒になりました。

続いて

#m3u8ファイルに何秒分のtsファイルを掲載するか
hls_playlist_length 4s;
#なぜか必要です 
wait_video off;



遅延が22秒!
ただし、安定性が落ちるようです。

この秒数を2とするとそもそも開けなくなりました。

次に、

hls_max_fragment 8s;

としてみます。

すると、、、
遅延を17秒までにできました!うぅ!

4秒にしてみます。

12秒までに削減できました。

2秒にすると、14秒になるので減らし過ぎもいけません。

ところが
githubのissueを見ようとした時に、誤って、リポジトリ検索したら、html5でrtmpを見るというものを見つけてしまいました。


なので、HLSでの試みはここで放棄します()


留意点
これらの低遅延の設定を施すと、cpuに負荷がかかります。core i7の 37なんとかsだかtでやったのですが、1コアだけ与えた仮想マシンで、cpu100パーセントにしばしばなりました。
vpsで構築する人には辛いかもしれません。


余談
OBSの配信停止をしてから、nginxを止めないと、OBSがクラッシュします

参考文献

2017年5月24日水曜日

Minecraft PEサーバーソフトウェア集(PocketMineと多言語サーバー)2017年5月版

こんにちは、haniokasaiです。
PocketMine-MP公式がshogicp氏のMojang入社に伴い死んでしまったため、どのサーバーソフトを使えばいいかわかんないという人は非常に多いです。
ですから、いつものように私がソフトをまとめていきたいと思います。

☆言語別にまとめます。

PHP

PocketMine派生

PocketMine-MP
開発:pmmpチーム(リーダーはhttps://github.com/dktapps
ライセンス:LGPLv3
開発状況:活発

公式を半ば乗っ取った形でスタート。必要最低限の機能を持っていて、あまり機能追加をしない。dtkappsは性格が悪いため、Genisysを終わらせた人の1人。バグは少ない。

開発:BlueLightJapan(リーダーkametan0730MC)
ライセンス:GPLv3
開発状況:活発

かめたんが率いるBlueLight.https://github.com/ken77731により、設立が提案。
政治的に安定しており、新機能追加・バージョン対応がいち早い。ほかのsrcに比べると、開発環境が自由で、おのおのが独立して新機能更新している。そのためか、バグが多い。

Steadfast2
開発:Hydreon Corporation
ライセンス:LGPL2
開発状況:それなりに活発

Lifeboat 鯖のSRC。新バージョン対応が早い。ただそこまで実用的なSRCではない。一応企業開発のため滞りは少ない。

ExtraCorePE
開発:ExtraCorePE
ライセンス:GNU Affero General Public License v3.0
開発状況:やばそう(悪い意味で)

日本人のNought57(零月)が所属。チーム内でごたごたがあって、更新はあまりよくない。一部人に人気なそう。

開発:TesseractTeam
ライセンス:GPL3
開発状況:細々と更新

Genisysベース。機能の多さと、動作の安定が両立できている。それなりに人気のSRC。この怪しげなデベロッパーhttps://github.com/AppleDevelopsはPMMP界の破壊に奮闘していた時期も。
チーム内では争いが絶えないよう。

開発:EventaxhlTeam
ライセンス:
開発状況:たまに

ロシア製SRC。Tesseractベース。更新頻度が低いが細々と続けられてはいる。ロシア語メインなので日本人にはわけわからない。コマンドでコードが実行できるらしいがevalなので危険そう。


Nukkit
開発:Nukkit
ライセンス:GPLv3
開発頻度:活発

みんな大好きNukkit。共産圏の開発者が多い。プラグインも非PMMPにしては一番多いし、私haniokasaiもそれなりに作りました。プラグイン開発も容易です。
機能追加は消極的、バグは多くない。
パフォーマンス的にJavaを生かし切れていないと指摘される。

BukkitPE
開発:BukkitPE
ライセンス:GPLv3
開発頻度:一定程度安定

あまり有名でない。ドメインやVPSが死んでるものの開発は続いているよう。レッドストーンが使えます。

死んでる
voxelwind

C#
MiNET
開発:NiclasOlofsson
ライセンス:Mozilla Public License 2.0
開発頻度:なぜか活発

ある意味、一番息の長いサーバーソフト。機能はほぼなく、すべてプラグインで補う必要がある。プラグインは作りやすいが、機能がなさすぎる。コードは一番洗練されていると感じる。噂によると、コードをmojangからもらっているそう。

D言語
sel-server
開発:Kripth
ライセンス:LGPLv3
開発頻度:活発

次世代のサーバーソフト。更新は異様に活発だが、企業が関与しているのだろうか?
ハブとノードで分散できるのが最大の特徴。
残念ながらD言語がわからないので詳細がわからずテストもできず。

停止
Swift
SwiftMine
開発:
ライセンス:Apacheライセンス
開発状況:停滞
C++
BenchMine


まとめ
サーバーソフトは生まれては消えを繰り替えしているのですが、なんとか消え失せたりはしていません。PCに比べて活発さはないのですが、公式のサーバーソフトがない故、特色のあるMCPEサーバーは多くあります。死んでいて紹介していないものもありますけど、多くを網羅できていると思うので、是非参考にしてみてください。

PocketMine(pmmp) Minecraft PE1.2対応版phar配布

こんにちは。はにおかさいです。 アプデ対応がつらかったのですが、公式を改造して使用可能な状態にしました。 注意:PHP7.2ですので、Binの更新が必要です。 ソース  https://github.com/haniokasai/PocketMine-MP/ phar ...