關閉

當前位置:首頁 ? 游戲工作室建立 ? 正文

游戲工作室建立三步曲2019:腳本、防封與人工智能

很高興的說一句,目前為止,前兩篇文章《第一篇,成本與防封號》,《第二篇,手動模式的選擇》收到諸多好評與贊揚,各位做游戲工作室的朋友對我的認可更是令我驚訝,所以呢,這第三篇結尾文章就多說點,希望對大家有點用。

游戲工作室建立三步曲2019:腳本、防封與人工智能

第三章主要說“腳本的注意事項”, “腳本入門的一些通用模塊”,“圖色與算法”,“人工智能”。其中會穿插一些很實用的代碼,能看懂的更好,看不懂的可以百度。

寫之前呢,說一下本人:

我還是個寶寶,真的!還是個任性的寶寶,從小愛數學,于是高考數學146.從小不大喜歡語文,所以語文91.考了個全國排名前60的大學的數學系。混了四年,對,你沒聽錯,混!畢業后,突然喜歡上編程,自學了計算機,學了數據庫管理,java。

工作第二年的時候,工資拿到一萬多。然后,懶得做網頁了,辭職了。自學了c#和Windows編程。每天自娛自樂,開心得很。

最近呢,尤其2019年上半年,公司大量倒閉,企業大量裁員,看到了好多人迷迷茫茫,哭哭啼啼。總覺得做點什么好,就決定寫幾篇文章。不求播撒光明于天下,只是不想眾多窮苦黎民泯滅于黑暗。好好看,仔細想,多問多學。保住一日三餐,足夠。

前兩篇教大家如何在游戲里賺錢,這篇教大家一些簡單的腳本知識。個人有三個建議:

第一,科技,服務于人民。不要拿去禍害社會。

第二,多學知識,少搞游戲。本事學成,進正規公司,做個軟件工程師不好?能行走于陽光之下,何必潛行于黑夜之間。

第三,只要能保住溫飽,永遠不要停止學習。

如果有人想學腳本,想學編程,告訴大家三個原則,如果你滿足不了,建議你別做。

第一:技術員永遠走在科技的前沿,哪怕迎著失敗和嘲笑。

第二:技術員永遠保持著最冷靜的心態和最淡泊的耐心。

第三:保持終生學習,并且,學會的一定要教別人。當然,這些都是題外話,不過也是真心話。

下面開始正文。

先建立一個前提,本文所說的腳本,是這樣定義的:

一個角色攻擊力1,一個boss血量1000,所以,這個角色想殺了這個boss,需要攻擊1000次。目前市場上有兩種替代人工的辦法:

第一種,將人物的攻擊修改成999999,殺這個boss,一刀。

第二種,模擬鍵盤鼠標,讓鼠標自動點擊這個boss1000下。

第一種屬于作弊,會對游戲產生大量傷害,尤其是點卡游戲,我們說的腳本不包括這些。

第二種,不修改游戲內存數據,甚至不讀取游戲的內存數據,做到玩家怎么干,電腦就怎么干,我們稱為腳本。

如果這套思路做成的軟件,不用在游戲上,用在自動化辦公上或者工廠機械上,我們稱為機械自動化或人工智能。

腳本的注意事項。

為什么這個先說,因為能寫腳本的畢竟是少數,大部分的人都是買腳本用。這個模塊,也可以告訴大家,什么樣的腳本最好別買,什么樣的腳本比較容易封號。所有的游戲腳本,都要有一個原則:“低調”。本來就是灰色產業,能多低調就多低調,越不引人注意越好,又不是相親當英雄,搞得那么光明堂皇干嘛?

下面分10點詳細說明。

第一個注意事項:腳本界面。

拿網易某個游戲來說,很多腳本的界面上有什么買鬼切草,巫醫等和游戲有關的字符或圖片。如果我是網易的程序員,在隨便一個時間點,對電腦桌面截個圖。Windows的底層函數:CopyFromScreen(new Point(X, Y), new Point(0, 0), bit.Size); 很容易就能做到。一旦看到你在用腳本,遲早封你!

第二個注意事項:腳本名稱。

