當前位置:首頁 » 編程軟體 » 編譯原理能寫游戲腳本嗎

編譯原理能寫游戲腳本嗎

發布時間: 2023-07-03 00:00:57

A. 有什麼學習編譯程序的書推薦

我當年入門編譯原理的時候,是看了一本《游戲腳本高級編程》的書。這本書雖然寫得拖泥帶水,內容也特別淺,但正是這本書讓我知道了如何從頭到尾實際地寫一個parser + 虛擬機,讓我入了門。後來我在 @vczh 的指點下看了Parsing Techniques,自己寫了一個正則表達式匹配和LR(K) Parser (類似於yacc)。但重要的是這本書讓我理解了如何手寫Parser(這是從不會到會的飛躍)。後來我自己寫了一個功能更加全面的類似於javascript的函數式動態腳本語言順帶支持了面向對象,進一步加深了理解。再後來,我看了《Engineering a Compiler》,通過這本書全面的學習了後端優化知識。再再後來,我閱讀了LLVM的代碼,陸陸續續寫了四五個compiler,目前自認為算是基本了解了這個領域。總的感覺是,雖然看書重要,但是如果不親自實現一遍很難真的學會。

B. 我想學編程,請問該怎麼入門

一:確定一個方向,編程語言太多了:java、C++、python、PHP、C等,需要確定方向,從基礎學起,建議零基礎學編程的小夥伴從C語言開始學起,C語言入門比較簡單,會提升自信心。

二:自學編程入門一定要階段性的看到成果,這個「成果」並不是在「黑匣子」裡面實現,要在用戶展現界面呈現,很容易提升信心。



三:視頻和圖書同步查閱,網上的是魚龍混珠,建議找一些免費的學編程入門的初級視頻進行學習,最好是成套視頻,如果條件允許也可以購買一套編程入門的視頻資料。

四:計算機編程入門一定要理論和實踐相結合只有這樣才能真正學好

五:如果你有會編程的好朋友,多請教請教他,能讓他帶帶你就是最好不過的了。

C. 游戲開發中常用哪種腳本語言

游戲開發?那必然是Lua~效率高~但是手機游戲上有用其他語言的~Lua比較多而已~
有個別公司用Java當腳本~

D. 怎麼製作游戲編程開發

一、游戲程序開發的工作主要包括哪些方面

游戲開發中的程序開發主要由如下幾個方面組成:

1.圖形引擎

2.聲音引擎

3.物理引擎

4.游戲引擎

5.人工智慧或游戲邏輯

6.游戲GUI界面(菜單)

7.游戲開發工具

8.支持區域網對戰的網路引擎開發

9.支持互聯網對戰的網路引擎開發

下面逐一介紹每個部分:

1.圖形引擎主要包含游戲中的場景(室內或室外)管理與渲染,角色的動作管理繪制,特效管理與渲染(粒子系統,自然模擬(如水紋,植物等模擬)),光照和材質處理,LOD(LevelObjectDetail)管理等,另外還有圖形數據轉換工具開發,這些工具主要用於把美工用DCC軟體(如3DSMax,Maya,SoftXSI,SoftImage3D等)軟體製作的模型和動作數據以及用Photoshop或painter等工具製作的貼圖,轉化成游戲程序中用的資源文件。

2.聲音引擎主要包含音效(SoundEffect簡稱SE),語音(VOICE),背景音樂(Backgroundmusic簡稱BGM)的播放。SE是指那些慶早在游戲中頻繁播放,而且播放時間比較短,但要求能及時無延遲的播放,VOICE是指游戲中的語音或人聲,這部分對聲音品質要求比較高,基本上用比較高的采樣率錄制和回放聲音,但和SE一樣要求能及時無延遲的播放,SE在有的時候因為內存容量的問題,在不影響效果的前提下,可能會降低采樣率,但VOICE由於降低采樣率對效果影響比較大,所以一般VOICE不採用降低采樣率的做法。BGM是指游戲中一長段循環播放(也有不循環,只播放一次)的背景音樂,正是由於BGM的這種特性,一般游戲的背景音樂是讀盤(光碟或硬碟)來播放。另外一些高級聲音特效,如EAX,數字影渣差搏院系統(DTS5.1),數字杜比環繞等。

