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

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

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

2019-11-18 13:08:56
字體:
來源:轉載
供稿:網友

  假如您一直在關注 developerWorks 和 alphaWorks 的話,您會看到一個名為 Robocode 的小東西的巨大能量:Robocode 是一個比較上癮的游戲,剛好可以用于 java 編程教學。Mat Nelson 在過去 18 月內已經付出了一段寶貴的時間來開發(fā) Robocode。起初是為了自己娛樂,后來就成了一份認真的工作,把他心愛的這個項目放到了 IBM alphaWorks 上。現在已經到了他收獲的時候。Robocode 的成功用“爆炸性”來描述一點也不過分 — 而這才只是個開頭。
  
  早在 1995 年,也就是 Mat Nelson 開始在 IBM 做全職工作之前,他就開始使用 Java 語言了。隨著這種語言的成熟,這個狂熱的玩家看到了創(chuàng)建這個“他一直想玩”的游戲的機會。2000 年后期 Robocode 剛開始時只是個人的努力,2001 年 7 月以 alphaWorks 下載的形式帶入 IBM 后就成了一種職業(yè)工作。在這個游戲(下載次數超過了 121,000 次)和它的創(chuàng)始人的名聲漸大之際,我們請 developerWorks 的通訊記者 Dana Triplett 對 Mat 進行了一次采訪,請他談談是什么激發(fā)了他創(chuàng)建 Robocode 的靈感,以及他對 Robocode 未來發(fā)展的看法。
  
  developerWorks:Robocode 背后的中心思想是什么?
  
  Nelson:Robocode 是一種有趣的競賽性編程,而“有趣”在這里絕對是要害詞。使用幾行簡單的代碼,您就可以看著您的機器人在屏幕上四處奔馳,碾碎一切擋道的東西。在做這件事時,您將學習到一種解決目前真實問題的真實的語言。
  
  dW:哪些游戲曾經是您最喜歡的,您最喜歡它們的哪些方面?
  
  Nelson:Worms 的 Commodore 64 版(不要與目前同名的游戲混淆)是我看到的第一個游戲,它讓我“教”一些東西在游戲中如何行動,然后看它們玩。我還非常喜歡戰(zhàn)略和角色扮演游戲。這幾年來令我上癮的有哪些游戲?Civilization、Master of Orion、Sim City、Command and Conquer 系列、Warcraft/Starcraft 系列、Ultima 系列和 Diablo 系列。當然,我還玩過數百種其它的游戲,但我最喜歡的肯定是那些讓我構建一樣東西,然后在游戲環(huán)境中放開它,看它如何發(fā)展的游戲。
  
  dW:這些游戲中有哪一個是您開始創(chuàng)建 Robocode 時的靈感來源嗎?
  
  Nelson:Worms,肯定是,其它的還有 C64 游戲 Mail Order Monsters。那些經典游戲中的其中一些非常棒。那時還沒有圖形,所以一切東西都必須可玩。那正是我正設法在 Robocode 中采用的方法:輕易開始,玩起來有趣,并且讓人很上癮。
  
  然而 Robocode 的主要靈感來源于 Brad Schick 創(chuàng)建的一個名為 Robot Battle 的游戲(這個游戲本身的靈感來源于 Robot Wars 的 Apple 2 版)。我在 1995 年發(fā)現了 Robot Battle,并花費了無數的時間創(chuàng)建我自己的機器人“The Cleaner”。它實在是太有趣了。我看著其他人創(chuàng)建的機器人把它淘汰出局,然后設計了我自己的戰(zhàn)略。那時主要的挑戰(zhàn)是一類被稱為 seesaw bot 的機器人,它們會往返移動,很難擊中。 Cleaner 在試圖擊中它們時碰到了很多麻煩。我的解決辦法?我用了一點三角知識來估算 seesaw 的角度,然后向那個角度猛烈開火。我一鼓作氣完成了編寫,然后開心地看著 Cleaner 3 爬上比賽排行榜。
  
  dW:當您開始開發(fā) Robocode 時,您心目中的觀眾是誰?
  
  Nelson:開始時,只是我自己。Robocode 是我一直想玩的游戲,所以我寫了它。
  
  我希望即使您什么也不知道也可以玩 Robocode,而當您了解得更多時它可以與您一起成長。學起來簡單,但很難精通,就象國際象棋。我把 API 設計得盡可能簡單,并提供了幾個樣本機器人說明如何使用它。我希望任何人,從建筑師到中學生到動物園治理員,都能夠讓一個簡單的機器人運行,并說“嗨,我寫了一個 Java 程序!”。另一方面,高級用戶很快意識到他們可以使用 Java 編程語言的整套功能,隨心所欲地使用它為自己的機器人構建行為。
  
  dW:現實生活中玩 Robocode 的人們讓您感到過驚奇嗎?
  
  Nelson:最大的驚奇是成功本身。我很有把握人們會有愛好玩它,因為我 ...... 但我沒想到有那么多人!現在的下載次數超過了 100,000,真讓我大吃一驚。我一直能夠很驚異(興奮)地看到人們用不同的方式使用 Robocode,而社區(qū)也一直讓我感到驚喜。
  
  dW:Robocode 玩家建立了哪些具獨創(chuàng)性的機器人示例?
  
  Nelson:有很多種,包括猜測目標(不是直接向機器人開火,而是向機器人即將到達的地方開火)、跟蹤和記錄敵人的行為、多線程控制機器人的不同方面、即時(just-in-time)算法、躲避子彈、僵持、最優(yōu)化的雷達跟蹤 ......,還有很多很多。其中最優(yōu)秀的機器人簡直讓人吃驚。我最近引入了一個全新型的戰(zhàn)略,也就是組,所以我非常期待看到接下來還會有什么東西出現。
  
  dW:您想為 Robocode 添加些什么功能?
  
  Nelson:我想做的第一件事是把 API 重新構建為更簡單、更面向對象、更具擴展性和更開放的 API。例如,我更希望看到 radar.setTurn() 而非 setTurnRadarRight()。一旦 Radar 成了一個對象,我們就可以擁有不同類型的 Radar:setRadar(new Radar(range,speed))。
  
  作為 API 重設計的一部分,我預備解決兩個突出的大問題:度數對弧度和單位圓數學(Unit circle math)。機器人將有一個單獨的調用,該調用確定它們是想使用度數,還是使用弧度,而另一個調用在單位圓數學或羅盤數學(Compass math)間切換。單位圓數學用于 Java 中的所有三角方法,它的 0 度指向右,逆時針方向為正。而羅盤數學的 0 度指向上,順時針為正。不同的程序員喜歡不同的東西,我希望在使 API 簡單的同時支持它們中的全部。
  
  另一個大問題是物理學問題。目前 Robocode 的物理學原理極其簡單。為增加真實感,我預備引入力矢量。例如,加速度將會被空氣阻力和滾動摩擦力抵消一部分,而不只受到“最大速率”的限制。根據摩擦力和半彈性碰撞原理,機器人撞到另一個機器人的一側時會把它推到一邊去。我以前對這些的試驗使游戲比以前“酷”了許多。猛烈地撞向一個機器人并使其發(fā)出尖利的聲音滑向一邊,這是很有趣的。另外,前后加速將會更改;機器人向前移動時速度可以更快。
  
  目前,撞擊(Ramming)還未被充分利用,所以,我想引入機器人各部分不同的裝甲力量 — 仍然是可配置的。擊中機器人的一側將會造成更大的傷害。
  
  我還想在競技場中引入墻和障礙物,以及不同外形的競技場、這將產生許多全新的戰(zhàn)略。
  
  因為這些更改要引入一些復雜的編程,我計劃使它更輕易擴充機器人。一個專家可以寫一個查找墻四周路徑的可重用的機器人類,而一個新手可以只使用它來快速創(chuàng)建一個不錯的機器人(同時學習如何重用代碼)。
  
  dW:您認為將來 Robocode 會變成一個由 alphaWorks 主持的分布式游戲嗎?
  
  Nelson:現在我主要關心簡單性;引入一定程度的復雜性卻不能使游戲玩起來更有趣是沒有必要的。Robocode 在分布式環(huán)境中會比現在更有趣嗎(現在的 Robocode 只是一種單機游戲,可以從中下載其它的機器人)?我還不確信。我的確認為有一個空間可以容納一個趣味無窮的分布式 Java 編程游戲...... 但我認為那就是一個新游戲,不是 Robocode。
  
  dW:為什么您選擇用 Java 編寫 Robocode?
  
  Nelson:當我在 1995 年發(fā)現 Java 時,我馬上就被迷住了。它是一種簡潔、優(yōu)雅的語言。使用 Java 可以比用其它語言節(jié)省一半的時間,并且做出來的東西可以在完全不同的系統(tǒng)上運行。 例如,Robocode 可以在 Mac OS X 上運行,而我甚至從來沒接觸過 Mac。
  
  目前,Java 速度很快,盡管許多人仍沒有意識到這一點。計算機的處理速度正以驚人的速度增長,JVM 的速度比以前任何時候都快,Java 已經成熟了,我們甚至可以用硬件加速生成圖形。Java 現在已經用于客戶機了,我希望 Robocode 可以幫忙促進這一點。
  
  dW:是什么使您想使用自己的編程技巧為程序員創(chuàng)建一個教育性游戲而不是創(chuàng)建只用于娛樂的浮華的游戲?
  
  Nelson:沒有任何東西。我的確只是為了好玩而編寫了一個浮華的游戲。我們是后來才發(fā)現它的教學用途的。
  
  在 25 年的玩游戲生涯中,我已經花費了無數的時間來學習如何玩游戲。我閱讀手冊、看幫助菜單、查閱游戲參考資料、還在 Web 上看技巧和提示。當然,與任何其它游戲一樣,對 Robocode 也要做相同的事。但有一點很大的不同:手冊是關于 Java 的。參考資料是 Javadoc。幫助菜單是 Java 教程。學習玩 Robocode 就是學習 Java,剛開始時我沒有意識到這一點。
  
  我希望擔任編程入門課程的教授和教師能夠發(fā)現 Robocode 是一種使學習變得很有趣的好方法,并推廣 Java,使人們選擇使用 Java。使用幾篇教程(游戲內部和外部皆可),我相信我們可以使 Robocode 成為一個更好的自學工具。我將嘗試用幾個簡單的任務來完成我們的游戲內教程(就象“完成這 10 個任務您就能夠很好地理解 Java 一樣”)。稍微利用些指導,任何人都可以成為 Java 程序員。
  
  回頭看一下,很明顯;它當然是一個教育工具。但 Robocode 是從一個全新的角度達到了現在的程度。Robocode 是一個游戲。但在您學習玩 Robocode 時,哦,哇唔!您學會了 Java。我的確是把 Robocode 作為一個有趣的游戲而不是教育工具來寫的,而且我還將繼續(xù)以這種精神開發(fā)它。但假如您在得到樂趣的同時又學會了 Java,那就太妙了!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙门县| 长宁县| 金塔县| 夏邑县| 花莲市| 靖西县| 衡阳市| 嵊州市| 广东省| 昌平区| 封开县| 临邑县| 临沂市| 缙云县| 利辛县| 江山市| 略阳县| 万安县| 宝应县| 大安市| 始兴县| 宿州市| 青河县| 开封市| 安新县| 瑞昌市| 石门县| 英德市| 疏附县| 合作市| 华亭县| 泸水县| 建水县| 黑河市| 富源县| 青冈县| 苏尼特左旗| 轮台县| 扎鲁特旗| 赤壁市| 龙陵县|