搜尋文章

2013年4月26日 星期五

Starling-用setTexCoords-製做無接縫延伸背景圖

在上一篇Starling-用setTexCoords-裁切圖片中有講到了一些UV坐標的概念

這次要繼續使用Image的setTexCoords的方法來產生無接縫延伸背景圖

這邊先分享一個線上製做無接縫圖片的地方


這邊有很多現成的素材可以下載,另外也可以利用他線上的編輯器去編輯

素材的顏色等等 . . .

之後就可以下載png圖檔下來,下載png是不用付費的,功能很簡單應該

就不用再另外教學了,隨便摸一摸應該就會了

無接縫的素材做好了後就可以把素材Embed到程式了

不過我這邊先不用無接縫的素材,因為如果用了就看不出來到底拼接了幾個出來了

為了好了解我這邊還是先用上個範例的鳥~

程式碼如下



//原圖為256*256,因為要讓圖片小一點所以設置作後一個參數2,使圖片縮小為原尺寸的1/2,BirdClass為Embed的圖片Class
var birdTexure:Texture = Texture.fromBitmap(new BirdClass(), true, false, 2);
//設置Texture為重複
birdTex.repeat = true;
var birdBackground:Image = new Image(birdTex);
//把Image的寬和高設置為跟螢幕一樣大
birdBackground.width = this.stage.stageWidth;
birdBackground.height = this.stage.stageHeight;
//橫向重複數量
var horizontalSize:int = 8;
//直向重複數量
var verticalSize:int = 8

birdBackground.setTexCoords(1, new Point(horizontalSize, 0));
birdBackground.setTexCoords(2, new Point(0, verticalSize));
birdBackground.setTexCoords(3, new Point(horizontalSize, verticalSize));
addChild(birdBackground);

這邊其實我也不是很懂其原理,只知道這樣做可以達到無接縫拼貼的效果

當然每個位置的的值也不一定要像我上面寫的一樣,自己可以隨便填個值看看效果

也許會產生出很奇特的形狀貼圖

Starling-用setTexCoords-裁切圖片

在starling的教學範例Hungry Hero裡,遊戲下方的街景以及遊戲背景的滾動方式是用

兩張圖片不斷的輪流交替來產生背景滾動的效果,不過要滾動背景的話其實還有

另一種方式是改變圖片的頂點位置以及紋理的UV坐標,在starling中預設的DisplayObject

都是四邊形,圖形的UV作標點分別為下圖所示

0  ─ ─ ─ 1
│            │
│            │
│            │
2  ─ ─ ─ 3

設置頂點位置以及紋理的UV坐標可以達到許多效果,例如上述所說的滾動視圖達到

橫向捲軸遊戲裡的無限延伸背景的效果,另外也可以拿來作裁切圖片和無接縫圖片的

背景延伸等等等 . . . .下面就來示範一下怎麼分別達成這些效果

1.裁切圖片
下面這邊有一張圖


















如果要裁切這張圖片的右下角1/4的圖的話要怎麼做呢?

我們可以用Image裡的setTexCoords方法裁切


var image:Image = new Image(texture);
addChild(image);
var point:Point = new Point();

//第一個點
point.x = 0.5;
point.y = 0.5;
image.setTexCoords(0, point);

//第二個點
point.x = 1;
point.y = 0.5;
image.setTexCoords(1, point);

//第三個點
point.x = 0.5;
point.y = 1;
image.setTexCoords(2, point);

//第四個點
point.x =1;
point.y = 1;
image.setTexCoords(3, point);

解釋一下上面程式碼的意思

假設圖片的四邊長分別都為1

那要裁切圖片的1/4右下角的話

第一個點當然是圖片的正中心拉

假設圖片的四邊長分別都為1

最左上角坐標為(0,0),右上角坐標為(1,0),左下角坐標為(0,1),右下角坐標為(1,1),


那要裁切圖片的1/4右下角的話第一個點當然是圖片的正中心拉


