2012年8月27日 星期一

Head in the Clouds: The reasons of OnLive's failure


  • OnLive的最高同時上線人數大概1800位,註冊用戶2萬人。但是OnLive每個月卻有五百萬美金的的服務開銷。想想每個使用者平均要花多少錢才能回本,這是一個失敗的business model。
  • 錯誤的策略,這些console主機仍然是被玩家使用中的。OnLive卻仍想要賣服務給這些已經有主機的玩家。
  • 網路頻寬問題: 許多註冊用戶被發現他們並沒有去依照OnLive的需求來升級頻寬。
  • 如果你給一個人免費服務,他們會覺得這東西的價值是比較低的,遊戲主機的business model會運作的原因是當你購買了一台主機,用戶會想證明自己的投資是對的就會購買更多的遊戲。但對於OnLive的用戶因為沒花到錢,所以也不急著要付費投資他,包含去申請符合OnLive要求的網路頻寬。
  • OnLive的針對用戶是core gamer和搶先玩家。但是他們不會滿意OnLive的performance,包含lag和畫面失真等不可避免由於網路頻寬造成的結果。OnLive所提供的軟體不是最熱門最新的遊戲,這些核心玩家是不會有興趣的,反而這樣的服務會吸引casual玩家(對於最新遊戲或是購買最新硬體沒這麼熱衷的玩家),但這種玩家通常頻寬不會太好。
  • 本身的硬體更新每次費用都會非常昂貴。
  • 它不是console平台的掌握者,它沒辦法掌握硬體的升級,說服玩家只要用低規的硬體就可以遊玩高級的遊戲。
  • 隨著Graphics processor越來越便宜和精巧,以及效能越來越好。越來越多輕薄的手機終將會超越現今的console,然後在家裡的TV上用它們遊玩高級遊戲。
  • 當一切策略錯誤後,沒有將目標鎖定到專一特殊的領域。例如,Gaikai專精提供game demo服務。

Reference:

2012年8月25日 星期六

Android: Async-Http library


Android Asynchronous Http Client
A Callback-Based Http Client Library for Android
http://loopj.com/android-async-http/

Http Send:

// http send
AsyncHttpClient _clientPost = new AsyncHttpClient();

RequestParams params = new RequestParams();
params.put( "type", "" + type );
params.put( "text", message );
  
if( CookieManager.getInstance().getCookie(HttpAPI.uriAPI) != null )
{
     String cookieStr = CookieManager.getInstance().getCookie(HttpAPI.uriAPI);
           
     _clientPost.addHeader( "Cookie", cookieStr );
}
   
_clientPost.post( addr, params, new AsyncHttpResponseHandler() 
{
   @Override
   public void onSuccess(String response) 
   {
     try 
     { 
     
     }
      catch (JSONException e) 
      {
     
      }
       
   }

});

Http Get:

// http get
AsyncHttpResponseHandler _responseHandler = new AsyncHttpResponseHandler() 
{
  @Override
  public void onSuccess(String response) 
  {
  
  }
};

if( CookieManager.getInstance().getCookie(HttpAPI.uriAPI) != null )
{
   String cookieStr = CookieManager.getInstance().getCookie(HttpAPI.uriAPI);
           
   _clientGet.addHeader( "Cookie", cookieStr );
}
   
_clientGet.get( addr, responseHandler );

2012年8月23日 星期四

Build OGRE with dependency

Dependence file Updated 19 Aug 2012 is not work.
Boost link error for OGRE 1.8 build

http://blog.csdn.net/hackbuteer1/article/details/6597710

2012年8月21日 星期二

WebGL - Three.js + impactJS



http://asmallgame.com/labsopen/webgl_impact/

Using three.js to render a game made with impactJS and box2D

2012年8月18日 星期六

Android chat room copy/delete text

