帳必須平:聊聊《國家交通:National Transit》的財務報表

一個交通遊戲,為什麼要有資產負債表?為什麼損益表裡要提列折舊?又為什麼我們會花好幾週,去修一張「明明已經平衡了」的資產負債表?

大多數遊戲把國庫做成一個數字。蓋路,數字變小;收過路費,數字變大。平常這樣沒問題,直到你想問它點什麼。我到底是在賺錢,還是只是花得比較慢?那條高速公路是在自己養活自己,還是在悄悄磨損?一個數字回答不了這些問題,一套帳可以。

所以《國家交通:National Transit》會記帳。打開財務報表,你會看到資產負債表、損益表、年度報表、貸款頁和趨勢圖。它們底下壓著的,是會計入門第一課的那個等式:

資產 = 負債 + 所有者權益

說白了就是:你手上的東西,不是借來的,就是自己的。放到遊戲裡:

  • 你手上的東西:交通基金裡的錢,加上你蓋的每一條路、每一條鐵路、每一座機場、每一條航道現在還值多少。
  • 借來的:貸款還沒還完的部分。
  • 自己的:國家當初投進來的「資本投入」,加上路網這些年累積下來的「留存收益」。

兩邊必須相等。不過光相等還不夠,關鍵在於它們是怎麼相等的。

倒擠數

很多人都自己記過帳。月底一對,帳上差了三百塊,想不起來花到哪去了,那就補一筆「雜項 300」,平了。

會計上把這叫做「倒擠」(plug)。它是最古老的招數,也是最危險的一種:帳確實平了,可是那三百塊到底去哪了,再也沒人知道。錯誤沒有被修好,只是被藏了起來。

《國家交通》的資產負債表,以前就藏著這麼一筆倒擠。所有者權益是這樣算的:

所有者權益 = 總資產 - 總負債

看出問題了嗎?這張表永遠不可能不平,因為權益的定義就是「讓它平的那個數」。經濟系統裡不管出了什麼 bug,都會被這一行悄悄吸收掉,報表還會笑咪咪地告訴你一切正常。

所以我們把它刪了。現在,權益要靠自己的紀錄算出來:

所有者權益 = 資本投入 + 留存收益

錢和資產算一邊,貸款算一邊,投入和賺到的錢再算一邊。三本帳各記各的,最後必須對得起來。對不起來,就代表哪裡記錯了,而且現在我們看得到。

為了確認這一點,我們還特地寫了一個測試:故意餵給報表一套做錯的帳(投入 7,現金 11),看它會不會把差額露出來。測試的註解是這樣寫的:

A deliberately inconsistent probe must expose, not conceal, the mismatch. (一個故意做錯的探針,必須把差額揭露出來,而不是掩蓋它。)

它抓出來的 bug

倒擠數一刪,真正的問題馬上浮了出來:遊戲把還掉的貸款本金,當成了花掉的錢。

想想繳房貸。每個月繳給銀行的錢,一部分是利息,一部分是本金。利息是真的花掉了,本金不是:你還掉一萬,欠銀行的也少了一萬,身家一毛都沒變。

遊戲之前把兩部分都記成了支出。於是每還一次款,國家就在帳上「虧」一筆根本不存在的錢,越還越窮。照理說這張表早就該不平了,可是它一直都是平的,因為倒擠數在背後默默撐著。

現在,貸款在損益表裡只有利息算作費用。還掉的本金另外列在淨收入下面:錢確實從基金裡出去了,但這不是虧損。

兩條底線,絕不相加

假設你買了一台車,打算開很多年。車每年都在貶值,但你一毛錢都沒付;直到某一年大修,一次付一大筆。

如果你每年記一筆貶值,到大修那年再記一筆大修費,這台車的磨損你就算了兩次。

遊戲裡的每條路、每條鐵路、每座機場、每條航道也是這樣,所以它們各自都有兩條底線:扣掉折舊的淨利,和扣掉大修的淨現金流。兩條線永遠不相加,因為它們講的是同一份磨損。程式碼裡寫得很直白:這兩者「deliberately NOT summable into one number」,刻意不能相加。

