【動画】完全無料マイクラ風ゲーム『Minetest』とにかくやってみた【サンドボックスゲーム】

【プレイリスト】 https://www.youtube.com/playlist?list=PLucP745eothf0X4lqUJ1Sn813v1_lGOvs

Minetestとはマイクラ似の、基本無料でかつオープンソースのボクセルベース・サンドボックスゲーム(ブロックゲーム)。

くわしくはこちら。

Modを追加していくことで機能を増やせる。

必要なModを入れていけばマイクラと遜色ないが、はるかに軽快に動作する。

———————————-

【Twitter】takasho game channel(@takasho_game)

25. 5月 2018 by takasho
Categories: ゲーム | Tags: |

[Cocos2d-x] Cocos2d-xの座標系の基本とまとめ:要点はanchorPoint(アンカーポイント)

【注意点】

現行の主流であるCocos Creatorは、また違った座標系の特徴がある。

くわしくはこちら

ローカル座標とグローバル座標

CSSやFlashと同じように、cc.Node(CCNode)を継承したクラスでは、addChild()で他のNodeオブジェクト(スプライト)を入れ子にしていける。

その際、内部の子要素の座標は親コンテナの座標系を基準とした、いわゆるローカル座標になる。

一番上のルートに相当するのがSceneオブジェクトで、その座標系がグローバル座標になる(Cocos2d-xではworld座標と呼んでいる)。

たとえば、親がグローバル座標(100, 100)の位置にあるとき、その子のローカル座標が(10, 10)ならば、子のグローバル座標は(110, 110)になる。

座標の取得方法

【ローカル座標からグローバル座標への変換】

親要素を使う。

node.getParent().convertToWorldSpace(node.getPosition());

【グローバル座標からローカル座標への変換】

node.convertToNodeSpace(globalPos);

原点

座標系は基本的に3Dと同じで、y軸が上方向にプラス。

ただし、原点(0, 0)の位置は画面左下隅に設定されている(左下原点)。

CSSや大半の2Dライブラリ、ペイントツールでは普通、左上原点でy軸の下方向がプラスなので、それらとは逆になっている。

アンカーポイント

問題はここから。

Cocos2d-xでいうアンカーポイント(anchorPoint)とは、以下のいくつかの意味がある。

  • 拡大縮小・回転などの中心点
  • 自身の位置(position)を設定する際の基準点

前者はわかりやすいが、問題は後者。

通常、2Dの座標系では「位置を設定する際の基準点」=「原点」となっている。CSSでもFlashでも同じ。

つまり、ある表示オブジェクト(スプライト)を親コンテナの座標(10, 10)の位置に設定しようとしたら、そこに表示オブジェクトの原点が来るように調整する。

しかし、Cocos2d-xはそうではない。あくまでアンカーポイントがその位置に来るようにする。

上の例でいえば、子の原点の位置が(10, 10)になるのではなく、アンカーポイントの位置が(10, 10)になる。

「原点=アンカーポイント」ではないということを、まずわきまえる必要がある。

子には影響を与えない

既出だが、このアンカーポイントはあくまで「自分自身の位置」を設定する際に基準となるものであって、その中に子要素をaddChild()しても親のアンカーポイントの位置は関係ない。

子から見た場合の親の基準点は、あくまで原点

ここが、まさにわかりにくい。

上記のとおり、親のアンカーポイントは子にとっては直接の関係はない。言い換えれば、子にとって親のアンカーポイントがどこにあろうと直接の影響はない。

親の座標の基準となるのはあくまで原点なので、子をaddChild()した際、デフォルトでは子のアンカーポイントが(0, 0)の位置に配置される。

アンカーポイントのデフォルト位置は、表示オブジェクトの中心

Node系のどのクラスでも、アンカーポイントはその中心に設定されている。百分率の実数で指定するため、(0.5, 0.5)となっている。

要するに、ある表示オブジェクトにおけるローカル座標の原点とアンカーポイントの位置は、基本的に常にずれていることになる。

そのため、Nodeをどんどん入れ子にしていくと、デフォルトでは以下のような奇妙な配置になっていく。