如果一個腳本的exe名字就叫網易xxx腳本,即使打開后界面上沒有相關字符也沒用,因為exe名稱決定了你的程序在任務管理器里面的進程名稱。而一臺電腦的所有當前進程名稱,也是很容易獲得的,這個代碼行數較多,就不貼出來,有興趣的朋友可以百度。當然,也有隱藏進程的方法,但是exe名稱改掉不是更好嗎?

第三個注意事項:調用一些需要釋放的函數或者類時,一定要記得釋放。

比如聲明一個bitmap。Bitmap bit = new Bitmap(width, height, PixelFormat.Format24bppRgb);用完之后,一定記得寫上bit.Dispose();把它釋放掉。不然,就會越積累越多。游戲變卡不說,很多檢測程序都會注意這塊。你內存一直飆升的話,別說反腳本程序,360都會檢測出來并且提醒你。

第四個注意事項:調用的第三方插件一定要有講究。

很多初學者學腳本的時候,喜歡用按鍵精靈+大漠插件,還不加外殼。對此,我只能說,自己寫個程序練練手是可以的,用這種腳本進入市場,除了封號還是封號!為什么?因為知道按鍵精靈的人都知道,按鍵是用來干嘛的?寫腳本的。大漠插件是用來干嘛的?提供公用函數,方便寫腳本的。那大點的游戲公司會不知道?不封你,只是想把你養肥了再殺而已。這里,不是說不能用按鍵和大漠,用的時候麻煩寫復雜點,加點保護,加點外殼,大漠還可以修改自身的特征碼呢。

第五個注意事項:寫模擬按鍵都是要寫延遲的。

如果真的想把腳本用起來,建議延遲改成隨機數。模擬點擊1000下,每次間隔都是一秒,你的手有那么準?一查就知道是腳本再點啊。

第六個注意事項:少用多線程。

很簡單的道理,正常人就一個腦子一雙手,不可能多線程操作,一查就知道是腳本。對于有些游戲,卻是必須多開,比如夢幻的新手任務,一般都是多開做,但是就算多開,也可以不用多線程啊,通過圖色分析每個界面進行到哪一步了,建立一個優先級別,先操作哪個后操作哪個,絕對來得及,就算慢點吧,慢點咋了?能慢幾分鐘?封組號,重新練得多久?

以上6點說的是增加被封幾率。下面說幾個坑定被封的,建議碰都別去碰。

第一個:修改內存,其實呢,這個可以不說,因為大家基本都不干這種傻事。

第二個:截獲數據包。違法,違法,違法。重要的事情說三遍。并且很容易被查到。

第三個;后臺模擬,目前后臺模擬有兩種api,一種是sendMessage,一種是postMessage。Vb,vc,C++和c#是可以直接調用這兩個api的,易語言和大漠插件是把這兩個api封裝了下。這兩種api都是利用了Windows的通信機制,消息傳遞。很遺憾的是,幾年前,csdn論壇上就有人寫了一個帖子,講述了正常的按鍵和后臺按鍵的檢測,并且方法不難,代碼不多,所以游戲公司也能很容易掌握。

第四個:虛擬機,尤其是服務器上裝虛擬機。這玩意,以前搞誅仙3的時候用的很爽,天龍八部也很爽,地下城有些時間也很爽。但是吧,我有個同學,在愛奇藝,年薪三四十萬,技術比我高那么一點點。直接對我說,你要是搞游戲,虛擬機別碰,具體為什么沒對我說,但是既然有大神說了,還是別碰比較好。

這4點為什么說坑定封呢?因為搞得太囂張了,囂張到如果你是游戲的運維人員,你也忍受不了。一般人,搞個幾十臺電腦,慢悠悠賺點小錢,對游戲本身影響真心不大,人家也就睜一只眼,閉一只眼了。腳本一旦用了這4點,相當于你想把別人的游戲一鍋端了,你把別人往死里搞,別人不把你往死里搞?

腳本入門的一些通用模塊。

不管你選擇什么語言,只要你在Windows上做,你必然要用到一些api函數,很多新手覺得很難,找又找不到,用又不會用,然后放棄了寫代碼,繼續跑去板磚。

