OrangeNBT 修正等 06/01

OrangeNBT

schematic追加しました。
World.Loadが使えないバグを修正しました。
Json関連も修正しました。

一部ネームスペースが変更となっています。Worldに含まれてたもので共通化したいものをDataの方へ移動させました。

ダウンロード:
OrangeNBT20180601

git:
https://github.com/noto0648/OrangeNBT

Readmeかかねば。

XamarinでVisualStudioがエラー出た

標記通り。

Xamarinでアプリ作ってるんですが、ソリューションエクスプローラーのところから、新規追加でコンテンツページの追加を押すと、ちょっと固まってから、System.Exceptionが発生しましたって出た。なんだこれ。

xamlとxaml.csファイルどっちもできているようですが、xamlのリンクができてないので、InitializeComponentが赤線になってた。あるあるですね。

現状、projitemsを編集して xamlとリンクさせてるんですがとても面倒くさいですね。

プロジェクトのリビルドすればまあ治ると思うのですが……。

ところで、最近ついにSSDに変えたんですが、音がしなさ過ぎてちょっと不安になります。すごく早いですけど。僕はまだHDDでいいや。データ消えるのもちょっと怖い

OrangeNBT使い方1

Schematic/Structureの実装に悩んでます。どうも。

SNLでNBTTagなんたらはOrangeNBT.NBTにあります。

・初期化など

var tag = new TagCompound()
{
new TagInt("DataVersion", 1),
new TagCompound("Level")
{
new TagInt("xPos", _coord.X),
new TagInt("zPos", _coord.Z),
new TagLong("LastUpdate", DateTime.Now.Ticks),
new TagByte("V", 1),
new TagByte("TerrainPopulated", (byte)(_isTerrainPopulated? 1 : 0)),
new TagByte("LightPopulated", (byte)(_isLightPopulated? 1 : 0)),
new TagIntArray("HeightMap", _heights),
new TagByteArray("Biomes", _biomes)
}
};

TagCompoundのクラスにはAdd(val)関数は実装されていません。
using OrangeNBT.Helper;
ってやるといろいろ追加されます。拡張メソッドで定義されています


using OrangeNBT.Helper;
c._heights = level.GetIntArray("HeightMap");
c._isTerrainPopulated = level.GetBool("TerrainPopulated");
c._isLightPopulated = level.GetBool("LightPopulated");

ところで、アルファ版というかDev版は破壊的変更し放題ですね。最高。ネームスペースが突然変わったり引数が増えたり減ったりします。

LongArrayもあるので使ってね!(いつから追加されたのだろう)(使い用途不明)(コマンド用?)

https://github.com/noto0648/OrangeNBT

Githubに上がってます。気になったところは教えてください。
ちなみにいつになってもgit苦手です。つらい。
またひと段落したらPushします

バイナリは前記事よりDLしてください。

bedrock版では、どうも1.4になってしまったようですね。よさそう。建築したいです。

OrangeNBT

OrangeNBTはなぜ生み出されたのか。
OrangeNBTの発表自体今からだいたい2年前くらいに発表しました。
しかし、1年ぐらい放置してました。

SNLの代わりになるものを目指してるわけではありません。
汎用のNBTライブラリを目指して作られています。

OrangeNBTの改善点!
SNLはそもそもぼくのNBTエディタの内部コードをもとに作られたライブラリです。したがって数年前の産物でありコードが汚い。読めない。それをつぎはぎして改善してきたためとてつもなくわけのわからないコードを生み出してしまった。
おまけに僕はソースコードにコメントを書かない主義なので読むのに時間がかかる。(コメントなくても読みやすいコードを目指していた)
しかし、保守するのには限界がきた。僕にもわけのわからないバグもたくさん生み出されてきた。
そこで読みやすい保守しやすいコードを生み出すためにOrangeNBTという1から書き直しを行うことにした。

OrangeNBTのよいところ

  • .net Standard 2.0で書かれてる
  • 読みやすい
  • オープンソース(予定)
  • Bedrock Editionのデータ対応予定
  • ネームスペースわけがきれい

