星際爭霸2是什麼語言編寫的?
謝邀
筆者是一個星際2鐵杆粉絲,大學讀的也是計算機科學與技術的專業。但是對於遊戲的製作和編寫並不是筆者大學主選的一些課程,所以說筆者對於遊戲的製作也只是略懂,如果講的有什麼不當之處也請編程大神們輕噴~
像星際爭霸2這種大型遊戲,一般都是用C++編寫的,如果是比較傳統機制的遊戲,會使用腳本工具來補全代碼。所以說,代碼並不完全是一行一行寫的。星際爭霸2由於基於傳統的RTS遊戲機制,又有星際爭霸1的經驗作為模板,所以說推測是C++加上腳本編輯器的機制。
當然如果說是一款完全自研的遊戲,或者說是全新機制的遊戲,代碼就得一行行敲了,比如說當年的半條命,或者說是LOL,Dota2這類需要重新架構邏輯的遊戲。
當然遊戲動輒十幾個G,肯定不都是代碼,不然按一個位元組一個位元組的算,十幾個G的代碼怕是要把人累死。
在一款遊戲的製作中,遊戲的邏輯代碼所佔的比重很小,最多不會超過20M,而動輒十幾個G的部分,主要來源於引擎和資源文件。
遊戲引擎說白了就是大量的基礎的底層的設計,比如說遊戲中的物理碰撞的邏輯之類的。這些底層的設計非常繁瑣並且工作量大,很多公司由於節省成本,就會直接購入現有的引擎,由於涉及到大量的邏輯,以及引擎本身就是可自定義的可執行文件,所以說肯定比代碼要佔空間。
而占空間最大的就是資源文件了,這些主要是媒體和美工的文件。用於遊戲中的圖形表達。一款遊戲如何擁有更好的畫質?需要的就是更高精度的美工和動畫,而更高的像素當然就意味著更大的空間使用。暴雪是著名的對美工苛刻的公司,其戰役的過場動畫和美工原文件加起來佔據了15個G之多(虛空之遺版本)可以說佔據了8成以上的空間了。
暴雪有自己的一套框架,不是第三方的,老早之前留下來的,之前看過關於守望先鋒的開發演講,暴雪的開發團隊很厲害的,招聘要求很高,甚至高於谷歌這些大廠,因為遊戲開發確實對演算法架構方面要求比較高,幾個g邏輯方面的代碼肯定沒這麼多,遊戲最大頭的是多媒體資源,圖片音樂這些。
突然發現好老的問題啊.. 不知道題主還會不會回來看,但既然答應了的事情233.
===================================
根據樓主的問題,我認為樓主對遊戲開發的背景知識都比較薄弱,我會按照自己的理解,盡量講詳細一點。本人水平有限,如有不當之處歡迎拍磚。
事實上不管是什麼遊戲.....源代碼所佔大小為零!如果你不拿腳本也當源代碼的話......
製作者發布給你的遊戲都是經過編譯的二進位文件(e.g. 各種exe,dll,等等),源代碼文件屬商業機密...當然開源的東西會給你代碼看,但這些代碼並不參與遊戲運行,也就是說你刪了他們你的遊戲一樣能跑,那些代碼只是給你參考的。
但樓上也基本說到了,資源文件才是吃空間的大頭。現在遊戲畫面為毛越來越華麗?因為計算機的處理能力提高了,巨大的資源也能處理得很快了,開發者越來越肆無忌憚的把動輒上G的視頻貼圖音樂往裡塞了......以前的遊戲受限於以前的硬體條件,資源文件不可能又多又大又精細。所以越老的遊戲,i.e.配置需求越低的遊戲,需求的硬碟空間越小。
開發遊戲是一個複雜的過程。想一行行寫,可以,直接用底層的圖形介面(御二家OpenGL,DirectX),你能體驗到一行行寫的酸爽感。幾千行代碼就是為了在屏幕上畫個長方形。感受一下.......
但是,在幾千行的基礎上,再加幾百行,我就能在後面用一行代碼畫一個矩形;再加幾百行,我就可以把這些矩形變成小人兒;再加幾百行,還可以讓他們受重力影響往下落碰到地面還會反彈.........等等。這些就是底層邏輯。事實上,最基本的遊戲引擎,就是這麼一步一步製造出來的。引擎實質上是抽象,將不同遊戲公用的部分提取出來,發布出去為更多的遊戲開發者所用。比如上面提到的矩形:把它們變成飛機和子彈,就是捲軸射擊遊戲;變成小人,一個地面一副背景和血槽等等讓他們在地面上互動,就是動作遊戲;等等。為什麼遊戲公司要買引擎?因為引擎把他們需要的,麻煩的底層處理,都做了。他們只需要著眼於遊戲邏輯就行了。引擎費用算入開發成本,可以節省不少時間,節省時間就是少發工資....
拿個我比較熟悉的比較小的遊戲舉個例子吧。Little Fighter 2,總大小約45M。為毛用小遊戲呢?因為這個小遊戲所有文件的作用基本我都熟悉。而且這個遊戲貌似沒有使用現有引擎,而是直接從DirectX加上C++開擼,作者是真的猛士,雖然我也在步他的後塵...
bg:存放的是場景數據。包含場景所用圖片資源和它們的腳本文件。什麼是腳本後面介紹...
bgm:存放wma格式的背景音樂;
data:存放wav格式的音效文件和所有的腳本文件(為毛音效會在這裡這是個歷史遺留問題)
recording:存放錄像文件,就是星際爭霸的replay那種東西
sprite:存放所有角色的圖片資源文件。本遊戲所有圖片均為8位調色盤bmp格式
lf2.exe:遊戲主程序
readme.txt:不用說
uninstal.exe:也不用說...有拼寫錯誤,是作者的錯
拋開readme之類的不談,所有「程序」部分都在lf2.exe中。那麼這個文件有多大呢...
還是挺大的額?
這是幻覺!事實上,作者把不少資源圖片(也是bmp,用資源提取工具可導出)都打包在了這個可執行文件之內。我們用exescope打開看一看....
嘩!
那麼拋開所有的這些,還有多少呢?
保守估計幾十上百K吧..至於前面提到的腳本是什麼東西呢?在LF2中...
就是這些後綴為dat的文件,大部分存放在data目錄下,屬於場景的腳本存放在bg目錄下。
其實它們都是文本文件,用專用的編輯器可以打開(作者加了密防止隨便修改)它們也屬於資源文件。
像代碼?非要說的話,腳本也屬於廣義的代碼。腳本的作用也是簡化開發,在程序中實現一個腳本解析器,然後通過腳本控制程序的行為,比把所有東西hardcode在源代碼中要高效得多,也靈活得多,也為將來可能的二次開發提供了空間。這一套腳本語言是作者自己設計的,可以稱之為「LF2腳本語言」。當然,你也可使用樓上答主們提到的泛用性更廣的語言。魔獸世界用的就是Lua,開發插件就是用的它。
雖然看起來像代碼,但他們本質上也屬於資源文件。不難理解吧
代碼其實很少的,遊戲越精細,所耗費的資源就越大,地形,貼圖,模型,特效,動畫是佔主演資源,一個次世代模型就幾十M,unity開發遊戲不放任何資源,2017版本打個包出來都是30M,更不用說那些大型遊戲了,動不動就是百G+
引擎:肯定是,必然是c++,要有大量DirectX/OpenGL的交互。
平台:c++
UI:c++
其他tool,c++和c#
粘接性程序,個別腳本語言lua和自己實現的解釋型高級語言
推薦閱讀:
※幫球員提高技術水平:遊戲還有這種隱藏功能?
※2018 虛幻引擎技術開放日完整議程曝光
※遊戲里的人,為啥都不會脫衣服?
※小眼看世界 小手建天地——四季花幼兒園建構遊戲歡樂多
※《蝙蝠俠:阿卡姆騎士》——騎士的終結,希望的崛起