3.物理引擎主要包含游戲世界中的物體之間、物體和場景之間發生碰撞後的力學模如祥擬,以及發生碰撞後的物體骨骼運動的力學模擬(比較著名的物理引擎有havok公司的gamedynamicssdk,還有opensource的ODE—OpenDynamicsEngine)。

4.游戲引擎主要是把圖形引擎、聲音引擎、物理引擎整合起來,主要針對某個游戲製作一個游戲系統,其包含游戲關卡編輯器,主要用途是可以可視化的對場景進行調整,光照效果和霧化等效果調整,事件設置,道具擺放,NPC設置,另外還有角色編輯器,主要用於編輯角色的屬性和檢查動作數據的正確性。一般日本游戲公司的做法,他們會把關卡編輯器和角色編輯器直接做到游戲中,所有的參數調整都在游戲中通過調試菜單來進行編輯,所以一般他們把這部分調試菜單的功能做的很強大,同時在屏幕上實時的顯示一些重要的信息,這樣做的好處是關卡編輯器調整的效果直接就是游戲的效果,但是對於程序的重用性來說可能不是很好,比如說要用到另外一個游戲項目中就比較難,除非兩個游戲類型相同,只要把場景和角色數據換一下,還有做下一代產品也沒有問題,只要根據式樣增加調試菜單的功能就可以了。

5.人工智慧和游戲邏輯開發,這部分日本和歐美的游戲開發模式也有很大不同,在歐美游戲公司中運用腳本語言開發很普遍,所以這部分程序開發主要是用腳本語言編寫,而且腳本程序和游戲程序的耦合性很低,有單獨的編輯、編譯和調試環境,這樣比較利於游戲程序和關卡設計開發分開,同時並行開發,所以一般他們都會有專門做關卡設計的程序員崗位。而日本游戲公司腳本語言一般和游戲的耦合性比較高,一般通過一些語言的宏功能和一些編譯器的特定功能來完成一個簡單的腳本系統,所以一般這些腳本程序只能在游戲程序中進行調試,而不能在一個單獨的腳本編輯,編譯環境中進行開發。

6.游戲GUI界面(菜單),主要是指那些游戲中用戶界面設計,有做的復雜,有簡單的,做的簡單就是2DGUI界面,做的復雜有3DGUI界面。

7.游戲開發工具主要包含關卡編輯器,角色編輯器,資源打包管理,DCC軟體的插件工具等開發。

8.支持區域網對戰的網路引擎開發,主要解決區域網網路發包和延遲處理,通訊同步的問題,有同步通訊和非同步通訊兩種做法,非同步通訊用於那些對運行幀速要求比較高的游戲,同步通訊相對非同步通訊來說效率相對低,但是同步通訊的編程模型相對非同步通訊來得簡單一些。

9.支持互聯網對戰的網路引擎開發,目前大部分網游都是C/S結構的,伺服器端軟體配置管理,伺服器程序的最優化,還有游戲大廳、組隊、游戲邏輯處理、道具管理、收費系統等。另外還有一些網路系統是C/S和P2P兩種結構混合的,如XBOXLive等。

二、游戲公司中有哪些和程序員相關的崗位

程序員在游戲公司中的崗位在日本游戲公司和歐美的游戲公司有些不同,日本游戲公司中程序員的崗位主要有技術監督(Director),主程序員(MainProgrammer),程序員(Programmer),在日本游戲公司里負責游戲項目開發的程序員,一般不會專門根據工作內容劃分程序員,除了獨立的系統研究室和聲音系統製作部門(這兩個部門是比較獨立的,往往同時給好幾個項目服務),負責每個游戲項目開發的程序員,隨時都可能一人多職,比如說主程序員除了負責整個游戲系統以外,可能還要負責圖形或聲音引擎開發等,程序員除了人工智慧以外還有菜單製作等。這種情況在歐美的游戲公司比較少見,他們分工的比較細,一般有圖形程序員,聲音程序員,人工智慧或游戲關卡程序員,物理程序員,每個組中可能還會有一個Leader。