まだダメなところ

  • デバッグが完全ではないため動かないコード多数
  • まだ未実装のコード多数
  • まだSNLより機能が少ない
  • ワールドライティング未対応
  • Schematic/.nbtファイル未対応
  • TagCompoundのヘルパー機能がほぼない

課題

  • 現状dllが分かれているため統合するか検討中
  • ブロックデータアイテムデータ等の導入。ゲームのアップデートに追いつくのが大変

    OrangeNBTは一応最低限のNBTライブラリを目標にしているためSNLで実装されていた多くの機能は削る可能性があります。

    一人ではデバッグするのめんどい大変なため一応バイナリを公開します。
    ゆっくりまったりと開発を行います。

    OrangeNBT

    バイナリはデバッグコンパイルです。

Minecraftの地形生成を考える【2】

Minecraftの地形生成を考える【2】

前回、一応基本となる地形生成のパーリンノイズについて一応書きましたので、今回はBeta1.8以降のバイオームわけについて。

バイオーム拡大法
バイオームを拡大していく方法です。
ゆえにMinecraftの地形生成は時間がかかります。

簡単な仕組みは
16×16(チャンク)を生成するために、もっと小さいブロックの四角形(例:4×4)を拡大・補完することで無限の生成を可能にしています。
無限といってもint値やlong値には最大が有るわけですから、その最大のなかのちょっとを何回も拡大することで擬似的に無限世界を生成することができるのです。
一番最初は固定シード値によってランダムに点をばらまくだけです。

拡大・補完の仕方
2×2ならば3×3に拡大します。(n x n => (2n – 1) x (2n – 1))

A B
C D

一番最初の拡大のときは下記のように拡大して補完します

A A or B B
A or C A, B, C or D B or D
C C or D D

この処理の際、シード値を常に座標から計算するなどして一定にしておかないと次のチャンクとの補完結果がずれる場合があります。また隣のチャンクとの差異吸収のために16×16は補完後18×18になるようにしてそこから16×16を取り出すことで次の拡大に影響が出ないようにします。

それ以降の拡大時には大陸や海をちゃんとつなげていくために上下または左右の最頻値をとって補完していきます。
ただし全て異なる場合などは上記同様ランダムに決定していきます
例:

A B
A A

これを、

A A B
A A B
A A A

これをもう一回拡大すると

A A A B B
A A A A B
A A A B B
A A A A A
A A A A A

この拡大処理を十分に繰り返し、あるていどの大きさになったところで終了します。
このようにバイオームのあの複雑なバイオームの境界線を生み出すことができるのです。

Minecraftの地形生成を考える【1】

Minecraftの地形生成を考える【1】
最初はずっと2D世界の話をしていきます。
Minecraftでいうと上からみた世界みたいな感じです。

Minecraftはどこまで行ってもワールドが続きます。
つまり……無限の生成を考えるということである。

有限の生成は実は結構簡単であったりする。
例えば64×64みたいな奴
実装方法としては64×64の世界に、海と陸のブロックをばら撒きランダムで結合したりばらしていったりする。
まあここでは省略しますが。
ランダムが重要になってきます。

しかし無限となると初回で全部ワールドを生成してしまうわけには行きません。
何らかの手段でなめらかに地形を繋げる必要があります。

コレを見てください。Googleでy=2xのグラフです。

この画像の範囲外を想像することはできますか?きっと容易だと思います。
なぜなら数式が与えられている=関数が与えられているからです。
ずっと同じ角度で直線が続いていきます。

もう一つ、プログラム上での乱数は擬似乱数。つまり関数です。
つまり、この疑似乱数を使っている時点で次にくる値が明らかだということ。

javaデフォルトのランダムで同じシード値を与えて初期化すれば、実行するたびに同じ値が出力されるはずです。

Minecraft Beta1.7、使われてるのがパーリンノイズ。同じシード値を与えれば常に同じ値が出ます。

パーリンノイズの周期を調整して2~4つ重ねることでそれっぽい地形を無限で生成することができます。

バイオームを分けるのは難しいです。
簡単にできる方法としてはボロノイノイズを使うのが良いですが、直線的になってしまいます。