text3794

アンカーポイントの意義と矛盾

これだと明らかにわかりづらい+使いづらいので、アンカーポイントを自分で(0, 0)に、すなわち左下のローカル座標における原点と同じ位置にしてしまえばいい。

だが、これだと今度は拡大縮小や回転をするときに、左下を中心に行ってしまうので問題が出る。

これを解決するために、以下のメソッドがある。

Node#ignoreAnchorPointForPosition(bool)

読んで字のごとく、アンカーポイントをそれ自身の位置を決める際には無視する設定にするもの。

言い換えれば、アンカーポイントの位置はあくまで回転などの変形の基準のみに使い、位置決めは他の普通のライブラリと同じく原点と同じにするということ。

本来、アンカーポイントが(0.5, 0.5)などに設定されていながら、該当Nodeの基準位置はそのアンカーポイントを無視するというのは、Cocos2d-xの仕様上もかなり矛盾した感もあるが、苦肉の策なのだろう。

ともかく、これで万事解決かと思いきや、今度はまた厄介な部分が出てくる。

クラスごとに違うignoreAnchorPointForPosition(bool)のデフォルト値

Nodeではデフォルトでfalseなので、大半のスプライト系クラスでも同じなのだが、LayerとSceneはデフォルトで「true」になっている。

また、MenuなどLayerを継承したクラスもtrueなので、基本的にignoreAnchorPointForPosition(bool)の値を常にチェックしながらコーディングする必要がある。

SpriteFrameでは左上原点

Sprite#setSpriteFrame()で設定するSpriteFrameオブジェクトでは、画像の特定の領域を表示するために該当する矩形(Rect)を指定するが、この場合は左上原点になる……

ポイント

  • 基本、左下原点
  • アンカーポイントは拡大縮小や回転などの変形だけでなく、表示オブジェクト自身の位置を決める基準にもなる
  • ignoreAnchorPointForPosition(bool)は、表示位置の基準を原点と同じにする

注意点

このような非常にトリッキーな仕様になっているので、開発者は以下の点を常に注意しながらコーディングする必要がある。

  • 表示オブジェクトのクラスは何か
  • アンカーポイントの位置はどこか
  • ignoreAnchorPointForPositionがtrueか

これらがひとつ異なるだけで、まったく表示が変わってくるので要注意。

対策

  • アンカーポイントやignoreAnchorPointForPositionをいじることを禁止する
  • いっそ、すべての表示オブジェクトのアンカーポイントを(0, 0)にして左下原点に統一してしまう
  • 安易にLayerやSceneを継承することをやめる

これらをコーディング規約として徹底しないと、特にチームでの開発では問題が出やすいだろう。

所感

おそらく、回転や拡大縮小をしやすいようにアンカーポイントを表示オブジェクトの中心にしたのだろうが、かなり裏目に出ている。それを重視するのならUnityの2D機能と同じく、原点も中心位置にすべきだったろう。

ここだけとってみてもかなりトリッキーで、カオス感があるので、プログラマやデザイナーの意図どおりに表示されず、問題の温床になりかねないリスクが常にある。

Cocos2d-xを採用するか否かは、こういった点にも注意して判断しよう。

24. 5月 2018 by takasho
Categories: プログラミング | Tags: |

マイクラ風ゲーム『Minetest』のやり方:本体&Modの導入方法を詳細解説【まとめ】

概要:Minetestとは

マイクラ似の、ボクセルベースのサンドボックスゲーム(ブロックゲーム)。

長所

  • 完全無料
  • オープンソース=誰でも自由に開発できる
  • 軽量、かつ動作が速い:起動も高速
  • Android、Windows、Mac、Linux、FreeBSDなど各種OS対応
  • Modの導入を前提につくられている=不具合が少ない
  • Modが多い
  • 機能を入れるためのModだけでなく、新しいゲームそのものの追加や、テクスチャパック(スキン)にも対応
  • 各種設定を細かく調整可能
    • 特にグラフィック関連
  • オンラインプレイ(マルチプレイ)対応

