三步驟維持憂鬱時的正常生活運作

Depression-loss_of_loved_one

disclaimer: 我不是醫生,此文純粹是紀錄我在情緒不佳時,所嘗試的維持自己正常運作的方式

1. 寫下所有該做的事情

每件堆在腦中的事情都是一種壓力。為了避免自己不要忘記,無形中就替自己增加了很多負擔。在心情不佳的時候,這些小事都有可能拖垮你一天、一週、甚至一個月的心情。

為了對付這種壓力,我所採取的作法是:不要記就不會忘記了。將所有腦中想到最近要記得作的事情全部用Checklist的形式寫下來。不只是重要事件(deadline、繳費、手續等等),我甚至會將所有小事通通寫下:今天起床要記得刷牙、要吃早餐、中餐、晚餐、要折被子、要買飲料等等。讓自己腦中越空越好,可以算是替自己大腦執行Inbox Zero。

這個Checklist不用排序,不用設定每項事情的優先度,直接隨著你想到的順序去寫。

2. 如果一件事情不能在15分鐘內做完,將其拆成更多細項

這理論我稱之為暑假作業理論:如果一件事沒有辦法立刻做完立刻得到回饋,那就不會去作。算是我在以前當家教時發現的方法。

我發現許多人在剛開始放暑假時,都會計畫「我要念完某某科目」、「我要預習某某科目」這類的事情。我從來沒看過任何人完成。

如果在第一步時,你寫下了「完成xx企劃案」、「念完某本書」之類的事項,那我猜也會是一樣的結果。為什麼?因為這個項目其實是沒有任何意義的。怎樣才叫做念完?花多久時間念完?我如果看到一半想去作別的事情怎麼辦?於是,這件事就永遠不會完成。因為你根本不知道怎樣才叫完成它。

為了解決這種問題,我找出的辦法是將項目切割成大量簡短的子項目。每件事情都要可以在15分鐘內完成。因為這樣才容易想像完成的結果,才有明確的完成的意象。

譬如說,我將這個項目:

  1. 念完這本書

分解成:

  1. 念完這本書的序
  2. 念完這本書的第一章
  3. 念完這本書的第二章

或是,將另一個項目:

  1. 完成某個project

分解成

  1. 寫好issue X的test
  2. 讓這個test通過
  3. 找到issue Y的解法
  4. 實作這個解法

就這樣,每個項目的起點與完成後的樣子都明確許多。起點明確,讓人願意開始動手,終點明確,讓人能在毅力消耗光前做完他,獲得成就感,得到正向回饋:「我解決一項事情,清單上就少一項」。而不會總是作不完任何一項,而一直得到負向回饋:「我做了半天,每項都只做了一點,沒有半件事情做完」

3. 從Checklist中拿出第一項,開始作

因為每一個項目都很短,所以可以省去思考「這件事情現在作不做的完」、「是不是要更多規劃」之類的胡思亂想。

當你心情不好、覺得空虛、覺得自己很廢,就抓起這份清單,直接拿出第一項,做完他。然後用筆爽快的劃掉這項。

就這樣,你得到了一點小小的成就感。雖然清單上還有200項,可是你會發現解決項目的速度很快,因為有些事情可能10秒就做完了。例如:「喝杯水」。

每天醒來都做一份這樣的清單,誘導自己走上軌道,跟自己溝通,找出說服自己的方式。也許某天開始心情就會好了一些吧。

如果你不知道怎麼開始,我先給你第一個項目:

  1. 看一張可愛貓貓圖

8703

好你看完了,打個勾吧。

廣告

Dota,與我的電玩生涯(二)

怎麼感覺有點像在寫回憶錄?

國中是個PC Game大作輩出的時期,Starcraft、Diablo 2,那時,我也算是個小小的blizzard粉絲啊… 這時也是網路遊戲最蓬勃發展的時期,整個網咖通常就是天堂、石器時代、CS、D2,各種音效此起彼落好不熱鬧。不過,這段時間我幾乎沒有真的玩到什麼PC Game。最沈迷的其實是兩個遊戲:怪獸對打機與魔法風雲會。

我唯一擁有過的怪獸對打機
我唯一擁有過的怪獸對打機(沒多久就被老師沒收了)

由於與家人的爭執,我房間沒有電腦。因此我只能朝這些能在自己房間偷偷玩的遊戲尋找出路。那時,怪獸對打機在班上非常的紅,各種攻略、密技、都市傳說層出不窮。最經典的莫過於透過不斷hard reset,讓機器記憶體錯亂而直接變成高等怪獸。以及跟人對戰時要猛按各種「招式」,譬如說AABAACAABAAC之類的按法,現在想想,那應該都是寫攻略本的人唬爛的吧… XD

講到攻略本,那時算是各種攻略本最後的榮光時期。小賣店、書局、甚至便利商店都會賣各種遊戲的攻略本。如果有玩過當時PS的機戰、太空戰士,應該會對那幾本超厚的「XXX大字典」有印象。那時的攻略可不只是包含最速通關,劇情逐字翻譯也是相當常見,再加上極其詳細的數值設定表。許多我沒有機會玩到的console game,都透過這些精彩的攻略本而了解到他的許多設定。

