搜尋此網誌

2013年6月25日 星期二

替代役時期: Unity3D Web小遊戲-PacMan (2013/6/24完成第一版)

   前陣子在2013/6/10開始自學Unity3D,邊學邊實作一個PacMan小遊戲,遊戲概念大多來自"大學畢業專題程式",有部分素材、script來自網路上的資源,遊戲採用二維陣列的概念來產生隨機地圖,新增可採第一人稱視角玩遊戲,大幅修正網路上提供的Ghost移動AI,目前於2013/6/24完成第一版。
  這支小遊戲的產生原因是我在五月底得知台中某家博弈遊戲公司在招收軟體工程師,需要的條件有C/C++以及Unity3D,於是我就花了一點時間學習Unity3D並實作一個作品,方便之後投履歷面試;還有一個原因就是我覺得Unity3D看起來很有趣、蠻好玩的,學習的過程中也玩得很愉快

小遊戲網址:http://ppt.cc/C8bj  


隨機地圖的概念圖(二維陣列20X20,1表示牆,0表示路)
隨機創四種方向的障礙牆(紅色),再隨機挑選幾個關鍵點堵住(綠色)



第一人稱視角



第三人稱視角

第三人稱視角(角色死亡)



替代役時期: PHP書籍管理程式 (2013/5/6 完成第一版)

列出所有書籍的頁面

搜尋書籍的頁面

新增書籍的頁面


作品簡易說明:
這是一個用PHP語言搭配MySQL資料庫建置起來的書籍管理程式(網站),這支程式的產生起因是我在五月初要面試某家台中公司的PHP研發工程師時,第一次面試完後要考個程式題,題目是書籍管理程式,限制時間一周內完成,還需建置在網路上可供主管評審操作,之前沒有做過一個完整的PHP網站,趁此機會也學習怎麼採用MVC架構去撰寫程式。

線上執行的程式建置在Amazon EC2(建置HiCloud)雲運算虛擬主機中,使用最小的微運算型Linux虛擬主機(Micro),程式透過使用Zend-Framework套件來建構MVC架構,本程式主要有首頁(index)、新增書籍頁(add)、搜尋書籍頁(Search)、編輯書籍頁(edit)、刪除書籍頁(delete),各頁面使用了少許jQuery的效果。

作業系統: ubuntu12.04(32bit)

使用的工具、語言或架構Amazon EC2apache2PHP語言MySQL 5.5phpmyadminZend-FrameworkjQuery、MVC架構。

替代役時期:分析今日BingoBingo開獎號碼的WebApp(2012/11/3 完成第一版)

WebApp顯示頁面

台灣彩券3/27當天BingoBingo開獎號碼頁面
作品簡易說明:

        我發覺BingoBingo每幾小時裡某些號碼會很熱門,所以如果只看奧索樂透網的統計今日熱門號碼的網頁會有些不夠準確,因為前幾小時的熱門號碼現在不一定熱門了,於是我便做了這一個Webapps,從表格中可以看到每段時間的熱門號很多,在近20期中出現7次到10次的熱門號碼起碼有八到九個,表示當前熱門號碼幾乎每兩到三次就開出一次,過了一陣子後這些號碼開始退出熱門,又換其他號碼開始逐漸熱門。這支程式就是為了統計熱門號碼,讓使用者可以更輕易地分析開獎資訊。

  現行服替代役期間,我花時間研讀Python程式語言和Google App Engine(GAE)相關知識,邊學邊撰寫WebApp上傳至GAE,這個WebApp去抓取台灣彩券的BingoBingo開獎號碼存到Google的資料庫,藉由Google雲的資料庫以及分散運算功能,快速幫我運算出冷熱門號碼結果並顯示在GAE提供的WebApp網頁。使用技術或工具:GAE、NoSQL(Google  BigTable)、GQL語言、Python語言。  

研究所學習的領域之一:雲端計算、虛擬化技術的伺服器建置或運用。


在研究所求學期間擔任教學助理:
  •     99學年度第一學期:    車輛定位與電子地圖整合應用
  •  99學年度第二學期:    虛擬化技術
  •  100學年度暑期課程:  虛擬化技術
  •  100學年度第一學期:  雲端計算程式設計
  •  100學年度第二學期:  虛擬化技術

在求學過程中學習了常見的幾種虛擬化技術知識,以及虛擬機伺服器或叢集系統的架設以及維護,例如:
  I.    VMware    vSphere    ESXi.
VMware    vSphere    ESXi.(Server安裝畫面)

VMware    vSphere    ESXi.(Server安裝完成畫面)
VMware    vSphere    ESXi.(Client連線至Server畫面)

  II.   Proxmox  Virtual  Environment.
Proxmox  Virtual  Environment(Server端安裝畫面)

Proxmox  Virtual  Environment(Server端安裝完成畫面)

Proxmox  Virtual  Environment(Client端瀏覽器控管Server端)

