2017年8月24日木曜日

蒼焔の艦隊の先行登録をした話とか

さきほどブログの新しい記事を書いてきました。
なんかもっとたくさん記事書いてるつもりでしたけど、意外とそうでもないんですね。
まあ、没になってる記事もあるのでそう思うのかもしれません。
あと、英語を翻訳するのって結構神経を疲れるんですよね。素人だからだと思いますが。

さて、タイトルの話です。こないだYoutubeを見ていたら、偶然蒼焔の艦隊のCMをみて、面白そうだったので先行登録をしてみました。(ホームページはこちら。TwitterIDorメールアドレスで登録できるので皆さんいかがですか?)
あのCMは、沢城さんがナレーターだそうですね。

ゲームは今夏リリース予定とどこかで見た気がするのですが、いったいいつリリースされるんでしょうかね...
当初は8月中にはリリースされるとみていたんですけど、この感じだと8月中はおそらくないんでしょうね...残念です...
気長に待ちたいと思います。

それでは、また別の記事で。Mokerでした。

【OpenComputers】Component(構成パーツ)のAPIを利用する方法

※これは、公式Wikiのページ(http://ocdoc.cil.li/component:component_access)を翻訳し、一部補足を加えたたものです。(2017/08/24)
Component APIの一覧は、http://ocdoc.cil.li/api:componentを参照してください。
以下、※はおもに訳注を表します。

<本文>
このページでは、Component(構成パーツ)のAPIをLua内で利用する方法を説明しています。おさらい:Componentとは、接続されたコンピューターで実行されているLuaプログラムにたいして、何らかのAPIを提供する、ブロックやアイテムのことを指します。

(※Computer APIやRobot APIなどはここでいう構成パーツには含まれないと思われます。これらを利用するには、require("xxx")を用いてください。)

アドレス

Componentには、それぞれアドレスが設定されています。このアドレスはUUID、すなわちほかの機器とかぶることのない、オンリーワンなものです。多くの場合、アドレスは短縮表記することが可能です。(※つまり、同一コンピューターに接続されたものの中でかぶらなければ、先頭の数文字のみで元のアドレスと同等の意味を持ちます。イメージはかるたの決まり字のようなものです。)たとえば、短縮表記されたアドレスから、元のアドレスを取得するには、component.get()を用います。特定のブロックのアドレスを調べるには、Ctrlキーを押しながら、Analyzerをもって右クリックしてください。

コンピューターに接続されたComponentの一覧を取得するには、次の通り実行してください。http://ocdoc.cil.li/_export/code/component:component_access?codeblock=0

アイテムは、通常、コンピューターから取り外されたあとでもアドレスを保持します。よって、Hard Driveを一度取り外し再び挿入してもアドレスは変化しません。ただし、これは、ブロックには適用されません。ブロックは破壊し、再度設置すると、毎回新たなアドレスへと変化します。

プライマリーコンポーネント

1種類につき1つのComponentが、プライマリーコンポーネントとして登録されます。もし同種類のコンポーネントが複数ある場合は、プライマリーコンポーネントはランダムに決まります。プライマリーコンポーネントにアクセスするには、component.xxx(xxxにはComponentの種類をいれてください)を用います。
たとえば:http://ocdoc.cil.li/_export/code/component:component_access?codeblock=1

なお、かわりに、component.getPrimary("xxx")を用いることもできます。(※component.xxxはcomponent.getPrimary("xxx")のシンタックスシュガーです。)
もし、プライマリーコンポーネントが存在しない場合(指定された種類のComponentが一つも接続されていない場合)、これはエラーを返すことに注意してください。先に、component.isAvailable("xxx")を用いて、確認することをお勧めします。

プロキシ

さて、Componentのアドレスの取得方法はわかりましたから、次は、Componentの利用方法について学びましょう。これには、2通りの方法があります。第一に、component.invoke(address, method, ...)を呼び出す方法です。たとえば、http://ocdoc.cil.li/_export/code/component:component_access?codeblock=2

しかし、推奨されている方法は、もう一つの方法、プロキシを取得する方法です。プロキシは、簡単に言えば、API callbackごとに一つの関数を提供するテーブルです。(※この文は原文が理解できませんでした。おそらく、プロキシは関数のテーブルである、という意味だと推測します。)加えて、それぞれのプロキシは2つの要素変数をもちます。addressとtypeです。プロキシは次のように、取得することができます。http://ocdoc.cil.li/_export/code/component:component_access?codeblock=3

component.getPrimaryやcomponent.xxxは実際にはこのプロキシを取得する関数です。


(※以下は、個人的には知らなくてもあまり困らない情報だと思います)

Direct Calls

一部のcomponentのcallbackはdirect callsとして実行されます。Direct Callsはコンピューターのworkerスレッド内で実行されるため、素早く応答します。通常の呼出しでは、競合やその他のスレッドの問題が起こるのを避けるため、メインのサーバースレッドにおいて実行されます。この場合、1tick(50ms)を必要とします。ただしこれはComponent APIのみに適用されることに注意してください。

Signals

componentを利用する際に重要なものに、Signals(原文)があります。これは、componentが外部環境の変化やイベントをコンピューターに知らせるために送るものです。たとえば、ユーザーによる入力はsignalsを利用してcomputerに伝えられます。コンピューターは、自身のsignalsを送ることもできます。これは、コードの再利用やコード内の別の部分に対して非同期的に情報を送るのに役に立つことがあります。

2017年8月16日水曜日

【OpenComputers】ケーブルの染色について

<環境>
Minecraft : 1.10.2
Forge : 12.18.3.2185
OpenComputers : 1.6.2.7

まずケーブルのレシピは次の通り


1.6からケーブルの染色が可能になった。
染色すると別の色のケーブルとは接続しなくなる(ただし、無色のケーブルとは接続する)


染色するには、次の2通りの方法がある。

  1. ケーブルと染料をクラフトする
  2. 染料を手にもってケーブルを右クリック

また、脱色するには次の2通りの方法がある。

  1. 水バケツとクラフトする(水は消費されるが、バケツは消費されない)
  2. 薄灰色の染料で染色する(なぜか、アイテム欄ではdyed=染色済みと表記されるが、挙動は無色のものと同じだと思われる)

2017年8月9日水曜日

【OpenComputers】1.6リリースノート

<注意>
この記事は、公式のリリースノートの一部を勝手に翻訳したものです。
情報はあくまで自己責任で利用してください。
間違い等あれば指摘お願いします。未翻訳部分の協力大歓迎です。コメントください。
基本的にはバグフィックスなどは訳しません。

原文はこちら
より分かりやすいまとめを後日作る予定です。

<本文>

  • ラックに格納可能なフロッピーディスクドライブを追加
  • inventory controllerを使ってインベントリが操作できるように
  • RotaryCraft powerに対応(AE2と同じ変換効率)
  • GPUがviewport(表示範囲?)を定義できるようになった。これによって、電源がオフになったスクリーンからデータをコピーできるようになった(?)
  • ケーブルが自身の色を記憶(?)するようになった。染料とクラフトすることで染色可能
  • 1.8.9においてIC2へ再対応
  • レンチとクラフトすることで、loot diskが循環するようになった(プログラムが切り替わるようになった?) (レンチは消費されない).
  • Device info APIを追加した。computer.getDeviceInfo()を用いて属性情報を知ることができる。
  • computer.getProgramLocations() APIを用いることで、存在しないプログラムを実行しようとしたときに、役立つ情報を得ることができる(こともある)。
  • Trading upgradeを用いて、村人と貿易できるようにした。
  • カスタムHTTPリクエストヘッダを定義できるようになった.
  • debug.playSoundAt (gamax92).
  • クラフトをリクエストするときにAE2 CPUを特定するためのパラメーターを追加
  • ThaumicEnergisticsに対応
  • Hover bootsを染色することでライトの色を変更できるように
  • サーバーのネットワークアクティビティインジケーターを追加
  • ブラジル系ポルトガル語の翻訳に対応
  • ラックの機能を変更した。サーバー以外のものも格納できるようになった。またより柔軟に接続できるようになった(?)
  • ラックに搭載可能な新型のRemote Terminal Serverが導入され、Remote Terminalはそちらに紐づけられるようになった。
  • フロッピーが挿入されているか確認したり、フロッピーを排出(取出)したりするComponentをDisk Driveに追加した。
  • 今までGeolyzerのスキャン範囲は円のみだったが、任意の立方体範囲も利用可能になった。ただし、合計の体積は円の体積を超えてはならない。
  • いくつかのレシピを変更した。高ティアにおいてダイアモンドの消費が急激に増えることを防ぐため、diamond shardsやchipsを導入した。
  • より読みやすいunsciiというフォントをスクリーンに導入した。もし気に入らない場合は、リソースパックを用いて古いフォントを復活させることができる。
  • OpenOS got a major overhaul, in particular term related things, and また、いくつかのビルトインプログラムが追加された。 This would deserve a changelog of its own, really...
  • Added sided version of block drivers, deprecated non-sided one
  • Processors/Memory may now define a provided call budget.
  • スキャンエリアの自由化に伴い、Geolyzerがイベントにかかわるようになった。