家裡還有兩個鞋盒的牌...
家裡還有兩個鞋盒的牌…

但是要說此時對我影響最大的遊戲,絕對是魔法風雲會(Magic: The Gathering)了。那時我記得是六版的時代?要說MTG對我的影響,大概可以分成這幾個方向:

完整且詳細的世界觀

不需要看小說,光是從大量紙牌的名稱、圖片、與背景敘述,就能在腦中建立起大致的世界觀。從此之後卡片就不只是卡片。他們不是不知從哪跑出來的各種怪獸,而可以感受到自己是在MTG的世界中,透過自己的套牌風格,表現出自己是屬於世界中哪個陣營、哪個國家、哪個工會,並在這世界中征戰。

競爭型遊戲,與PlayStyle

MTG是第一款讓我體會到這類競爭型遊戲的樂趣。不只是對電腦,而是面對一個一個的對手,只要是人,就會有每個人獨特的風格。如果要了解事物,就要先了解背後的人。

此外,MTG許多設計精巧的Deck也是讓我沈迷其中的原因:深藍、紅綠火、松鼠唱反調、裂片妖等等都是既有世界觀上的主題性,又有遊戲上的深度的經典作品。而這種在遊戲機制上敘事的手法,我也是在此時理解到他的威力。

機率計算,與所謂的Theorycrafting

就算你有一套完美的套牌,運氣不好也只能活活站著被打到死。所以,除了事先準備好能準備的部份(Deck、備牌、Meta)之外,臨機應變也是極重要的一環。人生何嘗不是如此?此時,我也慢慢開始接觸到所謂的Rogue-like遊戲,這種充滿不確定性,隨時得透過手邊擁有的資源想出解法的遊戲令我深深著迷。

英文閱讀與字彙

除了小學時稍微學過一點基礎美語之外,MTG是讓我建立起大量中英詞彙的重要一環。那時MTG還有出中文版,我每天的樂趣之一就是對照中英文卡表,驚嘆於各種優美的翻譯。每張紙牌的中英文名稱,背景敘述都能讓我回味再三。armageddon這單字也是在這時記下來的。考研究所時的英文考試就考出來了 XD

這時也還是有在玩MUD,電腦課時被老師發現,他說「MUD是真的很聰明的人在玩的,你不要浪費時間」。嗯嗯。

於是,遊戲再加上我國中時那迷惘的人生,三年也就這麼度過了…

Dota,與我的電玩生涯(一)

Dota,或是最近流行的新稱呼Moba,對於我的遊戲生涯造成了相當大的影響。不只是遊戲本身,甚至此遊戲發跡的歷史對我而言都相當有趣。謹以此(系列?)文,紀念這款遊戲在我遊戲生涯中的地位。

我第一次接觸到「電腦遊戲」這類概念,大約是在小學,家裡有一台電腦,透過那台電腦,我學到了基本的電腦知識。那時還是DOS的時代。

我的第一款電腦遊戲,其實是一款英文學習軟體,在那時,相當流行這種電腦教學軟體,就是那種畫面上會有一個場景,只要滑鼠點擊場景中的物體,他就會念出對應的單字讓你聽。雖然並不能說它有甚麼遊戲性,我還是把他玩得滾瓜爛熟,嘗試所有可以點的物體,直到被我摸索透徹為止。

這款遊戲是在家附近的電腦維修行買的,那時電腦剛開始邁入家庭,四處可見掛著「神腦維修中心」招牌的商家。在那時,這類商家不僅只是維修,還兼顧販賣各種軟體(以及大補帖)、電腦教學、販賣硬體等等服務。家人為了讓我學習一些電腦知識,把我送去參加商家舉行的暑期電腦班,可惜教得太過簡單,早就會了的我最後只吸收到從同學那聽到的各種遊戲名稱。這段期間我玩到了第一款真正的遊戲:Mega Man X。不過也從那時就展現出我對動作遊戲的不擅長,我唯一打敗的Boss是穿山甲,因為PC版本他的行動模式是固定的,彈跳攻擊也有一個安全地帶。最後他就這樣被我背下行動模式後慢慢磨死。

mega-man-x-collection-20051216115350481

後來,家裡換了一台電腦,我記得是pentium 90?從此開始了我的電玩生涯,以及跟家人無止境的爭吵。

我的第一本電腦玩家就是這輯!!
我的第一本電腦玩家就是這輯!!

在那時,一款動輒600~1000元的電腦遊戲實在太貴了。為了持續玩到各種遊戲,我的出路是那時流行的電玩雜誌。雜誌提供的試玩光碟也是我接觸各種遊戲的主要來源。那時,我一周只有星期三與星期六分別可以玩3小時的電腦。可以玩電腦時,我就瘋狂的嘗試各種遊戲:德軍總部、DOOM、Jagged Alliance、水滸英雄、Freespace、Theme Hospital、上帝也瘋狂、阿貓阿狗… 太多太多經典遊戲都因為試玩光碟的存在而讓我接觸到他們的面貌。當我不能玩電腦時,我就沉浸在電腦雜誌的文字、圖片與廣告中。從文字的描述,遊戲截圖去想像遊戲的玩法,從攻略去了解遊戲的詳細設定。那時訂閱的雜誌是電腦玩家,感謝他,讓我了解到遊戲的各種可能。我還記得100好Games這個特別企劃。可惜這些雜誌後來都丟了。

