国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

AlphaBot:對 Robocode 的創(chuàng)始人 Mat Nelson 的一次采訪

2019-11-18 11:30:02
字體:
供稿:網(wǎng)友

AlphaBot:對 Robocode 的創(chuàng)始人 Mat Nelson 的一次采訪
關(guān)于 Robocode 如何產(chǎn)生以及將來的發(fā)展的深思

Dana Triplett(dana@orange-atelier.com)
自由作家
2002 年 7 月

假如您一直在關(guān)注 developerWorks 和 alphaWorks 的話,您會看到一個名為 Robocode 的小東西的巨大能量:Robocode 是一個比較上癮的游戲,剛好可以用于 java 編程教學。Mat Nelson 在過去 18 月內(nèi)已經(jīng)付出了一段寶貴的時間來開發(fā) Robocode。起初是為了自己娛樂,后來就成了一份認真的工作,把他心愛的這個項目放到了 IBM alphaWorks 上?,F(xiàn)在已經(jīng)到了他收獲的時候。Robocode 的成功用“爆炸性”來描述一點也不過分 — 而這才只是個開頭。

Mat Nelson
AlphaBot:對 Robocode 的創(chuàng)始人 Mat Nelson 的一次采訪

早在 1995 年,也就是 Mat Nelson 開始在 IBM 做全職工作之前,他就開始使用 Java 語言了。隨著這種語言的成熟,這個狂熱的玩家看到了創(chuàng)建這個“他一直想玩”的游戲的機會。2000 年后期 Robocode 剛開始時只是個人的努力,2001 年 7 月以 alphaWorks 下載的形式帶入 IBM 后就成了一種職業(yè)工作。在這個游戲(下載次數(shù)超過了 121,000 次)和它的創(chuàng)始人的名聲漸大之際,我們請 developerWorks 的通訊記者 Dana Triplett 對 Mat 進行了一次采訪,請他談?wù)勈鞘裁醇ぐl(fā)了他創(chuàng)建 Robocode 的靈感,以及他對 Robocode 未來發(fā)展的看法。

Robocode Rumble 鏈接

從 alphaWork 下載 Robocode。

閱讀“Rock ''em, sock ''em Robocode”(developerWorks,2002 年 1 月)和“Rock ''em, sock ''em Robocode: Round 2”(developerWorks,2002 年 5 月)

進入 Robocode Rumble 辯論會。

developerWorks:Robocode 背后的中心思想是什么?

Nelson:Robocode 是一種有趣的競賽性編程,而“有趣”在這里絕對是要害詞。使用幾行簡單的代碼,您就可以看著您的機器人在屏幕上四處奔馳,碾碎一切擋道的東西。在做這件事時,您將學習到一種解決目前真實問題的真實的語言。

dW:哪些游戲曾經(jīng)是您最喜歡的,您最喜歡它們的哪些方面?

Nelson:Worms 的 Commodore 64 版(不要與目前同名的游戲混淆)是我看到的第一個游戲,它讓我“教”一些東西在游戲中如何行動,然后看它們玩。我還非常喜歡戰(zhàn)略和角色扮演游戲。這幾年來令我上癮的有哪些游戲?Civilization、Master of Orion、Sim City、Command and Conquer 系列、Warcraft/Starcraft 系列、Ultima 系列和 Diablo 系列。當然,我還玩過數(shù)百種其它的游戲,但我最喜歡的肯定是那些讓我構(gòu)建一樣東西,然后在游戲環(huán)境中放開它,看它如何發(fā)展的游戲。

dW:這些游戲中有哪一個是您開始創(chuàng)建 Robocode 時的靈感來源嗎?

Nelson:Worms,肯定是,其它的還有 C64 游戲 Mail Order Monsters。那些經(jīng)典游戲中的其中一些非常棒。那時還沒有圖形,所以一切東西都必須可玩。那正是我正設(shè)法在 Robocode 中采用的方法:輕易開始,玩起來有趣,并且讓人很上癮。