短所

  • デフォルト(Mod未導入)では機能が少なすぎてゲームにならない
  • ちょっとしたことでも、いちいちModを入れていくしかない
  • 基本的に日本語非対応:タイトル画面、設定画面は日本語だが、それ以外は英語
    • ゲーム内はほぼ英語
    • 日本語入力は一切できない。コピペでも駄目。チャットなどはアルファベットでするしかない
    • おそらくここが最大のネックになるが、文章が出てくるゲームではなく、アイコンを見ればアイテムの種類はわかるので、ほとんどの場合問題ないはず
    • それよりも、Modの大半が英語でしか説明されていないことのほうがつらい

ダウンロードとインストール

公式サイトからファイルをダウンロードし、解凍するだけ。

Downloads – Minetest

以下の位置に実行ファイルがあるので、これをダブルクリックすれば起動する。

Mintestフォルダ>bin>minetest.exe

タイトル画面

各種設定

注意点

設定画面に検索機能があるが、日本語では使えない。

インターフェイスの言語設定を日本語にしていると、アルファベットで入力しても英語の項目が表示されるわけではないので、まったく使えない機能。

画面の明るさの変更

最初にやっておいたほうがいいのがこれ。

OSやディスプレイの設定によっては、ゲーム内の夜が暗すぎて何も見えないので、Minetestのガンマ値を上げておく。

タイトル画面>設定>詳細設定>クライアント>グラフィック>ゲーム>詳細>Gamma

5.5くらいでちょうどいいはず。

画面サイズ:解像度

ウィンドウをドラッグして変更するしかなく、直接数値を指定する方法はない。

フルスクリーン化(全画面表示)

以下の位置の設定を変更。

タイトル画面>設定>詳細設定>クライアント>グラフィック>ゲーム>詳細>全画面表示

サブゲーム

マイクラでいうミニゲーム。

デフォルトのゲームは「Minetest Game」という名前。

ゲームを始める

ローカルゲームの「作成」ボタンをクリックし、次の画面でワールド=マップを作成する。

シード

ワールドは基本的にランダムに生成されるが、シードのテキストが同じなら、それを元に同じワールドが生成される。

ゲームスタート

タイトル画面に戻り、作成したワールドを選択して「ゲームスタート」。

デフォルトのMinetest Game

ビルド、クラフトの要素しかなく、NPCはおろかモンスターすらいない。

そのため、一部のアイテムは生成できない(ベッドでさえ)。

逆を言えば、探索などを安全に行えるため、初心者はこれでまず慣れたほうがいい場合も。

Mod

大半のModがMinetest本体と同じくオープンソースで提供されているので、改変なども自由に行うことができる。

ほとんどの機能をModで変更することができ、マップの生成すら変えられる。

導入方法

ウェブで配布されているModの大半がzip形式で圧縮されているので、それを展開したフォルダを丸ごと以下の位置に入れる。

Mintestフォルダ>mods

そのうえで、各ワールドの設定でそれぞれのModを有効化する。

タイトル画面のMod欄でできるのは、導入されたModの確認と削除だけなので要注意。

ほぼ必須のMod

Craft Guide (craft_guide)

特定のアイテムをつくる際に、どの素材をどこに配置するか表示する「アイテム」を追加するMod。

つまり、このCraft Guide自体、自分でクラフト画面から作成する必要がある。

他のModによって追加された独自アイテムにも対応するが、あくまでガイド=レシピを表示するだけなので、そのまま該当アイテムをつくれるわけではない(クラフト画面に自分で移る必要がある)。

ここは面倒なところだが、逆を言えばインベントリやクラフトをカスタマイズする別のModとの競合を避けることができる。

一部の独自アイテムでは認識できずにエラーが出るものもあり、それを選択してしまうとMinetest本体ごと落ちることも。

同様のModは数多く存在し、中にはクラフトそのものを拡張する機能が入ったものも存在する。

レシピ系Mod一覧】(英語サイト)

Mobs Redo


モブ=モンスターや家畜などの動物を導入するためのModで、一部オリジナルアイテムも追加される。

あくまでAPIを提供するだけなので、下記のModをそれぞれ別々に導入する必要がある。