しかし、Beta1.8以降はかなり複雑です。海沿いにビーチバイオームなどがあり、生成の基準がバイオームになっています。
これは今度解説することにします。

【2018】センター試験地理解説してみた

まあ自分、地理が結構好きなもんでとりあえず自分なりに解説しようかと思います。
まあ自己満足ということで。とりあえずわかりやすく行きます。

問題は大手予備校や新聞、公式サイト(まだでてない)などを見てください。

第一問

【問1】
1……正しい。フランスのパリあたり。ケスタで有名かと思います。まあ受験生ならわかるでしょう。
2……誤り。南アフリカには古期造山帯のドラケンスバーグ山脈がある。しかし古期造山帯なのでプレートの境界は近くない。よってプレートの境界でよく見られる火山はない。
3……正しい。インドのデカン高原、レグール土や綿花で有名。地図帳をよく見ておきましょう。
4……正しい。問題の地図から読み取れるように海岸付近がギザギザになっている。極地に近いので氷河による侵食地形のフィヨルドが見られる。

【問2】
湖面標高を考えると海洋に面している南アメリカのパトス海が一番海面(=0m)に近いと思われるので、イ。
氷食が起こりうるのは緯度がより高い地域や標高の高い地域。レマン湖は地図から、新期造山帯のアルプス山脈にあると思われるので、ア。
死海はウ。死海が塩湖ということを知っていれば乾燥地帯にあり流出河川がないというふうに考えられるので湖面標高が一番低いものを選べば良い。よって答えは6。

【問3】
地図より東欧から中央アジアの乾燥地帯まで続くエリアは穀倉地帯として有名であり、チェルノーゼムが分布する。選択肢を見ると、
1……テラローシャ。南米などに分布。
2……テラロッサ。地中海沿岸に分布(カルスト地形との関連)
3……ポドゾル。シベリア地域などに分布。低温によってなかなか分解されないため
4……テラローシャ。穀倉地帯=肥沃な土=腐食しているからわかる。また黒色で有名なものはコレ。

【問4】
1……誤り。南米では内部がAw地帯。アンデスに近づくとAf地帯になる。暖流による雲がアマゾン低地を素通りしてアンデスにあたって降水する。よって違う。
2……正しい。標高が高いため寒冷。
3……正しい。標高の低い地域で乾燥地帯が広がっているので明らか。
4……正しい。南半球の大陸西部では寒流によって海岸砂漠がおおくある。ペルー海流。

【問5】
読めばわかる。植物などは土の水を利用して育つので、より乾燥した土へと変わっていくため、4は明らかに間違い。

【問6】
低緯度地帯で吹く貿易風は偏西風と逆の東から西へと吹く。弱まるってことは雲を動かす力が弱まる。よってカリブ海なので発生した雲がうまく流れず、中部アメリカ地域で洪水が起こる。よって、4。


第二問

【問1】
特許は先進国で多い。よって日本やアメリカ、ヨーロッパなどが含まれるイ。
ボーキサイトのキーは、ジャマイカ。オーストラリアやインドネシアなど。よって、ア。
リチウムはレアメタル。残ったウ。よって答えは、3。

【問2】
文章を理解すればわかる。「人件費が安価であり」という記述より、労働力指向形で、半導体は付加価値が高いため、割合にして輸送費が小さい。つまり、4。

【問3】
1……サードイタリー。ヴェネツィアのガラス細工などの職人芸が多い。
2……シリコンバレー。インターネット産業とあるので、グーグルやアップルなど。
3……ルール。ライン川の輸送力とロレーヌ地方などの鉄などとともに発展。古くからの工業地帯。
4……シンガポール。輸出加工区があり、金融センターとなっている。

【問4】
自動車産業についての問題。
日本は需要減と人口減により減少傾向。
一方アジアでは人口や発展を背景に増加。インドやタイなど。
あとは人口規模に沿って日本>アジア>アメリカ>ヨーロッパか。よって、2。

【問5】
1……誤り。遺伝子組換えには技術力が必要なため企業的農業で行われる。
2~4……正しい。

