2017年10月31日火曜日

【OpenComputers】Robotを作ってみよう

検証環境
 MC1.10.2/OC1.7.0.124

レシピは公式wiki、またはJust Enough Itemsなどのレシピmodをご確認ください。
今回はエネルギーを無効にした状態で検証しているため、エネルギー関係はすべて未検証です。間違いがあれば教えてください。


Robotの特徴

充電中のロボット
工業化Mod導入環境では、充電が必要になります。
充電するには、レッドストーン入力を与えられたChargerの近くに設置してください。(レッドストーン信号の強度により充電速度が変わります)

また、ワールドに設置してある外部コンポーネント(ブロック型のコンポーネント)にはアクセスできないという点に注意が必要です。(もし外部コンポーネントの機能を使いたいならば、組み立て時に内部に組み込む必要があります。)

Robotの組み立て

Robotを組み立てるには、Assemblerを使います。
(Assemblerはほかにも、DroneやMicrocontrollerなどの組み立てに用います。)

まずは、Assemblerの左上のスロットにComputer Caseをセットしましょう。
今回はTier1のComputer Caseを使います。

さてComputer Caseをセットすると、パーツをセットするためのスペースが表示されます。ここにパーツをセットして左下の三角ボタンをクリックすることでRobotを作成することができます。(工業mod導入環境ではAssemblerに対してエネルギーの入力が必要です。)
AssemblerのGUI

各CaseにはComplexityと呼ばれる値が設定されており、パーツのComplexityの合計はその上限以下でなければなりません。(上限を超えるとComplexityが赤く表示されます。)



さて、右側はコンピューターと同じなので詳細は割愛しますが、次のような点を述べておきます。

  • HDDは原則として一度組み立てたら取り外しできません。先にOpenOSをHDDに書き込んでおくことをおすすめします。
  • EEPROMは、Robotとクラフトすることで、組み立て後でも交換が可能です。
  • また、EEPROMは空のものと書き込み済みのものを一緒にクラフトすることで、複製することが可能です。おそらく、LuaBIOSのEEPROMは持っているでしょうから、それを複製して、Robotの組み立てに使用するといいでしょう。
  • Screenを使用するには、graphics cardが必要です。


左上のスペースは、組み立て後にアイテム欄を占有しないパーツ、左下は占有するパーツ(diskdriveやアップグレード・カードのコンテナーなど)に用います。
次の点に注意が必要です。

  • keyboardがないと、入力ができません。
  • screenがないと、画面が表示されません。
  • Inventory Upgradeがないと、インベントリがなくなります。また、4つまで重複して効果を発揮します。(1つで16スロット、4つでは64スロットのインベントリ)

さて、基礎的なRobotにおすすめのパーツは次のような感じです。

  • CPU Tier1
  • Memory Tier1(もしくは1.5) x2
  • EEPROM(Lua BIOS)
  • OpenOSをinstall済みのhard disk drive Tier1
  • Graphics Card Tier1
  • Screen
  • Keyboard
  • Inventory Upgrade

ちなみに、作ったロボットはdisassemblerで分解することができます。
(disassemblerではパーツも分解することができます)
ただし、5%の確率でパーツが消失します。(平均的には95%の素材しか返ってきません)

【OpenComputers】Not Enough Energy問題

うちの環境もとうとうOC1.7にアップデートしたんですが、その途端に、工業化mod非導入環境にもかかわらず、ロボットやコンピューターがエネルギーを要求し始めました。

うちの環境は次の通りです。

  • Minecraft 1.10.2
  • Forge 12.18.3.2185
  • OpenComputers 1.7.0.124
  • Just Enough Items 3.14.7.420

うちの環境だけがバグってる可能性もあるので、何とも言えないところがあるので、情報募集中です。

で、原因なんですが、たぶんForge energyへの対応なんではないかと思います。
実際、この機能のプルリク上でその問題が提示されてます。(https://github.com/MightyPirates/OpenComputers/pull/2369
ただ、もし実際そうだとすれば、ほかに一切公式からの情報がないのは変なような気もするんですよね…
だとすれば、やっぱりうちの環境だけの問題なんでしょうか…?

で、解決法なんですが、OpenComputersの設定ファイル(settings.conf)のignorePowerの項をfalseからtrueに変更すれば治りました。(当然ですが)

もし同じ状況で悩んでる方いれば参考にしてください。
(工業化modを導入せずにOpenComputersを使っている奇特な人間がどれだけいるかは謎ですが)


やり方詳細解説

まずは、configファイルのバックアップをとりましょう。
configファイルは.minecraft/config/OpenComputers.cfgです。(.minecraftフォルダ内の、configというフォルダの中のOpenComputers.cfgというファイルです。)
どこか適当な場所へ(ex:デスクトップ)コピーしておいてください。
それでは、編集に移ります。
メモ帳を立ち上げてください。
立ち上がったら、メモ帳の画面に、先ほどのconfigファイルをドラッグ&ドロップしてください。
configファイルが表示されると思います。
CtrlとFキーを同時に押してください。
すると、検索画面が出てくるので、「ignorePower」と入力して、「次を検索」をクリックしてください。
そうすると「ignorePower=false」と書かれた部分があると思います。
これを「ignorePower=true」に書き換えてください。
書き換えが完了したら、CtrlとSキーを同時に押して上書き保存してください。

これで、完了です。
minecraftを起動して、設定が無事変わってるか確認してください。
お疲れさまでした。


--2018/04/23 一部追記--

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に対応させられないかなぁ・・・