2017年10月30日月曜日

【OpenComputers】1.7リリースノート

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

原文はこちら

Version 1.7.0 - Herman Toothrot

新機能・サポート

  • MC1.11および1.12に対応
  • OpenoS threadライブラリを追加
  • Forgeのエネルギーに対応
  • ComputerCraftに再対応
  • Project:Redに再対応
  • WR-CBEに再対応(gamax92に感謝)
  • IC2に再対応
  • Waila/Hwylaに再対応
  • Motion Sensor はアップグレードパーツになった
  • 液体タンクプロパティ用の変換機を追加
  • zh_CN と ru_RU 言語に対応
  • AE2に再対応(Leonに感謝)

OpenOSの修正・改良

  • 大幅のコードの整理
  • 使用メモリー量の削減(shell promptの起動には現在では140kbほどが必要です)
  • 劇的な起動時間の短縮
  • /bin/ls fix for -p option to show / on dirs
  • /lib/eventを修正し、タイマーに対してsignalを発火できるように
  • /lib/keyboardの使用メモリー量を削減し、ターミナルにおけるnumpadへの対応を修正
  • 相対パスを利用できるようにloadfileを修正
  • core ttyのコードを/lib/termから分離し、vt100に対応
  • ENV and _G fixes for load, lua shell, and shell environment
  • edge case in quoted whitespace in shell commands respected
  • mv and cp error message conformance and cleanup
  • install tool fixes
  • fix exit code issues with ls and piping
  • pastebinをアップデートしてhttpsに対応
  • シリアル化のパフォーマンスを劇的に改善
  • lsのカラーは、LS_COLORSにおいてvt100のカラーコードを使用して指定する
  • あらたなファイル一覧表示プログラム:/bin/tree(Leshalncに感謝)

その他の修正・改善

  • 鉄ナゲットを削除(現在ではバニラに追加されているため)
  • scalaの整理、APIのリファクタリング
  • より良いインベントリ管理のために、Transposerとinventory controllerにgetAllStacksとgetInventoryNameを追加(thiakilに感謝)
  • Robotの名前を追加(Nexariusに感謝)
  • ドラッグなしでもマウスのクリックを離すだけでdropイベントが発生するように
  • 複数のタンクを内包するブロックとのtank controllerの相性を改善
  • 修正:filesystem.copy()(#2432)(SDPhantomに感謝)
  • Fixed: Make wtrunc count missing glyphs as 1 (thanks gamax92)
  • Fixed: Infinite loop in manual.
  • ロボットがすべてのアイテムを適切に扱えてはいなかった問題を修正
  • Fixed: case where computers could run minecraft host machine cpu too high
  • getAllStacks().getALL()で返されるテーブルが0スタートになってた問題を修正
  • 道具スロットの動作を改善
  • Fixed: bounding box issues that affect things like waypoints

2017年10月25日水曜日

進捗報告

前回書いたBlocklyですがとりあえず簡単なものが完成したので、Githubの方に挙げてみました。(https://moker-spaghetti.github.io/Visual-Programming-for-CC/)

まだプロトタイプなので、バグが潜んでいる可能性が高いです。
使うときは注意してください。

CCのブロックはまだ、2種類しか追加してません。

基本的な機能はどのブラウザでも動くと思いますが、読み込み、保存、コピー機能はChrome以外のブラウザだと動かないかもしれません。まだちゃんとした動作確認をしてないので許してください。

さて、今後の改善ポイントですが
  • CCのブロック数を増やす
  • デザインを改善する
  • 日本語化
くらいを考えています。

OCについては、どうやって実装するか悩み中です。少し時間をください。

もしバグないし動作確認報告などあれば、ここのコメント欄とかむこうのIssueにでも書き込んでいただければ幸いです。

2017年10月9日月曜日

CCやOCでビジュアルプログラミングできないかという話

 お久しぶりです。

 さて、タイトルの通りです。
 CCやOCの面白さをいろんな人に知ってもらうことの一番の障壁は何といってもプログラミングです。未経験者にとっては、やっぱりCUIよりもGUIなものの方がいいと思うんですよね。そこで、Lua対応のヴィジュアルプログラミング環境はないのかと、ずっと探していました。

 これが意外と見つからない・・・。
 自分で作るしかないのか・・・と半ば絶望していたんですが、先日Twitterを見てたら偶然発見しました。

 GoogleBlocklyというjsライブラリです。(urlはこちら)
 名前の通り、googleが中心となって開発しているヴィジュアルプログラミング開発環境を作るためのライブラリ群。Scratch3もこれがベースになっているとのこと。これがなんとLuaにも対応してるんだそう。ライセンスはApacheの2.0だと思われます。

 まだ、仕様を確認してる段階なので何とも言えないけど、これをちょっといじってOC、CCに対応させられないかなぁ・・・

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がイベントにかかわるようになった。