基於Android的游戲開發
① 請問有適合安卓游戲開發初學者用的游戲引擎嗎
Unity是比較容易上手,在國內比較熱門的游戲引擎之一,推薦Unity,使用JavaScript 或 C#進行腳本編寫
② Android應用開發 和游戲開發 在程序上 有什麼不同
應用開發與游戲開發最大的區別是,應用開發不需要去了解android中View的繪制過程
View的實現等,而游戲中會大量使用View
或者
SurfaceView
人物,精靈都需要用代碼去控制
以下是游戲開發中的總結:
1.
首先應該知道android游戲開發的一些基本框架。
Android游戲開發中首先是View類開發框架。在Android游戲開發中,任何一個View類都只需要重寫onDraw方法來實現界面顯示。游戲的核心是不斷的繪圖和刷新界面,在
Android中最常用的方法是利用Handler來實現UI線程的更新,也可以直接在run方法中使用postInvalidate()方法在線程中更新界面。其次,是SurfaceView類開發框架。
2.
游戲開發中常用到的基本類
Android游戲開發中通過graphics類來顯示2D圖形,graphics中包括了Canvas(畫布)、Paint(畫筆)、Color(顏色)、Bitmap(圖片)等常用類。
例如繪制字元串用canvas類的drawText方法來實現,drawRect用來繪制矩形,設置透明度可以用paint類的setAlpha,同時
Color.rgb方法可以直接獲得整形數值代表的顏色。此外在繪制圖片時應該首先從資源文件中裝載圖片,然後才能繪制到屏幕上去。
3.
關於自適應屏幕解析度的問題
Android游戲開發中每款手機解析度的不同註定是程序員開發游戲必須考慮的問題,怎樣才能寫一個程序而達到可以在不同解析度的機子上運行良好,這將是決定一個游戲好壞的重要因素之一。在游戲資源res下有三個和圖片存儲有關的文件夾:drawable-hdpi、drawable-mdpi、drawable-ldpi。
4.
如何鎖定屏幕是橫屏還是豎屏
一款游戲通常不會設計成橫屏豎屏都可玩,會固定成橫屏或豎屏。Android游戲開發中只需在AndroidManifest.xml裡面配置一下就可以了,加入這一行
android:screenOrientation="landscape"
例如(landscape是橫向,portrait是縱向)。
5.
view與view之間的跳轉
Android游戲開發中一個游戲不會只有一個view,比如歡迎動畫,游戲畫面,菜單頁面等等,如何實現它們之間的跳轉,這里有一個方法,就是用Handler類實現。
③ 怎樣用Android開發Unity3D游戲
開發環境
Window 7
Unity3D 3.3.0
MB525 defy Android 2.1-update1
本次學習:
1.認識Unity
2.Unity3D環境搭建與Android軟體生成
3.Unity3D基本使用方法
1.認識Unity3D
Unity3D是一個讓開發者能夠在多平台製作同一款游戲的游戲開發工具,有專業的圖像處理和游戲引擎,能做出各式各樣的游戲。
羽化以前認為Android游戲開發只能在Eclipse
裡面死活敲代碼,也許是自己閱歷不夠,不知道游戲引擎能給游戲開發帶來如此大的便利,無論是3D游戲還是2D游戲都可以用Unity3D開發而且轉成
IPHONE游戲也很簡單,因為Unity3D很多移動開發功能IPHONE與Android是共用的,其中最主要的控制器就是一樣的,這樣我們就基本上
告別Eclipse了。。。
由於Unity3D裡面的腳本是用C#或者Java
Script寫的,學習過這兩個語言最好,不會也沒關系,還可以學嘛(和羽化一樣),其實C#和JS與Java類似,看起來不會那麼陌生,要注意的是JS
中無論什麼變數聲明都是」var」表示,這點對於聲明經常出錯的羽化來說很好-0-
2. Unity3D環境搭建與Android軟體生成方法
這里給大家介紹兩個網站,在裡面可以下載到最新的UnitySetup-3.3.0包括破解補丁U3v3.3.0f4_Win和腳本編輯器
UnityScriptEditor2.55,還有很多學習資料,包括羽化正在學的Unity視頻教程(全英文啊=。=),還有全中文幫助文檔,雖然現在
資料很少,但可以看出Unity3D越來越給力中。。。
http://3d.ceeger.com/ Unity3D中文幫助文檔
http://www.u3dpro.com/ Unity3D專業論壇
安裝過程就不詳細寫了,很簡單的。這里要注意的是,安裝的系統用戶名不要是中文的,要不打開Unity3D以後Scene裡面看不到東西,這是羽化的切生體驗- -。
1)第一次打開Unity3D後會出現創建Project的界面,這就和Eclipse創建項目一樣的道理,這時候可以添加一些插件包,這步操作羽化留在了軟體打開後。
2)新建以後就出現了開發界面,這里簡單介紹下:
Scene 開發視圖:裡面可以拖拽物體位置、改變大小、旋轉角度等,是開發中最常的地方。
Game 游戲視圖:點上面的運行以後游戲就會在Game視圖裡面運行,沒點的時候可以看到攝像機當前的圖像。
Hierarchy 層試圖:放置游戲物件,在游戲運行時可以觀察游戲物件變化
Project 工程視圖:裡面可以新建文件夾管理腳本,渲染,圖片等。
Inspector 檢查視圖:顯示物件屬性等
最下面一條,一般情況下不會顯示東西,如果出錯或者列印語句都是顯示在下面:
先不管那麼多,生成個Android軟體再說。
3)在Project裡面右擊 ——〉 Import Package ——〉 Standard
Assets(Mobile)這是移動開發的包,全部Import導入吧。再在Project裡面選中導入的Standard
Assets(Mobile)———〉Control
Setups——〉CameraRelativeSetup,這會提示保存Scene,我們就保存一個,可以看到Project裡面多了一個我們保存的
Scene,游戲運行就是從Scene開始,這時應該可以看到這個包的顯示了。一眼就看出這是一個演示控制器的包,這個時候我們就不管這個工作原理,先放
在Android手機裡面看看效果。
4)點擊左上角的File菜單——〉Build Settings——〉選中Android——〉右邊Development
Build勾打上——〉點擊下面Player Settings,這時在Insperctor視圖裡面可以看到一些基本設定,第一個Resolution
and Presentation是游戲視圖設定,橫屏還是豎屏隨你可以默認它,點擊Other
Settings,這里主要設置Identification這個屬性,裡面第一個相當於項目包,這個一定不能默認,自己隨便寫個名字比如羽化就是
com.LB.first其他設定大家可以自己研究,對於生成這個軟體,這步必須改。
5)然後回到窗口點擊Build,這里第一次點會跳出一個選中Android SDK的路徑,大家都懂的,自己放哪的選哪,確定後,輸入一個apk的名字,就叫作LB,如果發生什麼錯誤,可以看看下面的提示。
6)軟體已經生成好了後就可以丟到手機裡面安裝試試了,你可以直接丟在SD卡裡面安裝,這里羽化給大家介紹個簡單的方法,對於模擬器還是真機都適用,首先
設置環境變數,在Path裡面添加如羽化自己目錄的D:android-sdk-windowsplatform-tools,這樣就可以在命令控制台里
面打命令了,比如羽化安裝的命令是cd C:UsersLiBeiDocumentsLB先到apk目錄下,再輸入adb install
LB.apk這里要注意若你原來安裝過相同名字軟體,先卸載了再裝。
7)實際運行效果左搖桿是控制位移,右搖桿是控制方向:
步驟看起很多,其實很簡單。
3.Unity3D基本使用方法
這里羽化推薦大家看看視頻,看視頻學起來得很快,羽化就講講自己照視頻做的例子,解壓後可以通過Open Project選項打開這個例子,選中Scene裡面的Scene1打開,運行是在電腦上。
1)場景創建
全是Cube搭建的,看一眼就知道了,Cube可以在上方Gameobject——〉create
other裡面創建,也點擊Hierarchy層視圖下面的Create創建,位置調整可以在Scene裡面通過左上角的物件選項慢慢調整,第一個是觀
察,第二個是調整位置,第三個是調整角度,第四個調整大小。
2)主視角
這里主視角是用Standard Assets(這要自己導入)——〉Character Controllers——〉First Person
Controller 可以看到這里能直接用的物件其實都是Prefab預設。這里可以看天空,其實是運用了Skybox組件,選中Main
Camera可以在菜單中Component——〉Rendering——〉Skybox。
3)光
若無光運行的時候漆黑一片,這里放了個Point Light點光,數值可自行調整,添加和Cube一樣。
4)腳本
腳本放在Scripts文件夾下,裡面Door是控制門開關,Shoot是滑鼠點擊事件,Respawn是墜落返原地。注意這里腳本寫好以後要拖到對應物體上才能運行。
5)動畫
開門其實是個動畫,創建在Component——〉Miscellaneous ——〉Animation
6)火焰
火焰是粒子產生的,粒子創建和Cube類似,Particle System裡面的數值要做相應調整就會有火焰效果了。
再介紹幾個Component裡面重要的組件
1)Rigidbody 剛體
剛體顧名思義,有重量,帶碰撞都是剛體的屬性,若你為一個物件添加這個組件,證明你需要前面這幾個屬性。
2)Character 人物
其實裡面放的都是控制視角或者是主角操作的腳本。
3)Trail Renderer 路徑渲染器
很有用的組件,可以看到自己走過的路徑,論壇上有個切水果刀光的例子就是用到它。
④ 開發安卓游戲需要用到什麼開發工具android studio和游戲引擎有什麼關系
對的,更確切點說,游戲引擎是個專業游戲開發工具,裡麵包含了各種庫,加上本身方便的操作性和擴展性,組成了一整套開發游戲的解決方案。
android studio是安卓官方(谷歌)做的專門開發安卓平台應用的工具,理論上,導入相關庫可以實現任何功能,比如用OpenGL庫就可以做3D,只是很少有人這么干,太麻煩了,操作不便,做游戲更不用說,稍微復雜點的開發就累死。也就開發純功能性APP或者作為中間打包工具用。
而且現在游戲引擎都很強大,可以不依賴於android studio直接發布apk,而且還跨平台
⑤ 基於android系統的手機游戲的開發
如果你有興趣為Android平台開發游戲,有很多你需要了解的東西。如果你有過游戲開發經驗,那麼轉移到移動平台上來將不是特別困難。你主要只需學習其架構以及API就行了。如果你是一名游戲開發新手,我總結了一張列表,上面有你必需知道的東西,供你起步用。這些知識適用於很多類型的游戲,包括動作類、策略類、模擬類和益智類。Android是一個基於Java的環境。這對初學者來說是個好消息,因為相對於C,Java被廣泛認為是一門更容易上手的語言,它是移動開發的規范。Google也做了一件出色的工作,它將API文檔化並提供示例代碼供使用。其中有個叫做API Demos的示例幾乎展示了所有API的功能。如果你熟悉Java並且用過Eclipse,要讓你的第一個應用跑起來那是相當簡單。如果你以前從沒寫過代碼,在你前進路上還要學習很多,但別氣餒。
獲取SDK
新手上路的第一步便是獲取Android SDK(軟體開發工具包)。SDK里有一個核心類庫,一個模擬器,一些工具和示例代碼。我強烈建議使用Eclipse和Android Eclipse插件。如果你玩Android的話,Eclipse IDE對Java開發者來說很好用。如果這是你第一次開發Java項目,你可能會需要下載全套JDK,它裡麵包括簽名和部署你的應用程序的一些工具。
學習應用程序架構
別急著一頭扎進開發的海洋里,理解Android應用程序架構是很重要的。如果你不學一下,你設計出來的游戲在線下將很難調試。你將需要理解、Activities、Intents以及它們怎樣相互聯系。Google提供了很多有用的架構信息。真正重要的是要理解為什麼你的游戲需要多於一個的Activity,以及什麼才是設計一個有良好用戶體驗的游戲。要理解這些,首先要了解什麼是Activity生命周期。
學習Activity生命周期
Activity生命周期由Android操作系統來管理。你的activity創建、恢復、暫停、銷毀都受操作系統的支配。正確處理這些事件是很重要的,這樣應用程序才能表現良好,做用戶認為正確的事。在你設計你的游戲之前了解所有這些是如何工作的是件好事,因為以後你可以為自己節省調試時間和昂貴的重新設計時間。對大多數應用來說,默認的設置將工作正常,但對於游戲,你可能需要考慮將標志打開。當設置為默認時,Android在它認為合適時會創建activity的新實例。對於游戲來說,你可能只需要一個游戲activity的實例。這對於你要怎樣管理事務的狀態有些影響,但對於我來說,這解決了一些資源管理的問題,應予以考慮。
主循環
根據你寫的游戲的類型,你可能需要也可能不需要一個主循環。如果你的游戲不依賴於時間或者它僅僅對用戶所做的加以回應,並且不做任何視覺上的改變,永遠等待著用戶的輸入,那麼你就不需要主循環。如果你寫的是動作類游戲或者帶有動畫、定時器或任何自動操作的游戲,你應該認真考慮下使用主循環。
游戲的主循環以一個特定的順序通常盡可能多的在每秒鍾內「滴答」提醒子系統運行。你的主循環需要在它自己的線程里運行,原因是Android有一個主用戶界面線程,如果你不運行自己的線程,用戶界面線程將會被你的游戲所阻塞,這會導致Android操作系統無法正常的更新任務。執行的順序通常如下:狀態,輸入,人工智慧,物理,動畫,聲音,錄像。
更新狀態意思是管理狀態轉換,例如游戲的結束、人物的選擇或下一個級別。很多時候你需要在某個狀態上等上幾秒鍾,而狀態管理應該處理這種延遲,並且在時間過了之後設置成下一個狀態。
輸入是指用戶按下的任何鍵、對於滾動條的移動或者用戶的觸摸。在處理物理之前處理這些是很重要的,因為很多時候輸入會影響到物理層,因而首先處理輸入將會使游戲的反應更加良好。在Android里,輸入事件從主用戶界面線程而來,因此你必須寫代碼將輸入放入緩沖區,這樣你的主循環可以在需要的時刻就從緩沖區里取到它。這並非難事。首先為下一個用戶輸入定義一個域,然後將或函數設為接到一個用戶動作就放到那個域里,有這兩步就夠了。如果對於給定游戲的狀態,這是一個合法的輸入操作,那麼所有輸入需要在那一刻做的更新操作都已經定下來了,剩下來就讓物理去關心怎樣響應輸入吧。
人工智慧所做的類似於用戶在決定下一個要「按」哪個按鈕。學習怎樣寫人工智慧程序超出了這篇文章的范圍,但大體的意思是人工智慧會按照用戶的意圖來按按鈕。這些也有待物理去處理和響應吧。
物理可能是也可能不是真正的物理。對於動作類游戲來說,關鍵點是要考慮到上一次更新的時間、正在更新的當前時間、用戶輸入以及人工智慧,並且決定它們朝著什麼方向發展和是否會發生沖突。對於一個你可視化地抓取一些部件並滑動它們的游戲來說,物理就是這個游戲中滑動部件或者使之放入合適的位置的部分。對於一個小游戲來說,物理即使這個游戲中決定答案是錯還是對的部分。你可能將其命名為其他東西,但每個游戲都有一個作為游戲引擎的紅肉部分(譯者註:可能是主體部分的意思),在這篇文章里,我把這部分稱為物理。
動畫並非像在游戲里放入會動的gif圖片那樣簡單。你需要使得游戲能在恰當的時間畫出每一幀。這並沒有聽起來那麼困難。保留一些像isDancing、danceFrame和那樣的狀態域,那樣動畫更新便能決定是否可以切換到下一幀去了。動畫更新真正做的事就那麼多。真正來顯示動畫的變化是由錄像更新來處理的。
聲音更新要處理觸發聲音、停止聲音、音量變化以及音調變化。正常情況下當寫游戲的時候,聲音更新會產生一些傳往聲音緩沖區的位元組流,但是Android能夠管理自己的聲音,因而你的選擇將是使用SoundPool或者MediaPlayer。它們都需要小心處理以免出錯,但你要知道,因為一些底層實現細節,小型、低比特率的聲音文件將帶來最佳的性能和穩定性。
錄像更新要考慮游戲的狀態、角色的位置、分數、狀態等等,並將一切畫到屏幕上。如果使用主循環,你可能需要使用SurfaceView,並做一個「推」繪制。對於其他視圖,視圖本身能夠調用繪制操作,主循環不必處理。SurfaceView每秒產生的幀數最多,最適合於一些有動畫或屏幕上有運動部件的游戲。錄像更新所要做的工作是獲取游戲的狀態,並及時地為這個狀態繪制圖像。其他的自動化操作最好由不同的更新任務來處理。
3D還是2D?
在開始寫游戲之前,你要決定是做3D的還是2D的。2D游戲有一個低得多的學習曲線,一般更容易獲得良好的性能。3D游戲需要更深入的數學技能,並且如果你不在意的話會有性能問題產生。如果你打算畫比方框和圓圈更復雜的圖形,還需要會使用3D Studio和Maya那樣的建模工具。Android支持OpenGL用來3D編程,並且在OpenGL方面有很多很好的教程可供學習。
建立簡單、高質量的方法
上手時,要確保你整個游戲不要就用一個龐大而冗長的方法。如果你遵循我上面描述的主循環模式,這將相當簡單。每個你寫的方法應當完成一個非常特定的任務,並且它就應該無差錯地那樣做。舉例來說,如果你需要洗一副紙牌,你應該寫一個「」的方法,並且該方法就應該只做這一件事。
這是一個適用於任何軟體開發的編碼實踐,但對於游戲開發來說這尤為重要。在一個有狀態的、實時的系統里,調試將變得非常困難。使你的方法盡量的小,一般的經驗法則是每個方法有且僅有一個目的(譯者註:完成且僅完成一個功能)。如果你要為一個場景用編程方式畫一個背景,你可能需要一個叫做「」的方法。諸如此類的任務能夠很快完成,因而你可以按照搭積木的方法來開發你的游戲,而你能夠繼續添加你要的功能,並且不會使得這一切難以理解。
最重要的是效率!
性能是任何游戲的主要問題。我們的目標是使得游戲的反應越快越好,看起來越流暢越好。某些方法如Canvas.drawLine比較慢。並且要將屏幕大小的點陣圖畫到主畫布上,每一幀都是代價昂貴的。如何權衡對於達到最佳性能很有必要。確保管理好你的資源,使用技巧來以最少量的CPU資源完成你的任務。如果性能不好的話,即使是最好的游戲玩起來也沒勁。人們一般對於游戲卡或者響應慢幾乎難以容忍。
提示和技巧
看一下SDK中的示例LunarLander。它使用SurfaceView,這對於一個每秒需要處理最多幀的游戲來說是合適的。如果你要做3D,示例中有GLView可以處理3D顯示的很多初始化工作。對LightRacer來說,我不得不優化把所有東西都畫出來這種方法,否則幀率將會大大地降低。我只在視圖初始化的時候把背景畫進一個點陣圖里一次。路徑放在它們自己的點陣圖里,隨著車手的前進而更新。這兩個點陣圖在每一幀里都被畫進主畫布中去,車手畫在頂端,到最後會有一個爆炸。這種技術使得游戲運行在一個可以玩的程度。
如果適用的話,使得你的點陣圖的大小精確等於你打算畫到屏幕上的大小,這也是個好的實踐。這么做了以後就需要縮放,可以節省CPU資源。
在游戲中始終一致的點陣圖配置(如RGBA8888)。這將會通過減少不同格式之間轉換的時間來節省圖形庫的CPU時間。
如果你決定開發3D游戲但沒有3D方面的知識,你需要挑選一兩本3D游戲編程方面的書並學習線性代數。你最少要理解點積、叉積、向量、單元向量、法線、矩陣和變換。這方面我遇到的最好的書是叫《3D游戲編程和計算機圖形學數學》。
聲音文件要小而且低比特率。需要載入的越少,載入速度越快,游戲所需內存越少。
聲音使用OGG文件,圖片使用PNG文件。
確保釋放所有媒體播放器,當Activity銷毀時空出所有的資源。這能保證垃圾收集器清除了所有東西,也能保證在兩次游戲開始之間沒有內存泄露。
加入Android谷歌小組,尋求社區支持。這里有人可以在開發過程中給你幫助。
最重要的是,花時間測試再測試,確保每一小部分都如你所願地工作。改善游戲是整個開發中最耗時最困難的部分。如果你匆匆將其推向市場,你很可能會使用戶們失望,你會感到你的努力都白費了。你不可能使所有人都喜歡你寫的東西,但你至少要盡量發布你最高質量的作品。
⑥ 安卓的游戲製作用什麼軟體
首先要會計算機語言,比如Java編程語言就可以開發安卓游戲。
還會設計游戲引擎,比如AndEngine的開源游戲引擎和Box2D物理引擎等。
還有軟體開發工具,比如Android軟體開發工具包AndroidSDK。
另外圖像工具,游戲離不開大量的圖像AdobeIllustrator或其他專業工具。
(6)基於Android的游戲開發擴展閱讀:
安卓APK開發環境
Android是一個基於Java的開發環境,Google也在API文檔的書寫和樣例的提供上做了很出色的工作。
下載並安裝android的SDK[軟體開發套件],這套SDK主要包括有核心庫文件,一個模擬器,開發工具和一些示範的樣例文件。推薦使用Eclipse和androideclipse擴展。
如果只是使用android,EclipseIDE就已經足夠了,但如果是第一次開發Java應用,下載完整的JavaSE開發工具(JDK)它包括簽發應用程序所需要的工具。