三、游戲公司一般是如何招聘程序員的

這一點,日本公司和歐美公司也有些不同。日本公司一般喜歡從一些高校中招聘一些應屆優秀畢業生,一方面比招聘有經驗的人要來的成本低,另方面新人是一張白紙,容易培養,像SEGA、KONAMI等都是按這種原則招聘員工的,所以想進入日本游戲公司,你要學好你的軟體課程。而歐美公司希望招聘進來,能馬上進入項目的開發中去,所以他們一般希望招聘有工作經驗的人,即使不是行業中,在相關行業中工作2、3年的也可以,所以想進入歐美游戲公司你的工作經歷很重要。

四、想成為一名游戲開發程序員應該具備哪些條件

我覺的一個游戲軟體程序員,最起碼的要求是熟練掌握計算機本科專業所學的知識,主要包括C語言或C語言,數據結構,編譯原理,演算法等,另外線性代數、微積分、牛頓力學在圖形和物理引擎開發方面用途也很廣泛,如果要提高的話還有必要了解硬體相關的知識如計算機體系結構、匯編語言,這些對我們學習一個新的硬體平台、編寫最優化代碼、提高自己游戲的競爭力都是非常有益的。另外,保持有恆心、不怕苦(比如說通宵加班)的心態,對游戲的熱情也是非常重要的。對於那些想進入游戲行業,但缺乏軟體開發知識的人,可以通過參加游戲開發培訓來

五、學習游戲編程有哪些好方法

現在有很多人,計算機本科畢業,學了很多軟體開發的知識,但是一旦要用到實際的項目開發時,感覺無從下手,這主要是在學校里運用知識的機會太少了。所以學習游戲編程最好的方法是能實際參與到一個好的游戲項目中和有豐富開發經驗的人一起開發游戲,可能學到很多你從書本上學不到知識和技能。但有時候你一時還沒有機會參與到一個好項目中,沒有機會進入一家好的游戲公司,但是你對游戲開發有一腔熱情,很希望學習游戲開發的技能,那你就應該去參加專門的游戲開發培訓,因為游戲開發培訓班中的老師都是一些有豐富開發經驗的老師,一般都有五年豐富的項目開發經驗,聽他們的課,實際上就是在和他一起分享這么多年的開發經驗,另外游戲開發培訓課程中會專門設計一些項目和課題,它們本身就是可以直接運用游戲開發中,這樣你可以不進入著名的游戲公司,但可以學到這些公司中一些常用的開發技能。另外還有一種方法經濟實惠的方法,參加一些網上志願者的開源項目,這些項目從品質來說有好有壞,選擇一個好的項目非常重要,另外他們中間本身有許多是業內人士,本來你要進入他們公司,才能學習到他們的經驗,但是通過開源項目,你就有向他們學習的機會了,說不定哪一天,你就進入一家知名的游戲公司了,不過目前開源的完整游戲項目好的不多,到是在圖形引擎和物理引擎方面有一些很不錯的開源項目,但要加入進去的話,你的基礎一定要好啊,有些開源的團隊也不是隨便什麼人就能加入的。

E. 編譯原理究竟有沒有用對編程的人

我跟你說,編譯原理太有用了。
我是做手機游戲的,現在做一個游戲引擎。既然是引擎,就需要提供抽象的東西給上層使用。這里,我引入了腳本系統。
這個腳本系統包括一堆我根據實際需求自行設計的指令集,包括基本的輸入輸出,四則運算,系統功能調用,函數聲明,調用等等(其實你要是用過lua或者其他游戲腳本你就知道了。)整個結構包括指令集、編譯器、虛擬機等部分。這樣,引擎提供一些基礎服務,比如繪圖,計算位置等,腳本就可以非常簡單控制游戲。甚至快速構建新游戲。你應該知道QUAKE引擎吧?
這里提供給你一個計算器的小程序,應用了EBNF理論,支持表達式,比如(2+3*6)*4+4,你自己體驗一下它的簡潔和強大。
/*
simple integer arithmetic calculator according to the EBNF
<exp> -> <term>{<addop><term>}
<addop>->+|-
<term>-><factor>{<mulop><factor>}
<mulop> -> *
<factor> -> ( <exp> )| Number
Input a line of text from stdin
Outputs "Error" or the result.
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

char token;/*global token variable*/
/*function prototypes for recursive calls*/
int exp(void);
int term(void);
int factor(void);

void error(void)
{
fprintf(stderr,"Error\n");
exit(1);
}

void match(char expectedToken)
{
if(token==expectedToken)token=getchar();
else error();
}

main()
{
int result;
token = getchar();/*load token with first character for lookahead*/
result = exp();
if(token=='\n')/*check for end of line */
printf("Result = %d\n",result);
else error();/*extraneous cahrs on line*/
return 0;
}

int exp(void)
{
int temp = term();
while((token=='+')||(token=='-'))
switch(token)
{
case '+':
match('+');
temp+=term();
break;
case '-':
match('-');
temp-=term();
break;
}
return temp;
}

int term(void)
{
int temp = factor();
while (token=='*')
{
match('*');
temp*=factor();
}
return temp;
}

int factor(void)
{
int temp;
if(token=='('){
match('(');
temp = exp();
match(')');
}
else if(isdigit(token)){
ungetc(token,stdin);
scanf("%d",&temp);
token = getchar();
}
else error();
return temp;
}
其實編程學到一定程度總是沒有方向了,總是在問學C/C++下一步怎麼學啊,覺得掌握了該語言了雲雲,實際上,你缺少的就是這些軟的東西,缺少的是理論。
編譯原理不是單一的理論,它涵蓋了一個niche,裡面可以學到很多其他知識,比如正則表達式、BNF、EBNF、分析樹、語法樹還有很多運行時環境等知識
這些給你帶來的是非常豐厚的回報。不說多了,學完運行時,你就會加深對C++語言本身的理解。
你要想有好的發展,還是學吧。

F. 學習編程都要用到哪些軟體啊

學習編程的時候選擇適當的軟體是非常重要的,那麼學習編程時用什麼軟體好呢?下面小編給大家分享一下。

操作方法
01
Notepad
對於編程的初學者來說,用Notepad這樣的記事本編輯器即可實現初期的大部分功能
02
Sumlime Text
當進入到編程學習的中級階段的時候,就可以用一些靈活可擴展的編輯軟體了,Sublime Text就是這樣的軟體
03
Eclipse
接下來進入編程的熟練階段以後就可以運用集成開發環境了,Eclipse是一款比較不錯的集成開發軟體

熱點內容
il腳本 發布:2025-02-08 03:08:49 瀏覽:315
我的世界介紹神奇寶貝伺服器 發布:2025-02-08 03:02:52 瀏覽:747
咪咕音樂linux 發布:2025-02-08 02:53:04 瀏覽:410
我的世界手機版大陸練習伺服器 發布:2025-02-08 02:50:43 瀏覽:213
php的特點與優勢 發布:2025-02-08 02:43:16 瀏覽:718
微信公眾號怎麼上傳pdf 發布:2025-02-08 02:42:41 瀏覽:348
安卓如何查看通話總時長 發布:2025-02-08 02:27:49 瀏覽:579
快速dct演算法 發布:2025-02-08 02:19:04 瀏覽:623
淘寶交易密碼如何改 發布:2025-02-08 02:17:32 瀏覽:775
php的進階 發布:2025-02-08 02:17:28 瀏覽:677