メモ帳

備忘録

LaTeX Workshop + Okularの設定

概要

Ubuntu上にインストールしたVisual Studio CodeとOkularとのSyncTeXによる連携機能(forward search & inverse search)の設定方法のメモ。

LaTeX Workshop側の設定

settings.jsonに以下の記述を書き加える:

"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.synctex": {
    "command": "okular",
    "args": [
        "--unique",
        "%PDF%#src:%LINE% %TEX%"
    ]
}

これでVisual Studio CodeのSyncTeX from cursorが機能するようになる。

Okular側の設定

設定 > Okularの設定 > エディタを開く。 エディタ欄をカスタムにし、コマンド欄をcode -g "%f":"%l"とする。 これで、PDF内をShift + 左クリックしたときにVisual Studio Codeの該当する行が開くようになる。

LaTeX Workshopのstructureにdocument class 'memoir'の\bookや\partなどのコマンドを反映させる

以下のような文書を編集しているとき、初期状態では左サイドバーのoutlineやstructureにおいて、\bookコマンドが解釈されない。

\documentclass{memoir}
(省略)
\begin{document}

\book{First book}
\chapter{First chapter}
\chapter{Second chapter}

\book{Second book}
\chapter{First chapter}
\chapter{Second chapter}

\end{document}

\bookコマンドを解釈させるためにはsettings.jsonに以下のような設定を書き加える必要がある:

    "latex-workshop.view.outline.sections": [
        "book",
        "chapter",
        "section",
        "subsection",
        "subsubsection"
    ]

\partについても同様に設定をしてやればよい。 詳しい設定方法については以下のURLを参照:

github.com

TeXで引用符のネストにより'と"が連続してしまう場合は\thinspaceでスペースを空けるとよい

解決方法

