2011年12月28日 星期三

LLVM introduction

LLVM introduction
View more presentations from Jim Huang

Getting Started with the LLVM System

http://llvm.org/docs/GettingStarted.html  

Getting Started: Building and Running Clang

http://clang.llvm.org/get_started.html

2011年12月21日 星期三

Google: Native Client Getting Started

Getting Started: https://developers.google.com/native-client/devguide/tutorial

OpenGL tutorial
http://www.gamedevblog.com/2011/07/native-client-opengl-tutorial.html

2011年12月11日 星期日

Google: Native Client

Support the x86-32, x86-64 and ARM instruction sets.

NaCl started as a downloadable NPAPI plugin for multiple browsers, including Firefox, Safari, Opera and Chrome and was designed to transparently load and run other NPAPI plugins compiled as nexes.

http://www.chromium.org/nativeclient/getting-started/getting-started-background-and-basics

Download sdk: https://developers.google.com/native-client/sdk/download

Native Client: A Sandbox for Portable, Untrusted x86 Native Code:
http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/zh-TW//pubs/archive/34913.pdf

2011年12月6日 星期二

Problem of Titanium sdk install Android SDK

Install Android SDK to Titanium in windows you may occur some problem:
  1. Could not loacate the android sdk titantium
    Add empty folder "android-7" into "$ANDROID_SDK/platforms/", copy your android sdk folder's content into "android-7". ( for ex: "android-13" to "android-7" )
  2. [ERROR] Required jarsigner not found
    [ERROR] Required javac not found
    [ERROR] Required java not found
    [ERROR] One or more required files not found - please check your 
    JAVA_HOME environment variable JAVA_HOME = C:\Program Files\Java\jdk1.7.0_01
    But JDK is needed 1.6, reinstall JDK 1.6 and set   
    JAVA_HOME = C:\Program Files\Java\jdk1.6.0_29
    
    

2011年12月4日 星期日

Optimizing Graphics Performance on iOS/Android

iOS:

  • 遵守可視的vertex數目限制:
    • 40K - iPhone 3GS以後的新裝置(with SGX GPU)
    • 10K - 較舊款的裝置(with MBX GPU)
  • 如果可能要採用lighing shader,vertex lit會是比較好的選擇
  • 盡可能share material,減少不同material的數目
  • 非會移動的物件,指定為靜態物件會帶來最佳化
  • 使用PVRTC格式或是16bit textures
  • 盡量使用single pass pass的效果
  • 盡可能降低shader floating point的精確度
  • 減少使用複雜的shader指令在pixel shader-pow, sin, cos 
  • 盡量避免使用pixel lighting,頂多一盞(推薦方向光為主)
  • 不要使用動態光源當非必要時 -- 使用lightmap會比較好
  • 在pixel shader貼圖使用越少越好
  • 避免用alpha-testing,用alpha-blending取代
  • 非必要時不要使用fog
  • 盡可能使用Occlusion culling以達到節省draw call次數。 
  • 使用skyboxes來模擬遠方景物。
Android:
  • 如果可能要採用lighing shader,vertex lit會是比較好的選擇
  • 盡可能share material,減少不同material的數目
  • 非會移動的物件,指定為靜態物件會帶來最佳化
  • 使用ETC1 格式或是16bit textures
  • 使用mipmaps
  • 盡量使用single pass pass的效果
  • 盡可能降低shader floating point的精確度
  • 減少使用複雜的shader指令在pixel shader-pow, sin, cos 
  • 盡量避免使用pixel lighting,頂多一盞(推薦方向光為主)
  • 不要使用動態光源當非必要時 -- 使用lightmap會比較好
  • 在pixel shader貼圖使用越少越好
  • 避免用alpha-testing,用alpha-blending取代
  • 非必要時不要使用fog
  • 盡可能使用Occlusion culling以達到節省draw call次數。 
  • 使用skyboxes來模擬遠方景物。
