15 編程
接下來的幾場比賽也是簡簡單單的勝利,范玨也過上了非常規(guī)律的工作生活:上午鍛煉,下午晚上OB訓(xùn)練賽,軍訓(xùn)時間結(jié)束后,范玨回到了校園。
已經(jīng)想好了要編寫什么軟件,當(dāng)初在上海就已經(jīng)大概寫了一點框架,現(xiàn)在回來便準(zhǔn)備著手干活。
先發(fā)微信讓父母把家里的一些設(shè)備啟動,簡單來說就是一臺性能非常牛逼的電腦,范玨自己的筆記本跑不動,并且那臺電腦運行的噪音特別大,拿過來就是折磨室友,家里父母都不讓他全天候開著,這會兒是找了一個老房子清理出一塊地方放電腦。
然后就是找筆記本配件,平常在家里就沒怎么屯東西,只好去二手市場收一些比較能用的,就這也花了他不少錢,范玨暗自心疼,心說自己必將百倍賺回。
對于數(shù)據(jù)分析師的工作,范玨決定主要從兩方面著手,一個是通過視頻來收集比賽數(shù)據(jù)的軟件,這些數(shù)據(jù)其實從王者榮耀那里可以很容易地拿到,可惜王者榮耀不愿意給他,那就要自己動手,范玨命名為海潮。另一方面就是類似AlphaGo的人工智能王者榮耀玩家,通過深度學(xué)習(xí)讓AI學(xué)會打王者榮耀,甚至進(jìn)一步,打kpl,最后還要學(xué)會BP,這個軟件命名為星照。
“海潮”主要的應(yīng)用場景有兩個,一是kpl比賽視頻,二是訓(xùn)練賽OB位。
當(dāng)范玨進(jìn)入訓(xùn)練賽的OB位觀看比賽的時候,王者就會通過網(wǎng)絡(luò)把當(dāng)前比賽的數(shù)據(jù)通過互聯(lián)網(wǎng)傳遞到范玨的手機上,再通過范玨手機上的王者轉(zhuǎn)化為范玨屏幕上的比賽,范玨則在電腦上用手游模擬器登錄王者榮耀,然后就可以順理成章地加一個小插件,把王者傳遞過來的數(shù)據(jù)攔截下來,得到原始數(shù)據(jù),包括所有人的坐標(biāo)移動,經(jīng)濟增長,裝備和抗性數(shù)據(jù),血量增減等等,這就可以得到很完整的比賽數(shù)據(jù)。
而當(dāng)要研究kpl的比賽視頻時,事情就變得艱難起來,導(dǎo)播只給看某一個小部分的情況,范玨首先想辦法讓電腦識別小地圖的數(shù)據(jù),來得到大致的比賽走向,人員移動,再通過兩側(cè)隊員的血條的占比來大概得到血量的變化。然后是具體的導(dǎo)播給的視角,范玨導(dǎo)入了王者完整的地圖數(shù)據(jù),然后通過比對,來獲得視頻中每一幀的視角各個英雄所對應(yīng)的絕對坐標(biāo),根據(jù)冒出來的數(shù)字以及對應(yīng)時間野怪和兵線的抗性來反推出英雄此時的屬性。當(dāng)然有時候?qū)Рセ胤艌F(tuán)戰(zhàn)就會導(dǎo)致一段時間的游戲進(jìn)程完全空白,范玨沒有辦法,也就只能空著。最后把通過比賽視頻得出的數(shù)據(jù)轉(zhuǎn)化為王者榮耀的原始數(shù)據(jù)格式以便于處理。
把這兩個功能寫好已經(jīng)是10月底,把它和之前的數(shù)據(jù)收集軟件稍微一對接,范玨就不用花時間來OB比賽了,訓(xùn)練賽和比賽的數(shù)據(jù)通過海潮直接扒下來,再用幾個條件篩選出要統(tǒng)計的數(shù)據(jù)直接放到表上,發(fā)送回去給賽訓(xùn)組,四舍五入一個月白嫖5000。然而問題隨之而來,緩存數(shù)據(jù)過于龐大以至于好幾個硬盤快要裝不下了。
接下來是星照,這就是一個大工程了。
先設(shè)定好一個游戲勝利的目標(biāo):摧毀敵方的水晶。再把地形等死數(shù)據(jù)定好,然后就是導(dǎo)入野怪,小兵,英雄,裝備,防御塔等等數(shù)據(jù),當(dāng)然要說明的是這些數(shù)據(jù)都不是范玨自己研究的,而是拿一個廢舊手機下載了一個王者榮耀然后進(jìn)去暴力破解得到的。
下一步要解決的問題是最優(yōu)打法。在與王者交涉的過程中范玨試圖索要游戲數(shù)據(jù)被嚴(yán)詞拒絕,退而求其次,范玨就只索要了一些勝率之類的,然后整理一份給賽訓(xùn)組,自己還去全平臺發(fā)視頻恰爛錢,要說這爛錢恰的是真爽,比數(shù)據(jù)分析師賺得多多了。
閑言少敘,由于拿不到游戲數(shù)據(jù),范玨讓人工智能自己和自己打游戲,來琢磨出游戲的打法,這一步對于電腦可以說是頂級折磨,家里的電腦瘋狂運轉(zhuǎn)了一個禮拜,耗電量巨大,都沒有研究出什么東西來,范玨認(rèn)為自己必須要做出一些改進(jìn),于是悄咪咪地學(xué)習(xí)了(偷)一點兒alpha零的代碼來優(yōu)化機器學(xué)習(xí)的算法,并且把每一局的打法重新生成一個新的打法文件保存下來,相應(yīng)的寫了一個軟件來讀取打法文件,然后在得到打法文件之后把原來比賽的數(shù)據(jù)刪掉,這就解決了內(nèi)存不足的問題。讓人工智能學(xué)習(xí)打法文件,還有通過自己和自己對局生成打法文件,使得人工智能學(xué)會所有主流或者是冷門陣容的打法和運營思路,就這樣,范玨創(chuàng)造出了世界上最會打王者的人工智能。
當(dāng)然,此時的人工智能還是可以讀取全隊的共享視野,范玨把海潮的視頻讀取軟件搬過來,讓星照只能通過小小屏幕里的視野來獲取信息,當(dāng)然也順便把視野的元素也給了人工智能當(dāng)做變量。然后再調(diào)整參數(shù)使得人工智能的手速得到限制,以及得到了手速被限制之后的最佳打法也被重新開發(fā)出來。做完了這些,范玨覺得還不行,因為這五個位置的操縱者還是共享了一個大腦。他把程序分成5個,兩兩不共享大腦,每個人都不能知道別人在想什么,只能通過聲音溝通,為此還特別寫了一個語音識別軟件以及語言轉(zhuǎn)電子信號的軟件,叫做“泛音”。有了語言交流,范玨順便就做了一個判斷選手情緒,或者說狀態(tài)的軟件,叫做“琪紀(jì)”,非常簡單,就是把這個人的視野,操作,手速,交流等的信息與他的同位置的人,還有自己別的時期的數(shù)據(jù)進(jìn)行對比,來判斷這個人的心理狀態(tài),相應(yīng)的就需要在隊友狀態(tài)不好時對隊友進(jìn)行鼓勵。
最后,范玨弄明白了每一個位置的頂級人工智能應(yīng)該有怎樣的數(shù)據(jù),怎樣的配置,通過這樣的辦法,他就可以對kpl比賽有一個科學(xué)的認(rèn)識了。