星之一角

What have you found for these years?

2014-03-01

最近完全迷上 Infinity Wars

日前 Plumm 跟我講了一些 Infinity Wars 的心得,聽了聽覺得滿有趣的,就想試試看。
雖然官方網站有 Mac 版可以下載,但下載下來執行卻說需要 java 1.6 (我電腦上是裝 1.7),
就決定還是到 Windows 上玩好了。後來因為覺得很好玩,所以想說要舊版的舊版,我裝!
結果裝起來還是不能跑,一執行就當掉,看了看 Console.app 也不知所以然,好像有什麼
AWT 的錯誤,反正就跑不起來... :(

宣稱有 Mac 版都是假的啦,我真的能玩的根本就沒幾個 :(
聽 tka 說他後來都不相信 Linux 版,想來我大概也不該信 Mac 版吧...
總之後來就只好都用 Windows 玩,這篇也是在 Windows 上寫的。

另一方面,我後來才意識到其實還滿久以前,一兩年前時 Plumm 其實就已經給我看過這個
遊戲了。這是他們當時在 Kickstarter 上的計畫:

Infinity Wars - *Animated* Trading Card Game

這個 *Animated* 確實是個讓人印象深刻的特色。我遊戲打了一段時間,因為還沒完全
下載完就進遊戲去玩,結果沒意識到其實他的卡片應該是會動的。後來多下載一段時間,
開始有一些卡片有動畫,我就感到有點困惑,我以為是稀有牌才會動,怎麼會動的規律有點
微妙?查回他們 Kickstarter 的計畫時,才發覺其實每一張都應該要會動,只是我沒
下載完!

然後也想起來,Plumm 傳給我看過超多 Kickstarter 上的遊戲,多到後來我都懶得細看了,
這個當時應該也只是瞥過去,然後覺得動畫不是重點,就說沒什麼特別的興趣。現在想想真是
超可惜的呀! XD 動畫確實不是重點,重點是這個遊戲我覺得可以說是把
Magic: the Gathering 改良到很適合在電腦上玩,而我在找 Magic 的替代品已經很久了。


* * *


簡單地說,Magic 對我來說的問題在於:

* 在電腦上玩時,節奏很不理想。這主要是因為 Magic 的 Instant 的設計,每一個行動
玩家都可以回應。在現實世界裡,大家隨時可以請對方等一下。這在電腦上不是很容易設計,
主動等待的話節奏會差到不行,被動等待也許變成玩家可以按某個鍵請對方等一下,每次喊
暫停可以有幾秒鐘的考慮時間,諸如此類的。這也許不太容易避免惡意亂搞的玩家...

* 紙本的 Magic 雖然不便宜,但我還可以接受這個價碼。電子版的 Magic Online 的價錢,
就我所知跟紙本的基本上是一樣的。多年後我有再查了一下,目前狀況應該也是一樣的。也就是說,
我想在 Magic Online 上抽一包牌,價錢跟買一包實際的 booster pack 是一樣的。最多
就是可能參加活動可以取得一些 booster packs, 那跟現實其實也是一樣。紙本我還摸得到,
數位這個價碼我實在不太能接受。歷年來牌一大堆,要買也不知道要買多少...

大概就這兩點。很顯然大部分電腦上的卡牌遊戲都沒有以上兩點問題,但是最重要的遊戲本身
好不好玩?卻總覺得沒看到可以相提並論的。之前打了一會 Hearthstone, 剛開始還滿有趣的,
但很快就覺得沒什麼新鮮感,遊戲也不是很平衡,就失去興趣了。我覺得 Hearthstone 的幾個
缺點大致是:

* 組牌變化性過低。每個職業只能用自己的職業牌,加上一些中立牌。立意沒什麼不好,但是選擇
真的很少。首先是牌數太少,再加上不太平衡,導致有幾張牌等於是只要用那個職業,理所當然要
挑那幾張牌。尤其有些 Legendary 牌根本強到太過火了。最後再加上中立牌居然只有「生物」,
以致於所有的魔法都取決於職業。

* 再來就是平衡性真的太差。當然這跟變化性有關,平衡性差等於會打擊牌組的可能性。打好玩的
當然是可以,可是要打比較強選擇大概就那些。


* * *


回到 Infinity Wars, 他的遊戲模式跟 Magic 其實非常接近,有些甚至連名詞都一樣。舉些
例子大概是:

* 區分 graveyard 和 remove from the game 的概念
* summoning sickness 與 tap 在 Infinity Wars 是 exhausted/exhaust
* creature 在 Infinity Wars 是 character
* artifact 與 artificial character
* sacrifice!
* Flying, Haste 是相同的。Trample 類似 Unstoppable,
Vigilance 意思接近但不一樣,另外多了 Charge. Bloodthrist 意思不太一樣,
Madness 是 Exile, 等等...

可參考 glossary

與 Magic 最大的不同點在於:

* 每回合增加一個資源上限,取代地牌。這點和 Hearthstone 一樣,
資源也沒有顏色,不會卡地也不會卡色。
* 雙方同時進行行動,但雙方都回合結束時,才開始輪流結算。猜對對手
行動的話,會非常有利。原本無效的攻擊可以變有效,反之亦然。
* 牌如果抽完了,不會輸!我覺得應該要做點什麼,現在這樣使得我不覺得
有牌組需要編超過 40 張,畢竟抽完了也不會怎麼樣,也不太有機會抽完。
* 多了 morale 這個血條。不過除了 Descendants of the Dragon
以外,其他 Faction 不太打 morale... 這個未來可能要做點什麼。
* 戰鬥直接宣告哪些要攻擊,哪些要防守,以順序來結算,所以順序很重要。

其他大抵上我覺得都很接近。特別需要說明的可能則是 commander 的部分,
除了結算流程不同外,這點可能是跟 Magic 差最多的部分。最重要的是,
commander 會影響可組的牌種。


* * *


Infinity Wars 的牌組都要帶三個 commanders, 而 commander 可以
是任何生物牌。每張牌除了 Factionless 的牌外,左上角都會有 Faction 的圖示。
比方說如果 A 牌左上角有二個 F 的圖示,則如果想要帶 A 牌上場,就必須至少帶
兩個 F 的指揮官上場。所以可以想像成,如果我要組多色的牌組,就不能用比較純粹的
某 Faction 牌。

這遊戲也有個傾向是,當某張牌有愈多 Faction 圖示的話,他的強度會愈高。
比方說有張 Factionless 的牌是 Assassinate, 消耗六點,效果是殺死
場上任何一個角色,同時自己的資源上限減少二。但是 Cult of Verore 有一張
Annihilate 則是只要消耗四點,做一樣的事情,而且不用減少自己的資源上限!

這強弱根本一目瞭然呀 XD 只是 Annihilate 有三個 Cult of Verore 的
圖示,也就是說 commander 必須全部攜帶 Cult of Verore 的牌才有辦法攜帶
Annihilate.

也就是說可以想像成,愈純會愈強,但可選擇的變化也會下降。我目前組的牌則是
一個 Cult of Verore 加上兩個 Flame Dawn.

我不是很確定的是,有很少數幾張牌同時是兩個以上的 Faction. 那我選他當
commander 的話,是不是同時可以選那兩個 Faction 的牌?正好有一張
Factionless 的牌是同時算所有的 Faction, 彈性非常大。


* * *


稍微介紹一下七種 Faction, 以字母排序:

* Cult of Verore -- This faction is represented by purple cards;
this faction focuses on powerful, controlling spells that buy
time for late game demon cards.

這遊戲裡有不少 Faction 都比較像是來自 Magic 的黑色牌,Cult of Verore
是其中之一 XD 大抵上就是燒殺然後叫大隻的出來,最符合我的喜好 XD



* Descendants of the Dragon -- This faction is represented by teal
cards. With its defensive play style, the faction boasts defense,
morale destruction and effective alternate win conditions.

Descendants of the Dragon 可能比較像是 Magic 的白色牌,專打 morale.
說實在這可能是我最不喜歡的 Faction, 打起來很龜毛又被動。Plumm 說這個有點像是
Monster Collection 中的藍色。



* Flame Dawn -- Faction represented by red cards; this faction focuses
on speed and early to mid game lethality.

很顯然 Flame Dawn 就像是 Magic 中的紅色牌,專打快攻。不過燒牌不多,反倒是
Cult of Verore 的燒牌比較多。同時這也是剛進遊戲的示範 Faction. 還滿合我
胃口的。光看牌組,我是比較想組 CoV*2 + FD



* Genesis Industries -- Represented by blue cards, this faction focuses
on unity and synergy to create nearly unstoppable forces.

要說 Genesis Industries 比較像 Magic 什麼顏色,我大概會說像是 artifact 吧...
有不少操作 +1/+1 的東西,也有讓生物合併與挖墳的東西。跟 Mirrodin 那系列的 artifact
有點像,也有一些超大的生物,我也還算喜歡。



* Sleepers of Avarrach -- This faction is represented by black and
orange cards. The focus of this faction is based around death,
resurrection and a resilient horde of zombies.

另一個像是 Magic 黑色的 Faction, 像是挖墳系列,在墳墓裡加成等等。我本身是喜歡
挖墳,但是這殭屍基本牌打起來比較像是無腦軍團... 目前可能牌太少,感覺也組不太出
一些有趣的變化。



* The Exiles -- ?

Glossary 裡面居然沒有,可能是最後才加的 Faction, 就沒更新到。其他介紹是:

The Exiles focus on death, sacrifice and anything that disrupts what players
feel is 'normal' when a game is being played. There are discard effects
and synergy that exist alongside sacrifice mechanics.

簡單地說就是最後一個黑色 XD 還把之前 Magic 的 madness 帶進來。好像也是唯一有
跟機率有關的牌的 Faction, 我不是很喜歡。不過是還滿想組組看瘋魔為主題的套牌,
畢竟我沒經歷過 Magic 的那段 XD 另外裡面的惡魔圖都還滿生動噁心的...



* Warpath -- This faction is represented by green cards and focuses on
overwhelming your opponent with brute force in the mid to late game.

標準的 Magic 綠色套牌 XD 一大堆可以互相加成的 Beast, Hearthstone 也有這種的。
我不算不喜歡,不過覺得彈性不是很大。

其他介紹可以看 Factions


* * *


全部的牌可以在這邊找到:Infinity Wars Card Search
目前說真的還滿少的。要怎麼取得牌呢?打 campaign 可以拿到一些牌,升級也可以拿到 booster
pack. 不過從這些地方拿到的牌都是 soulbound, 沒辦法交易。既然號稱是 Trading Card Game,
交易應該也是很重要的一環。不過我不太確定現在要怎麼交易,大家好像在交易頻道上喊,然後再私下
換牌,我目前是這樣猜的。論壇上面有提供卡片參考價值... Hitori's Guide For the New Trader!

可以交易的牌,基本上要用買的,或是 daily reward 的牌好像也是可以交易的。買牌可以透過
兩種點數去買,一種是用澳幣買的,另一種則是在遊戲裡透過打牌可以累積的。打贏玩家一場大約可拿
150 點,一個 booster pack 大概要 5250 點。經驗則是約拿 250 左右?我目前 8 級要 8000
經驗才可以升一級,每生一級可以拿到一包 soulbound 的 booster pack. 用點數買的則可以交易。

主要的取得方式應該就是這樣買吧。另外打 rift run (drafting) 應該也可以取得。不過還需要
入場費,我就沒試了。

雖然他的網頁做得很爛,遊戲本身也一堆毛病,感覺程式寫的都不是很好... 但我還是忍不住買了一些
點數來買牌 XDDDD

目前買了兩組有打對折的 pre-built deck, 但買了之後發現他只給我牌,沒有 deck! 我還要看
卡表來自己把那 pre-built deck 自己弄出來。我知道也許大部分的人買這種 deck 只是為了
裡面的牌,但是我還是想試試看他組的怎麼樣嘛。結果是確實不怎樣,但至少讓我試一次 XD

還剩下不少點數,目前打算都等打對折時再來買 pre-built deck...


* * *


目前跟玩家打過三場。第一場算略勝吧,一開始一如以往被壓著打,後面東西慢慢生出來後就擋得住
對方攻擊,最後磨死對方。對方有幾隻 Verore Death Worshiper 長到 60/60... 但沒有穿透力
打不到我 :o

讓我意外的是,打到後面我只剩 19 張牌時,他居然還有 62 張左右。真不曉得為什麼要組那麼多...
先別說我也沒打到抽完,抽完好像也沒差吧 :o

第二場對方好像是用 starter deck... 一開始我還不是很確定,怕有什麼意外,扣了不少殺牌在
手上,容忍對方攻擊到我只剩 10 滴血(滿血 100)。是打得有點太驚險了點。打完想說原來我不會被
虐殺,所以又再打一場。結果居然碰到同一個人 XDD 這次我想說知道對方沒啥殺招,就亂殺小兵,
結果沒打兩回合他就離線了...

遊戲要我等兩分鐘,如果先離開的話,算平手。如果等完兩分鐘再離開的話,算我贏。等完兩分鐘後也
可以繼續等下去,但我當然就沒等了,對方應該是不想再打直接離開的。我覺得這個機制還算是不錯,
但兩分鐘有點太久了,我覺得一分鐘應該就足夠了。


* * *


有興趣想試試看的人,看起來我的邀請碼是 F4E5B, 就用這組讓我拿點獎勵吧 XDDD
Enter your promo code to receive access to the Infinity Wars BETA!

2014-02-17

Rails + Bower on Heroku

Tested with Rails 3.2.15 and Bower 1.2.8.

First we need both Heroku's NodeJS and Ruby buildpacks,
using a multi-buildpack which could combine buildpacks.
Run this command to enable this multi-buildpack:

heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git

Then we need to create a .buildpacks file to
specify which buildpacks we want to use.

$ cat .buildpacks
https://github.com/heroku/heroku-buildpack-nodejs
https://github.com/heroku/heroku-buildpack-ruby

Next, we need a package.json for Heroku to
install npm dependencies, and run bower install.

$ cat package.json
{
  "name": "example",
  "version": "0.0.1",
  "repository": {
    "type": "git"
  },
  "dependencies": {
    "bower": "*"
  },
  "engines": {
    "node": "0.10.x"
  },
  "scripts": {
    "postinstall": "./node_modules/bower/bin/bower install"
  }
}

Note that repository is for silencing warnings from npm,
and scripts is where we specify how to run bower install.

Here's the bower.json to specify dependencies:
$ cat bower.json
{
  "name": "example",
  "version": "0.0.1",
  "dependencies": {
    "normalize-css": "*",
  },
}

We also need to specify the installation path for bower:
$ cat .bowerrc
{
  "directory": "app/assets/components"
}

We tried to install to this path because it seems Rails is
aware of this path, and people are using it. (Honestly, I don't
yet really understand what's Bower doing, just want to make it work)

Hopefully the last one, telling Rails to precompile assets from Bower.
We need to put this into our config/application.rb:
# Precompile assets from Bower
prefix = "#{Rails.root}/app/assets/components"
config.assets.precompile.push(*Dir["#{prefix}/*"].map{ |path|
  "#{path[/^#{Regexp.escape(prefix)}\/(.*)/, 1]}/*"
})

I don't really understand why we need to do this, but I guess
this is how Rails designed, and I am too tired to argue with this.

That's basically everything we made Rails and Bower work on Heroku.

Example logs from Heroku:
-----> Fetching custom git buildpack... done
-----> Multipack app detected
=====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-nodejs
=====> Detected Framework: Node.js
-----> Requested node range:  0.10.x
-----> Resolved node version: 0.10.25
-----> Downloading and installing node
-----> Restoring node_modules directory from cache
-----> Pruning cached dependencies not specified in package.json
-----> Exporting config vars to environment
-----> Installing dependencies

       > example@0.0.1 postinstall /tmp/build_random-uuid
       > ./node_modules/bower/bin/bower install
[...]
-----> Caching node_modules directory for future builds
-----> Cleaning up node-gyp and npm artifacts
-----> Building runtime environment
=====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-ruby
=====> Detected Framework: Ruby
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.1.0
-----> Installing dependencies using 1.5.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
[...]
       Your bundle is complete!
       Gems in the groups development and test were not installed.
       It was installed into ./vendor/bundle
       Bundle completed (1.29s)
       Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
[...]
-----> WARNINGS:
       Injecting plugin 'rails_log_stdout'
       Injecting plugin 'rails3_serve_static_assets'
       Add 'rails_12factor' gem to your Gemfile to skip plugin injection
       Using release configuration from last framework Ruby:
       ---
       addons:
       - heroku-postgresql:dev
       default_process_types:
         rake: bundle exec rake
         console: bundle exec rails console
         web: bundle exec rails server -p $PORT
         worker: bundle exec rake jobs:work
-----> Discovering process types
       Procfile declares types     -> web, worker
       Default types for Multipack -> console, rake

-----> Compressing... done, 12.93MB
-----> Launching... done, v1293
-----> Deploy hooks scheduled, check output in your logs
       http://example.herokuapp.com deployed to Heroku

To git@heroku.com:example.git
   fee1dead...deadbeef master -> master

All texts are licensed under CC Attribution 3.0