所以會看到第一個點是設在(0.5,0.5)的位置上,第二個點就會在(1,0.5)


以此類推就會推出上面所設的座標位置拉


裁切出來之後你應該會發現裁切出來的部分被放大成原圖片的大小,以上圖為例

圖片為256*256裁切出來的右下角應該要是128*128,可是卻被放大為256*256了

因此會變得有點模糊,所以如果要裁切後不被放大的話就手動把圖片縮回來就好了

image.width = image.width >> 1;
image.height = image.height >> 1;

//
設置

2013年4月16日 星期二

new google developer console upload expansion files(新版google play上傳擴充檔)

今天上 developer console 要幫已經上傳的apk附加擴充檔(expansion files)

發現上傳完apk之後,完全沒有可以選擇上傳擴充檔的地方

然後連返回舊版google play的按鈕都消失了是哪招?!

所以之後又找了股溝大神,找了很多文章很多人都說上傳完apk後

可以看到下面的畫面


問題是我上傳之後都沒看到阿 ! ! !

之後又繼續找資料發現google android developer 的 using APK expansion file有寫解決方法

不過我看了中、英還是看了霧煞煞最後是看日文的才看懂

中文:
注意:由於 Google Play 開發人員控制台目前的限制,在上傳新的應用程式後,您無法將額外的擴充程式檔新增到其所上傳的第一個 APK 檔案。做為替代方法,請先上傳 placeholder APK 檔案,然後以包含所需額外擴充程式檔的 APK 檔案取而代之您可以在應用程式處於草稿狀態時進行以上所有操作,這樣就不會影響到現有和未來的使用者

英文:
NOTE: due to a current limitation of the new Google Play Developer Console, you won't be able to add additional expansion files to the very first APK file that you upload for a new application. As a work-around, please upload first a placeholder APK file and then replace it with an APK file containing the additional expansion files you needAll of this can be performed while the application is still in draft state, so there is no impact on your (prospective) users.

日文:
: 現在のところ、新しい Google Play デベロッパー コンソールの制限により、新しいアプリをアップロードする最初の APK ファイルに拡張ファイルを追加することはできません。この問題を回避するには、まず APK ファイルのみをアップロードし、必要に応じて拡張ファイルを追加した APK ファイルで置き換えてくださいこれらの操作は下書き状態の APK でも行えますので、既存ユーザーや潜在ユーザーに影響が及ぶことはありません

發現中文跟英文當是講請先上傳 placeholder APK 檔案,靠 !誰知道placeholde apk是什麼鬼

東西阿 ! 

還有中日的這句話好像都有點問題

然後以包含所需額外擴充程式檔的 APK 檔案取而代之

拡張ファイルを追加した APK ファイルで置き換えてください

意思好像就是要你上傳把擴充檔加入需要上傳的apk裡面然後在上傳,可是事實好像不是這樣

但日文還是寫得比較容易懂,日文就是寫說請先上傳你的apk檔案,之後在置換成需要

加入擴充檔的apk。

所以結論就是你同一個apk上傳兩次,上傳第二次完成時就可以選擇是否要加入擴充檔

的選項了,如果apk檔很大的話也可以先上傳隨便一個小的apk之後再重新上傳真正要

上傳的檔案就可以了 !

結論:還是要幹ㄍㄧㄠˇ一下中文的說明寫的又夠爛,拜託可以白話一點嗎?!

2013年4月3日 星期三

unity3d 執行檔在光碟上運行錯誤

之前發佈unity執行檔時當是在本機運行,後來把執行檔燒入在光碟執行後

就發現遊戲一開啟就死當,然後強制關閉,拜見股溝大神後,發現應該是log檔的問題

在unity player設定有個選項是 use player log,把勾勾選起來的話就是在程式裡有寫

Debug.log的地方,他就會幫你再data資料夾裡開一個logout.txt的文字檔,然後把log資訊