``Nested `quotation'\thinspace''のように\thinspaceコマンドを入れるとよい。

理由

``Nested `quotation'''とすると、最後の'''の部分が、ダブルクォーテーションの後にシングルクォーテーションが続いていると解釈され、「” ’」と表示されてしまい、クォーテーションの対応が合わなくなる。 これを回避するために{'}''とすると、等間隔な三つのシングルクォートのように見えてしまう。 また、空白文字を追加して' ''とすると、スペースが大きすぎる。 '\thinspace''とすることで適切な表示が得られる。

Donald E. Knuth, The TeXbook, p. 5より引用:

In case you need to type quotes within quotes, for example a single quote followed by a double quote, you can’t simply type ''' because  {\TeX} will interpret this as ”’ (namely, double quote followed by single quote). If you have already read Chapter 5, you might expect that the solution will be to use grouping—namely, to type something like {'}''. But it turns out that this doesn’t produce the desired result, because there is usually less space following a single right quote than there is following a double right quote: What you get is ’”, which is indeed a single quote followed by a double quote (if you look at it closely enough), but it looks almost like three equally spaced single quotes. On the other hand, you certainly won’t want to type ' '', because that space is much too large—it’s just as large as the space between words—and  {\TeX} might even start a new line at such a space when making up a paragraph! The solution is to type '\thinspace'', which produces ’” as desired.

GameMaker Studio 2 (GameMaker Language) の学習情報個人用まとめ

GameMaker Studio 2 (GameMaker Language) 用のチュートリアル動画やサンプルプロジェクトを紹介、もしくは自分用にメモしておくための記事。

ゲームを作る系のチュートリアル動画

アリーナ型シューティング by Shaun Spalding

www.youtube.com

初心者向け。おすすめ。 GameMaker Studio 2そのものの使い方や、プレイヤーの移動、衝突判定の方法などの基本が学習できる。 まずはこの動画から始めるのがよいと思う。

スペースウォー型シューティング by FriendlyCosmonaut

www.youtube.com

初心者向け。おすすめ。 上で紹介したShaun Spaldingのアリーナ型シューティングと重複する部分も少なくないけど、この動画ではゲームオーバー画面も実装されているので、こちらの方がよりゲームらしい形に仕上がる。

アクションシューティング by Shaun Spalding

www.youtube.com

初心者~中級者向け。 まだ途中までしか見れてない。

(有料)縦シューティング by Aaron Craig

https://www.udemy.com/the-complete-beginners-guide-to-making-games-with-gms-2/

初心者向け。 敵を一定数倒すと大きなボスが現れるシューティングゲームが作成できる。

(有料)アリーナ型シューティング by Benjamin Anderson & アクションゲーム by Aaron Craig

https://www.udemy.com/be-a-game-maker-with-gamemaker-studio-2/

初心者~中級者向け。 Blaster Faster 360というアリーナ型シューティングと、Cave Boyというアクションゲームを作るチュートリアル動画。

(有料)ゼルダ風2Dアクションゲーム by Benjamin Anderson

https://www.udemy.com/make-an-action-rpg-in-gamemaker-studio-2/

中級者向け。おすすめ。 finite state machineを使った制御, カメラ操作, アイテム取得, room間の移動, hitbox & hurtboxなどが学習できる。

上で紹介した三つのUdemyのチュートリアル動画はセール時であれば1,300円くらいで買えるので、セールを待った方が良いと思う。

アセット

TweenGMS Pro by Stephen Loney

おすすめ。 GameMakerでTweenを使用できるようになるアセット。 動画によるチュートリアルもある。 www.youtube.com

ツール

GMEdit by YellowAfterlife

GMEdit by YellowAfterlife

GameMaker Studio用のコードエディタ。 使いやすそうだけど、まだ少し試してみただけなので、特に説明できることはない。 namespaceやinline functionが使えるようになったりするらしい。

ブログ

YoYo Games 公式ブログのTechカテゴリ

Blog posts in Tech category. | YoYo Games

Zack Bell Gamesの過去記事

Zack Bell Games

INKなどを作ったZack Bell Gamesのブログ。 以下の記事が参考になった

サンプルプロジェクト

まだ一部しか内容をチェックできてないけど、一応メモ。

BetaJam

Spelunky

GameMaker Studio 2で一方通行の足場を実装する

基本的な方針は次の動画を参考にする。

www.youtube.com

この動画に従うと、足場より下にプレイヤーがいる場合に、プレイヤー以外のオブジェクトも一方通行の足場をすり抜けてしまう。 これを防ぐために、下の記事の一番目の解答を参考にして、mask_indexを指定する部分のコードをplayerオブジェクト内に移動させる。

www.reddit.com

例えば、一方通行の足場のスプライトのoriginが(0, 0)の場合は、以下のようなコードで一方通行の足場を実現できる。

// obj_playerのstep event

with (obj_solid_one_way) {
    if (other.bbox_bottom >= bbox_top) {
        mask_index = -1;
    }
}

// ================================ 
// player collision and movement
// ================================ 

with (obj_solid_one_way) {
    mask_index = spr_solid_one_way;
}

GameMaker StudioでAppData\Local以外の場所にあるファイルを扱う方法

Non-sandboxed filesystem by YellowAfterlife | GameMaker: Marketplace(有料)を使えば可能。 詳しい利用方法はNSFS cheat sheetを参照。

例えば、ゲームのあるディレクトリに.iniファイルを作成したい場合は、以下のようにする:

path_ = nsfs_get_directory() + "\\save.ini";
ini_open_ns(path_)
var _group = get_string("group?", "");
var _key = get_string("key?", "");
var _value = get_string("value?", "");
ini_write_string(_group, _key, _value);
ini_close_ns();

ゲームディレクトリにある.iniファイルは次のようにして読み込むことが出来る:

path_ = nsfs_get_directory() + "\\save.ini";
ini_open_ns(path_)
var _group = get_string("group?", "");
var _key = get_string("key?", "");
var _value = ini_read_string(_group, _key, "");
show_message(_value);
ini_close_ns();

GameMaker Studio 2でツイートボタンを作成する

  1. Encoding URLs – YoYo Gamesにあるurl_encodeというスクリプトを導入しておく。
  2. 適当にボタン用のオブジェクトを作成する。ここでは、仮にobj_tweet_bottonとする。
  3. obj_tweet_bottonにAdd Event > Mouse > Left Pressedでイベントを追加する。
  4. 追加したイベントに、以下のようなコードを書く。ここで、'#'など一部の文字はURLエンコードする必要があることに注意する。また、上で導入したスクリプトは日本語のURLエンコードに対応していないことにも注意する。
/// @description tweet
var message = "あなたのハイスコアは" + string(score) + "点です。 " + url_encode("#hashtag");
url_open("http://twitter.com/?status=" + message);