然而 Robocode 的主要靈感來源于 Brad Schick 創(chuàng)建的一個名為 Robot Battle 的游戲(這個游戲本身的靈感來源于 Robot Wars 的 Apple 2 版)。我在 1995 年發(fā)現(xiàn)了 Robot Battle,并花費了無數(shù)的時間創(chuàng)建我自己的機器人“The Cleaner”。它實在是太有趣了。我看著其他人創(chuàng)建的機器人把它淘汰出局,然后設(shè)計了我自己的戰(zhàn)略。那時主要的挑戰(zhàn)是一類被稱為 seesaw bot 的機器人,它們會往返移動,很難擊中。 Cleaner 在試圖擊中它們時碰到了很多麻煩。我的解決辦法?我用了一點三角知識來估算 seesaw 的角度,然后向那個角度猛烈開火。我一鼓作氣完成了編寫,然后開心地看著 Cleaner 3 爬上比賽排行榜。

dW:當您開始開發(fā) Robocode 時,您心目中的觀眾是誰?

Nelson:開始時,只是我自己。Robocode 是我一直想玩的游戲,所以我寫了它。

我希望即使您什么也不知道也可以玩 Robocode,而當您了解得更多時它可以與您一起成長。學起來簡單,但很難精通,就象國際象棋。我把 API 設(shè)計得盡可能簡單,并提供了幾個樣本機器人說明如何使用它。我希望任何人,從建筑師到中學生到動物園治理員,都能夠讓一個簡單的機器人運行,并說“嗨,我寫了一個 Java 程序!”。另一方面,高級用戶很快意識到他們可以使用 Java 編程語言的整套功能,隨心所欲地使用它為自己的機器人構(gòu)建行為。

dW:現(xiàn)實生活中玩 Robocode 的人們讓您感到過驚奇嗎?

Nelson:最大的驚奇是成功本身。我很有把握人們會有愛好玩它,因為我 ...... 但我沒想到有那么多人!現(xiàn)在的下載次數(shù)超過了 100,000,真讓我大吃一驚。我一直能夠很驚異(興奮)地看到人們用不同的方式使用 Robocode,而社區(qū)也一直讓我感到驚喜。

dW:Robocode 玩家建立了哪些具獨創(chuàng)性的機器人示例?

Nelson:有很多種,包括猜測目標(不是直接向機器人開火,而是向機器人即將到達的地方開火)、跟蹤和記錄敵人的行為、多線程控制機器人的不同方面、即時(just-in-time)算法、躲避子彈、僵持、最優(yōu)化的雷達跟蹤 ......,還有很多很多。其中最優(yōu)秀的機器人簡直讓人吃驚。我最近引入了一個全新型的戰(zhàn)略,也就是組,所以我非常期待看到接下來還會有什么東西出現(xiàn)。

dW:您想為 Robocode 添加些什么功能?

Nelson:我想做的第一件事是把 API 重新構(gòu)建為更簡單、更面向?qū)ο?、更具擴展性和更開放的 API。例如,我更希望看到 radar.setTurn() 而非 setTurnRadarRight()。一旦 Radar 成了一個對象,我們就可以擁有不同類型的 Radar:setRadar(new Radar(range,speed))

作為 API 重設(shè)計的一部分,我預備解決兩個突出的大問題:度數(shù)對弧度和單位圓數(shù)學(Unit circle math)。機器人將有一個單獨的調(diào)用,該調(diào)用確定它們是想使用度數(shù),還是使用弧度,而另一個調(diào)用在單位圓數(shù)學或羅盤數(shù)學(Compass math)間切換。單位圓數(shù)學用于 Java 中的所有三角方法,它的 0 度指向右,逆時針方向為正。而羅盤數(shù)學的 0 度指向上,順時針為正。不同的程序員喜歡不同的東西,我希望在使 API 簡單的同時支持它們中的全部。

另一個大問題是物理學問題。目前 Robocode 的物理學原理極其簡單。為增加真實感,我預備引入力矢量。例如,加速度將會被空氣阻力和滾動摩擦力抵消一部分,而不只受到“最大速率”的限制。根據(jù)摩擦力和半彈性碰撞原理,機器人撞到另一個機器人的一側(cè)時會把它推到一邊去。我以前對這些的試驗使游戲比以前“酷”了許多。猛烈地撞向一個機器人并使其發(fā)出尖利的聲音滑向一邊,這是很有趣的。另外,前后加速將會更改;機器人向前移動時速度可以更快。

目前,撞擊(Ramming)還未被充分利用,所以,我想引入機器人各部分不同的裝甲力量 — 仍然是可配置的。擊中機器人的一側(cè)將會造成更大的傷害。