寫進去,但因為是在光碟上執行所以他沒辦法寫檔所以就死當拉 !

解決方法有兩個,一個當然就是在包執行檔的時候在player setting那邊把use player log

給取消掉,另一個方法就是透過另一個檔案去開那個執行檔並且在後面加上 -nolog的

屬性,看是要用bat還是捷徑還是另外寫開檔的執行檔都可以,就是像這樣

text.exe -nolog

這邊順便再另外提一個東西是unity的全螢幕是改變螢幕解析度的作法

不過這種作法UI會被拉撐,如果不想被拉撐的話一樣可以用視窗模式

然後在開檔的屬性後面加上 -popupwindow就好

2013年4月2日 星期二

Shellrazer 付費內容的設計精神





作者一開始以他過去玩另一款遊戲Battleheart的經驗為例。Shane指出他非常非常喜歡這款遊戲,然而在最後打大魔王時卻不論怎麼打 都打不過。經過一段嘗試之後,Shane理解到以他在遊戲中所組的隊伍是無法擊敗魔王的,因此Shane只好回頭去"練功"升等,但是卻在這個過程中失去 了對遊戲的興趣...
Shellrazer的遊戲流程是遵照經典的RPG Loop: 戰鬥->獎勵->升級。但即便是遵循傳統模式,在設計上依然有許多需要花心思的地方,特別是針對不同的玩家必須要有不同的獎勵方式來鼓勵他們繼續玩下去。Shane則是根據玩家的強項將其區分為三類:技巧(Skill)時間(Time)金錢(Money)
1.技巧型玩家
技巧型玩家追求的是遊戲技巧的卓越,因此設計時要確定遊戲內容有足夠的深度。而所謂的技巧又可分為兩種:操作知識
操作技巧指 的是在遊戲中靈活地操作及熟練地下達各種指令。在Shellrazer中,玩家的烏龜上可以裝備許多個不同的武器,而要同時一一操作這些各自有不同特性的 武器是很需要技術的。此外,Shellrazer中還提供了兩種不同的控制模式讓玩家選擇(單指操作或雙指操作),由於這兩種模式各有優點,因此高手會根 據戰況在此二模式之間切換。以上種種都讓追求操作技巧及手速的玩家們有了奮鬥的目標。
知識指 的是透過對遊戲細節的理解來幫助破關。在Shellrazer中,武器和敵人之間有著如剪刀石頭布的相剋關係,而且根據敵人行動方式的不同也有相因應的武 器,比方說從空中來襲的敵人就適合用對空武器攻擊。因此,對遊戲內容理解程度越高的玩家,越懂得妥善運用金幣來購買最適當的武器。而遊戲中也會獎勵玩家花 費心思及時間來學習遊戲的內容:越了解遊戲的玩家越容易打出高Combo,而高Combo則會帶給玩家更多的金幣作為獎勵。
2.時間型玩家
時間型玩家,顧名思義即為花費許多時間在遊戲上,但不一定具有高超技巧的玩家。因此,為了照顧時間型玩家,必須要確保遊戲在經過長時間遊玩後依然能保持新鮮感及可玩性,同時也要確保遊戲不會"卡關"。
在Shellrazer中,對時間型玩家的照顧主要有下列四點:
  1. 關卡中的敵人是由程式隨機生成,因此每次玩的時候都會有些許不同,藉此確保新鮮感。
  2. 不採用social games中常見的能量系統(Energy),因此玩家每次想玩多久就能玩多久。
  3. 採用類似D&D的升級曲線。越高等級所需的升級經驗越多。參考
  4. 每次玩家打完一關,不論是否成功過關,均給予金幣獎勵(成功過關可另外獲得獎勵物品)。因此即便是技巧不足的玩家,只要花費足夠的時間進行遊戲,最終依然能購得強力的裝備來破關。
