2009-05-22 75 views
3

我一直在網絡程序員一段時間,我也可以用Java編程。我有一個想要開發的小型多人RPG遊戲的想法。它將通過用戶的Web瀏覽器中的Java applet播放。如何學習遊戲開發?

我寫了遊戲設計文檔和規格。我現在想知道的是我如何開發遊戲?過去我只使用類似Windows的商業應用程序,內置小部件用於文本框,下拉菜單等。通過遊戲編程,似乎我必須爲遊戲的UI構建自己的窗口小部件/控件。

這些都是我心目中的具體問題:

1)如何與一個進度條顯示「正在載入」消息,而遊戲中的圖像,聲音等被下載。 (使用java小應用程序)

2)如何使用自己的菜單,控件等創建遊戲的UI。通過點擊地圖圖標,它會顯示一張地圖。點擊朋友圖標可以讓他們和他們的朋友聊天等。

3)和其他一些我應該知道的遊戲開發問題,比如我是否應該使用2D或3D圖形,物理遊戲等。

如果有一本好書可以幫助我,請分享。

回答

1
  1. 最簡單的方法是將所有東西都打包到Jar文件中。默認屏幕確實顯示一個進度條,其中有一些customise的小功能。你可以編寫自定義代碼來跟蹤,管理和下載文件,但我會親自勸告這條路線。如果您搜索小程序加載器,您會發現更多信息。

  2. 我並不是100%確定您的意思,但您可以使用Swing components,方法與您可以在應用程序中使用它們的方式相同。對圖像使用JButton非常簡單,然後將事件代碼掛接到actionPerformed方法中。

  3. 您可能遇到的最大問題是動畫和EDT。我之前詢問過this

This頁面有一大堆有用的遊戲開發鏈接。Pulp core是一個值得檢驗的開源框架 - 即使您不使用框架,您也可以調查代碼。

是否應該使用Java小程序似乎超出了這個問題的範圍,但上面的許多答案給出了是否使用Java小程序的客觀(或根本沒有原因)。如果這是個人練習遊戲來學習Java,那麼這是一個很好的方法。如果您希望公開,您需要考慮目前的adoption levels是否足夠滿足您的需求。

最近在applet世界中發生了變化。由於1.6 update 10與Flash相比更具競爭力 - 下載規模較小(通常低於4Mb),啓動時間縮短並引入了new scaling look and feel

0

Q1 =您的時間的1%。

Q2 = 40%的時間。

Q3 = 59%的時間。

你可能會問我如何爲網頁瀏覽器編寫Halo3。

瞄準低一點,開始與....

1

不要去Java小程序的路線。

如果你想做一個快速休閒遊戲,使它閃光;否則,開發一個完整的java應用程序並通過java web start運行它。

嘗試Tower以瞭解您可以使用Java作爲平臺,以及Java Web Start的工作原理。

至於進度條的東西,我建議你實現這些文件的加載,實際上你去進度條養眼:)

+0

java web start讓應用程序從瀏覽器運行?不錯 – 2009-05-22 18:08:20

+1

使用適當的java會讓你使用很酷的3D遊戲開發庫,對於java來說有幾個好的。 嘗試http://tower.sourceforge.net/來看看java web start + java如何適合遊戲開發。 – alamar 2009-05-22 18:15:37

+0

當我點擊該遊戲的遊戲時,它會要求我下載一個.jnlp文件。這不是我想要的,它會擊敗目的。我希望他們通過瀏覽器播放視頻,同時保留在我的網站 – 2009-05-22 23:08:29

1

http://nehe.gamedev.net/

擁有噸教程從之前使用它們基本到高級,使用各種語言和系統的OpenGL,從C到C#和Python到Java。

我發現這非常有用,是一個很好的書籤資源。 它應該讓你開始在你所選擇的平臺/語言上進行遊戲/ 3D編程的基礎知識。

祝你好運!

1

正如其他人所說的,Java applet可能不是您想要展示您的遊戲的媒介。第二大多數人看到一個小程序開始加載,他們在恐懼中運行。