いろいろなユーザーがこれをベースにしたModを提供しているため、モブをどんどん追加することが可能。

なお、開発者も指摘しているとおり、競合を避けるために同様のモブ系Modは導入しないほうがいい。

3D Armor

ダウンロード

装備アイテムの防具を導入するMod。

Minetestはデフォルトで武器としての剣は存在するのだが防具がないので、特にモンスターのModを入れてある場合は攻撃力の高い敵に対して非常に脆弱。

かならずこのModを入れたほうがいい。

現状、まともに動く弓矢のModはこれだけ。

他の射撃系武器のModでは、矢(弾)を撃ててもMobs Redoのモブにダメージを与えられないものがほとんどなので、素直にこれを導入したほうがいい。

Compass GPS

ダウンロード

プレイヤーキャラが向いている方向を示すコンパス(方位磁石)をつくれるようになるMod。

画面上に現在の座標を表示することができ、それを記録するブックマーク機能もある。

Minetestには地図機能がないので、これがないとかなり困ったことになる。

自動化系

Hoppers

ダウンロード

ドロップアイテムを自動回収してチェストに入れるアイテム「ホッパー」を追加するMod。

Mesecons



電気回路を組めるようにするMod。マイクラでいうレッドストーンのこと。

おすすめのMod

Bags

【ダウンロード】

バッグ(インベントリ)を拡張するMod。

サイズの異なる3種類が存在し、バッグ自体もアイテムのひとつという扱い。

最終的に、アイテムの最大所持数をかなり大きくすることができる。

Better HUD


Mintestでは、プレイヤーキャラのパラメータはライフ(HP)のみが存在し、満腹度のようなものはなく、防御力の表示もない。

そのため、食べ物を食べるとライフが即回復するシステムになっている。

そこで、いわゆるマイクラのように、食事はあくまで満腹度を回復させ、ライフは少しずつ戻る形にする。

また、別の防具Modである「3D Armor」を導入していれば、全体の耐久値を表示させることができる。

Mod一覧

おすすめサブゲーム

Lord of the Test

その名のとおり、Lord of the Ring風の世界観のサブゲーム。

バイオームなどがモチーフを参考によく考えられている。

コマンド

コマンド一覧

キーボードの「t」キーを押して、チャット欄で「/」を入力してから該当コマンドを続ける。

プレイヤー名を指定する必要のあるコマンドが多いが、シングルプレイ時の自身の名前は共通で「singleplayer」になる。

特権

Mintestはマルチプレイ前提で設計されているので、デフォルトでは各プレイヤーごとの権利がかなり制限されている(シングルプレイ時ですら)。

そのため、いちいちコマンドでプレイヤーごとに「特権」(privilege)を与える必要があるが、それでは面倒なので以下のコマンドで全特権を一気に自分に対して与えてしまったほうがいい。

/grantme all

特権一覧

飛行モード(fly mode)

flyの特権を持っている状態で、kキーを押す。

情報

全体のポイント

素材アイテム「Mese Crystal」

クラフトでは、Mese Crystalという独特なアイテムが必要なことが多いが、地下深くで採掘するか、モブのModで導入したモンスターを倒して入手するしかない。

結果としていろいろなアイテムがつくりづらくなってしまっている。

使えないMod

Minetest本体のバージョンや他のModとの相性でうまく動作しないものについて。

射撃系

Simple Shooter、Firearms

少なくともMobs Redoのモブにダメージを与えられない。

参考サイト

23. 5月 2018 by takasho
Categories: ゲーム | Tags: |

[Cocos2d-x] Cocos Creatorとは:開発ツールのまとめ

Cocos2d-xをベースとした新しい統合開発ツール(IDE)。

既存のCocos2d-xとは別物と考えたほうがいい(くわしくはこちら)。

既存のツールと異なり、UIやアニメーションの編集からJavaScriptのコーディング、ビルドまで一括して行えるエディタのこと。

基本的にCocos2d-JS(JSB、html5)を前提としており、C++、Luaの編集には対応していない(v1.2以降、ビルドすることは可能。Lua版は、将来的にエディタでも利用可能になる予定)。