我還想在競技場中引入墻和障礙物,以及不同外形的競技場、這將產(chǎn)生許多全新的戰(zhàn)略。

因為這些更改要引入一些復雜的編程,我計劃使它更輕易擴充機器人。一個專家可以寫一個查找墻四周路徑的可重用的機器人類,而一個新手可以只使用它來快速創(chuàng)建一個不錯的機器人(同時學習如何重用代碼)。

dW:您認為將來 Robocode 會變成一個由 alphaWorks 主持的分布式游戲嗎?

Nelson:現(xiàn)在我主要關(guān)心簡單性;引入一定程度的復雜性卻不能使游戲玩起來更有趣是沒有必要的。Robocode 在分布式環(huán)境中會比現(xiàn)在更有趣嗎(現(xiàn)在的 Robocode 只是一種單機游戲,可以從中下載其它的機器人)?我還不確信。我的確認為有一個空間可以容納一個趣味無窮的分布式 Java 編程游戲...... 但我認為那就是一個新游戲,不是 Robocode。

dW:為什么您選擇用 Java 編寫 Robocode?

Nelson:當我在 1995 年發(fā)現(xiàn) Java 時,我馬上就被迷住了。它是一種簡潔、優(yōu)雅的語言。使用 Java 可以比用其它語言節(jié)省一半的時間,并且做出來的東西可以在完全不同的系統(tǒng)上運行。 例如,Robocode 可以在 Mac OS X 上運行,而我甚至從來沒接觸過 Mac。

目前,Java 速度很,盡管許多人仍沒有意識到這一點。計算機的處理速度正以驚人的速度增長,JVM 的速度比以前任何時候都快,Java 已經(jīng)成熟了,我們甚至可以用硬件加速生成圖形。Java 現(xiàn)在已經(jīng)用于客戶機了,我希望 Robocode 可以幫忙促進這一點。

dW:是什么使您想使用自己的編程技巧為程序員創(chuàng)建一個教育性游戲而不是創(chuàng)建只用于娛樂的浮華的游戲?

Nelson:沒有任何東西。我的確只是為了好玩而編寫了一個浮華的游戲。我們是后來才發(fā)現(xiàn)它的教學用途的。

在 25 年的玩游戲生涯中,我已經(jīng)花費了無數(shù)的時間來學習如何玩游戲。我閱讀手冊、看幫助菜單、查閱游戲參考資料、還在 Web 上看技巧和提示。當然,與任何其它游戲一樣,對 Robocode 也要做相同的事。但有一點很大的不同:手冊是關(guān)于 Java 的。參考資料是 Javadoc。幫助菜單是 Java 教程。學習玩 Robocode 就是學習 Java,剛開始時我沒有意識到這一點。

我希望擔任編程入門課程的教授和教師能夠發(fā)現(xiàn) Robocode 是一種使學習變得很有趣的好方法,并推廣 Java,使人們選擇使用 Java。使用幾篇教程(游戲內(nèi)部和外部皆可),我相信我們可以使 Robocode 成為一個更好的自學工具。我將嘗試用幾個簡單的任務(wù)來完成我們的游戲內(nèi)教程(就象“完成這 10 個任務(wù)您就能夠很好地理解 Java 一樣”)。稍微利用些指導,任何人都可以成為 Java 程序員。

回頭看一下,很明顯;它當然是一個教育工具。但 Robocode 是從一個全新的角度達到了現(xiàn)在的程度。Robocode 是一個游戲。但在您學習玩 Robocode 時,哦,哇唔!您學會了 Java。我的確是把 Robocode 作為一個有趣的游戲而不是教育工具來寫的,而且我還將繼續(xù)以這種精神開發(fā)它。但假如您在得到樂趣的同時又學會了 Java,那就太妙了!




發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宣城市| 隆昌县| 尉氏县| 台湾省| 白河县| 德安县| 平昌县| 漳州市| 松原市| 永嘉县| 塔河县| 岐山县| 东丰县| 黔东| 江口县| 尚志市| 西和县| 灌南县| 象州县| 文水县| 界首市| 惠来县| 璧山县| 延安市| 丹巴县| 罗田县| 龙州县| 常宁市| 将乐县| 东海县| 巴马| 简阳市| 黎城县| 杂多县| 屏南县| 巴南区| 房产| 武强县| 沁水县| 庆城县| 精河县|