Archive for the ‘設計’ category

Python使用HGE引擎

八月 25th, 2009

大家肯定都知道在Python下面寫2D遊戲有個眾所階知的選擇就是pygame,雖然它簡單好寫,對於簡單的遊戲來說已經足夠,但是他有一個致命的缺點,就是速度太慢了,在pygame的背後是SDL,用純軟體畫圖的函式庫,既然為純軟體繪圖,遇上旋轉、半透明等等需求,更顯得吃力和不切實際,所以該怎麼辦才好呢?

答案是用Haaf’s Game Engine,它是一款用DirectX做為backend的Open source遊戲函式庫,我在先前的文章裡已經有做簡單的介紹,就不再重覆,那這函式庫和Python又有什麼關聯呢? 他是用C++寫的,Python沒辦法用,正因為這樣,我一直一來想幫他寫一個python的binding,我一直想如果Python也能用HGE寫起來一定很開心,我試著找了一下有沒有已經存在這樣的專案,有找到一個,但是居然是在萬惡的GNU授權下的,讓我百思不得其解,那專案的作者到底在想什麼? 想讓大家寫Open source的Game嗎? 我們都知道GNU是大名頂頂的病毒授權,任何程式使用了用GNU的函式庫都會被感染,代表你的主程式一樣得變成GNU的開源授權,我個人非常討厭打著自由名義但是卻有強烈的強迫性質的GNU授權,況且HGE的授權是非常寬鬆的 zlib/libpng License,實在想不透為什麼一個binding可以用超嚴格的GNU,不過那是那作者的自由,我也管不著,在不能接受那惡心的授權,加上我看了一下他的專案似乎好像也沒有很完整的進度,於是我還是決定自己開了一個新的專案

Python HGE

在這樣的情況下,我前些天抽空開了一個新的Open source專案: Python-HGE,把一些最核心的程式碼都用boost.python包裝給Python使用,最核心的部份完成度很高,剩下的需要我在未來有空慢慢補上,License是MIT,如果你問我為什麼選MIT,我想答案應該是商業用途一樣也可以,不像GNU那種假腥腥的自由,還有一個重點就是,我覺得麻省理工這名字聽起來很酷,讓我想起每次在Discovery看到的東西

效能問題

我照著原本HGE的Tutorial7的程式寫了一個Python的版本,這個範例的目的就是在展示HGE的效能,純C++的版本速度當然是很快,而Python的版本FPS掉了不少,一開始讓我覺得有點失望,讓我開始懷疑如果效能掉很多的話,那用Python寫HGE還有價值嗎? 後來仔細思考了一下,對於一般的2D遊戲來說,要像這demo整畫面跑來跑去的圖片加透明效果的情況實在不多,就算有也很難到這樣上千張的圖片,再者我都還沒進行最佳化、跑profile等等,而且雖說FPS掉不少,但是那是和C++數百的FPS比起來,在60以上其實都是可以接受的,加上我測試的這台電腦已經有點年代,對現代的電腦和GUP來說情況只會更好,在如此的考量之下,Python HGE還是有搞頭的

python版的tutorial 7截圖

t7

這個demo可以在這裡下載

目前狀況

目前雖然核心部份已經高度完成,不過我還沒有把編出來的pyd釋放的打算,如果想嘗鮮的話可以直接從那個demo裡面找pyd出來用,又或著自己check out原始碼進行編譯

參與開發

如果有興趣的話,歡迎參與專案的開發,如同我上面所提到的,我用的是boost.python,一款基於C++的python binding函式庫,如果你熟悉boost.python的話當然是最好,就算沒有也沒關系,因為其實大部份工作都是剪下貼上之類的,可以參考我已經寫好的部份,有些函數回傳例如指標之類的東西需要特別處理,除此之外都只是很簡單無腦工作

哇,好漂亮,可是請問按鈕到底在哪裡?

三月 29th, 2009

美術苦手

一直一來,寫程式是我的專業,但偶爾會有需要撈過界的時候,也是我最頭痛的時候,美術設計,像是網頁程式寫完,要開始把網頁美化,我發現這對我來說比什麼都還來得困難,光是配色就是門很大的學問,以前我對顏色一點概念都沒有,配出來的顏色很常是一些大便色,連我自己看了都想吐,畫圖也是一樣的,畫出來不是很難看,而是根本就不能看,我除了寫程式還得做美術? 我也沒有那樣的時間,或許正因為沒有花時間下去,這個世界是公平的,花多少時間下去,才會有多少的能力,一直一來我腦中響起ptt鄉民最愛講的話之一….

閃開! 讓專業的來

是的,沒有人是萬能的,該交給專業的人時就該這麼做,但是問題出在於,專業的人到底要去哪裡找? 自稱設計師的人滿山遍野,到底要從何找起? 我這陣子逛了不少設計師的網頁,大部份都相當漂亮,有些甚至是美到讓人讚嘆,但是卻大部份都有一個致命的通病….,那就是可用性0分

華麗但可用性0分網頁

大部份設計師的網頁開起來都是華麗的Flash滿天飛舞,我們先不論用Flash做網頁對SEO的殺傷性 (搜尋引擎應該是難以找到Flash裡的內容),就只從可用性來看

看網頁要先下載超過20秒以上的Flash是常態,很多我在開啟的過程中不耐煩就把網頁給關了,沒理由的跳出新視窗的更是數不清,經由廣告視窗的訓練,大家對於那種跳出來的視窗很常第一個直覺反應就是關掉它,我也不例外,好好的普通網頁可以用,跳出一個新視窗來到底是要做什麼我也搞不懂,最誇張的還有遇到用Flash擴成全營幕,我真的不知道什麼網站可以偉大到擴成全螢幕讓使用者專心來看你的網頁,如果遇到不知道怎麼跳出的使用者就糗大了,你可能會說,他進入時會顯示』按Esc跳出』阿,是這樣嗎? 以自己的觀點來設計網頁就是失敗之處,我們都認為Esc跳出好像是理所當然的事情,但是如果遇到Esc在哪裡都不知道的使用者呢? 是這樣的話可能會遇到下列情況