Proxmox  Virtual  Environment(Client端瀏覽器開啟虛擬機)

  III.  Ubuntu  Enterprise  Cloud.
Ubuntu  Enterprise  Cloud(安裝畫面)
Ubuntu  Enterprise  Cloud(Cluster端主機安裝畫面)

Ubuntu  Enterprise  Cloud(Node端安裝畫面)
Ubuntu  Enterprise  Cloud(安裝完成的畫面)
Ubuntu  Enterprise  Cloud(Client端使用瀏覽器檢視Cluster端狀態)

  IV.  Citrix  XenServer.(目前無照片,後續再補)

  V.   Hyper-V  Server  2008  R2.
Hyper-V  Server  2008  R2.(安裝畫面)

Hyper-V  Server  2008  R2.(安裝完成畫面)
Hyper-V  Server  2008  R2.(Client端安裝Hyper-V管理員)

Hyper-V  Server  2008  R2.(Client端啟動Hyper-V管理員)
Hyper-V  Server  2008  R2.(Hyper-V管理員介面)


  VI.  Xen  or  KVM  搭配OpenNebula建置虛擬機叢集.(建置過程未留紀錄照片。)
  VII. 使用Amazon  EC2(或中華電信HiCloud)的instance來建置伺服器。
    已建置的伺服器範例: http://ppt.cc/KBRo

孰悉了以下的雲端運算伺服器與了解如何實際架設或操作,例如:
  I.     Google  App  Engine.
    已在GAE上建置的WebApp: http://ppt.cc/vgw4
  II.    Hadoop.(建置過程未留紀錄照片。)

研究所期間相關的國科會專題研究計畫:
█ 發展私有小雲計算之具網路安全性高效能異質伺服系統
  論文產出I: 虛擬機效能評估及雲端伺服合併率計算。


  論文產出II: 雲端伺服存取區網共享儲存之效能評估。





研究所時期作品:雲端化網路視訊電話Cloud-VVoIP (2012/07完成第一版)

  
登入帳號介面
程式操作畫面
雲端化網路視訊電話-英文版介面(電腦與手機的截圖)
雲端化網路視訊電話(實際操作畫面)


作品簡易說明:
    本作品是在雲端計算系統上設計一個即時性網路視訊電話,使用者藉由瀏覽器連線到我的Web網頁,以帳號驗證登入雲端計算系統,便可以在網頁上透過雲端計算系統的VVoIP程式與另一位上線使用者做網路視訊通話;Android行動裝置的使用者則經由Google  Play下載及安裝我們發佈雲端的VVoIP  App後,在Adobe  AIR  App的環境下進行網路視訊通話。

Flash Media Server (at Cloud Side) Flash Player (at Client Side) 之間的streaming (video/audio)data (ActionScript Command)採用TCP-Based RTMP RTMPT RTMPS協定,具有多串流、多路徑、部分可靠等特性(類似PR-SCTP的特性),可以即時傳輸雲端網路視訊通話。


雲端網路視訊電話(Cloud-VVoIP)的優點:
1.  使用者在通話前無須取得對方的IP位址,只需要使用對方的ID名稱透過伺服主機即可進行連線。
2.  經由雲端計算的服務並且使用web介面在PC設備(行動裝置則是使用Adobe AIR App介面),即可進行視訊通話。
3.  行動裝置80%成本都使用在硬體設備,太低階的硬體設備無法執行複雜的網路視訊通話的程式與服務。使用雲端計算的方式來進行網路視訊電話,便可以使用Thin-Client等級的行動裝置或終端設備來進行通話連線,不一定要採用高階的行動裝置才可以進行視訊通話。
4.   因為終端設備上是使用web介面連線(行動裝置則是使用Adobe AIR App介面)VVoIP應用程式是安裝在伺服主機上,而不是安裝在終端設備本身(Android行動裝置則是需要透過Android Market下載安裝),另外VVoIP應用程式的主要運算都交給伺服主機來做,因此終端設備的計算負載變小,並且電源消耗也降低。
5.   雲端計算的服務是使用web介面,所以適合跨不同作業系統平台的終端設備(或行動裝置)上連線視訊通話。
6.   雲端網路視訊電話是經由web介面的方式操作,伺服主機可以即時的掌握連線用戶的人數及了解用戶的使用情形,可以做適當的通話流量調配。登入系統使用AuthenticationAuthorizationAccounting (AAA)管理機制,實施帳戶管理和使用者認證之機制,並且依照不同身份給予不同的使用權限,如此可以有效加強管理上的安全性。
7.  當程式設計者修改、更新網路視訊電話應用程式後,終端設備使用者只需重新整理網頁(Android行動裝置則須啟用Android Market自動更新),即可取得最新版本的VVoIP應用程式並執行它,不同於P2P的方式需要上網去下載新版的應用程式,下載安裝完後才可以執行使用。


使用技術或工具:Linux、Proxmox  Virtual  Environment、Flash  Media  Server、
       Actionscript3.0語言、PHP語言、Zend-AMF套件、MySQL。