// long press click
@Override
public boolean onItemLongClick(AdapterView arg0, View arg1,
     final int pos, long id) {

                // AlertDialog can try to move to global variable, can avoid to multiple creating.
                AlertDialog.Builder dialog = new AlertDialog.Builder(ChatActivity.this);
                dialog.setTitle(getResources().getString(R.string.selection));
                
                String strCopy = getResources().getString(R.string.copy);
                final String strDel = getResources().getString(R.string.delete);
                
                String[] options = { strCopy, strDel };  // copy and delete items
                
                DialogInterface.OnClickListener actionListener = new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                      switch (which) {
                      case 0: // Copy
                       String copyTxt = _list.get( pos ).getText();
                       
                       //place your TextView's text in clipboard
                       ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
                       clipboard.setText(copyTxt);
                       
                        break;
                        
                      case 1: // Delete
                       AlertDialog.Builder delete = new AlertDialog.Builder(ChatRoomActivity.this);
                       delete.setTitle( strDel );
                       
                          // if confirm to del item, remove it from list and update adapter
                       delete.setPositiveButton( R.string.confirm,  new DialogInterface.OnClickListener() {  
                              public void onClick(DialogInterface dialog, int whichButton) {  
                               _list.remove( pos );
                               _chatList.setAdapter(_adapter);  
                              }  
                          });  
                       
                       delete.setNeutralButton( R.string.cancel, null );
                       delete.show(); 
                      
                        break;
                      
                      default:
                       Toast.makeText( ChatActivity.this, "undefine this type in ChatActivity", Toast.LENGTH_LONG ).show();
                        break;
                      }
                    }
                  };
                  
                dialog.setItems(options, actionListener);
                
                // end AlertDialog create
                  
                dialog.show();

       return true;
         
  }

為自己爭氣──群聯電子十年318億元的創業故事



昨天我從圖書館裡了這本書回家閱讀,一個月內要歸還...

今天第一次翻開這本書閱讀,整本書p.238我看了p.56頁。我停了下來。因為這本書讓我熱情澎湃,如果不停下來,可能下禮拜就遞辭呈了。

有幾個觀點很值得我們記住,在此筆記下來:
  • 這本書百分之五十的版稅捐給交大校友會,另外百分之五十捐給兒童扶助基金會...這決定太棒了,因為年輕學子一定是未來的希望,我們要多幫助他們。
  • 當初潘健成董事長從馬來西亞來台灣交大唸書,其實也很平凡的想說畢業後回馬來西亞工廠上班,一個月領個三萬元,實在沒想說要創業。
  • 他在研究所的時候替教授所開的公司做事,常常沒什麼時間去上課,這間公司在未上市公司潛力曾經位居第二名,不過管理階層出了問題。很多都是高層的親戚,朋友。甚至一個主管跟他說,我們不賺錢也沒關係,只要把我們募資來的好幾億元放到銀行生利息就夠了,要不然就是六塊買進DRAM再12塊賣出可以翻賺一倍。....這種不是在認真經營公司而是在玩金錢遊戲的例子,也促成了潘董對於他日後群聯電子所警惕的。
  • 第一筆大生意是做成全球第一顆USB快閃記憶體系統控制單晶片。後來發現成品比較好賺就開始做隨身碟。
  • 年輕很難給別人信任,但如果你言之有物且做的東西是好的,對方反而會記得你。成功的定義:今天的成功是由於昨天做了對的事情,在每天做很多對的事情,那每天都是做的很成功。
  • 28歲時候被前公司控告侵權,公司的資金被扣押,董事長去拜託合作夥伴能夠將現金能夠提早付給他們,積極地面對媒體,最後終於和解。科技公司難逃侵權,遭到Sandisk告侵權,不像其他廠商跟著和解,因為不甘本業被收取權利金,最後也打贏了。
  • 找保護傘,引進重要股東。找上東芝,它替他們解決了很多難關,讓外界直覺群聯很厲害,無論是資金與專利上。但在東芝的保護緩衝期,仍然要不斷地補專利。
  • 持續為善,賺錢本來就是要花,但要花在該做的地方,幫助年輕人念書、創業,讓越來越多人能夠替社會帶來希望。
  • 以技術發展為基礎,挑正值長期耕耘的客戶。遇到小廠以劣質品競爭,放掉大中華區,找真正有品牌的客戶。做生意就像待人處世,不佔客戶便宜,賣貴了,下張訂單要還給他。
  • 創業夥伴,找可以長久的夥伴,創業有成後,一起打天下的夥伴也沒有分開。在學校認識的朋友是最好的,夥伴選對了麻煩也就少了。

2012年8月13日 星期一

PlayCanvas WebGL 3rd Person Multiplayer Demo

D.E.M.O. screenshot

       WebGL再度做出驚人的表現,PlayCanvas的人員花了
兩個禮拜製作。這個demo與以前不一樣的是做到了multiplayer,支援mouse lock, full screen,在Chrome還支援gamepad。Chrome真的是一個很適合發展HTML5的平台。對於有1.3 billion的潛在玩家,並且相較於triple-A專案的開發成本低的HTML5 platform,能不趁早涉入嗎?