一條路如果現金流很漂亮、扣掉折舊卻在虧錢,那它遲早會寄給你一張大帳單。兩條線之間的那段差距,就是你該先存起來的錢。

再拿那台車來說,遊戲裡的路大致是這樣記帳的:

  • 買車不算當月的開銷,而是家裡多了一樣值錢的東西。蓋路也一樣,造價記成資產,不會一下子把當月的帳打穿。
  • 車每個月都在貶值,遊戲就每個月記一點折舊。公路、機場、航道分 50 年折舊完,鐵路分 80 年。如果你國家的建設成本漲了,折舊也會跟著漲,因為同樣一條路,現在重蓋要花更多錢。
  • 大修完的車又能再開好多年。所以大修花的錢,算是把車的價值「買回來」一部分,加回資產上,最多加到今天重蓋一條要花的錢。程式碼裡的說法是「an overhaul buys the asset back at today’s prices」。
  • 車賣掉了,帳上就不能還掛著它。拆掉一條路,或是把舊路升級成新路,舊路剩下的價值都會從帳上沖銷掉。

國會一次性撥款

有些早期存檔遇到的麻煩,其實不是玩家的錯。舊版的借款額度高得離譜,年輕的國家可以借到遠超過自己還款能力的錢,介面上還擺著一個「最大」按鈕,幾乎是在邀請你按下去。我們後來修正了額度,可是這些存檔已經揹上了一輩子也還不清的債。

解決辦法是一次性的國會撥款:存檔載入時,國家出錢,把這筆歷史債務一次了結。

有意思的是這筆錢該怎麼記。最省事的是記成收入,可是這樣一來,你的國家會憑空多出一個「暴富月」,帳上突然賺了一大筆,而這個月根本沒發生過。打個比方:家人幫你把債還清了,這是家裡給你的錢,不是你這個月的薪水。

所以它被記為國家實繳資本,進入資產負債表的「資本投入」。程式碼的註解寫著:走損益表會「fake a profitable month that never happened」,捏造一個從來沒發生過的獲利月份。同一份程式碼裡還寫著:這是在修正我們自己的定價錯誤,不是在寬恕玩家的決策。

舊存檔的舊帳

還有一些舊存檔來自這些修正之前,載入時帳可能對不太起來。我們大可以編一筆收入或費用把缺口補上,但那不過是換了一身好看衣服的倒擠數。

遊戲的做法是:去年的帳記錯了,就改去年的帳,不算到今年頭上。差額記為對期初權益的更正,會計上叫「前期錯誤更正」,清清楚楚標明是過去的事,不讓它偽裝成你今年的經營成果。

像銀行一樣放款

申請過房貸的人都知道,銀行會先看你的收入,每月還款不能超過收入的一定比例。《國家交通》的借款額度也是這個思路:所有貸款的每月還款加起來,不能超過你過去 12 個月平均營業淨現金流的 80%。

什麼算「收入」,我們劃分得很仔細。撥款、通行費、稅收算進來,維護和營運成本扣掉;一次性的進帳和支出不算;大修也不算,因為那是在幫資產延壽,不是日常開銷。

萬一真的繳不出下一期,還可以申請債務重組:把還款期限拉長,直到每月還款重新回到那條 80% 的線以內。欠的錢一毛都不會少,只是給你更多時間慢慢還。

這些對一個遊戲有什麼意義

玩《國家交通》不需要懂任何會計。你可以蓋路、看城市長大,從頭到尾都不打開財務報表。

但如果你打開了,上面的數字說的都是真話。一條看起來賺錢的鐵路,是真的賺錢,連自己的磨損都付得起。一筆看起來負擔得起的貸款,是真的還得起。資產負債表最後那一行「負債 + 權益」也完整列了出來,你可以自己拿它跟總資產對一對。

← 返回部落格