tml lang="zh" data-theme="light">

知乎 - 知乎

太吾繪卷有幾十萬個if/else?我不信

來自專欄遊戲memory18 人贊了文章

最近《太吾繪卷》很火很火。到底有多火我就不贅述了。

而且特別奇葩的是,代碼寫的不好還增加了銷量???

其中有幾條吸引了我的注意。

載入超時,點擊重試

幾十萬條if???

哦!Playmaker。那麼到底什麼是playmaker呢?其實就是一個unity的可視化編程工具。

下面就是應用playmaker的一個例子

給個特寫

Emmm。這個就不贅述了。

那麼我就想看看。是不是使用了playmaker之後,就會生成幾十萬個if/else呢?

首先打開我的項目,這個項目是用playmaker做的邏輯。

導出,生成一個PC項目。

下載Reflector,試用14天

打開項目Manager下面的Assembly-CShape.dll

畫風是這樣的

選擇{} – 這部分是我自己寫的代碼

和原代碼對比一下,基本相同(反正我也沒注釋XD)

但是花了半個小時,並沒有找到Playmaker生成的代碼,也沒有找到很多if/else的地方

那麼我就在懷疑解包的真實性,於是找了兩個人不同的解包過程,發現這部分函數名基本相同。俗話說得好,一千個程序員有一千個函數名,所以這肯定是同一個遊戲的包沒跑啦。

人工搜索的方法是不行了,於是將解包之後的源代碼導出。

打開我心愛的VS Code

花式搜索狀態關鍵值,未果。

這可怎麼辦呢。難道這次考證就要失敗了?

這時候,又是萬能的全球最大程序員同性交友網站救了我

這樣生成出來的代碼,應該和反編譯的代碼半斤八兩了。

果然。

可以看到,每一個狀態都對應了一個if,swtich。如果狀態多一點的話,if也會越多。

但是幾十萬個if/else的情況可能也有,假如說這個遊戲的角色有幾百個的話,每個角色有幾千個狀態,很多狀態類似就可以直接粘貼複製,最後就。好吧我編不下去了

那麼這個地方由於個人水平有限就無法繼續了,由於30號更新的遊戲,重構了代碼,可能這個考證永遠也無法完成了23333

不過剛剛看到說銷量已經突破40w份了還是恭喜恭喜。

不過嘛。看到飛燕大佬說抽成60%,也就是說,現在賺的錢只有40W*50*40%=800W,好吧,還是有點多的 = =


推薦閱讀:
查看原文 >>
相關文章