1.認識 minterm & maxterm
Minterm : 由輸入或輸入的補數構成的 AND
比如有兩個輸入x,y,那minterm = xy , x’y, xy’ ,x’y’
Maxterm : 由輸入或輸入的補數構成的 Or
比如有兩個輸入x,y,那maxterm = x + y, x’+y , x+y’ , x’+y’
->考慮DeMorgan’s theorem
(A + B + C)’ = A’B’C’
(ABC)’ = A’ + B’ + C’
可以進行Minterm與Maxterm之間的轉換:
e.g. x’y’z’ = m0 = x + y + z =M0
再比如說有一個電路
F = x’y’z’ + xy’z’ + xyz = m1 + m4 + m7,
F’ = x’y’z’ + x’yz +x’yz’ +xy’z +xyz’ =m0 + m2 +m3 +m5 +m6
F’’ = (x+y+z)(x+y’+z)(x+y’+z’)(x’yz’)(x’y’z)
所以說F可表達成兩個形式
1. 5個 minterm or 在一起 (SOP)sum of product形式
2. 5個 Maxterm and 在一起 (POS)product of sum形式
那有了Minterm跟Maxterm有什麼好處呢?
若電路F表示為 x’y’z + xyz +xyz’
上述的F稱為 canonical form,因為它有三個輸入,而且每項都有3個變數,實際上F可化簡為x’y’z +xy,但這樣就非 canonical form
那表示成canonical form又有什麼好處?就是真值表定可表達成canonical form,比如說:
x=0,y=0,z=1,可以寫作x’y’z
x=0,y=1,z=1,可以寫作x’yz
x=1,y=1,z=0,可以寫作xyz’
所以只要有真值表,任何電路總能表達成canoncial form(SOP或POS),但是這個形式有個致命的缺點,就是他的變數很多,這間接導致了成本增加。
於是,我們需要簡化的技巧
Gate-level minimization
2.Karnaugh Map
1.按照格雷碼填入電路輸入 e.g(00 , 01, 11, 10)
2.圈1 or 圈 0 ,以1,2,4,8,16,32...2的次方為個數去圈,儘量多圈讓化簡達到最大效果
3.圖視為連通的
4.持續的圈0 or 圈1,直到所有的0或1都被圈到
5.圈1得到化簡的F (SOP形式),圈0得化簡的F' (SOP形式),需再做一次迪摩根得F(POS形式)
0或1可以重複圈,但是一定要完全圈完其中一種
注意:如果一個項的變數個數跟輸入不同,比如說輸入有w,x,y,z,但F中有一項為wxy’,即缺少了z項,那麼我們就要把wxy’z與wxy’z都視為1
卡諾圖的消去原理:(x' + x) = 1
2014年10月13日 星期一
雨港基隆的製作與誕生
講者:Erotes Studio 李處守總召
Erotes的團隊跟上次一樣都是蠻輕巧的,而且因為成員四散各洲,所以作業都是雲端進行,沒有特定的工作室,
談談遊戲的背景,就算沒聽過雨港基隆,也該看過鼎鼎大名李元德吧
接下來絕對沒有劇透了,不過有病測驗寫過的東西我可能就會少提ㄧ些。回歸正題,遊戲的背景設定在228時期,嗯......看起來就像是會被查水表的東西。文本與CG一直都是AVG相當重要的部分,為了追求背景的一致性,觸手在前期企劃時還特別去圖書館、國民黨黨史館借資料,訪問當時的受難者等等。
既然提到了前期企劃,就先從這部分說起吧~這部分包括了
- 開發預算
- 避免無止盡的錢坑,評估是否能回本
- 設計核心
- Why、How、What
- 瞄準客群
- 這同時影響了收費管道與遊戲路線
- 企劃書
想要跟別人做合作,你總是得要有個拿的出手的東西。特別是在你沒什麼名氣的時候,想要找到比較強的人才,或者希望壓低價格、請人幫忙推廣,企劃書就是必備的,因為這一定程度的避免了玩票性質,傳達給外界「我們有在做事,而且我們很清楚自己要做的是什麼」。那麼企劃書該有什麼,從雨港基隆來看,就是粗估劇情大綱、未來走向、CG與立繪的量,如果能擬定好這些,對團隊也相當有幫助,至少很清楚進度條在哪。
再來說說簽約,無論是面對朋友或合作夥伴,簽約都算是必備的,即便是無償幫忙也該簽個約,不然出包時真的會非常痛苦,你會陷入一個良心跟死線之間的兩難。首先,這是對雙方的協調窗口,避免日後分紅時發生爭執。再者簽約確保了對遊戲該有的熱誠,總召要確保的是遊戲完成,總不能編劇寫了一半不幹了,CG在死線之前跳票,總而言之,簽約其實是對整個團隊的一個保障。
既然雨港基隆屬於AVG, 不可不談CG的重要性,雖然文本也是很重要的,但是要注意,在還還沒有知名度的時,沒有人會替你的劇本背書,CG自然成為客人首先關注的焦點。而好CG也需要好繪師,觸手談到諮詢繪師不外乎有三點
- 對價格要有基本的認知
- 不斷的投遞企劃書,不要怕被打槍
- 透過各種人脈找
「編劇編劇,我覺得這個段落要做些小修正會比較好」
「OK」
----- 一個禮拜後 -----
「欸,上次不是要你改這部份嗎,怎麼還是一樣」
「你不是說小修正嗎?」
大概是這種情境,沒吵起來倒是還好,但是工作進度是一定會拖延了,與其如此,不如一開始就把話說明,這也是之前為何強調同伴不適合找自我意識太強的人,劇情的好壞本就因人而異,需要做的是討論與修改,而居中協調就是總召最重要的任務。
2014年10月12日 星期日
串流加密法
串流加密法
像DES、AES這種將明文分為一個一個區塊(block)的稱為區塊加密,與之區隔的便是串流加密。
串流加密的精神在無論明文或是金鑰,都將其視為位元流來操作,如此一來,就不必特意去分割明文區塊,在需要處理即時資料時相當方便。
- 區塊加密
- DES (Data Encryption Standard)
- AES (Advanced Encryption Standard)
- 串流加密
- 亂數產生器
- A5/1
- 可以視為一個實際版的One - time - Pad
- 線性反饋移位暫存器 (Linear Feedback Shift Register)
- 移位暫存器越長安全性越高
- 理論上 L = n 之LFSR最多可產生2^n-1的週期
- 要為Primitive polynomial(無法再分解成2個多項式的乘積)
- A5/1
- 利用3個LFSR (19bits 22bits 23bits)
- 為什麼長度要不同?
- 因為一開始LFSR都是為0,必須要透過一個64bit的key填入,LFSR長度必須不同,初始狀態才會不同
- 填入LFSR後再將LFSR初始狀態分別作22跟100次的打亂
- 總是反饋最大的值
- e.g. = maj(x3,y4,z4) = (1,1,0) = 1 (因為1有兩個)
- 於是x3 -> x4 , y4 ->y5 ,z4不動
- A5/1 Demo
現代加密 - AES
AES
1.AES根據金鑰長度不同分別有10、12、14個回合,每個回合各有一把128位元的金鑰
2.明文區塊(block)與狀態(state) 上的轉換
- 將明文block轉換為16進位編碼,填入矩陣(State)
- 同樣的,每把鑰匙也能用state表示
- State為16進位的數字
- 1.SubBytes : 假設state是19,則找第一列,第九行,取代state
- 2.Shiftrow :第一列不移位,第二列移一位,第三列移兩位,第四列移三位
- 3.MixColumn : 把每一個行乘一個矩陣
- 4.AddRoundKey : 讓State跟回合金鑰做XOR
- 以上步驟進行10、12、14次,依金鑰長度而定
- 利用主金鑰產生回合金鑰
- 每個欲加入的字元w[i]由前一個跟往前第四個字元決定
- 若i為4的倍數,將上述兩值XOR
- 否則將w[i-1]進行函數g運算後,再與w[i-4]做XOR
- 函數g
- 將w[i-1]做旋轉後與取代
6.破解AES
- 128位元的密鑰,要2^128次
- 差異攻擊、線性攻擊與統計攻擊對AES無效
- 矩陣中相乘會不會導致state的值越來越大?
- 思考什麼是有限體 (GF)
- 有限體能以多項式來表示有限運算元集合
- AES的運算是基於GF(2^8)
- 在GF(2^8)下,加法運算被列入XOR
- 為了使乘法有封閉性,要mod多項式x^8+x^4+x^3+x+1
2014年10月8日 星期三
C4 Labs - Meeting 2
呵呵~上禮拜還覺得很親民,這次就被制裁了
#1. Linux 程式分享
淺談在終端機上打殭屍,由於我ezgo還沒有實裝,對講者的分享不大有深刻體認,諸如:
說明文件告訴你:他很酷,他很吃資源。
#2.Zend Framework
推一部sitcon的研討會,我覺得講解蠻清楚的,還有附送練習題
你可能會對framework與IDE產生一些混淆,可以把framework當作是一個函式庫,透過它能讓你在編寫軟體時更加容易,而IDE 則是執行、編寫code來套用框架的工具。比方說Qt、.NET都是框架,而欲使用這些框架你需要一個IDE來引入他們。
#1. Linux 程式分享
- ranger :終端機上的檔案管理員
- catimg :可以在終端機上觀看圖片
- cmus :可以在終端機上播放音樂
- nano : 文書編輯器
- yes:他會一直輸出y輸出y輸出y,直到天荒地老
- cowsay:你可以印出一頭牛,並且讓他說話!
< I Love nix > ------------ \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||- ponysay:wow,你可以印出彩虹小馬
- cmatrix:
說明文件告訴你:他很酷,他很吃資源。
#2.Zend Framework
- Zend Framework
推一部sitcon的研討會,我覺得講解蠻清楚的,還有附送練習題
- 框架(Framework)
a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software簡單來說,可以把framework視為開發某個應用的大型函式庫,裡頭包含了各式各樣在開發該項應用時需要用到的功能,這些都已經是可以重複使用的組件,當然,你也可以改寫這些功能來迎合自己的需求。
你可能會對framework與IDE產生一些混淆,可以把framework當作是一個函式庫,透過它能讓你在編寫軟體時更加容易,而IDE 則是執行、編寫code來套用框架的工具。比方說Qt、.NET都是框架,而欲使用這些框架你需要一個IDE來引入他們。
- 網頁應用框架
- Model–view–controller (MVC)
- Push-based vs. pull-based
- Three-tier organization
- MVC架構
- Model : 用來進行演算法及資料庫
- Viewer :就只負責呈現使用者所看到的介面
- Controller :可以想作Model與Viewer之間的橋樑,是邏輯處理的大本營
- 會把從Model獲得的資料傳給Viewer呈現
- 會對Viewer上的操作進行判斷,看要讓Model中的哪支程式處理它
2014年10月6日 星期一
時間複雜度
-Compile time :
-Execution time
-Program step:
Definition : a program step is a syntactically meaningful program step whose execution time is independent of the instance characteristics,which means that something like the header of a sub program, a declaration of a variable (without assignment) is not consider as program step.
Cautious : the execution time of program steps may be different,which depends on the degree of complexity.
-How to ?
-by a global variable (count) to calculate step by step.
-by a table on counting the product of s/e(step/execution) and frequency (Fig.1.3)
-So whats the different between two methods?
-a global variable returns a number,
-a table presents a function of time and step. e.g. 2n+n , n is a scale of input.
-The best / average / worst step count.
-The big O notation:
-Definition :
f(n) = O(g(n)) iff there exist positive constants c and n0 such that f(n) <= cg(n) for all n,n>=n0
-The omega notation:
-Definition :
f(n) = omega(g(n)) iff there exist positive constants c and n0 such that f(n) >= cg(n) for all n,n>=n0
-The theta notation:
-Definition :
f(n) = theta(g(n)) iff there exist positive constants c1,c2 and n0 such that c1g(n0) <=f(n)<=c2g(n) for all n,n>=n0.
-結論:
1.O考慮的是函數上限(Upper bound),omega則考慮下限,theta則是O跟omega的夾擠
2.取的都是最函數趨勢影響最重要的一項
-Execution time
-Program step:
Definition : a program step is a syntactically meaningful program step whose execution time is independent of the instance characteristics,which means that something like the header of a sub program, a declaration of a variable (without assignment) is not consider as program step.
Cautious : the execution time of program steps may be different,which depends on the degree of complexity.
-How to ?
-by a global variable (count) to calculate step by step.
-by a table on counting the product of s/e(step/execution) and frequency (Fig.1.3)
-So whats the different between two methods?
-a global variable returns a number,
-a table presents a function of time and step. e.g. 2n+n , n is a scale of input.
-The best / average / worst step count.
-The big O notation:
-Definition :
f(n) = O(g(n)) iff there exist positive constants c and n0 such that f(n) <= cg(n) for all n,n>=n0
-The omega notation:
-Definition :
f(n) = omega(g(n)) iff there exist positive constants c and n0 such that f(n) >= cg(n) for all n,n>=n0
-The theta notation:
-Definition :
f(n) = theta(g(n)) iff there exist positive constants c1,c2 and n0 such that c1g(n0) <=f(n)<=c2g(n) for all n,n>=n0.
-結論:
1.O考慮的是函數上限(Upper bound),omega則考慮下限,theta則是O跟omega的夾擠
2.取的都是最函數趨勢影響最重要的一項
2014年10月5日 星期日
聊聊有病遊戲的東南西唄
講師:哈利菠菜
遊戲四元素:程式、美術、企劃、行銷
關於程式,除了要日常研磨自身的技巧外,最重要的就是要有個原形,不論是不是遊戲設計,在設計途中更改規格都是相當危險的,這不僅將大幅延誤開發進度,更會磨損組員之間的信任關係。對於一個專案的開發,務必要與組員之間先溝通好規格,最好能夠事先繪製出一份圖表,如此途中可能發生的錯誤也能先作出應對。
談談美術,這次的講題主要是獨立遊戲:我滿懷青春的有病測驗,其實我認為講師的工作團隊蠻特殊的,它是以講師為溝通核心,其他成員彼此不認識,在協調上自是費力些,尤其是美術這部分就費時半年。對於美術的好與壞,其實這是一個相當抽象的概念,所以我們必須要去強調設定的重要性,何謂設定?大至世界觀,區住環境,民俗風情,這些會影響角色的外貌如服飾、膚色、刺青等等,而小則至家庭背景與人物性格,它能表現出人物該有的動作與氣質。而談到如何加強設定的功力,廣泛閱讀與社交是個不錯的方法,它能讓你更了解何為一個角色。
談到美術之間的溝通,就是要求清晰,我記得講者提到延宕半年的理由,就是他收到第一任美術的人設圖時,回覆的是「沒有悸動」。價值觀的模糊會影響達成共識的速度,半年後,講師改用一些具體的方法陳述,像是「領口要再下來一公分左右」,「裙子可以再往上提高一點點」,並且就文獻內容來跟美術溝通,效率就快了許多。
企劃及行銷其實是一體兩面,現在APP的市場已經殺成一片紅海,單一下載量的成本翻倍提升,更必須著重在這個區域。我很認同講師提出的一個黃金圈概念:
- 想讓玩家體驗到什麼感受 - Why
- 想讓玩家用什麼樣的玩法 - How
- 遊戲應該最後長什麼樣子 - What
至於行銷方法我認為也是一個類似的概念,要有推銷的核心。思考兩個問題,什麼遊戲最好玩?什麼遊戲最有病?我想後者帶來的印象會深刻些,雖然這在某部分也會限縮住客群,哈利波菜特別於此有提到一個失誤:其實這個遊戲一開始是瞄準大學生跟OL的,不過主要下載者都來自於中小學生,這在收費策略上出了些問題,因為沒有引入My Card機制,雖然下載量相當高,成本還是不大能回收。其實這讓我蠻訝異的,一個App排行前10,累積下載量近30萬的作品居然不算賺錢,這可能令不少獨立遊戲者望之卻步。
感謝NCKU遊戲工作坊,感謝哈利菠菜,讓我回想起選擇資工的理由。尤其是看到桃轅傳
有劇情,有配音,有音效,有美術,又有遊戲模式,我從沒想過在大學時期能做到這個地步,這場演講真是太精采了!
訂閱:
文章 (Atom)