エディタ上において、WYSIWYGでひとつひとつの要素を編集し、その各イベントにスクリプトを割り当てていく形でアプリを組み上げていく、いわゆるコンポーネント・ベースの開発環境。結果的にコーディング量は減る。

明らかにUnityを意識してつくられたもの。以前はfireballと呼ばれていた別のツールをCocos2d-xプロジェクトに取り込む形になった。

Cocos CreatorのCocos2d-xプロジェクトへの取り込みにともない、これまでの標準エディタであったCocos Studioは開発終了となった。その担当だった開発者たちは、メインの開発母体であるChukong Technologies社からすでに解雇されている。

実はCocos2d-xとは別物

Cocos Studioなどとは異なり、Cocos CreatorはCocos2d-xのための開発ツールではない

あくまで独立したひとつの開発環境であり、すべての面でCocos2d-xと連携することは難しい。

上記のとおり、元々はfireballが内部ライブラリとしてCocos2d-xを採用していただけのため、さまざまな点で本家だったCocos2d-xとは仕様が異なる。

基本的にAPIは別

Cocos CreatorとCocos2d-xは別物のため、APIも似て非なるものになっている。

片方で使えたものが、もう片方で使えないこともしばしば。

つまり、それぞれでの開発はそれぞれのAPIリファレンスを参照する必要がある。

NodeやSpriteの扱いが異なる

名前は同じであっても、Cocos Creatorではエディタで扱いやすくするためか、Node系のオブジェクトが一部、独自の仕様に書き換えられている。

Cocos CreatorはCocos2d-xの一部でありながら、同じようにはいかない(Cocos2d-JSであっても)。

Cocos2d-xの経験があっても、基本的にCocos Creatorの扱い方を一から覚える必要がある。

問題点

Cocos2d-xのAPIが混在

上記のとおり既存のCocos2d-x(Cocos2d-JS)とCocos Creatorは別物と考えたほうがいいのだが、現実問題としてCocos Creatorの側がコードをまとめきれずに、前者と後者のAPIが混在する形になってしまっている。

たとえば表示オブジェクトのコンテナ系であるcc.Nodeやcc.Spriteは、Cocos2d-xとはまったくの別物

名前まで一緒なので非常に混乱しやすいが、Cocos Creator側でベースとなるCocos2d-x(Cocos2d-JS)を独自にカスタマイズしているので、異なる部分がある。

しかもそれらの点に関する情報が公式でも不足していて、余計にわかりづらい。

つまり、単にCocos Creatorの使い方を覚えるだけでなく、常にCocos2d-xとの違いを考慮しながらコーディングする必要がある。

場合によっては、Cocos2d-xの経験が深い人ほど間違えやすい。

正直、非常に大きな混乱の元で、バグの温床になりかねない部分。

座標系がさらにややこしく

Cocos2d-xは以前から座標系がわかりづらいと不評だが、Cocos Creatorではさらに変更が加えられてしまっている。

cc.NodeはCocos2d-xではアンカーポイントが左下だが、Cocos Creatorでは中央(0.5, 0.5)にデフォルトで設定されている。

一方で、Cocos Creatorではcc.Spriteを動的に生成する場合、かならずcc.Node#addComponent(cc.Sprite)でつくる必要があるのだが、その場合はCocos2d-xのcc.Spriteとは逆にcc.Spriteのアンカーポイントの位置は左下として処理される。

ただし、Cocos CreatorのエディタでGUIを使ってつくったSpriteオブジェクトは、基本と同じで中央にアンカーポイントがある。

また、Sceneおよびそれにデフォルトで設定されるCanvasのアンカーポイントも中央。

元から複雑だったのが、さらにわかりづらくなっている。

Cocos Studioのファイルをインポートできない

現状、一部は読み込み可能だが、すべてには対応していない。過去の資産を活かしたいなら、開発が終了したCocos Studioを使いつづけ、APIで自前で読み込むしかないということ。

先行きが不透明

Cocos2d-xらしいというか、一時、ツール群がCocos(Cocos Studio)、Cocos Simulator(Cocos2d-html5用)、Cocos Creatorと別々になっていた。