最近抖音流行一句話:你若墮落,神仙也救不了你,你若堅強,絕處也能逢生。學編程,本身必須要有堅強的意志。當然,沒人教確實很容易絕望,所以這里貼出一些代碼,希望能幫到一些在沒有足夠條件下,卻真心想學編程的小朋友和大朋友。

以下所有的api函數,只提供名稱,具體應用,自己去百度,都能百度到。

第一步:獲得游戲焦點,專業的說法,是獲取句柄,百度上有各種方法,我給大家說兩種最簡單的。對于單窗口WindowFromPoint(int xPoint,int yPoint);返回參數是指定坐標的窗口句柄。對于多窗口,首先獲取桌面句柄,GetDesktopWindow();然后遍歷桌面的子句柄,EnumChildWindows(IntPtr hWndParent, CallBack lpfn, int lParam);通過名稱篩選。

第二步,由句柄得出窗口的四角坐標,也就是界面的位置。先自定義結構體,public struct RECT

{

 public int Left;           //最左坐標

public int Top;             //最上坐標

public int Right;           //最右坐標

public int Bottom;          //最下坐標

}

然后獲取坐標GetWindowRect(hWnd, ref lpRect);這樣你就能知道界面在屏幕的哪個位置,然后可以計算出鼠標的點擊位置和找圖的區域。

第三步,截圖。分前臺和后臺,不建議大家用后臺取色,所以這里只說前臺。.CopyFromScreen(new Point(X, Y), new Point(0, 0), bit.Size);截屏函數。

第四步,模擬鼠標鍵盤。也是說前臺。鼠標移動,SetCursorPos(int X, int Y);鼠標點擊mouse_event(int dwFlags, int dx, int dy, int dwData, IntPtr dwExtraInfo);鍵盤:keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);延遲函數:Thread.Sleep(1000);

其他:讀取文件,ReadLine()。隨機數,Random()。窗口最大最小化SetForegroundWindow(IntPtr hWnd);注冊熱鍵,RegisterHotKey();

有了這些函數,入門就簡單的多了。但是這些只是基礎,想寫出完整的腳本,還需要很多。

圖色與算法。

知道怎么讓鼠標點擊,卻不知道點哪里,也沒用。所以,判斷信息對腳本很重要,說成最重要也不為過。常用的3種方法,截獲數據包,讀取內存,圖色分析。

第一種方法,已經講過,強烈不建議。

第二種方法,讀取內存,現在的主流方式。基本流程就是找基址,找指針,然后通過函數ReadProcessMemory讀取數據。這種方式蠻好的,但是呢,每次游戲跟新就要更新代碼,就要重新找基址。對于一個團隊,到沒什么,對于散人來說,增加了不少工作量。并且,游戲對內存保護這塊越來越嚴厲,動不動來個十幾級的偏移。所以這里說一下圖色分析,圖色分析好多腳本都用到了,但是極少有腳本全程用圖色分析,大部分都是一半圖色,一半內存。

我寫腳本,就喜歡全圖色,為啥呢?寫好之后基本不用更新,除非游戲界面發生變化。并且,全圖色的,基本不封號。因為我們不讀取內存,不碰后臺,不碰多線程,全局鼠鍵模擬。不是說檢測不到我們,只是我們很低調。但是全圖色很難寫,因為有些地方,確實,人都不好分辨,怎么去分析?這里,我們引進算法,相信很多人多多少少聽過算法,但是不熟悉。

簡單的來說,算法就是比較復雜的數學公式。區別是,公式是針對所有問題的,算法有很多是針對單個問題的。比如地下城,哪個怪離你最近?怎么選擇最近的路線去接近這個怪?怎么單個消滅能達到最快?這些就可以用算法。再比如夢幻的新手任務,如果使用前臺模擬,必然要用到優先度算法,確保完成任務的平均時間差不多。關于算法,往往涉及到核心問題的解決方案,這里不好多說,有興趣的可以多研究研究。可以這么說吧,圖色分析加算法,應該是未來幾年高質量腳本的趨勢。

人工智能。

個人認為,好的游戲腳本,就應該像人一樣去操作,甚至像人一樣去分析。反過來說,游戲的制作宗旨,是為了給玩家用,而不是為了反腳本。模擬人工,你永遠能立于不敗之地。那么我們先來討論下人的分析思維。人的大腦是根據聽覺視覺嗅覺味覺觸覺等獲取信息的。

