【Unity】#unity1week に参加して大人気WebGLゲー「qvsm」を作ったレポ

先週一週間、前々から気になっていた、1週間でUnityを使ってゲームを作るイベント#unity1weekに参加していました!

f:id:notargs:20170530011332p:plain

Unity 1週間ゲームジャム | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

雑な茶色い料理でひたすら飯テロをしているだけに見えますが気のせいです。たぶん。

作ったゲーム

qvsmというゲームを作りました。

キュビズムと読みます。Cube/Diceあたりのイントネーションを含んだ、シンプルかつ商標取れそうな文字列がこれくらいしかありませんでした。 パブロ・ピカソなどの現代美術と一切関係はありません。

qvsm | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

幸い、予想を上回る人数の方に遊んでいただき、週間ランキング、人気TOP3に食い込むなど、なかなか面白いゲームが作れたんじゃないかと思っています。

続きを読む

【C#】WindowsでもSlackに豆腐が打ちたい!

概要

Slackクライアント最新版(2.6.0-bata1)にて、Macでメッセージを打ち込んだ時に余計な文字が入ってしまい、Windows上で見た時に豆腐が表示されてしまうというバグが発生しています。

Macの人ばかり楽しそうに豆腐を打ち込んでいて羨ましかったので、Windowsでも豆腐を打ち込むことができるツールをC#で作りました。

f:id:notargs:20170521123654p:plain

仕組み

受け取った変数に、特殊な文字\bを付け足してクリップボードにコピーします。

使い方

適当に文字を打ち込んでEnterを押すとコピーされます。 そのままSlackへ貼り付けることで、Windowsでは読めず、Macでは読める文字列が出来上がります。 f:id:notargs:20170521174241g:plain

ソースコード

/*
TofuWriter

Copyright(c) 2017 Yutaka Sato

This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
*/
using System;
using System.Windows.Forms;

namespace TofuWriter
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            while (true)
            {
                var text = Console.ReadLine();

                var temp = text.ToCharArray();
                var temp2 = new char[temp.Length + 2];
                Array.Copy(temp, 0, temp2, 1, temp.Length);
                temp2[0] = (char)8;
                
                Clipboard.SetText(new string(temp2));

                Console.WriteLine("Copied");
            }
        }
    }
}

【C#】Slackクライアントの豆腐をWindowsでも解読できるツールを作った

概要

Slackクライアント最新版(2.6.0-bata1)にて、Macでメッセージを打ち込んだ時に余計な文字が入ってしまい、Windows上で見た時に豆腐が表示されてしまうというバグが発生しています。

MacやAndroidなどでメッセージを確認すれば読むことができるのですが、それも結構面倒だったので豆腐翻訳機を作ってみました。

動作

起動したまま、豆腐を選択してコピー(Ctrl+Cなど)すると、豆腐を翻訳することが出来ます。

f:id:notargs:20170517140227g:plain

ちなみに、写真のSlackチームは雑談Slack(http://samezi-but.com/zdnj.html)です。 和気藹々とした、仕事をサボるには最適なチームなのでぜひご活用ください!

gif画像の転載を快く許可していただいた@gauraさん、@erukitiさんありがとうございます!

仕組み

クリップボードを読み取り、文字コード8の文字を削除してから表示するだけのシンプルなプログラムです。

コード

/*
TofuReader

Copyright (c) 2017 Yutaka Sato

This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
*/
using System;
using System.Threading;
using System.Windows.Forms;

namespace TofuReader
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            var text = string.Empty;
            var prevText = string.Empty;
            while (true)
            {
                prevText = text;
                text = Clipboard.GetText();
                if (prevText != text)
                {
                    Console.WriteLine(text.Replace(((char)8).ToString(), ""));
                }
                Thread.Sleep(10);
            }
        }
    }
}

【C#】Slackからemojiを一括ダウンロードするツールを作った

概要

複数Slack Team間のemojiの同期をしたかったので、emojiを一括ダウンロードしてくるツールをC#で書きました。

Chrome拡張のSlack Emoji Toolsと合わせることで、一括でのemojiのお引っ越しが出来ます。

動作

f:id:notargs:20170516183940p:plain f:id:notargs:20170516183946p:plain

コード

"ここにトークンを入力"ここ(https://api.slack.com/custom-integrations/legacy-tokens)から引っ張ってきたTokenをぶち込みましょう。

あと、参照にSystem.Runtime.Serializationを追加してください。

/*
SlackEmojiDownloader

Copyright (c) 2017 Yutaka Sato

This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

namespace SlackEmojiDownloader
{
    [DataContract]
    internal class EmojiResponce
    {
        [DataMember(Name = "ok")] private bool _ok;
        [DataMember(Name = "emoji")] private Dictionary<string, string> _emoji;

        public bool Ok => _ok;
        public Dictionary<string, string> Emoji => _emoji;
    }

    internal class Program
    {
        private static void Main(string[] args)
        {
            const string folderName = "Images";
            const string url = "https://slack.com/api/emoji.list?pretty=1&token=";
            const string token = "ここにトークンを入力";

            Stream stream;
            using (var webClient = new WebClient())
            {
                stream = webClient.OpenRead(url + token);
            }
            if (stream == null) return;

            var settings = new DataContractJsonSerializerSettings {UseSimpleDictionaryFormat = true};
            var jsonSerializer = new DataContractJsonSerializer(typeof(EmojiResponce), settings);
            var jsonObj = jsonSerializer.ReadObject(stream) as EmojiResponce;

            Directory.CreateDirectory(folderName);

            if (jsonObj == null) return;
            
            foreach (var keyValuePair in jsonObj.Emoji)
            {
                var value = keyValuePair.Value;
                var key = keyValuePair.Key;
                var fileName = Path.Combine(folderName, key + Path.GetExtension(value));
                Console.WriteLine(fileName);
                var webClient = new WebClient();
                if (value.Substring(0, 5) == "alias") continue;
                webClient.DownloadFile(new Uri(value), fileName);
            }
        }
    }
}