那時也是網路開始發展的時代,我最早接觸到的網路遊戲其實是MUD。那時,拉著同學一起玩東方之豬,讓我學到了熟練的英打能力以及大量的英文單字。後來天堂、石器時代、魔力寶貝等等的出現,OLG也就一路伴隨著我到今日。

也是在這段時間,透過家中一本DOS Batch的書籍,我開始接觸到基本的程式設計。此時我已經學會了基本的條件判斷/迴圈等等,但是書中並沒有教我怎麼接收使用者的輸入。那時,滿腦子只想做遊戲的我,硬是想到了一個辦法來做出基本的遊戲:參考mud的方式,我把每一個場景都做成一個.bat程式,每個程式會提示你,如果要往東走就執行a0001.bat,如果要打怪就執行c0123.bat等等,就這樣,我也做了一套類似電子小說的系統出來。

小時候,除了電玩對我的影響之外,另一個最大的影響來源就是漫畫了。雖然我玩的幾乎都是美式遊戲,但是大量的日式漫畫也對我喜好的風格產生了相當大的影響。

如果美式講究的是世界觀與設定,那日式對我而言就是角色風格與人物魅力。在此時,我就開始尋找人物風格強烈的遊戲,格鬥遊戲便是很好的一個例子,不過格鬥遊戲對我而言實在太困難,一直玩不起來。

受到這些事物的影響,我腦內漸漸開始形成兩個隊伍一人操作一個角色,互相對戰的遊戲系統。那時,由於網路速度的限制,網路對戰最流行的其實是戰略遊戲。後來我一直沒找到符合我想像的遊戲。就這樣,我升上國中了。

Platform Specific Sprite Collection with Unity 2dToolkit

When working on platforms with different resolutions, it’s common to have assets prepared for them with different sizes. For example, you might have a 320×480(1x) background image for iPhone 3GS, 640×960(2x) for iPhone 4G retina display and 1280*1920 for iPad3. With 2dToolkit, managing these assets become a breeze. In this tutorial, we’re going to use 2dToolkit’s Platform Specific Sprite Collection and Camera Override to solve this problem.

Setup your scene with 1x assets

When swapping sprites with Platform Specific Sprite Collection, 2dToolkit will maintain the size of sprite as the same. So it’s better to setup your scene with 1x sprites.

Import your high-quality assets with correct asset path

Make sure all assets in the sprite collection have corresponding high-quality version(2x, 4x) and correct file path. Check documentation for more information.

Enable multiple platform support of sprite collection

Just follow the “Ideal Workflow" in the documentation

Setup a empty scene before other scenes in your game

In order to make 2dToolkit swap the sprite collection to the one with better quality assets, you have to tell it to do so BEFORE any sprite being loaded into memory. Therefore, the easiest way to do so is prepare an empty scene before your game and put the following script into it:

using UnityEngine;
using System.Collections;

public class ResolutionSetting : MonoBehaviour {
	void Awake () {
		tk2dSystem.CurrentPlatform = "2x"; // Or 4x, based on the resolution of your target device
		Application.LoadLevel("YOUR STARTING SCENE");
	}
}

Setup the tk2dCamera resolution override

tk2dCamera can automatically scale the game to fit the resolution of target device. You can set it up like mine or trying out different settings by yourself:

LittleSnapper

Since we’re setting up the game with assets having the lowest quality, we set the Native Resolution to the target resolution of your lowest quality assets. In this case, It’s 320×480.

The most important setting is the “Pixel Perfect Fit" of Auto Scale. Combine with platform specific sprite collection, it will maintain the pixel perfect of your game and stretch the game’s resolution to fit the screen, leaving some letterbox space if not possible.

Bonus: enable Force Editor Resolution to show the correct resolution in unity’s game view

tk2dCamera comes with a setting called “Force Editor Resolution“. Unity’s game view won’t display in the correct resolution if you don’t enable it.

在Unity3D中實作Diablo3的單位白色閃爍

Blizzard最近雖然在Game Design上的水準讓人不敢恭維,他們的工程能力倒是依然強大。在Diablo3裡,他們用了招簡單有效的方式,讓攻擊怪物的打擊感大幅提高:讓怪物在被打到的瞬間閃一下白色。

要怎樣在Unity3D中實作這種效果呢?其實只要透過一個簡單的Shader就可以了:

Shader "Custom/White" {
   Properties {
	    _Color ("Color", Color) = (1,1,1)
	}
 
 	SubShader {
	    Color [_Color]
	    Pass {}
	} 
	FallBack "Diffuse"
}

然後在怪物被打到的時候執行:

renderer.material.shader = Shader.Find("Custom/White");
yield return new WaitForSeconds(0.1f);
renderer.material.shader = Shader.Find("Diffuse");

就可以了