Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 安卓游戲源碼源代碼下載

安卓游戲源碼源代碼下載

編輯:關於Android編程

最近幾年,很多跨平台游戲框架已經出現。這些框架來填補空白,由於不斷增長的興趣和多樣性的移動游戲平台越來越大。今天是采取比以往任何時候都更容易游戲引擎和開發你的第一個游戲。最困難的部分是選擇合適的游戲框架。然而,從所有可用的選項有一個清楚的站出來:libGDX。這些都是一些的libGDX使得它獨一無二的特點:

跨平台:部署在桌面上,安卓,htlm5和iOS(借助RoboVM)

你可以調試和測試游戲在一個桌面環境,然後將其部署為安卓幾乎為零的工作平台。

偉大的表現

良好的文檔,良好的社區支持

多功能的2D和3D游戲。

友好的開源許可證(Apache 2)。它可以免費用於商業應用。

在這篇文章中我將提供的libGDX概述。一個簡單的2D游戲,被稱為“水果捕手”將作為一個例子。在這游戲果實脫落的天空。你隨身攜帶一個籃子,你可以到處移動,通過觸摸屏幕或滑動你的手機,趕上他們。為了使它更有趣的水果值得更多的點。你當然知道,你一定喜歡的水果!因為,正如我所說,libdgx文檔很好,我不想在這裡蓋基本信息。你可以閱讀如何建立和運行在一個項目維基。你還可以閱讀如何創建一個簡約游戲如何延長其使用游戲屏幕。在這裡,我要介紹一些重要的游戲概念並提供建議,幫助你從一個樣本游戲一個是准備部署在市場。雖然Libgdx是一個跨平台的框架,重點部署的安卓平台

在開始寫作代碼然而,我們必須覆蓋兩個主題是重要的游戲設計。

游戲資源

我懷疑大部分讀者是開發商而不是設計師。在我看來,但是創建一個游戲更是一種藝術而非發展過程。偉大的游戲通常脫穎而出,由於其良好的圖形和美妙的聲音和音樂。這並不意味著一個開發商沒有運氣的創造游戲。這是一個開發者從頭開始創建所有的資源很難,但這是網上找到合適的資源更容易,然後用適當的工具來適應他們。因為沒有人讀到這是一個律師,這個URL列表,提供你可以自由地使用你的游戲資源:

圖像openclipart。公共領域的SVG圖形。

聲音freesound。創作共用許可的聲音。注意個人健康證。

字體Font Squirrel。你可能會感到驚訝,但是你不能在你的游戲使用本地字體。字體松鼠提供商業使用的免費字體。libGDX提供了一個工具,可以讓你很容易地將這些字體。

這當然不是詳盡的列表。還有其他的資源中心以及。當搜索而安卓游戲源碼采取許可證注。不只是用在網上找到你的第一印象。你需要確保你有正確的使用它。另外,上述名單不包括其他類型的資源,如3D模型。

工具

當你找到合適的資源在線(或有支付設計師為您創建),你還沒有准備好開始編碼。大部分的時間資源將需要一些編輯。有設計,可以避免做一個基本的水平。好的方面是,這樣的設計其實是有趣的,是自由的工具,你可以使用:

 

\

 

Inkscape:專業的矢量圖形編輯器。這是很好的一個矢量格式的所有圖像設計。這將允許你輕松地調整他們的任何當前或未來的屏幕分辨率。

GIMP:圖像處理程序。它具有類似功能的PS圖象處理軟件。最游戲發動機需要的位圖圖像(通常PNG)。在導出圖像從它,你可能需要在納入你的游戲做一些最後的觸摸。GIMP的界面不友好的用戶界面,需要一些時間來習慣。然而,GIMP是功能全,有很多的教程和視頻在線。

無畏:錄制和編輯聲音的跨平台軟件。