Reference: http://unity3d.com/support/documentation/Manual/Optimizing%20Graphics%20Performance.html

    2011年12月1日 星期四

    Adobe AIR on mobile platform

    Today I port my Flash Player version 3D engine to Adobe AIR, in order to support Android/iOS platform. Because my engine has been done on the PC/Web, so we can't aware performance penalty easily, now I forward to mobile platform, they have limit resource. We need to more optimize our engine. Because iOS version has been convert AS3 to native code, so I believe and found game loop and render loop are not the critical part. The GPU processing part is the issue.

    We have done several things, I list them on the bottom: ( improving the fps from 4 to 26 )
    1. Resize our texture size, smaller is better.
    2. Reduce redundant shader instruction, especially pixel part. We remove the fog and alpha-test part ( for supporting alpha-test, we use 'kil' - it's very evil )
    3. Disable lighting and shadow map.
    4. Currently, event-listener is not the issue.
    5. Continuing we want to try disable mipmap, it may help us improve current performance.

      OpenGL ES Programming Guide for iOS: http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html

       

    2011年11月24日 星期四

    id Software releases Doom 3 source code

    http://www.gamesindustry.biz/articles/2011-11-23-id-software-releases-doom-3-source-code

    source code:
    https://github.com/TTimo/doom3.gpl

    Doom 3: BFG Edition
    http://www.techspot.com/news/50923-doom-3-bfg-edition-source-code-released-on-github.html

    source code:
    https://github.com/id-Software/DOOM-3-BFG

    code review:
    http://fabiensanglard.net/doom3_bfg/index.php

    2011年11月23日 星期三

    Visual authoring of HTML5 user interfaces - in the browser!

    Maqetta is an open source project that provides WYSIWYG visual authoring of HTML5 user interfaces. The Maqetta application itself is authored in HTML, and therefore runs in the browser without requiring additional plugins or downloads.

    http://maqetta.org/

    2011年11月16日 星期三

    shadow map self shadowing artifact

    http://www.idevgames.com/forums/thread-1792.html

    http://www.gamedev.net/topic/401497-shadow-map-artifact-from-self-shadowing/

    2011年11月13日 星期日

    Detection Mobile device browser: User Agent Sniffing

    http://hsinyu00.wordpress.com/2011/04/05/mobile-web-user-agent-sniffing/

    Use javaScript detect the keywords of User Agent Sniffing

    2011年11月3日 星期四

    Quake 3 porting on Andorid

    This is a port of Quake3 to Android.
    http://code.google.com/p/kwaak3/

    2011年11月2日 星期三

    如何計算一個目錄下的所有檔案的總行數

    http://www.programmer-club.com/showSameTitleN/unix/3627.html

    2011年10月21日 星期五

    Google I/O 2011: WebGL Techniques and Performance



    The math library I'm using TLD or 3D library
    File at 3Dlibrary.googlecode.com
    WebGL math benchmarks
    WebGL based on OpenGL ES 2.0 with zero extention

    world *viewProj mtx

    reduce draw call --- use one large buffer

    limits
    64,000 polygons per draw call
    index primitive 16bit

    particle library on WebGL wiki
    (This one which is more stand alone
    https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/demos/google/particles/index.html
    And this one which is integrated with the TDL library
    http://code.google.com/p/webglsamples/source/browse/tdl/particles.js)

    (Library presented in the video is named ThreeD Library. You can find it on googlecode.
    You can use ThreeJS which is much, much easier, and then there is SparksJS for particles in ThreeJS.  Thanks, Mackovy )

    limits
    3D textures not be support. spread it out
    into a 2D texture

    Post Processing
    WebGL2D.js

    never call gl.get anything while render


    // don't touch render buffer while rendering
    gl.framebufferRenderbuffer()//bad
    gl.framebufferTexture2D(); //bad
    if ( gl.checkFramebufferStatus() ) // bad
    attach texture to frame buffer is a slow process


    requestAnumationFrame( render, canvas )

    send people to get.webgl.org for troubleshooting

    WebGL inspector let you inspect WebGL programs like PIX or gDebugger


    WebGL和HTML5在未來需要面對的挑戰
    http://it.kui.name/HTML5/WebGL%E5%92%8CHTML5%E5%9C%A8%E6%9C%AA%E4%BE%86%E9%9C%80%E8%A6%81%E9%9D%A2%E5%B0%8D%E7%9A%84%E6%8C%91%E6%88%B0_n154986.htm

    2011年10月17日 星期一

    Google I/O 2011: Building Game Development Tools with App Engine, GWT, and WebGL

    2011年9月27日 星期二

    Starling Framework - The GPU powered 2D Flash API

    http://www.starling-framework.org/
    http://www.bytearray.org/?p=3371
    http://www.adobe.com/devnet/flashplayer/articles/introducing_Starling.html 
    http://blog.kaourantin.net/?p=138

    2011年9月23日 星期五

    Some articles about AS3 optimization

    http://jacksondunstan.com/articles/270
    http://jacksondunstan.com/articles/433

    狂怒煉獄(RAGE) - id 精神傳承 Making of Legacy

    2011年9月22日 星期四

    Flash 11 即將推出,支援GPU硬體加速功能

    http://www.techbang.com.tw/posts/7060-flash-11-is-about-to-launch-support-for-hardware-acceleration?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+techbang+%28T%E5%AE%A2%E9%82%A6+%E6%9C%80%E6%96%B0%E6%96%87%E7%AB%A0%29&utm_content=Google+Reader



    Link: http://www.unrealengine.com/flash/

    2011年9月21日 星期三

    Macros for Build Commands and Properties in MVS

    http://msdn.microsoft.com/en-us/library/c02as0cs%28v=VS.90%29.aspx

    gameRendering website

    We can find some usable resource in this site.
    http://www.gamerendering.com/


    Programming.Vertex.Geometry.and.Pixel.Shaders: ebook
    http://code.google.com/p/infiniteengine/downloads/detail?name=Programming.Vertex.Geometry.and.Pixel.Shaders%28dx10%29.pdf&can=2&q=

    2011年9月15日 星期四

    Mega Texture

    http://en.wikipedia.org/wiki/MegaTexture
    http://www.team5150.com/~andrew/carmack/johnc_interview_2006_MegaTexture_QandA.html
    http://dev.gameres.com/Program/Visual/3D/id_tech5_clipmap.pdf
    http://www.beyond3d.com/content/articles/95/ 

    http://lichong.blogbus.com/logs/32906035.html

    Sparse Virtual Textures
    http://silverspaceship.com/src/svt/

    2011年9月2日 星期五

    JNI keyboard hook

        If you want your JNI program process with your native dll's keyboard I/O, you must implement keyboard hook function.

        http://www.jotschi.de/?p=90
        http://www.codingforums.com/showthread.php?t=147913

    2011年8月30日 星期二

    Using JAWT implements Web3D

    JAWT ( Java Abstract Window Toolkit )
        Java use it to define the different OS's create window layer, we get this window's handle by JAWT. In this approach we can draw 3D objects presented on the window's handle, which is by GPU acceleration.


    JNI ( Java Native Interface )
       Java can upload native program's library ( etc: *.dll ). Call the native function defined in this linked library.



    STEPS:
    1. Design your java code to be Applet style, You can adopt eclipse SWT(standard widget toolkit) to support JAWT canvas easier.
    2. Define the native interface in your *.java file. Like this:
         // native entry point for Painting
          public native void paintOpenGL();

          // native entry point for enabling OpenGL calls.
          public native void initializeOpenGL();

          // native entry point for disabling OpenGL calls.
          public native void cleanupOpenGL();
    3. Load library in the java:
          System.loadLibrary("openglAWT");
    4. Compare your java code
      javac to generate .class files.
      javah to generate the c++ header (*.h)
    5. Open your c++ dll project, include the generated header. Implement the native interfaces to let JNI can call these function correctly. Build it, and generate the dll file.

      ***Until this step. If you just want to develop a standalone environment, you have let JAWT and JNI achieve 3D present. However, we aim to move it on browser, so we still some work need to be completed.

    6. Pack your *.dll, *.class, and assets to *.jar files.
           jar cvf native.jar *.dll
          jar cvf j3d.jar *.class
    7. Because your application is on web, you need to certify them is been trusted. We produce the certification file.
      create a keystore keytool -genkey -keystore myKeystore -alias myselfcreate a self-signed certificate keytool -selfcert -alias myself -keystore myKeystore
    8.  Every *.jar file needs to be signed:
         
      jarsigner.exe -keystore myKeystore -storepass    password jarfile.jar myself 
    9. Define your html file
          param name="jnlp_href" value="ellison3D.jnlp"
    10. Describe JNLP param.
          jar href="./commonjar/j3D.jar" main="true" /
         nativelib href="./commonjar/swt.jar"/
         nativelib href="./commonjar/native.jar"/

    11. Put your JNLP near the html file
       
    Result: 
    • Direct3D in browsers(IE, Chrome, Firefox)
    • OpenGL in browsers(IE, Chrome, Firefox)


    Reference:  

      2011年8月23日 星期二

      World to View matrix from Z up right-hand to Y up left-hand

      position.x = (-1) * rightVector.dotProduct( orgin );
      position.y = (-1) * lookVector.dotProduct( orgin );
      position.z = (-1) * upVector.dotProduct( orgin );

      _viewMtx.identity();

      var data:Vector. = _rotateMtx.rawData;

      // inverse mtx, and then Z up Y-Z plane to Y up Z-Y plane.
      _viewMtx.copyRawDataFrom(
                      Vector.(
                          [    data[0], data[8],  data[4], 0.0,
                              data[1], data[9],  data[5], 0.0,
                              data[2], data[10],  data[6], 0.0,
                              position.x, position.z,  position.y, 1.0 ] )
                  );       

      2011年8月22日 星期一

      Using JNI embed OGRE3D in webpage

      http://www.brighthub.com/hubfolio/matthew-casperson/articles/52773.aspx

      2011年8月16日 星期二

      Virtualization

      http://benjr.tw/node/216
      http://www.dell.com/downloads/global/power/ps3q05-20050191-Abels.pdf
      http://www.virtuatopia.com/index.php/Xen_Virtualization_Essentials

      2011年8月8日 星期一

      Flash "Molehill" vs Shockwave 3D

      http://www.sherwooddungeon.com/SherwoodAlphaDevDiary.html

      2011年7月29日 星期五

      HTML5 canvas demo

      http://www.canvasdemos.com/type/games/

      Connect to AWS-EC2 Windows OS server and Linux OS server

      Access to windows server, all you do are like to use the Remote Desktop Protocol (RDP).  
      First you need to start the EC2 instance, then get Windows password and EC2 IP. Execute the RDP and type your IP and username, select "warn me" certification. Click the connect btn.




      If you use Linux version OS, you must use SSH protocol, generate private key from key pair. you can following this article. http://blog.soft.idv.tw/?p=824

      2011年7月27日 星期三

      [Flash Player 11] CPU vs GPU with Molehill

      2011年7月19日 星期二

      Configuration of Amazon EC2

      快速安裝 Amazon EC2 LAMP 環境 (EC2 Console)
      http://blog.wu-boy.com/2011/05/%E5%BF%AB%E9%80%9F%E5%AE%89%E8%A3%9D-amazon-ec2-lamp-%E7%92%B0%E5%A2%83-ec2-console/

      什麼是雲端服務?阿正老師教你免費玩Amazon EC2雲端主機!(上篇)
      http://blog.soft.idv.tw/?p=823

      阿正老師教你免費玩Amazon EC2雲端主機(下篇):主機實戰篇
      http://blog.soft.idv.tw/?p=824

      Create a Security Group
      http://support.rightscale.com/03-Tutorials/02-AWS/02-Website_Edition/2._Deployment_Setup/1._Create_a_Security_Group

      How to Connect to Amazon AWS EC2 Server from Windows Desktop.
      http://techgurulive.com/2011/03/07/how-to-connect-to-amazon-aws-ec2-server-from-windows-desktop/

      2011年7月13日 星期三

      Java - Writing the Server Side of a Socket

      Writing the Server Side of a Socket:
      http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html#later

      FGS 2011: Making A Game With Molehill: Zombie Tycoon

      Compare among Java Servlet, Applet, CGI, and JSP

      Java Servlet与Applet、CGI、JSP的比较

      http://developer.51cto.com/art/200907/133695.htm

      2011年7月11日 星期一

      MapKit in iOS app

      iPhone app實作練習-地圖app

      http://blog.eddie.com.tw/2010/11/26/create-map-application-with-mapkit-framework/

      iPhone app實作練習-幫你的地圖app加上大頭針

      http://blog.eddie.com.tw/2010/12/20/add-annotation-to-the-map/



      Using iPhone SDK MapKit Framework - A tutorial

      http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial


      [iPhone程式]iPhone開發心得04-Mapkit之使用MKMapView實作Google Map


      Map Kit Framework 的簡單應用

      如何抓取google map中的經緯度資料:
      add it to your browser's URL
      javascript:void(prompt('',gApplication.getMap().getCenter()));
      http://vovo2000.com/phpbb2/viewtopic-33505.html

      2011年7月8日 星期五

      Map Reduce

      2011年7月7日 星期四

      MR. JAMIE:看網路與創投


      創業人必讀
      http://mrjamie.cc/entrepreneurs/

      2011年7月5日 星期二

      WebGL – More WebGL Security Flaws

      WebGL – More WebGL Security Flaws:
      http://www.contextis.com/resources/blog/webgl2/

      2011年7月1日 星期五

      今天突然好想再繼續唸書

           今天去跟公司合作的大學研究室參訪,聽完了教授的簡報,當下覺得回到了當初研究所報告論文的時光,當時我的研究題目也是有參考這位教授的題目...一點一點將研究成果給達到。今天聽完教授簡報後,發覺我當初很多演算法的細節根本沒有搞很懂,我相信當初的我已經盡我所能去理解了,但看到該教授指導學生的方式,我真的覺得我沒有努力嘗試進入更好的教育環境是那時的錯誤...能夠將自己在意的事情給釐清,真的是一件很幸福的事...

      2011年6月30日 星期四

      ActionScript 3.0程式最佳化

      ActionScript 3.0程式最佳化(一)以及Vector資料類型簡介
      http://uh.9ria.com/space-6264-do-blog-id-2233.html

      ActionScript 3.0程式最佳化(二)
      http://uh.9ria.com/space-6264-do-blog-id-2234.html

      2011年6月16日 星期四

      The difference of dedicated server and cloud computing

      http://www.ubscure.com/Art/95751/97/Dedicated-Server-Vs-Cloud-Computing.html

      http://forums.asp.net/t/1675154.aspx/1?what+is+the+differences+between+dedicated+server+cloud+servers+shared+servers+virtual+detected+servers+

      http://www.esds.co.in/data-centers/kb/whats-the-difference-between-cloud-computing-and-hosting-on-an-online-web-server/

      2011年6月14日 星期二

      Using Interfaces in C++

      Method 1.
      #include "objbase.h"  //~~~!! for interface identifier
      #include "stdio.h"


      interface IAnimal
      {
          virtual void Forward() = 0;
          virtual void Eat() = 0;
      };

      class CBird : public IAnimal
      {
       
      virtual  void Forward()
          {
              printf( "walk 3 steps \n" );
          };
        
      virtual void Eat()
          {
              printf( "eat 5 rice \n" );
          };
      };


      void main()
      {  
          IAnimal *pAnm = NULL;
          CBird bird;
        
          pAnm = &bird;
          pAnm->Forward();
        }

      In this method, you need to #include "objbase.h". And write pure virtual func. in the interface class.

      Method 2.
      In VS7 Microsoft has judged __interface introduction in c++ compiler( macOS c++  support?...)  In the msdn  __interface definition:
      • Can inherit from zero or more base interfaces.
      • Cannot inherit from a base class.
      • Can only contain public, pure virtual methods.
      • Cannot contain constructors, destructors, or operators.
      • Cannot contain static methods.
      • Cannot contain data members; properties are allowed.
      Therefore, we can adjust our sample code:
      //#include "objbase.h"    // doesn't be required
      __interface IAnimal
      {
          void Forward();         //also can be virtual
      void Forward() = 0; , but redundant
          void Eat();                //also can be virtual void Eat() = 0; , but redundant
      };

      Method 3.
      We can apply the Method 2., and integrate with Macro code.

      #define Interface class
      #define implements public

      #define DeclareInterface(name) __interface name {

      #define DeclareBasedInterface(name, base) __interface name \
          : public base {

      #define EndInterface(name)                 \
           };


      DeclareInterface(IAnimal)
          void Forward();
          void Eat();
      EndInterface(IAnimal)


      Reference:
      http://www.codeguru.com/cpp/cpp/cpp_mfc/oop/article.php/c9989
      http://blog.yam.com/swwuyam/article/13090970

      2011年6月13日 星期一

      Cloud computing

      http://www.infoworld.com/d/cloud-computing/cloud-versus-cloud-guided-tour-amazon-google-appnexus-and-gogrid-122

      http://programmers.stackexchange.com/questions/64727/windows-azure-vs-amazon-ec2-vs-google-app-engine

      Apache cloud computing edition
      http://svn.apache.org/repos/asf/labs/clouds/apache_cloud_computing_edition.pdf

      2011年5月30日 星期一

      xcode precompiler header

      In your xcode proj. You can see a other sources group. there is a xxx_Prefix.PCH. In this *.PCH, If you write the cpp code, you should add
      #if defined __cplusplus
      #include "MUtils.h"
      #endif


      Then the precompiler header function would be worked.

      Reference:
      http://www.facebook.com/note.php?note_id=220473491312585
      http://forum.soft32.com/mac/Xcode-precompiled-header-files-problem-ftopict47632.html

      2011年5月26日 星期四

      Titanium Appcelerator vs. PhoneGap vs. Adobe Air

      http://savagelook.com/blog/portfolio/appcelerator-vs-phonegap-vs-adobe-air

      2011年5月23日 星期一

      C++ template in Objective C++

      Vector3D.h
      template(class Type)
      class cMVector3D
      {
      public:
          Type x;
          Type y;
          Type z;
         
      public:
          //--------------------------------
          // @breif: Constructor
          //--------------------------------
          cMVector3D(): x(0), y(0), z(0) {};
         
          //--------------------------------
          // @breif: Destructor
          //--------------------------------
          ~cMVector3D() {};
      };



      main.mm   --- if your program is objective c  hybrid with c++, you need to rename your file ext. from *.m to *.mm.

      #import "MVector3D.h"

      int main(int argc, char *argv[]) {
         
          NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
         
          cMVector3D(float)  testV;   ~~~template success
                
          int retVal = UIApplicationMain(argc, argv, nil, nil);
          [pool release];
          return retVal;


      Reference:
      http://hi.baidu.com/184367426/blog/item/4324263a5ac76e2f71cf6c7c.html

      2011年5月19日 星期四

      Google style guide

      google-styleguide
      http://code.google.com/p/google-styleguide/

      2011年5月16日 星期一

      OpenGL ES Programming Guide for iOS

      Apple provides different implementations of OpenGL ES for different hardware platforms.
      http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/OpenGLESPlatforms/OpenGLESPlatforms.html#//apple_ref/doc/uid/TP40008793-CH106-SW1

      PowerVR Series5 Graphics
      http://www.imgtec.com/powervr/insider/docs/PowerVR%20Series5%20Graphics.SGX%20architecture%20guide%20for%20developers.1.0.8.External.pdf

      Fractal Lab

      Fractal Lab is a WebGL based web application for rendering 2D and 3D fractal in real-time
      http://www.creativeapplications.net/webapp/fractal-lab-webapp/

      Chrome web app and first web app

          Chrome web store let you can publish your app and charge it.

      Overview: 
      http://code.google.com/intl/zh-TW/chrome/webstore/docs/index.html#charging
      Build option: 
      http://code.google.com/intl/zh-TW/chrome/webstore/articles/launching.html
      • HTML5 - HTML5, CSS, JavaScript
      • Native Client - C/C++ code in the sandbox, with Native Client SDK
      • Adobe Flash - depend on flash plug-in
      • A mix - mix these technologies
      The first web app:
      1. Make a manifest.json
          write ---
         {
          "name": "Ellison's WebApp",
          "description": "First App on the chrome web.",
          "version": "1.0",
          "app": {
            "urls": [
                "http://coderellison.blogspot.com/"
            ],
          "launch": {
            "web_url": "http://coderellison.blogspot.com/"
            }
          },
           "icons": {
             "128": "logo.png"
           }
        }
      2.  Prepare a icon---
      3. Put them into a folder --- ellison-app
      4. Upload to Chrome extension
      5. Or pack to ZIP, and upload it to web  https://chrome.google.com/webstore/developer/dashboard
        You need to pay $5 dollar first to publish your app.
      6. Finally, you can click your app in the chrome application


            Reference:
            http://www.itwriting.com/blog/3562-creating-a-chrome-web-application.html
            http://ohboard.com/blog/chrome-web-app-development-guide/