今は、Cocos Creatorがメインのエディタとなって積極的に開発が進められているものの、使っているユーザーが多いCocos Studioをなんの前触れもなく完全に切り捨ててしまうあたり、やはりCocos2d-xは先が読めない。

以前にも、Cocos Studioが1.xから2.xへ移る際にかなり互換性が失われたり、Cocos Code IDEプロジェクトが突如消滅してダウンロードさえできなくなったりと、これまでのことがあるだけにけっこう不安を感じる。

# Cocos Simulatorは、Cocos Creatorの組み込み実行環境(実体はChromiumベースのブラウザ)として今も使われている。

かなりの情報不足

公式のドキュメントは英語の基礎的なチュートリアルしかなく、くわしい情報はほとんどない。

ましてや日本語での解説は乏しく、英語の情報でさえ断片的なものしかないため、エディタのコードを直接読むか、自分でいろいろ試しながらやるしかない。

まとめ

次々とツールが出てくるあたりまさにオープンソースらしいと感じるものの、相変わらず長期的なロードマップが不明で、安心感を感じられないところがUnityに差をつけられている原因のひとつだろう。

こうした状況では本来ならCocos Studioをしばらく使いつづけ、しばらくは様子見のほうがいいはずなのだが、Cocos Studioの開発が終了してしまったからにはCocos Creatorに移行するしかない。

機能的には必要十分、かつオープンソースで無料のCocos2d-xを「Unityのように」使えるのなら魅力的ではあるのだが、あくまでツールやアセット、そして情報の多さを重視するなら素直にUnityを使うか、これからもCocos Studioを中心に開発することをおすすめする。

21. 5月 2018 by takasho
Categories: プログラミング | Tags: |

マイクラ設計図情報のまとめ:ボクセル【Minecraft】

以下では、マイクラなどブロックゲームやエディタで何かを建築(ビルド)していく際に参考になる、設計図などの情報についてまとめていく。

なお、あくまですでに存在するビルドの情報についてであって、自分で設計するためのツールなどの紹介ではない。

設計図アプリを使う

他のユーザーが投稿した、すでにビルドされたものをさまざまな角度から見ることができるスマートフォンアプリ。

各階層をスライスして内部の構造まで見ることができる。

BlueStacksなどのAndroidエミュレーターを使えば、パソコンでも利用可能。

MCProApp – Blueprints, Maps, Storytime and Guides for Minecraft

▼動画 (クリア)

3D 青写真 for Minecraft

Android版のみ

MC Constructor for Minecraft

iPhone(iOS)版のみ

ジェネレーターを使う

ジェネレーターとは、特定の目的のものを半自動で出力するソフト、サービスのこと。

特に、手作業ではつくりづらい、円・球・円錐など幾何学的な形状のものを把握するに使われる。

Plotz Model Selection

(Plotz Modeller For Minecraft)

よくある形状のもの以外でも、さまざまな建物がデフォルトで用意されている。

ボクセルエディタを使う

MagicaVoxelなどでは、円などを簡単に出力するジェネレーター的機能もある。

また、特定の部分を一括削除する機能もあるので、多少面倒だが設計図アプリのように階層ごとにチェックすることも可能。

以下では、無料で使えるもののみ紹介。

ウェブ検索で情報を探す

結局、完成したものの画像や動画を探すのが一番手っ取り早い。

マイクラ関連だけでなく、ボクセルエディタであるMagicaVoxelなどのキーワードで調べてみると、さまざまな作品が出てくる。

もちろん、実在の建築物も参考になる。

  • YouTube
  • Google 画像検索

書籍を読む

マイクラでのビルドに特化した解説本がいくつか出版されている。

著作権に注意

たとえブロックでつくられたものでも、創作性が認められればその作品には著作権が発生する。

ということは、個人で楽しむ分には問題ないが、SNSや動画サイトで公開するとなると、法に抵触する可能性が出てきてしまうので、使いどころに注意したほうがいい。

19. 5月 2018 by takasho
Categories: アプリケーション, ゲーム, デザイン | Tags: |

← Older posts