2013年12月9日 星期一

開發日誌-0027 amazon kindle版上架&亞馬遜開發者後台心得


Fly!Penguin!(飛吧!企鵝!)在被amazon反覆退件修改多次之後,
終於成功上架amazon app store平台了,
http://www.amazon.com/gp/product/B00H0TM5ES

這次跟亞馬遜交手的過程,
雖然不斷的被要求修改,
但是我對amazon沒有一點的生氣或反感,
反而好感度是直線上升的,
個人的app上架經驗都是跟apple做比較及對照的,
(googlePlay就不用比了,與這兩家的後台設計不在一個基準線上..還有非常大的改進空間)
看的出來amazon應該是非常認真的想做好app store這一塊,
因為除了開發者後台規劃的十分清楚明瞭外,
Amazon Mobile App Distribution Team回覆app測試報告也十分用心及嚴格,
雖然目前上架是免費,
但是在這樣的前提之下,
amazon App Store 上並沒有太多的垃圾app,
尤其讓我感動的是Amazon Mobile App Distribution Team的測試報告,
詳細到step by step一個步驟一個步驟描述重現他們如何發現你的app的問題,

舉例Steps to recreate error:
1.Install and launch the application.
2.Tap on "Play"
3.Tap on "CHALLENGE"
4.Tap on "GO"
5.Play the game for some time
6.Tap on "==>"
7.Tap on "Bucket" icon
8.Tap on any of the Iap, no functionality is performed.

上面這個退件原因是因為amazon有一個開發者優選的計畫,
如果要符合的話,


除了基本的解析度必須要做到高畫質最佳化,
以及除了圖片還需提供app操作影片外,
上架amazon的app必須分成兩種版本,
一個是只支援kindle OS的,
一個是支援非kindle OS的一般android的裝置,
聽起來有些複雜,
我起初也搞得一頭霧水,
簡單來說就是,
Kindle的版本有支援amazon的GameCircle,
這個GameCircle類似於iOS的Game Center,
可以讓玩家在遊戲中有解鎖成就,上傳成績到排行榜以及最重要的iap(遊戲內購)官方功能,
這東西Android並沒有,
而是amazon專為Kindle OS開發出來專屬的功能,
因此就必須同時上傳兩種版本,
讓Kindle的用戶連上app store時下載的是Kindle版,
讓非Kindle的一般Android用戶連上app store時下載的是Android版.

好像繞口令^^"

總而言之,
非Kindle OS的一般Android版,
並沒有辦法在amazon裡支援iap以及排行榜跟解成就的功能,
所以我的製作順序是先弄出Kindle OS的版本,
再拿Kindle OS版改出一個拿掉GameCircle的版本,
這樣就有兩個版本符合開發者優選計劃的條件了.
但是卻忘了拿掉非Kindle OS版本遊戲中進到購物升級畫面時的購買iap金幣的功能,
因此就被amazon的測試人員退件要求修改,
這代表他們真的有實際測試兩種版本的差別,
並且有試玩到一定的程度,
真的有用心在測試app,
這點真的是值得給予讚賞!

然後,
amazon的GameCircle裡的排行榜功能直接就跟最新版的GameCenter一樣,
可以在後台看到玩家的資料並針對單一玩家進行封鎖!


最棒的是,
成就系統的部份也直接做到了可以分析哪些成就有哪些玩家已經解開了,






並且各個成就各玩家花了多少時間解開,
各成就解開的玩家人數,
各成就平均解除的時間,
等等細部的資料都有設計欄位顯示.
這部份是GameCenter還沒有做到的功能,
個人覺得這真的是很棒的一個功能,
可以透過這個項目去達成成就設計的另一個隱藏的目的,
進一步的分析玩家玩自己的遊戲時的一些數值.
這個後台功能我覺得apple也非常可能在之後的改版加入

最後就是amazon的商業模式規劃的也很棒,
有用過apple的後台就知道它的報表是很陽春的,
amazon除了後台報表很清楚詳細外
(我覺得比appAnnie還細...)
這部份apple的後台報表是完全比不上,