使用者不知道要怎樣跳出全螢幕模式,找了三分鐘都找不到,然後罵了:

幹! 爛網站

接著按電腦重開機鈕….

這不是不可能發生的事情,接著還有其它常見的通病,很多網站都喜歡用一些五四三的方式來代替按鈕,人物、物品、動物、阿貓阿狗之類的什麼鬼都有,看起來是很酷沒有錯,但是請問先生,我要怎麼知道哪個東西可以按? 是阿,我可以用滑鼠移過去點點看是嗎? 這似乎也是蠻有趣的驚喜不是嗎? 沒想到這東西居然可以按,呵呵,真有趣

大錯特錯! 如果你做的是遊戲,藏一些異想不到的東西在畫面裡,這還說得通,但可惜我們不是在玩遊戲,使用者也是,沒有使用者有那種美國時間來慢慢品嘗探索你網頁的樂趣,對於使用者來說,他們只想找到他們要的東西,其餘的東西都是雜訊,以這些設計師的網頁來說,我想找到的是他們的作品集,這下可好了,作品集的按鈕到底是哪一個? 一個一個試嗎? 不,關掉網頁,找下一個,這是最快的做法,所以,請不要挑戰使用者的耐心

除了不知所云的按鈕,你追我跑的設計也是頗受歡迎,很多人喜歡讓滑鼠移動靠近某些東西會有不同的變化,像是有些是越靠近圖片越大,我發現我想看那張圖片,但是我非得把滑鼠移到圖片的最中心才能把圖片停住且放到最大的樣子,我只能說我可能走錯網頁了,我以為我來到了CS甩槍訓練的Flash網頁,這只是一個例子,還有很多類似的設計,很酷,但是很難用

那創意怎麼辦?

我知道想要突破常規是很多設計人的心願,但是在那之前還有一個前提是可用性,如果說做出來的東西是藝術品,只要用眼睛看就好的純欣賞用的作品,那便沒有什麼可用性好說的,但是如果說做出來的是網頁,網頁的目的如果是要讓人使用,那麼天大地大不是台科大,而是使用者,一切都是為了使用者而打造的,使用者必須被擺在第一個順位,賞心悅目、有創意,但是一樣要有可用性,除非你的網頁做出來只是孤芳自賞的藝術網頁

值得一看的好書 : Don’t make me think

我不是什麼可用性的專家,但是我知道有針對網頁可用性的好書,叫做Don’t make me think,已經算是經典的好書,他的最高原則就是直覺,也就是讓使用者不需要思考就能使用的設計,如果你的網頁在我說的範圍裡,可以參考看看這本書,或是當做沒聽到,以上只是打打嘴砲,請別在意

替功能設定優先順序

十一月 13th, 2008

實作永遠比空想困難

實作所需要花的時間,永遠比單純想而已來得長太多了,再加上有許多在思考過程中難以發現的問題,因此實作通常都追不上想出新點子的速度,在實作的過程中時常很容易又突然想到一些點子,然而先前的點子明明都還沒有完成,我寫過無數個半途而廢的程式,往往就是在實作的過程中太貪心,實作的時間無限制地往後延,然後又想到新點子,於是最後終於受不了丟下目前的程式跑去開發新的程式,週而復始,時間久了,專案的資料夾都快可以改名成為專案塚了,而直到最近我開始明白了一件事情,讓這樣的情況有了很大的改善

替你的專案功能設定優先順序

» Read more: 替功能設定優先順序

設計才是王道

十月 11th, 2008

最初

我第一次接觸程式語言,是在國一的時候,學習的是VB6.0,在一開始,我什麼都不懂,大概讀懂簡單的程式,然後靠著剪剪貼貼拼湊出我想要的程式,我還留著我的第一個程式

Private Sub Command1_Click()
If A.Text > B.Text Then
Label1.Caption = "a大"
End If
If A.Text < B.Text Then
Label1.Caption = "b大"
End If
If A.Text = B.Text Then
Label1.Caption = "一樣"
End If
End Sub

我還記得第一次它正確如我預期地運作時的感動,如你所見,當時我連什麼是縮排都不知道,隨著程式越寫越多,野心漸漸地也越來越大,當時有款很紅的線上遊戲叫天堂,我想要寫出那樣的遊戲,於是就在國中時埋頭苦幹式地硬寫出了一個遊戲的雛形,我把它叫做夢想線上(Dream On Line)

夢想線上登入畫面

夢想線上登入畫面

夢想線上遊戲畫面

夢想線上遊戲畫面

這遊戲沒什麼可以玩,只能走來走去,有很多的bug,事實上我有寫過一個伺服器找來網友一起連線,不過那伺服器的穩定度實在糟糕得可以,隨時都有可能當機

» Read more: 設計才是王道

抓取網頁程式的架構設計

十月 11th, 2008

截取網頁的架構設計

我們先前談到了抓取網頁用的工具,但是光有工具是不夠的,良好的設計也是必要的,這次我們就來談談設計

» Read more: 抓取網頁程式的架構設計

這個網站的主機商 : WebFaction

九月 28th, 2008

主機商WebFaction

今天我要介紹我的網站所使用的主機商 : WebFaction

» Read more: 這個網站的主機商 : WebFaction