3.金錢型玩家
金錢型玩家可說是開發者的衣食父母,他們願意掏出信用卡來幫助自己破關。但是對金錢型玩家的照顧絕非只是設計各種要付費購買的強力武器或道具這麼膚淺。
在Shellrazer中,玩家並不直接用錢來購買武器,而是用錢購買遊戲金幣或是增加自己在遊戲中賺取金幣的速度。也就是說,金錢型玩家並不能夠透過花錢來取得別的玩家無法取得的物品,而是透過花錢來縮短他們取得物品所需要的時間。
此外,在設計Shellrazer中的付費內容時,最核心的宗旨則是尊重
許多開發者將金錢型玩家稱為鯨魚(Whale),意指肥美的獵物。而Shane對此表示不以為然。他認為當你將玩家視做獵物時,你心底其實是將他們當作笨蛋(fool),而難道我們要為笨蛋們做遊戲嗎?這顯然是不正確的。開發者必須尊重玩家,玩家才會尊重你及你的遊戲。
反 映在具體做法上,Shellrazer只有在玩家的金幣用罄時才會彈出讓玩家付費的推銷視窗,除此之外,Shellrazer也堅決不在UI上使手段誘使 玩家在不經意的情況下付錢。Shane同時也指出,他認定Shellrazer大約是$50美金的價值,因此只要玩家花了$50美金之後,基本上就能取得 遊戲中的所有內容,如果玩家花了超過$50,那多出的部分可以說是純粹樂捐給開發者。一但開發者心中有了這條底線,便不會為了追求所謂的"長尾" (Long Tail)而設計出貴而無當的付費內容。
Shellrazer的付費內容可說是相當有成效:約8%的玩家有購買付費內容,而約有30%的總收入是來自付費內容。
資料來源:CH Huang

Flash Professional CS6 透過USB 連接iOS 安裝發佈

在Flash Professional CS6 版本12.0.2.529 中

我們可以透過USB 連接iOS 裝置進行實機測試

在Windows 或MAC OS X 平台兩者皆可

過程無需透過iTunes 或越獄(Jailbreak) 後的iOS 裝置

純粹USB 連接,十分方便

(p.s:如果是用windows的flash發佈的話要先安裝windows版的iTunes)

以下是更新Flash Professional CS6 和連接iOS 發佈方法:
  1. 在官方下載最新Flash Professional CS6 更新:
  2. 安裝完成後, 在Help -> Aboout Adobe Flash Professional 看到新版本編號 (12.0.2.529).
  3. 下載Adobe AIR SDK, 然後設定路徑. (設定方法請參考)
  4. 開啟一個AIR for iOS  新專案.
  5. 設定發佈對象為AIR 3.4 for iOS 或以上版本.
  6. AIR for iOS Settings -> Deployment 中, 選擇以USB 連接iOS 裝置進行實機測試.
    (Install application on the connected iOS device)
注意事項:
若曾經修改host 檔案, 在更新過程會發生錯誤訊息, 請把host 檔案暫時回復, 待更新完成後才可修改.
(host 檔案路徑: C:\Windows\System32\drivers\etc\host)
低調 . . . .

在發佈的過程我自己有遇到 application verification failed ,然後錯誤訊息是寫說請確認裝置容量足夠

Device Error: Please check if there is enough free space on the device 

上網股溝了一下發現也有人遇到同樣的問題,簡單來說就是appid打錯了,不過不知道他為什麼

要報這個跟問題一點都沒關係的error,這是解決方法

不過我的情況有點不一樣因為我是用window的flash開發的,沒有ios的p12檔跟

mobilprovision,然後我又是上網下載之前某個好心的外國人上傳的fake p12檔

但就會一直出現上面的錯誤訊息,到最後請有app開發帳號的同事幫我發佈

一個p12檔跟mobilprovision才成功的

要如何用mac產生這兩個檔下面的連結有還蠻詳細的解說



另外如果有遇到找不到IOS裝置的情況的話,也有解決方法