【問6】
広大な土地の有る北海道や、稲作の盛んな東北から北陸にかけて割合が高いのが農業。
東京などのデータが早く手に入れることのできる大都市圏で情報産業が発達する。
全国的に有るのが道路。よって、5。


第三問

【問1】
ヨーロッパの宗教分布を見直してほしい。キリスト教は北部がプロテスタント、南部がカトリック。そして東部が東方正教になる。
ドイツでは南部がカトリック、北部がプロテスタントとなる。他はイスラム教の割合が高い1がフランス、正教の割合が高い3がギリシャ、残った4がポーランド。よって、2。

【問2】
ア……、アンデス地方の民族衣装など。
イ……、ベトナムのアオザイなど。中華服などは知ってるもと思うので地理的に近いので似ている。
ウ……、イスラム教の教典にかかれているムスリムの服など。日差しが強いから乾燥・砂漠地帯のコレ。
よって答えは、3。

【問3】
マレーシアの政策。ブミプトラ政策が中国人の地位がマレーシアよりも良いことを是正するために行われた政策。よって、2。ルックイースト政策は近代化を目的としている。イーストは東、日本のこと。日本のように近代化するということ。

【問4】
都市人口率が高いのは、ヨーロッパや新大陸が該当する。よって2と4はカナダとイタリアが該当する。ローマは有名なプライメートシティ。人口の多いバングラデシュやインドは比較して都市人口率が低くなる。が、インドは圧倒的な人口なので、巨大都市があっても人口割合が数%にしかならない。よってインドが1、バングラデシュが3。

【問5】
1……1970年代、住宅地が郊外に一気に増えたので少し郊外にあるA。
2……開発が江戸時代なので、城下町にあたる。城に最も近いB。
3……近代以降に発達したとあるので、鉄道駅が明治以降にできて駅前が発展したC。
4……国道沿いに大きな店舗ができるのでD。
ちなみにこれは彦根。

【問6】
サ……30代から40代、つまり一世代前の親の世代が居住している。つまり高度経済成長に郊外に居住地を買った世代。つまり、Y。
シ……少子高齢化が顕著である。ゆえに、都市圏の外側の農村などの、Z。
ス……サと比較して多い世代が一回り若い20代から30代。都市中心の地価がバブルが弾けて一気に下落したことが原因だと思われる。都心回帰現象。ゆえに、X。
よって答えは、4。


第四問

【問1】
ア……アラビア砂漠ど真ん中。西が高く東にむかって下がっていく地形。
イ……ユーフラテス川沿いの低地に属する
ウ……イラン高原
エ……カラコルム山地、カイバー峠など。
新期造山帯であるカラコルム山地が一番高い。よって、4(エ)。

【問2】
1、2、4……正しい。
3……コーヒーはブラジルやベトナムなどで生産される。左の国からわかるように多くは熱帯~温帯気候でおおくある。ゆえにイランの乾燥地帯で、溜池ではコーヒーの生育は難しいと考えられる。よって、3。

【問3】
1はイラン。シーア派の国。2はアラブ首長国連邦。東南アジアなどから出稼ぎ労働者が多く、首位宗教以外に多様性が有る。3はレバノン。聞いたこと無い国かも知れないがわからなくても特に問題はないと思われる。4はイスラエル。ユダヤ人の国として有名。よって答えは、2。

【問4】
まずペルシャ湾沿いに高位が多いのは明らかに石油である。なので、キは輸出額に占める石油の割合。続いてGNIを考えると発展しているアラブ首長国連邦やサウジアラビアが高位にあると予測できるのでカがGNI。残ったキは乾燥地帯の農業国が示されている。サウジアラビアのセンターピボットを利用した農業は有名か。よって答えは、3。

【問5】
危険な地域であるイラクがまず4とわかる。訪問客が二番目に少ないのがカタール。カタールは国際空港があり、カタール航空なんかを知ってるとわかる。よって直通便が日本からはあるので3。1と2は、トルコと日本が歴史的に中が結構良いということと、ヨーロッパ何かが近くて国際都市のイスタンブールが有ることを考えると1、サウジアラビアはメッカがあって観光客が多いと思われるが日本からの直通便がないので2。よって答えは1。