如果您根本沒有遊戲設計經驗,那麼您可以通過多人角色扮演遊戲將酒吧設置得非常高。您可能希望從一個更簡單的項目開始,例如重新創建諸如俄羅斯方塊,pacman或pong之類的東西,這樣您就可以瞭解創建遊戲的所有內容。

如果你在做一個在線遊戲,Flash是很棒的,Java加上Jogl開放式封裝也是一個不錯的選擇。

我個人建議使用Microsoft Xna。 C#與Java很相似,所以你應該能夠很快地完成它,而Xna在抽象掉圖形編程中涉及的一些較低層次的細節方面做得很好。社區也非常積極和樂於助人。

2

可能值得熟悉的一件事是多線程。例如,使用「加載屏幕」時,可能有一個線程顯示進度條,而其他線程同時加載數據。

同樣,通過調度多個線程同時執行許多操作(移動屏幕上的不同字符)或通過用戶輸入處理中斷,大部分交互操作都會發生。

3

如果這是你的第一場比賽,多人項目可能過於雄心勃勃。

加載屏幕並非非常困難 - 我通過計算每次加載其他文件時需要加載的文件數,然後推進進度欄(並進行屏幕刷新)來實現它們。您可以按照您的要求儘可能精細地執行此操作 - 這可能會使您的加載代碼複雜化以添加UI組件。我現在不會爲此擔心;也許只是拋出一個基本的「加載...」框架,然後在遊戲更加穩固時稍後實現完整的進度條。我也看到了一些使用多線程的好實現。

另外兩個將帶有經驗;我認爲你需要更多的東西是遊戲開發的一般教程,而不是具體的答案。你應該開始變小。一旦你瞭解了較小遊戲的結構和問題,將它們應用於較大的遊戲會更容易。

最合理的遊戲編程書籍將超過基本的遊戲結構;我喜歡Game Coding Complete,但對於初學者來說這非常複雜(它涵蓋了處理大型項目的更復雜的方法)。遊戲體系結構和設計類似,但可能更適合您的需求,因爲它也涵蓋了一些次要的項目管理「最佳實踐」。

從使用Java原始UI類型(取決於您正在使用的其他庫)自行編寫您自己的「HUD」實現,有很多不同的方式來執行UI。

-1

如果您正在尋找遊戲開發的溫和入門途徑,並且不介意學習C#,XNA有圍繞學習如何編寫遊戲構建的整個社區。它具有各種各樣的樣本 - Game State Management樣本顯示實現屏幕過渡和加載的好方法,並且還有類似的網絡樣本Network Game State Management樣本。他們也有整個遊戲可供下載的源代碼。不管你的長期目標是製作一個Java小程序,Flash遊戲,還是你想用OpenGL在C/C++中工作,XNA都是忽略渲染/聲音的所有毛病實現細節的好方法/等等。當你只是想做你的第一場比賽時,這非常有用,相信我。

0

由於我無法添加評論,因此我會添加一個答案。我建議不要使用線程移動字符,等等。對於文件加載,播放聲音,甚至服務器端網絡,它運行良好,但任何類型的AI /圖形,它往往會導致無盡的頭痛。另外,正如其他人所提到的,Java可能並不是最佳選擇。人們說這很簡單的原因就是很難。與C++相比,Java遊戲開發的支持/教程相當缺乏(GameDev.net是很好的資源,但隨着時間的推移它的焦點更多地轉向專業開發),Flash(體面的教程on Kongregate以及成爲一個可以託管爲你的遊戲),甚至C#(使用XNA)。 Java遊戲開發多年來一直在改進,你可以用它做一些令人驚歎的事情,但是最終可能會變得更加困難。無論您選擇哪種語言,都必須考慮使用圖形/遊戲引擎,因爲它可以減少您的工作量,並讓您有希望創造出更好的遊戲。

-1

不要用java applet方法;小程序通常很煩人,而且速度很慢。

如果你真的希望它可以在瀏覽器中播放,可以考慮使用Flash(actionscript)或silverlight(我對Silverlight中的遊戲瞭解不多)。

Gamedev是一般遊戲編程的東西一個巨大的資源

而且......

我無恥地從YX的回答偷鏈接:

MIT Open Course Ware: Game Theory and Mechanism Design