註:論文保密三年,原始碼暫不分享。

研究所時期作品: 實現基於PR-SCTP協定的快速語音視訊IP串流在行動無線網絡之間的嵌入式平台 (2011/08 完成第一版)

X86平台上的網路視訊電話

程式功能解說

語音與影像傳送的資料流與週邊裝置的關係
實現在Embedded system(ARM平台:Mini2440)上的網路視訊電話
作品簡易說明:
  傳統在x86架構的PC上使用網際網路Video/Voice over IP (VVoIP)應用,傳輸層通訊協定採用TCPUDP是有不錯的表現。但是如果將VVoIP實現在ARM-Based嵌入式平台之無線網路環境, VVoIP的通話連線效能遭受到一些侷限性的問題。例如TCP通訊協定無法達成即時性的封包傳遞效能,而UDP通訊協定封包傳遞常常會發生封包的遺失、重複、或順序錯置等等問題。IETF所提出的串流控制傳輸協定Stream Control Transmission Protocol(SCTP)提供了幾個很好的特性。
SCTP:
1.          Multi-homing這個特性使一個端點可以擁有多個網路IP,可以更容易的在不同的IP的切換;並且可以動態的加入新的網路位址到連線中,也可以動態的由連線中移除某一個網路位址。當主要線路(primary path)發生擁塞時,在使用者可以忍受的時間內,切換到另一個可以使用的線路,使得使用者可以繼續通話,而不會有所查覺線路中斷。
2.          Multi-streaming:透過多個虛擬的通道,來同時傳遞不同的封包,並且當其中任一種封包遺失時,並不會影響到其它封包的傳遞,因而達到更好的效能。
3.          PR-SCTPPR-SCTPSCTP的延伸,它定義了不完全可靠度傳輸(partial reliable)的新服務。採用PR-SCTP通訊協定的優勢,就是當不重要的封包因延遲或遺失的時候,來不及在接收端接收,可以將那些封包忽略掉,而持續進行後面其他封包的傳送或接收,因此可以達成即時性封包傳輸的效能。

  透過以上這些特性,使得我們很容易透過SCTP來完成多個網路之間移動,並不會讓使用者查覺資料傳送中的中斷,還可達成在不同基地台之間無縫式換手連線,實現即時性視訊語音網路電話。
在不同基地台之間無縫式換手連線


國科會計畫第一階段先在Linux下參照SCTP的幾點特性來實作一影像語音通話程式,第二階段則是修改部分程式碼再編譯成ARM平台上的程式。

部分早期程式碼來自以下Open Project: IHU (一支Open Source Code的VoIP程式)
使用技術或工具:Linux
(ubuntu)、Qtopia/QtE、PR-SCTP協定、OpenCV、
       Qmake、arm-none-linux-gnueabi-4.4.3、C語言、
       Embedded System(ARM platform: Mini2440)
國科會編號:NSC99-2220-E-390-002

OpenFoundry: http://of.openfoundry.org/of/projects/1717
說明手冊以及Source Code都在OpenFoundry裡,有興趣的人再去下載學習。
程式碼授權:OSI: GNU Affero General Public License v3 (AGPL3)

研究所時期作品:Embedded system上的GPS定位與電子地圖程式 (2010/12 完成第一版)

X86平台上的GPS定位與電子地圖程式
實作環境:ARM-based Embedded System(WinFast310)
ARM-based Embedded System上的GPS定位與電子地圖程式

作品簡易說明:

        Fedora8(Linux)作業系統上使用C語言和Qt Embedded套件,撰寫一個ARM平台程式來接收從RS232通道傳來的GPS訊息(在Com2孔接GPS接收裝置),並轉換GPS訊息的經緯度統一為單位,得到經緯度後便在後台圖庫中呼叫圖庫並定位在適當位置。

大學時期作品:C#語言完成的2D小遊戲(PacMan 2009大學畢業展前完成最終版)

遊戲畫面
作品簡易說明:
  大學畢業專題程式採用C#語言撰寫一套2D單機遊戲,內容類似小精靈PacMan,沒有使用任何遊戲模組或遊戲引擎。畢業專題小組分工協力完成以下工作:遊戲主程式、人物碰撞偵測、繪圖顯示(使用DirectX)、怪物移動AI、二維陣列下的隨機地圖產生器、遊戲音效設定、畢業論文文稿撰寫。
  個人分工部分:遊戲主程式、人物碰撞偵測(人物碰撞到牆、怪物碰撞到玩家)、流暢的繪圖顯示(使用DirectX)、怪物快速移動AI。

使用技術或工具:C#語言、Visual Studio 2005(2008)、DirectX9

大學時期作品:採用FIFO法則之記憶體替換Page示意程式(作業系統課程期末小程式 2009)


點擊後~即可試算出解答~ 
=>[多少個frame]
=>[使用FIFO法則]

=>會產生多少個page faults(右上)

=>產生[圖表](左下) 及 詳細替換情形(右下)