以上所有的工具都是免費的,開源和專業水平。他們有足夠多的任何任務都需要。除了以上的通用工具,也有很多游戲具體的工具。有創建位圖字體工具,包裝了許多小圖像到一個大的工具,用於創建平鋪地圖工具。都為該工具支持好,他們中的一些人將在本文的後面。

游戲主回路

游戲有自己的一些軟件設計模式。最普遍的人當然是游戲環。我肯定你聽說過它。這個游戲環實際上是一個while循環中,所有處理正在發生。在這個循環中你顯示所有圖片,播放聲音,應用物理游戲邏輯。你要做的是盡可能快的。循環結束時,它立即重新開始。次循環運行在第一二等同於“幀/秒”(FPS)。最高的FPS,更順利游戲將出現。

最游戲框架的實現游戲通過提供一個功能回路(或方法)。這種方法只處理與框架負責呼吁盡快。我們稱這種方法“循環法”。“循環法”的偽—代碼給below is:

 

\

 

無效GameMain(浮動三角洲){

renderworld();

getuserinput();

更新(

這個偽—代碼還涉及著名的MVC模式,這也是受歡迎的游戲 development. The "Loop method" accepts a single float argument. This is called delta and is actually the time passed since the last time the loop method was called. You can think of it as the inverse of FPS. That is: delta = 1 / FPS.

所有的renderworld方法呈現在屏幕上的圖像。這是“觀”的游戲把所安卓游戲源碼有的圖像在適當的位置。所有的圖像繪制每一次循環運行,即使他們的立場沒有改變。下一個循環讀取用戶輸入。這可能來自於觸摸屏,鍵盤,鼠標,的accelerormeter,游戲墊…雖然上面似乎是循環的方法,它是更常見的是作為一個單獨的類中實現(“控制器”),更新的“模型”。最後,應用物理和游戲邏輯。這是因為三角洲的信息是必要的。這個游戲可能需要一個完整的物理引擎或只是一些簡單的物體的運動和碰撞檢測。在任何情況下定時信息是需要實現這。在這一部分的東西像更新分數和檢查游戲在條件將發生。如果你曾與XNA或monogame,你會發現這部分類似的更新方法。這種方法其實更新的“模型”或狀態的游戲。在monogame特殊考慮,以便更新方法是在固定的時間間隔,無論多久的繪制是以執行。換句話說,框架總是調用Update方法,這不會花很長時間來執行,具體的次數,然後用剩余的時間讓世界盡可能頻繁。libGDX不支持一個單獨的更新方法。因此你應該實現這個模式吧。如果renderworld需要太長的時間來執行(低端設備,太多的對象表示),它不應該在每個循環調用,以便更新方法是定期打電話的游戲狀態保持一致。如果你不這樣做,你會發現自己在一個情況下,物體穿越障礙和各種奇怪的事情發生。

Libgdx支持游戲通過主回路模式applicationlistener接口這個接口定義了以下方法:

無效create()/ /“當應用程序首次創建。無效(有)/ /當應用程序被稱為。無效()/ /當應用程序暫停。無效(一)/ /所謂的應用程序時,應該使自己。無效調整大小(int寬度,int高度)/ /“當應用程序大小。無效resume()/ /當應用程序從暫停狀態恢復。

上述方法提供了對所有事件都需要處理一個入口點游戲的生命周期。渲染的方法是主循環的方法,我們上面所描述的。libGDX提供靜態構念的時間增量(getdeltatime() GDX。圖形。)和處理用戶輸入(Gdx.input)。雖然你可以處理輸入直接從內部渲染的方法,還提供了更先進的libGDX機制,允許你實現一個單獨的控制器類(InputProcessor)。如上所述一個單獨的更新方法不提供,你需要實現這個模式吧。

從另一applicationlistener方法創建和處理方法是非常重要的游戲資源處理。因為在你的游戲中你要處理很多與OpenGL的資源,垃圾收集不會幫助你將需要手動處理掉。我們通常分配資源的游戲在創建方法。這就是所謂的只有一次,當游戲是開始。在Dispose方法我們處置這些資源的機會。資源處理當然是通常比這更復雜。為了開始游戲很快,避免出現內存不足的錯誤,一個更復雜的資源處理是必要的。你可能需要預先分配一些資源和分配他們中的一些人在低內存條件早。我們將討論在這之後。

游戲屏幕

下面的圖片顯示了一個典型的屏幕游戲。這個游戲由各種屏幕。每次只有一個單一的屏幕上顯示。當開發一個游戲它是能夠在這些屏幕上覺得很不方便。第一實施初始屏幕菜單,然後游戲開始屏幕,主游戲屏幕(這通常是最難的),游戲在屏幕等。

Game screens

Libgdx支持通過這種模式游戲抽象類和屏幕接口

這是一個非常薄的構造,你需要提供的實現游戲與屏幕對象。酒店游戲類的無非是一個applicationlistener代表繪制一個或多個屏幕上的對象。這使得它更容易在屏幕上看。這也使得資源處理更容易。屏幕界面提供了一種處理方法,而不是自動調用。你應該叫它自己為了處理屏幕上的資源。這是一件好事,因為它允許更靈活的資源處理。一個屏幕可以保持預加載的可重新使用的快。一般這種模式將允許你實現一個資源處理服務。這項服務將預加載資源,它將處理,不會使用不久的資源。例如,當從1級到2級,你需要處理的1級資源和預負荷水平的2人,同時還在屏幕的水平。一個單獨的服務類將負責裝卸資源。這個游戲屏幕模式可以很容易地調用這個服務在適當的時候。

如果你看看游戲屏幕,你肯定會注意到,他們中的大多數都是很簡單的。隨著動作畫面外,所有的屏幕只顯示一條消息,並為用戶提供一對夫婦的行動要點。他們只是簡單的用戶界面。libGDX提供scene2d為了促進這樣的屏幕創造。從libGDX維基復制:

scene2d精良布局,繪圖,處理輸入游戲菜單、HUD重疊,工具,和其他用戶界面。的scene2d.ui包提供了許多演員和其他公用事業的具體構建UI。

我沒有親自用scene2d水果捕手,但我認為你應該考慮一下你自己的應用程序。

繪制圖像

以下代碼片段顯示您所需要做的是為了渲染到屏幕上的圖像(這是從簡單的游戲在libGDX維基的例子)。首先你需要創建一個攝像機和創建方法加載對象。你還創建紋理對象,你在其中加載圖片。在渲染的方法你使用加載對象繪制貼圖。你不應該忘記處理紋理和Dispose方法的加載對象。

紋理bucketimage;

orthographiccamera相機;@Override

公共 無效 create() {

camera = 新orthographiccamera();

settoortho(相機,八百,四百八十);

batch = 新 SpriteBatch();

dropImage = 新紋理(GDX。文件內(。“png“滴。));

…@Override

公共 無效gdx.gl.glclearcolor(render(){

零,零,零。2F,一);

GDX。GL。glClear裡(gl10。gl_color_buffer_bit);

批。setprojectionmatrix(相機。結合);

批。begin();

批。畫(bucketimage,斗。X,斗。Y);@Override

公共 無效有(){

bucketimage.dispose();

batch.dispose();}

……

使用libGDX繪制圖像是很容易的。(如果你相信上述代碼是復雜的,你應該做一個研究與OpenGL繪制圖像沒有一個框架的援助)。然而,上述代碼只適合很簡單的游戲。在實際情況中,你需要增加一個抽象層到您的圖像繪制代碼。

首先,如果你有很多小圖片,你不應該負載逐一。相反,你應該“包裝”成一個大的圖像,這個圖像加載成紋理然後選擇區域從它。下圖描繪了小圖像的水果都打包成一個單一的麥田。

game images atlas

libGDX使創建填充圖像很容易。你可以直接從桌面項目。你所要做的就是添加gdx-tools.jar在類路徑中,寫了幾行代碼。這是我如何做水果捕手。我定義的最大高度和寬度為1024。如果圖像不適合在一個1024x1024像素的圖像,一個以上的將被創建。這將是完全透明的你,為代碼要選擇一個區域不會改變。的texturepacker2.process把所有的圖像從一個特定的文件夾,並復制圖像包包裝的安卓游戲源碼安卓項目文件夾。它還創造了一個“阿特拉斯”的文件。這是一個簡單的文本文件,其中包含的單個圖像的位置到包裝一。在水果捕手三“地圖集”的創建:一個小的圖像,一個在英語文本的圖像,和一個在德國的文本圖像。

Settings settings = 新 Settings();

settings.maxWidth = 一千零二十四;

settings.maxHeight = 一千零二十四;

texturepacker2過程(,“圖像”,“/ fruitcatcher—安卓/資產”,“游戲“);

texturepacker2過程(,“文本圖像”,“/ fruitcatcher—安卓/資產”,“text_images”);

texturepacker2過程(,“文本圖像的”,“/ fruitcatcher—安卓/資產”,“text_images_de”);

當你調用上面代碼,你需要刷新安卓要拿起變化為項目。同時,你應該注意命名約定用途為texturepacker2效用支持動畫。你能說出一系列這樣的形象:image_n.png,其中n是一個整數。n實際上表示幀的索引。如果你有一個精靈,由若干幀,本公約將使它容易加載這些幀。

/ /創建一個對象的阿特拉斯TextureAtlas atlas = 新TextureAtlas(GDX。文件內(。“游戲阿特拉斯”。));/ /1負載星形架TextureRegion startTexture1 = atlas.findRegion(“明星”,一);/ /2負載星形架TextureRegion startTexture2 = atlas.findRegion(“明星”,二);/ /加載圖像按鈕TextureRegion buttonTexture = atlas.findRegion(“按鈕”);

在復雜的游戲,有很多圖像,它可能需要相當長的時間來加載所有的圖片。什麼樣的游戲通常都是顯示“加載”在開始屏幕和啟動加載圖像和其他所需的資產。當一切都是裝的游戲可以開始。有一開始的延遲,使得用戶可以忍受然後游戲運行平穩。Libgdx支持這種模式與援助AssetManager。

正如你看到的載入圖像不是在實際應用中那麼簡單。您可能需要使用一個或兩AssetManager,TexturePacker。您可能還需要實現一個自定義的加載和卸載方案,在屏幕上你之間運行游戲。由於這些原因,我認為,最好是創建一個單獨的服務,將為所有圖像的其他代碼層.我把這種服務ImageProvider在果實的麥田。有這樣的服務可以讓你嘗試不同的裝卸技術而不影響整安卓游戲源碼個源基地。這真的會有回報的,如果你設計游戲從一開始就這樣。

繪制文本

如果你還沒有開發游戲之前,它可能會作為一個驚喜,需要特殊的考慮為了顯示文本。然而,你應該明白,出於性能原因,游戲框架使用OpenGL和沒有辦法結合本地代碼可以使用系統字體。幸運的是,libGDX使創建位圖字體非常容易,然後在你的應用程序中使用。都通過了我的點陣字體工具。這是一個開放源碼的工具。以前很難找到它的一個工作版本。現在libGDX保持它作為工具,你可以運行它直接從libGDX雙星。耶羅可以加載任何系統字體轉換成位圖字體,在格式libGDX理解。它也可以直接加載TTF字體,無需安裝。當工作與耶羅注意許可證。只使用你有權這樣做的字體。在您創建的位圖字體,很容易加載它,然後用它來顯示文本。

/ /加載位圖字體BitmapFont font = 新bitmapfont(gdx.files.internal(“字體/ poetsen FNT”。),

GDX。文件內(。“字體/ poetsen.png”),假);/ /一個SpriteBatch的對象畫一個字符串字體。畫(加載,line_string,LINEX,細的);

狀態

你可能沒有意識到從一開始,那是你的游戲必須能夠保存其狀態,然後恢復它。這在移動設備,可以從一個電話打斷了,是特別重要的。當球員回到游戲中斷後,她會發現她已經離開了這個國家。如果她要取得較高的成績,發現她已經從一開始,她會生氣的,你應該期待一些非常負面的評論。

你的游戲必須從頭開始,從一個已知的狀態以及。這個游戲必須不斷更新自己的狀態,必須堅持一個非易失性定位在適當的時候。libGDX提供JSON的事業這將允許您進行序列化和反序列化的類在一個跨平台的方式。果器有兩個獨立的狀態類:gamescreenstate是用來存儲當前的狀態游戲(點收集,數量的剩余時間,水果在天空)和游戲狀態,持有的有關信息游戲會話。都是保存在E暫停方法游戲。如果你有更復雜的狀態對象,花了很多時間序列,你應該將他們定期和不等待暫停的方法。

打電話安卓本土代碼

打電話安卓本地的代碼在某些情況下可能是必要的:

顯示廣告

應用內購買

使用本地用戶輸入

結合排行榜

在維基你可以閱讀如何整合libGDX游戲隨著AdMob。我用描述技術在水果捕手顯示AdMob的廣告。然而,我需要的人代碼也讓用戶的名字,當一個高得分達到和顯示前5的成績。結合本地代碼實際上發生在AndroidApplication類這是一類由Libgdx延伸安卓活動為了調用本地代碼從libGDX你應該做到以下幾點:

創建一個接口定義的方法為行動,需要調用本機入口點代碼。實現Android應用將實現該接口。我把這個接口GameEventListener。該接口的一部分而不是libGDX的安卓項目它也可從桌面項目以及。

你的執行com.badlogic.gdx。游戲將接受gameeventlistener作為參數的構造函數。這可以作為平台,你不在乎實現本地功能空了。我需要快速的調試與測試水果捕手桌面版。我不需要但顯示廣告和它的高分。我只是傳遞一個空的gameeventlistener它。在我的游戲課堂上我檢查null,gameeventlistener方法之前調用。

After the above you will have entry points methods in the AndroidApplication class. These methods will be called by the libgdx engine. Because libgdx doesn't run in the UI thread you can't access the UI from them. Instead you need to use a message handler to post messages that will trigger the appropriate UI action.

編制說明

在文章不頂的zip文件包含libGDX的二進制文件(這會使壓縮文件太大)。然而,這是很容易的添加。下載並運行gdx-setup-ui.jar libGDX。這允許你創建一個新項目或更新一個現有。點擊“更新”,選擇位置,在那裡你已經提取zip文件和所需的文件將被添加。一件事,不會說是gdx-tools.jar文件。你需要手動的桌面項目的libs文件夾。

我也做了代碼可在GitHub。你可以從那裡克隆庫。所有需要的文件都包括。最後,你可以下載游戲從谷歌玩。請注意,這個版本的游戲顯示廣告的頁面頂部的APK是無廣告。

概要

如果文章太長,你立即滾動播的底部,這是一個總結。

Libgdx是一個跨平台的開源游戲框架,你可以自由使用的商業應用。

Libgdx實現游戲applicationlistener接口與主回路模式。它還實現了游戲屏幕模式。

libGDX更容易呈現在屏幕上的圖像。它還提供包裝成一個大的和小的圖像加載圖像背景上的工具,同時顯示初始屏幕。

使用libGDX可以嵌入位圖字體的一行代碼。你可以從安裝在您的系統提供的一個實用任何字體創建一個位圖字體。

調用本機代碼通常要求(展示廣告、應用內購買、本地輸入文本,結合領先的服務)。

要拯救你的國家游戲定期。libGDX使這個容易與跨平台的JSON序列化程序。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved