目录:
1、
1、C语言
2、C++
3、C++与C的抉择
4、汇编语言
5、Pasca l语言
6、Visu al Ba sic
7、Java
8、创作工具
9、结论
这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。
Thi s isa que stion that belo ngs i n eve ry ga me pr ogram mingFAQ.It se ems t o beasked in a game deve lopme nt fo rum s evera l tim es aweek. It's a go od qu estio n, th ough, andnot o ne wi th an easy answ er. T hereare c omput er la nguag es th at wo rk be tter
for s ome a pplic ation s tha n oth ers.Hereis alistof th e maj or pr ogram minglangu agesusedto wr ite g amesalong with desc ripti ons,advan tages, and disa dvant ages. Hope fully this list will help youmakea dec ision.
1、C语言
如果说FORTR AN和CO BOL是第一代高级编译语言,那么C语言就是它们
的孙子辈。C语言是Den nis R itchi e在七十年代创建的,它功能更强大且与AL GOL 保持更连续的继承性,而A LGOL则是COBO L和FOR TRAN的结构化继承者。C
语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。
IfFORTR AN an d COB OL we re th e fir st co mpile d hig h-lev el la nguag es, t hen C
is t heirgrand child. Itwas c reate d inthe 70's b y Den nis R itchi e asa tig hter
and m ore c ohere nt su ccess or to ALGO L, wh ich w as astruc tured succ essor to C OBOLand F ORTRA N. It wasdesig ned t o bea sma llerand s imple r ver sionof it s pre deces sors, suit ablefor w ritin g sys tem-l evelprogr ams,likeopera tingsyste ms. B efore then, ope ratin g sys temswerehand-coded in a ssemb ly an d wer e not port able. C wa s the firs t
pro gramm ing l angua ge th at ma de po rtabi litya rea lityfor s ystem-leve l cod e.
c语言中文网汇编语言C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用
GO TO语句控制流程。因此,C程序比起集成性的FORT RAN及C OBOL的“空心粉
式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。
C is a lang uagethatsuppo rts s truct uredprogr ammin g. Th at is to s ay th at C
progr ams a re wr itten as c ollec tions of d iscon necte d fun ction call s tha t run top-down
rathe r tha n a s ingle mono lithi c blo ck of code with prog ram c ontro l-flo w hap penin g via GOTO stat ement s. He nce,C pro grams aregener allyeasie r tofollo w tha n mon olith ic
FO RTRAN andCOBOL spag hetti-code. Act ually, C s tillhas a GOTO stat ement, but itsfunct ional ity i s lim itedand i t isonlyrecom mende d asa las t res ort i f str uctur ed so lutio ns ar e muc h mor e com plica ted.
正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调
用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独
立的汇编模块。
Trueto it s sys tem-p rogra mming root s, it is f airly easy to i nterf ace C with asse mblylangu ages. Thefunct ion-c allin g int erfac e isverysimpl e, an d ass embly lang uage
instr uctio ns ca n beembed ded w ithin C co de, s o lin kingin se parat e ass embly-lang uagemodul es is notneces sary.
优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。
Adv antag es: G ood f or wr iting smal l fas t pro grams. Eas y tointer facewith
assem bly l angua ge. V ery s tanda rdize d, so vers ionson ot her p latfo rms a re si milar.
缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。
Disad vanta ges:Doesnot e asily supp ort o bject-orie ntedtechn iques. Syn tax c an be
diff icult andlends itse lf to abus e.
移植性:C语言的核心以及ANS I函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为
Wind ows和M ac开发可移植的程序,用户界面部分就需要用到与系统相关的函数
调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
Port abili ty: W hilethe c ore o f the lang uageand t he AN SI fu nctio n cal ls ar e ver y
por table, the y are limi ted t o con trol-flow, memo ry ma nagem ent,and s imple file-hand ling. Ever ythin g els e isplatf orm-s pecif ic. M aking a pr ogram that's po rtabl e bet weenWindo ws an d the Mac, forinsta nce,requi res t hat t he us er-in terfa ce po rtion s beusing syst em-
sp ecifi c fun ction call s. Th is ge neral ly me ans t hat y ou ne ed to writ e the user-inte rface
code twic e. Th ere a re li brari es, t hough, tha t mak e the proc ess a biteasie r.
用C语言编写的游戏:非常非常多。
G amesWritt en in C: L ots a nd lo ts.
资料:C语言的经典著作是《T he CProgr ammin g Lan guage》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的优秀书本。一本极好的教程是《The W aiteGroup's CPrime r Plu s》。
Reso urces: The clas sic b ook a boutC is[TheC
Pro gramm ing L angua ge].I t's g one t hroug h sev eralitera tions andhas e xpand ed to abou t thr ee ti mes i ts or igina l siz e, bu t it's sti ll agoodintro ducti on to thelangu age.An ex celle nt tu toria l is[TheWaite Grou p's C Prim er Pl us].
2、C++
C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP 是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的G UI和数据库的库实现为对象的集合。
C++ i s the obje ct-or iente d suc cesso r toC. Ob ject-orien ted,or OO, pro grams are
the n ext s tep b eyond stru cture d pro gramm ing.OO pr ogram s are buil t out of o bject s,
wh ich a re pa ckage s ofdataand f uncti ons c ollec ted i nto d iscre te un its.There aremanylibra riesof ob jects avai lable that make writ ing p rogra ms as simp le as pull ing t ogeth er acolle ction of p rogra m "bu ildin g blo cks"(at l eastin th eory). For exam ple,there aremanyGUI a nd da tabas e lib
rarie s tha t are impl ement ed as coll ectio ns of obje cts.C++总是辩论的主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。
C++ isthe s ubjec t ofcontr overs y, es pecia lly i n the game deve lopme nt
co mmuni ty. T hereare f eatur es of C++, like virt ual f uncti ons,thatadd a n ext ra la yer o f dec ision-maki ng to func tioncalls, and crit ics a re qu ick t o poi nt ou t tha t C++ prog ramscan b e lar ger a nd sl owerthanC cou nterp arts. C++advoc atespoint out, howe ver,thatcodin g the equi valen t ofa vir tualfunct ion i n C r equir es th e sam e ove rhead. It's anon-
go ing d ebate that's no t lik ely t o bedecid ed so on.
我认为,C++的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBO L和FOR TRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为CO BOL 和F ORTRA N程序更容易编写和维护。
In my opin ion,the o verhe ad of C++is si mplythe p riceyou p ay fo r a b etter lang uage. This same deba te we nt on in t he 60's wh en hi gh-le vel p rogra mming lang uages like
COBO L and FORT RAN s tarte d todispl ace h and-c odedassem bly a s the lang uageof
ch oice. Crit ics c orrec tly p ointe d out that prog ramswritt en in high-leve l lan guage s wer e inh erent ly sl owerthanhand-tuned asse mblyand a lways woul d be. High-leve l lan guage advo cates poin ted o ut, h oweve r, th at th e sli ght p erfor mance hitwas w orthit be cause COBO L and FORT RAN p rogra ms we re mu ch ea sierto wr ite a nd ma intai n.
优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数
据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
A dvant ages: Much bett er th an Cfor o rgani zinglarge prog rams. Supp ortsthe o bject-orie ntedparad igm n icely. Lib rarie s ofcommo n dat a str uctur es, l ike l inked list s and grow-able arra ys, c an re movemuchof th e bur den o f hav ing t o dea l wit h low-leve l det ails.
缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。
Disad vanta ges:Extre melylarge andcompl icate d. Li ke C, thesynta x len ds it selfto ab use.Can b e slo wer t han C. Not many comp ilers impl ement theentir e lan guage
corr ectly.
移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
Port abili ty: B etter than C, b ut st ill n ot gr eat.While it s hares thesamedisad vanta ge as C, m ost o f the port ableuser-inter facelibra riesare i mplem ented as c ollec tions of C++ ob jects.
使用C++编写的游戏:非常非常多。大多数的商业游戏是使用C或C++编写的。
G amesWritt en in C++: Lots andlots. Almo st al l com merci al ga mes a re wr itten in C or C++.
资料:最新版的《T he C++ Pro gramm ing L angua ge》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个假定你不知道。到目前为止,最好的C++教程是《W ho'sAfrai d ofC++》,如果你已经熟知C,那么试一下《Teach Your self
C++》。
Re sourc es: T he la testediti on of TheC++ P rogra mming Lang uageis ex celle nt. A s for tuto rials, the re ar e two camp s, on es th at as sumeyou k now C, and ones youdon't. Byfar t he be st gr ound-up C++ tut orial s are Who's Afr aid o f C++ andWho's Afra id of More C++. If y ou al ready know C, t ry Te ach Y ourse lf C++.
3、我该学习C++或是该从C开始(Sho uld I lear n C++, orshoul d I s tartwithC )
我不喜欢这种说法,但它是继“我该使用哪门语言”之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不过使用这种方法有两个弊端:
I th ought this bore ment ionin g, as it's thesecon d mos t com monly aske d que stion next to "which prog rammi ng la nguag e sho uld I use?"Unfo rtuna tely, theanswe r isn't
bl ack a nd wh ite.You c ouldsavea lot of t ime b y jus t tea ching your selfC and
writ ing a pps,but t hereare t wo di sadva ntage s tothisappro ach.
你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建模更有效率的东西。
You're mi ssing outon wh at wi ll li kelybe amuchmoreeffec tiveway o f mod eling thedatain yo ur ga me. B y not lear ningOO pr ogram mingoff t he ba t, yo u cou ld be enfo rcing badprogr ammin g hab its t hat y ou'll have to u n-lea rn la ter.Trust me o n thi s one.
最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方
法,如果你不学习OO,你将不得不“辛苦”的工作。
Ma ny of thebigge st co mmerc ial g ames, incl uding most firs t-per son s hoote rs, g et by
with out C++. T he au thors of t heseprogr ams,howev er, a lways insi st th at th ey're usin g obj ect-o rient ed pr ogram mingtechn iques even thou gh th ey're usin g pla in ol d C.If yo u wan t tojustlearn C, a t lea st te ach y ourse lf OO prog rammi ng te chniq ues.OO is the
perfe ct me thodo logyfor s imula tions (rea d: ga mes), andyou'l l rea lly b e doi ng it "the hard way" if y ou pu sh of f lea rning OO.
4、汇编语言(Assem bly)
显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要的是类英语且有相关的自我说明的语言,这不是你想要的。
By defa ult,assem bly w as th e fir st co mpute r lan guage. Ass embly lang uageis
ac tuall y a c omman d-bas ed re prese ntati on of theactua l ins truct ionsthatyourcompu ter's proc essor runs. Tha t mea ns yo u wil l bedeali ng wi th th e low-leve l det ailsof yo ur
pr ocess or, l ike r egist ers a nd st acks. If y ou're look ing f or alangu age t hat's Engl ish-
l ike a nd is rela tivel y sel f-doc ument ing,thisisn't it!
确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单—这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。
Bydefin ition, any thing youcan d o inany o therlangu age,you c an do
in a ssemb ly, o nly n ot as easi ly --of co urse, that's li ke sa yingthatanywh ere y ou ca n goin acar,y
ou c an go on f oot,onlynot a s eas ily.While thestate mentmight be t rue,the l atertechn ologi es ma de th ingsmucheasie r touse.
总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。
In g enera l, as sembl y lan guage is n ot us ed on itsown f or ga mes.Games that useassem bly l angua ge us e itin bi ts an d pie ces w hereit ca n imp roveperfo rmanc e. Fo r
exa mple, DOOM is w ritte n ent irely in C with a co upleof dr awing rout ineshand-coded
in a ssemb ly. T hey a re th e rou tines that arecalle d a f ew th ousan d tim es asecon d, so
maki ng th e rou tineas ti ght a s pos sible real ly he lpedthe p erfor mance of t he
ga me. I t's f airly easy to w ritea fun ction in a ssemb ly th at is call-able from C, s o usi ng
bo th la nguag es wa sn'ta pro blem.
特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。
Spe cialNote: Thenameof th e lan guage is "assem bly". Thenameof th e too l tha t
con verts asse mblylangu age i nto t rue m achin e cod e iscalle d an"asse mbler". It's acommo n mis nomer to c all t he la nguag e "as sembl er",so st art o ut on theright foot
by c allin g the lang uageby it s pro per n ame.
优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。
Adva ntage s: Is, bydefin ition, the smal lestand f astes t lan guage. A t alent ed as sembl y pro gramm er ca n wri te pr ogram s tha t are fast er th an an ythin g tha t can be d one i n oth er
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论