對游戲而言,只有視覺和聽覺。對于腳本而言,99%的信息靠視覺。我們重點談論視覺,人的大腦,剛出生的時候,沒辦法分析文字,因為沒有概念。至于視頻,本身就是圖片,只不過幀數比較快而已。所以,大腦分析最多的是圖片。一張圖片,并不是全部的信息有用。或者說,并不是每一塊信息同等重要。

舉個很污的例子,你在看片,更多的是在注意女主角,而不是男主,更多的是在注意女主的某些部位,而不是手指頭發。那你為什么會養成這種分析習慣呢?因為我們的大腦,在長期的分析中,提取了很多模型。所以你知道一棵樹是什么樣,你知道一條狗是什么樣。同樣,在腳本中,我們也需要模型(鑒于商業機密和只是產權,這里只說建立模型的思路,不能寫具體步驟)。

這個模型,可能是某一個對話框,也有可能是某個字。對于字庫,是必須的,甚至是首要的,大漠插件有自己的字庫,百度識別也有自己的字庫,都可以直接去調用。但是我建議,大家建立自己的字庫,雖然時間比較長,但是建成后,真心很好用。至于有多好用,參照第二章寫商人的利潤的那段。

當然,僅僅有字庫,是遠遠不夠的,還需要很多別的模型,比如npc和怪物。你的角色,如何知道身邊有哪些怪物,大部分的作者用的是基址遍歷。這種方法談不上好與不好,我的評價是兩個字:能用。除了基址遍歷,我們可以用建模型的辦法,每個npc都有特征,不然玩家怎么分辨?把這些特征抓住,轉化成特征值,通過特征值,照樣能知道身邊有哪些npc。知道了界面上的字和npc,你還需要知道鼠標在哪里。

很多游戲的鼠標都有自己的樣子,但是這些樣子幾乎是不變的,或者小范圍變化。否則,玩家怎么識別?既然人能一眼看出來,那說明,這個模型不難建立。

建立模型,一般從找色開始,圖片的像素,有像素值,有些地方是固定的,有些地方是規律變化的,抓住這些,也就抓住了建立模型的關鍵。有了模型,你就能讓你的腳本像人一樣,通過女主的表情就知道男主用了多大力。有了分析,還需要操作。人的操作,是有血肉的,而不是機械的,是休閑式的,而不是拼命式的。

有些人寫腳本,一丁點時間都不浪費,讓游戲里的角色一直打打打,殺殺殺,跑跑跑。還很自以為是的認為利潤最大化了。嘻嘻,反正我不這么想,不封號才是利潤最大化。所以我的腳本,跑跑停停,偶爾還故意點錯,跑路偶爾跑偏,然后修正一下,打怪偶爾放錯技能,然后多一回合。哎,我的利潤真心沒多大,就是比較省心,因為很少封號。

講個笑話,以前有個游戲的某個道具可以連續吃,而我呢,吊兒郎當的寫代碼,導致偶爾會同時吃掉兩個,把一些客戶心疼的,不要不要的,然后讓我改,我懶得改。然后有兩個客戶跑去用別人的腳本了,臨走前還罵我一頓,說我垃圾,不負責,不為客戶找想,不當家不知道柴米油鹽貴。但是,過了半個月,就回來了。原因估計大家也能猜到。所以啊,人嘛,總是會犯錯的,所以啊,腳本呢,也是需要偶爾犯錯滴。

游戲這行,本來就是細水長流,想一夜暴富,還是去抄大蒜比較好。

2019年,游戲工作室建立三步曲,寫了3篇,用了3天時間,你說你們要是不回復,對得起我大冬天敲鍵盤的手嗎?

好了,寫完了,明天又要敲代碼了,至于這些文章能幫到多少人,盡人事,聽天命吧。寫首歪事送給大家,寫完去給老婆洗碗。。。

勸君窮時少飲酒,一杯能解幾斤愁?勸君閑時多上進,來日方長不可停。

猜你喜歡


合作洽談

  • 微信公眾號
  • QQ交流1群
  • 手機版訪問
二維碼
關閉
關閉
三肖中特2019免费网