在行銷上也有為開發者額外下功夫,
像一般常見的降價促銷手段,



在亞馬遜的後台則是還可以命一個活動名稱,
比如我就取一個叫做"亞馬遜上架限時優惠"50% off的名稱
這樣是不是比單純的直接訂價變更更有吸引力呢:)

結論,
飛吧!企鵝目前終於在iOS跟Android以及amazon全平台都上架完成了,
個人目前主流全部的開發者後台都實際使用過的感想是,

原本個人偏好是
iTunes > amazon > googlePlay
實際跑完一遍amazon的上架並熟悉後台欄位及動線設計後變成
amazon >  iTunes > googlePlay

當然iTunes的開發者後台已經很好用了,
但是使用過amazon的之後,
真的很難讓人不對它產生好感,
雖然目前它的app以及使用的人數相較iOS及Android來說是非常的少,
但我個人十分看好它未來的成長,
在目前免上架費用的情形下還能透過嚴格的審查方式控管垃圾app的數量實屬不易,
並沒有因為想衝app數量就隨便放行把關
(看看那精美的windows phone)
未來個人的新作品發行平台以及上架順位應該就是以iOS,amazon為主了,


好amazon平台,不上架app作品嗎? :)

23 則留言:

  1. 請讓我叫大師你一聲師傅!
    請問我可以問問師傅一些關於用遊戲開發的問題嗎?
    我對遊戲開發很感興趣,但還是個未入門的遊戲開發者。
    目前正嘗試使用gamesalad來開發遊戲。
    雖然我會製作遊戲的概念,但是我就是不知道該怎麼實現出來我要的效果...
    可以的話 請問可以用fb來談談嗎?
    這是我的fb帳號:https://www.facebook.com/xinyin.hun
    拜託了師傅!m(_ _)m

    回覆刪除
    回覆
    1. 請叫我Kira就可以了,

      如果完全還沒開始製作遊戲的話,
      gamesalad是蠻適合當作入門的2D開發工具的,

      有任何問題歡迎提出來一起討論.
      遊戲開發相關的討論請盡量使用部落格留言的方式,
      之後要查詢或觀看也比較方便.

      刪除
  2. 好吧Kira前輩!
    目前我正在進修電腦程序設計,也曾經用java製造出一些不起眼的簡單遊戲。
    前幾天在網絡找到了gamesalad,就試試下載來使用看看。
    看完了教學也成功製作出了基本的射擊類遊戲,但我還是有很多東西無法實現出來。
    比如說:
    1. 我已創造出了一個叫做spawner的actor,這個actor能夠從畫面的最右方發射子彈到最左方。但是我想要讓這actor隨機在1秒到3秒間發射子彈。
    跟據邏輯:
    Timer
    -every (random(1,3)) seconds xRun to completion
    --Spawn Actor
    ---spawn actor:(missile) place:(infront of actor)
    in the direction:(0) relative to:(actor)
    from position:(0, 0) relative to:(actor)
    結果:雖然能夠發射子彈,但是不能隨機發射子彈orz...

    2. 我想讓火箭轉向玩家然後再向著玩家的方向前進但不追踪玩家。
    實驗:失敗,但能夠短時間轉向玩家但如果玩家禁止不動後再移動後火箭就不再轉動了。

    3. 雖然知道懂無限背景重複的邏輯,但是完全找不到可以用來實現出來的功能orz...

    在gamesalad裡,我最有信心的只有behaviour裡的change attribute,attribute,spawn actor罷了orz

    希望Kira前輩能夠伸出那神聖的援手m(_ _)m

    回覆刪除
    回覆
    1. 1.看起來感覺沒有問題,我想既然能發射子彈表示spawn function應該有被執行,
      我猜是不是時間間隔太短才沒有random的感覺?

      2.的話聽起來用Constrain Attribute感覺比較好做.

      3.背景循環的話我知道的最簡單的做法就是當背景圖片超過某個位置,就把它移回它的初始位置.

      刪除
    2. >>1.看起來感覺沒有問題,我想既然能發射子彈表示spawn function應該有被執行,
      我猜是不是時間間隔太短才沒有random的感覺?

      一和三秒間的差別很明顯不是嗎?w
      可能我解釋得不夠明顯吧?就打個比如吧,現在照理來說每顆子彈會在1秒至3秒間自動發射,但是我的實驗結果是子彈只會在每1秒/每2秒/每3秒發射,換句話說它只能自動設定一次時間(比如說1秒),接下來的全部子彈就變成每1秒發射子彈。

      >>2.的話聽起來用Constrain Attribute感覺比較好做.

      雖然我已經用過constrain attribute來做實驗,出來的結果是導彈,但是現在好像有點頭緒了。等下再實驗看看。

      >>3.背景循環的話我知道的最簡單的做法就是當背景圖片超過某個位置,就把它移回它的初始位置.

      這好像是要用到Loop了吧?

      我昨天發現了這點,gamesalad裡完全沒有while-loop, for-loop, break 等功能,這就意味著我學過的這些looping技能不太能夠運用在這裡呢。
      但是依我了解,Looping也是一個遊戲裡的基本技能。
      請問Kira前輩是怎麼解決這個問題呢?

      刪除
    3. 1.的確,我剛剛特地打開來試了一下,
      直接把random設在timer裡會變成你說的情形,
      我有在外面放了一個文字測試監看random數字,
      數字確實有在變,但只有第一次會亂數,
      第2次開始就固定了.

      我想到一個變通的做法,
      雖然這樣程式碼比較不漂亮,
      但出來的效果應該是你想要的,
      我先在外面做一個全域變數叫ramdomNumber,初始值1,
      然後放一組timer每秒去改變這個ramdomNumber,

      接著是用三組rule,
      分別是
      -------
      if attribute ramdomNumber = 1{
      every (1) seconds{Spawn Actor}
      }
      if attribute ramdomNumber = 2{
      every (2) seconds{Spawn Actor}
      }
      if attribute ramdomNumber = 3{
      every (3) seconds{Spawn Actor}
      }
      等於是定三組標籤,亂數去跑三種發射子彈的行為.

      2.實驗出來請分享一下心得:)

      3.looping我沒用過,
      gamesalad裡我也是用change attribute背景圖片超過某個位置,就把它移回它的初始位置,如果需要多重捲軸的話就疊2~3層讓它每層的速度不同.

      刪除
    4. 1.
      我參考了kira前輩的方法來做了實驗:
      spawner
      Rule{
      While All of the following are happening
      If (game.a) = 1
      do
      Timer
      -After(1) seconds (x)Run to completion
      spawn actor
      -spawn actor:(missile) place: (in front of actor)
      in the direction:(0) relative to:(actor)
      from position:(0),(0) relative to:(actor)
      }

      Rule{
      While All of the following are happening
      If (game.a) = 2
      do
      Timer
      -After(2) seconds (x)Run to completion
      spawn actor
      -spawn actor:(missile) place: (in front of actor)
      in the direction:(0) relative to:(actor)
      from position:(0),(0) relative to:(actor)
      }

      Rule{
      While All of the following are happening
      If (game.a) = 3
      do
      Timer
      -After(3) seconds (x)Run to completion
      spawn actor
      -spawn actor:(missile) place: (in front of actor)
      in the direction:(0) relative to:(actor)
      from position:(0),(0) relative to:(actor)
      }
      結果:子彈已經能夠在1至3秒間隨機發射了,但是有個很奇怪的問題,有時候spawner會突然中斷,不再發射子彈了...

      2. 火箭筒雖然已經能夠在固定的位置朝向玩家,但那個火箭筒竟然用後端朝向玩家orz...
      我先在玩家的actor裡設定了兩個constrain attribute來跟踪玩家的位置。
      然後在火箭筒裡設定了:
      Rotate To Position{
      rotate to position:(game.PlayerX), (game.PlayerY)
      rotate to angle:(0)
      at a speed of:(90) relative to:(scene) (x)run to completion (o)stops on destination}
      即使我把rotate to angle 設定為 180. 結果也是用火箭筒的屁股向著玩家w
      還有就是從火箭筒裡發射火箭的問題,
      我想讓火箭筒朝向玩家後,火箭筒裡的火箭就會往玩家的方向前進,但不追踪玩家。
      假如在火箭的actor裡設定:
      accelerate toward{
      accelerate towards the point:(game.PlayerX),(game.PlayerY)
      relative to: (scene) with acceleration:(100)}
      ,就真的成為導彈了
      如果用move to的話就會變成冤魂不散的必中導彈了w

      上面兩個問題也請kira前輩多多指教了m(_ _)m

      題外話:
      請問前輩也會繪畫和音樂製作嗎?還是有朋友幫忙呢?
      我知道現在才發現到我不太會畫畫的說三( / w\)
      但我會自己上網學繪畫,成為一個遊戲製作的獨行俠www
      (其實身邊沒有一個對遊戲製作有興趣的朋友orz)

      刪除
    5. 我會畫圖(我是art出身),
      略懂一點點音樂剪接的皮毛
      圖像都是自己繪製,
      音樂的話除了購買,就是尋找網路上願意讓人免費使用的,
      再自己剪接變化出想要的效果,

      我覺得未來一定會愈來愈多自己solo創作的遊戲開發者,
      就像創作小說跟漫畫一樣,

      沒有人不會畫圖的,
      大家小時候不都畫的很開心嗎:)

      不會畫主流遊戲需要用到的圖像的話,
      我認為就必須避重就輕的選擇適合自己的風格,
      像"策馬入山林"的開發者也是程式出身的
      自己慢慢用pixel art點出遊戲需要的圖像素材,
      這風格也很棒!

      沒有人是不會畫圖的,
      只是在技能不夠熟練的情形下,
      最好先挑選適合自己能掌握及發揮的風格比較好^^

      刪除
  3. 1。您好,我又有問題想請教一下了,您在遊戲中所用的循環背景,請問是要如何在gamesalad中組合出來?這循環背景原理我是懂,第一張背景圖向左跑出畫面後,再把它位置改回畫面最右邊從新向左跑進畫面不斷循環,,但我就是設定不出來,每次背景第一次跑出畫面後,就沒有後續了,,謝謝。

    2。如果要做橫向捲袖遊戲,要在關卡中某個定點出現一個敵人(一開始時在畫面外看不到),當它一出現在畫面時,看到主角,便會向主角衝過來,要做出這樣的效果,是否邏輯是,這敵人放置于畫面外,然後需設定成跟著背景一起移動,當敵人跟背景一起捲軸進入畫面後,再去給它一個跟主角所在的X軸的相對位置判斷,小於多少就會向主角的方向衝過來,,請問這樣邏輯是否正確??

    哈,辛苦您了。

    回覆刪除
    回覆
    1. 這陣子家裡換傢俱,
      加上公司好忙,
      我快2個星期沒有辦法在家裡用電腦,
      不要說做遊戲,
      連玩遊戲,甚至是掌機或ipad都沒辦法^^"

      現在也仍然是一團亂的情形,
      看了一下時間隔了一個星期,
      不知道你做出來了沒?

      你的邏輯看起來都是對的)

      刪除
    2. 今年也請多多指教一起開發好玩的遊戲吧:)

      刪除
  4. 你好,不好意思想要請問一下關於在amazon上架的一些問題

    1. 可以直接把apk丟上amazon就可以上架了嗎? (amazon首頁一進去就叫我把apk丟過去test)
    2. 有辦法把app從eclipse罐到amazon kindle fire上面嗎?
    3. amazon本身提供的sdk有什麼功用呢?
    4. 有人說要上架到amazon store需要先使用他們的sdk編譯過?

    不好意思,因為對amazon store完全不熟悉,如果問的問題有錯誤還請多包涵
    感謝回答~~‘

    回覆刪除
    回覆
    1. 最近事情真的多到我恨不得自己會影分身,
      回覆的慢了一點還請見諒,

      基本上amazon的app有分"兩種"
      一種是android,一種是有對應amazon kindle專屬os的,
      如果只是要上架"amazon的android"的話就跟google Play的一樣,
      你可以在google Play一份,amazon一份,兩邊都上架不衝突.
      如果是要做amazon kindle專屬的app的話,
      就要使用到它的sdk提供的功能了,
      這個就等於是amazon自己的平台.

      所以你的4個問題其實是連動相關的,
      簡單來說就是amazon有兩個商城平台.

      eclipse的話我沒用過,這次測試我是直接用mac的終端機敲指令裝上測試機^^"

      刪除
    2. 補充一下,
      amazon本身提供的sdk,
      我知道的功能有,
      1.類似iOS gamecenter的官方排行榜以及成就功能.
      2.amazon的官方iap功能.
      3.嵌入廣告
      因為我的"飛吧企鵝"是付費遊戲
      沒有內置廣告,
      所以目前我只有用到1跟2.

      刪除
  5. 還有上架到amazon store需要注意什麼東西嗎?
    感謝

    回覆刪除
    回覆
    1. 同上個問題,
      如果只是要上amazon的android平台,而不是kindle OS專屬平台的話,
      就直接把android googlePlay的apk丟過去就可以了,

      刪除
    2. 不好意思在請問一下 "amazon的android平台" 和 "kindle OS專屬平台" 差別在哪裡?
      我有一台amazon kindle fire HD
      請問這兩個商城平台都有包含在裡面嗎?
      例如我點了 平板裡的 應用->app store 這個是屬於哪一種呢
      感謝~

      刪除
    3. 事實上我並沒有kindle fire HD,
      我是透過amazon後台看到並認識它們的差異,
      據我瞭解kindle fire HD裡的app store應該是kindle OS專屬商城平台.
      如果有錯也請指正^^"

      "amazon的android平台" 和 "kindle OS專屬平台"
      -------------------------------------
      "amazon的android平台"
      amazon有支援一般android手機安裝用的app store
      http://www.amazon.com/gp/mas/get/android

      -------------------------------------
      "kindle OS專屬平台"
      解析度必須對應amazon kindle全系列裝置,
      並且有使用到任一個amazon官方sdk.

      amazon的產品在台灣並未上市,
      但托對岸的福,
      amazon的後台有中文可以切換,
      (不過有些翻譯真的是看了反而會誤解,後來我還是又切回英文了^^")
      不過即使如此,
      因為在台灣實在算是相對冷門的平台,
      所以一開始我也看的頭昏眼花的,
      我再找時間把這些問與答紀錄起來開一篇新文章好了,
      自己久了也容易忘,之後查詢也比較方便
      感謝提問^^

      刪除
    4. 打完又想到補充的...

      以我的飛吧企鵝為例,
      amazon的android平台的版本,
      是沒有對應排行榜,成就,以及iap功能,
      (跟googlePlay用同一隻apk,只差在裡面的logo有android的部份換成amazon的)

      ------------------------------
      amzaon kindle OS平台的版本
      基本上跟iOS的一樣
      有支援成就系統,並且會紀錄玩家的成績上傳到amazon GameCircle,
      然後一樣有iap內購.
      然後解析度的部份是對應全部的amazon裝置解析度,全都做到滿版無黑邊.

      刪除
  6. 你好,所以如果我都沒有使用到amazon api的功能的話,我應該就可以用同一個apk上架就可以了嗎?(例如我的功能只有一個Activity裡面寫hello world)

    回覆刪除
    回覆
    1. 是的,
      但是不確定只有hello world是不是能上的了架,
      就算你只是想測試上架,
      因為amazon app store跟iOS一樣,是有審查人員的,
      不像googlePlay自己一丟就立刻能上架:)

      刪除
  7. 嗯嗯感謝你耐心的回覆~ 大致上了解了

    回覆刪除