【問6】
サ……アフガニスタン。911の復讐としてアフガニスタンと戦争が行われた。よってZ。
シ……キプロス。紛争として教科書などにはよく載っていると思う。よってX。
ス……クウェート。湾岸戦争でイラクが宣戦布告。よってZ。
よって答えは、4。


第五問

【問1】
暖流の北大西洋海流がノルウェー沿いを流れるので、緯度が高くてもノルウェーは温暖、年較差が小さいよって、ウ。
スカンディナヴィア山脈はノルウェーとスウェーデンの国境になっている。よって低地の割合がノルウェーの次に低いイがスウェーデン。のこったのがフィンランド、ア。よって答えは、4。

【問2】
北欧三国によってある程度の割合を占めているのが水力発電である。よって度の国にもある程度有るキが水力。ノルウェーは北海油田があるので、2%ほどだが水力の次に多いクが火力発電であると思われる。スウェーデンやフィンランドなんかでは原子力発電の割合が高いことを知っていればカが原子力発電だとすぐわかる。よって、5。

【問3】
これは意外にも表1だけでもわかる。サの国にはロシアが含まれるので最も近いフィンランド。シとスが一見ほぼ変わらないがフィンランドはシの国が含まれるのでバルト海を挟んで近いスウェーデンだと思われる。またスのノルウェーは漁業国であり北海油田があるので図4からも明らかにスである。よって答えは、6。

【問4】
巷で話題になった問題。バイキングは高校の範囲だとノルウェーであるよってムーミンであるタ、がフィンランド。フィンランドはフィン人という他の北欧とはちがう人が住んでいるので、言葉があまり似ていないB。絵にいるトナカイなんかは北欧にはどこにでも居るので惑わされないように。答えは、2。

【問5】
北欧では政府による医療制度の整備などがかなり進められている。高負担高福祉である。よって2に該当する。


第六問

【問1】
高山は内陸部の盆地に位置するので年較差が一番大きいウ。日本の気候では季節風によって冬は日本海側で豪雪になり太平洋側でよく晴れる。よって富山がイ。浜松がア。よって答えは、6。

【問2】
3が明らかに間違い。市の中心部には外から人が集まってくる上に郊外に比べて土地が狭いので単身世帯が多い。図から平均世帯人数員をみれば明らかに間違いだとわかる。

【問3】
大都市から離れているので自給自足が基本。地産地消。よってまず域内であるイ。そして、標高1000mを越える峠を超えて名古屋か松本に持っていくんだが、名古屋まではあるていど川沿いにつながっているので1000mの峠越えはおかしい。よって、4。筑摩県なんか知ってるとすぐわかったかもしれない。昔は松本との交流が盛んだった。

【問4】
1~3……正しい。
4……工場の記号はあるが1つしか見られないので誤り。

【問5】
なかなか読み取りづらいが時間をかければ問題ないと思われる。注釈もしっかり読むこと。
1、3、4……正しい。
2……岐阜県全体でみると、629万人/3731万人=0.16、図4より高山市は、130万人/450万人=0.28よって割合が高山市のほうが高い。

【問6】
植生の問題。生物を受けている人なら簡単だと思われる。
ケッペンの気候区分は植生を元にしたものであるから、赤道からA→B→C→D→Eといくが、高山に於いても高くなれば気温が低下していくためA→B→C→D→Eのような風に植生が変化するはずである。
A……氷は無いがEのツンドラとよく似ている
B……Cが針葉樹系なのに対してBは広葉樹系である。C気候とよく似ている。
C……針葉樹系である。D気候とよく似ている。
図5より山岳地帯がB、亜高山帯がC、高山帯がA。よって答えは、2。

以上。今年は平均点高そうですね。
誤字や間違いを見つけたらこっそり教えてください。

 

あけましておめでとうございます

あけましておめでとうございます。
今年もよろしくお願いします。

今年はちゃんと活動したいです。時間も多分もうちょっとは確保できるようになるかと思います。

色々作りたいものもありますし。

それでは。