如何成為一個(gè)游戲人工智能開發(fā)者
原文地址:http://www.ai-blog.net/archives/000150.html
作者:Paul Tozour June 11, 2008
譯者:賴勇浩(http://blog.csdn.net/lanphaday) July 10, 2008
業(yè)界一直需要杰出的 AI 開發(fā)者,我想我可以在這里分享一些關(guān)于學(xué)習(xí)業(yè)界所需技術(shù)的看法,以幫助大家更好地進(jìn)入游戲 AI 開發(fā)者的角色。
其實(shí)幾個(gè)月前我就已經(jīng)寫了這一篇文章,但直到 Dave Mark 在 aigamedev.com 發(fā)表了這篇文章(http://aigamedev.com/discussion/industry-knowledge),我才決心發(fā)表出來。
首要的是,著眼于開發(fā)技能,在嘗試專精之前先博覽游戲開發(fā)領(lǐng)域所有的技能。
先博而后專
游戲工作室通常并不會(huì)把初級(jí)程序員任命為AI工程師。我們需要對(duì)游戲源碼的方方面面都非常了解的工程師,這意味著他有多年游戲開發(fā)經(jīng)驗(yàn),而且能夠隨時(shí)插入到任一特定領(lǐng)域 “救火”。新進(jìn)員工常常被要求幫助一個(gè)接近交貨日期的項(xiàng)目,通常是填補(bǔ)空缺,做一些簡(jiǎn)單可控的或者團(tuán)隊(duì)中沒有人能抽出時(shí)間(興趣)來做的事。
你可以對(duì)你的面試官說明你對(duì)游戲 AI 工程非常有興趣,而且打算以它為長(zhǎng)期目標(biāo);但你要做好進(jìn)入業(yè)界的前幾年都與特定領(lǐng)域無緣的打算。
記住成為一個(gè)通才很重要,一個(gè) AI 開發(fā)者需要堅(jiān)實(shí)的游戲開發(fā)基礎(chǔ)技能。對(duì)現(xiàn)代游戲引擎的各個(gè)組件都相當(dāng)了解,因?yàn)閺囊粋€(gè)實(shí)際項(xiàng)目中獲得的經(jīng)驗(yàn)無可替代。
所以最為首要的就是學(xué)習(xí)你成為一個(gè)杰出工程師所需要的技能,對(duì)于大多數(shù)開發(fā)者來說,它包括:
u 精通 C++ 與 STL。
u 能夠編寫健壯的、可讀的代碼。
u 精通算法與數(shù)據(jù)結(jié)構(gòu)。
u 精通面向?qū)ο罄碚摗?br>u 務(wù)實(shí)的態(tài)度,愿意采用“自底向上”的方式解決問題。
u 了解代碼測(cè)試和防御式編程(例如:利用C++語(yǔ)言特征去最小化出現(xiàn)缺陷的可能性和強(qiáng)制編譯器與連接器在出現(xiàn)問題的時(shí)候“大叫一聲“)。
u 愿意使用剖分器驅(qū)動(dòng)的性能優(yōu)化:在嘗試動(dòng)手優(yōu)化之前先找出真正需要優(yōu)化的地方,在使用奇技淫巧和手寫匯編之前先使用算法優(yōu)化。
u 精通如何高效使用內(nèi)存資源
u 廣泛理解現(xiàn)代游戲引擎架構(gòu)
u 有堅(jiān)實(shí)的3D 數(shù)學(xué)基礎(chǔ)(對(duì)游戲中需要用到的部分而言)
u 良好的團(tuán)隊(duì)交流和合作精神
EDIT:這里強(qiáng)烈推薦一系列我書架上的通用工程技術(shù)書籍,包括《Effective C++》、《More Effective C++》、《C++ Coding Standards》、《Code Complete》、《The C++ Programming Language》、《3D Math Primer for Graphics and Game Development》等。(譯注:這些書都有中文版。)
編寫一個(gè)示例程序
想給公司留下一個(gè)深刻的印象?一個(gè)簡(jiǎn)單有效的方法是用 C++ 編寫一個(gè)示例程序(是的,你可能使用 Java 或者 C#,但業(yè)界趨向于在游戲里排它地使用 C++,Java 和 C# 只在做工具的時(shí)候用到)。你的程序不必在圖形上看起來很炫,但需要能夠表現(xiàn)出你是如何做的和如何想的。不要使用你在學(xué)校的團(tuán)隊(duì)項(xiàng)目,你單獨(dú)完成他,才能獲得所有好評(píng)。
尤為重要的是你最好能夠提供源代碼,這樣你可以給面試官一個(gè) demo 和創(chuàng)建它的示例代碼。努力讓你的代碼穩(wěn)定、可讀,盡可能地沒有 bug,并且做好回答關(guān)于“當(dāng)你編寫代碼的時(shí)候?yàn)槭裁醋鞒鲞@樣的選擇”的問題的準(zhǔn)備。
堅(jiān)持
當(dāng)你打好了作為開發(fā)人員的基礎(chǔ),完成了一個(gè)很好的示例程序后,盡可能地與更多地公司接洽。然后努力地做獨(dú)立編程測(cè)試,無論你在業(yè)界已經(jīng)多久,這都能夠增進(jìn)你的技能。
當(dāng)遇到很難的面試題時(shí),盡量打起精神來嘗試解決問題,但也不要不敢向面試官尋求幫助,面試也是在測(cè)試你如何處理壓力,以及解決問題的決心,以及當(dāng)你的思維原地打轉(zhuǎn)或者毫無頭緒時(shí)是否善于溝通。
務(wù)實(shí)
最后,如果你與面試官談起 AI,切記要?jiǎng)?wù)實(shí)。你要意識(shí)到學(xué)術(shù)環(huán)境中的“人工智能”與我們口中的“游戲 AI”的不同,也要意識(shí)到業(yè)界宣揚(yáng)的游戲 AI 并沒有達(dá)到他們所承諾的那種高度。
當(dāng)你和面試官談起神經(jīng)網(wǎng)絡(luò)或者其它機(jī)器學(xué)習(xí)技術(shù)的時(shí)候,他們可能會(huì)有點(diǎn)排斥感,因此你應(yīng)當(dāng)能夠準(zhǔn)確地描述它們與游戲 AI 的關(guān)系(苛刻點(diǎn)說,可以認(rèn)為仍然有一些開發(fā)者認(rèn)為任何 AI 都是多余的)。
面試官非常善于認(rèn)清一個(gè)人是不是鼻眼朝天的自大者,因此你必須盡力地展現(xiàn)你務(wù)實(shí)的一面。
弄清關(guān)于游戲 AI 的挑戰(zhàn)很重要,也要清楚地認(rèn)識(shí)到它適用于哪些方面??梢詤⒖家幌挛也痪们暗囊黄恼拢?a >http://www.ai-blog.net/archives/000145.html),里面列出了一系列 AI 開發(fā)者常常會(huì)遇到的問題。
從事 AI 開發(fā)是非常值得嘗試的,如果你能夠找到合適的公司和合適的項(xiàng)目的話。
祝您好運(yùn)!
本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/lanphaday/archive/2008/07/10/2635783.aspx