Source code: https://bitbucket.org/playcanvas/scifi
Reference:
http://playcanvas.com/a-multiplayer-3rd-person-shooter-in-html5/
http://www.html5gamedevelopment.org/html5-demos/2012-08-playcanvas-webgl-3rd-person-multiplayer-demo?utm_source=twitterfeed&utm_medium=facebook

2012年8月11日 星期六

Introduce to Chrome plugin


In this diagram, it describes how was the Chrome been designed. If we want to develop some plugins on Chrome, we have several ways.
  1. First, we could use NPAPI which Firefox also follow it interface. (Out of process plugin)
  2. Second, we could choose to write NaCI which support native code( C/C++) be compiled to nexe and be executed on the Chrome sandbox, it would bring some performance benefits because we could enjoy the performance from native code. NaCI provides PPAPI which is different from NPAPI because PPAPI is in order to focus on high performance for 3D/2D rendering, and Google has recommended it to Mozilla but Mozilla not yet decided to support it.
  3. Third, Chrome has some in-Process-plugins that are internal plugins. They could enjoy the PPAPI .

Flash player on Chrome
Chrome provides the Flash Player Pepper in order to let chrome be convenient to maintain and keep it is secure. BTW, Chrome make it be in-process-plugin type and utilize PPAPI in rendering. Flash Player Pepper is different to Adobe Flash Player which use NPAPI interface.

Chrome wants to use PPAPI to involve NaCI, Flash Player and WebGL, because they all support OpenGL ES 2.0. However, it restricts the future of Flayer Player on Chrome due to Stage3D is still possible to support D3D11. With NPAPI based flash player on Windows:  Stage3D->AGAL->DirectX->SwiftShader, but with PPAPI based one: Stage3D->AGAL->OpenGLES2->IPC channel->OpenGLES2->DirectX->SwiftShader, there are a lot of tasks be translated, therefore, it would bring performance hit.

Layout engine:
  • Chrome: Webkit
  • Firefox: Gecko

 Reference:
http://www.chromium.org/nativeclient/getting-started/getting-started-background-and-basics#TOC-Pepper-Plugin-API-PPAPI- 
http://www.chromium.org/developers/design-documents/pepper-plugin-implementation
http://blogs.adobe.com/flashplayer/tag/chrome-flash-player-pepper
http://docs.unity3d.com/Documentation/Manual/nacl-gettingstarted.html


2012年8月10日 星期五

Android: progress dialog and thread

//不顯示title

ProgressDialog _progressDialog = ProgressDialog.show(

               FriendListViewActivity.this, "", getString( R.string.progressing )

               , true, false );

//顯示title

ProgressDialog _progressDialog = ProgressDialog.show(

               FriendListViewActivity.this, "title mssage", getString( R.string.progressing )

               , true, false );

//建立執行緒
        new Thread(){ 
            @Override
            public void run(){ 
                try{
                    //可改為欲執行的程式碼
                    Thread.sleep(5000);
                }
                catch (Exception e){
                    e.printStackTrace();
                }
                finally{
                    pDialog.dismiss(); //關閉dialog
                }
            }
        }.start(); //開始執行緒

//如果有欲修改到UI的內容部分,加上
runOnUiThread(new Runnable() { // Correct!! 
    public void run() {
        //modify View object
  textView.setText("test"); 
     }
});

Reference:
http://kerkerj.twgg.org/2012/04/android-thread-ui-update.html

2012年8月8日 星期三

OpenGL 4.3 spec and Adaptive Scalable Texture Compression Extension (ASTC)

Aug.6th is the 20th anniversary for OpenGL. Khronos revealed OpenGL4.3 spec and compression texture format -ASTC in Siggraph 2012.

ASTC:
http://www.geeks3d.com/20120806/opengl-4-3-and-opengl-es-3-0-adaptive-scalable-texture-compression-extension-astc/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+TheGeeksOf3d+%28The+Geeks+Of+3D%29

OpenGL4.3 spec has been released:
http://www.geeks3d.com/20120806/opengl-4-3-specifications-released-advanced-computation-with-compute-shaders/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+TheGeeksOf3d+%28The+Geeks+Of+3D%29

http://www.opengl.org/registry/doc/glspec43.core.20120806.pdf

OpenGL 4.3 compute shader:
http://www.geeks3d.com/20120806/opengl-4-3-compute-shaders-details/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+TheGeeksOf3d+%28The+Geeks+Of+3D%29