【Unity】#unity1week に参加して大人気WebGLゲー「qvsm」を作ったレポ
先週一週間、前々から気になっていた、1週間でUnityを使ってゲームを作るイベント#unity1week
に参加していました!
Unity 1週間ゲームジャム | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
#unity1week pic.twitter.com/LnNA6KL0aR
— !args(のたぐす) (@notargs) 2017年5月27日
#unity1week pic.twitter.com/i4YLwHMmKk
— !args(のたぐす) (@notargs) 2017年5月28日
雑な茶色い料理でひたすら飯テロをしているだけに見えますが気のせいです。たぶん。
作ったゲーム
qvsm
というゲームを作りました。
キュビズム
と読みます。Cube/Diceあたりのイントネーションを含んだ、シンプルかつ商標取れそうな文字列がこれくらいしかありませんでした。
パブロ・ピカソなどの現代美術と一切関係はありません。
qvsm | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
幸い、予想を上回る人数の方に遊んでいただき、週間ランキング、人気TOP3に食い込むなど、なかなか面白いゲームが作れたんじゃないかと思っています。
qvsmがTop3入りしてる…! #qvsmhttps://t.co/CuPNDOv9W3https://t.co/1vjYJZh1M0 pic.twitter.com/A9edJyOW4L
— !args(のたぐす) (@notargs) 2017年5月28日
続きを読む週間ランキングTopにqvsmがいる…! #unity1week #qvsm pic.twitter.com/SC5zZWQaDc
— !args(のたぐす) (@notargs) 2017年5月29日
【C#】WindowsでもSlackに豆腐が打ちたい!
概要
Slackクライアント最新版(2.6.0-bata1)にて、Macでメッセージを打ち込んだ時に余計な文字が入ってしまい、Windows上で見た時に豆腐が表示されてしまうというバグが発生しています。
Macの人ばかり楽しそうに豆腐を打ち込んでいて羨ましかったので、Windowsでも豆腐を打ち込むことができるツールをC#で作りました。
仕組み
受け取った変数に、特殊な文字\b
を付け足してクリップボードにコピーします。
使い方
適当に文字を打ち込んでEnterを押すとコピーされます。 そのままSlackへ貼り付けることで、Windowsでは読めず、Macでは読める文字列が出来上がります。
ソースコード
/* 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など)すると、豆腐を翻訳することが出来ます。
ちなみに、写真の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のお引っ越しが出来ます。
動作
コード
"ここにトークンを入力"
にここ(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); } } } }