編程 游戲地圖算法實現,導航地圖該如何編寫?
考慮編寫導航地圖之前首先要搞清楚的是地圖數據的采集,這個不是誰或者那個單位都可以采集的,【別想著自己弄個無人機飛上去就航拍,這是不允許的,甚至是違法的】要有國家發的拍照的,必須具有測繪資質的,據我所知我國大概也就10家左右具有甲級測繪資質的公司。最大的圖商有兩家:高德和四維圖新,市場占比應該類似目前最火的摩拜單車和OFO的比例,其它的圖商就是什么永安行啥的了。高德是阿里旗下了,四維圖新屬于國企,騰訊入股。采集數據屬于外業任務,很辛苦。但目前隨著科技進步,采集的儀器設備越來越先進,都在不斷更新,情況應該好點。
采集好數據后就要存儲,你猜對了,每家圖商都有自己的存儲格式,還沒有一統江湖的標準,即便有估計也不會分享,否則自己沒飯吃了。當然數據內容基本都差不多,大體是GIS方面的點、線、面的矢量數據,比如路網、POI等。采集的詳細數據就有道路的拐點、坡度、高程等等信息。
數據采集好了,也保存下來了,剩下的就是怎么成圖了。那就看你的地圖的使用環境了,是手機上的,PC上的,是車載前裝的導航儀上的,還是凱立德那種手持的PND上用的。是二維的地圖還是三維的地圖;包括室內地圖嗎。一句話,就是根據儀器的OS,操作系統和使用場景來選擇渲染引擎和編程語言。當前手機基本是iOS和Android,導航儀基本主流還是Windows Mobile。一般會根據團隊的自身情況,選擇適合自己的圖形渲染引擎,如果是3D的,還要考慮使用OpenGL。如果在PC端,可能還會考慮使用WebGL的渲染引擎。然后發布不同平臺下的SDK如Windows,Linux Mac,iOS,Android等等,也有發布基于JS的圖形引擎實現跨平臺的。
計算機繪圖知識就太復雜了,這里一句倆句可說不完??从嬎銠C圖形學之類的書看去吧。如果說關于渲染引擎,選擇那就太多了,有利用開源的,也有自己開發的,或者把開源的變成自己開發的。這里不再一一列舉了。想知道詳細,具體可以到www.oschina.net下面輸入關鍵字【地圖引擎】來查看返回結果。反正都是解決怎么在屏幕上又快又好看地畫出保存的測繪數據,如果在導航上,二維的場景下無非是點、線、面等?,F在玩花樣,加上全景圖,三維模型等。不知道這么回答您滿不滿意。
開發一款游戲需要什么軟件?
首先你有編程基礎是再好不過的了。
手機游戲開發的平臺是JME,一般不會用到C++。當然學過C++的更好。
你學的可能是JEE,所以你一定要把JME好好學一下,重點是MIDlet,CANVAS,RecordStore。此外MIDP1.0和2.0的特性要搞清楚,如果做和網絡有關的還要學習MIDP網絡編程。掌握這些就基本上門什么問題了,學的不多,對于一個會C++/JEE的人來說,應該可以在1個月左右學完。
和其他語言一樣,JME關鍵是要多練,自己試著開發幾個小游戲出來是不錯的練習辦法,可以找出你學習上的不足點。有條件的話,做出來的游戲應該拿到真機上運行,因為在模擬器上運行和真機有區別。
如果是獨立開發手游,那么還要掌握一些基本的軟件,如PhotoShop,Mappy,和簡單的聲效處理。
另外有需求的話可以學學JTWI,特別是Mobile 3D Graphics(M3G)技術,這是以后發展的趨勢(由于本人對這塊很薄弱,所以不能誤導你,就不多說了)。
總之,你就再需要學JME和多練習,就夠了。PS.一般來說JME工程師比JSE和JEE的待遇要好一些。而且從事游戲行業的上班玩游戲不會被罵。如果哪天你閑著無聊和同事聊天聊的太囂張被BOSS看見了,他第一句應該是說“有閑功夫多玩玩游戲,閑聊什么天!?!?/p>
手機游戲制作
全球手機頂尖游戲3d motoracer 制作全揭密
圖文_吳剛 北京數位紅軟件應用技術有限公司執行董事
林志強 數位紅nightmare ii首席三維美術設計師
王科 數位紅motoracer3d首席三維美術設計師
3d motoracer 是數位紅公司開發的一款針對nokia s60設備及sony ericsson p800 (uiq)的3d游戲,該游戲上市幾個月來,已經成為全球最暢銷的nokia s60、p800游戲應用前三名之一。本文就是對3d motoracer 的開發過程進行大致的介紹。
i. 游戲引擎的準備
在制作游戲之前,必須有一套經過長期測試并且適用的游戲引擎。
數位紅用了兩年的時間總結開發出一套基于移動設備的游戲引擎:dragon bone game engine for mobile phone(龍骨),他可以支持目前大部分的高端移動設備,它不僅可以使程序開發人員及游戲項目節省了大量的時間,另外還可以讓美術人員最直觀的看到其設計效果。它最大的價值就是可以使開發人員的一套代碼在不需要改動程序的情況下編譯運行在不同設備平臺上(改動不超過20%)。目前數位紅及其他公司已經使用它開發游戲超過了30款。
引擎提供了非常完善的9個模塊與3個增強模塊,可以完全滿足各類游戲開發的需要。游戲引擎可以直接嵌入到開發者的程序中,不需要額外的支持程序即可使所開發的游戲獨立運行。游戲引擎簡單、易用,編譯后體積很小,占用內存也很小,可以節省玩家的內存空間及無線下載費用。基本引擎包含9個模塊,引擎函數界面提供了類似windows的使用模式:
1、 文件操作模塊:提供類似標準c的fopen,fclose等函數。
2、 內存管理模塊
3、 2d圖形圖象模塊
4、 對話框模塊
5、 sms操作模塊:可以在程序內部對sms的收發進行截獲處理。
6、 加密模塊:提供識別使用設備的imei功能,用于軟件的加密目的。
7、 聲音模塊
8、 資源打包及壓縮模塊:可是使最后發售的軟件包體積變小,盡量少的占用用戶的內存空間。
9、 常用函數:如字符串操作等函數。
10、例子:提供一套完整游戲magicline的源程序。
引擎增強模塊構成
其增強部分,包含三個模塊:
1、 實時3d增強模塊
2、 聲音增強模塊
3、 圖形文件增強模塊
ii. 正式開發的前期工作
a. 開發工具的準備
在很多人看來,手機游戲還是一種很新鮮時尚的玩意兒,所以,談起手機游戲的時候難免有種莫測高深的感覺。其實,手機游戲的整個制作過程十分簡單。從某種角度而言,它是一種傳統的回歸,同時也是新舊技術的相互融合。最常用的開發工具有vc++,j builder及codewarrior,在設計工具上則更是和普通的pc游戲制作軟件沒有大的區別。有的設計人員更愿意使用“骨灰級”的二維設計工具dp,也有人愿意用3dmax、maya建模之后再進行二維修改,當然所有這些方法都要根據游戲的最終設定來決定。我們在做java游戲的時,一般都是采用像素級的二維繪制完成圖片,即逐個像素點的完成。但在制作pda等類似設備的游戲時,就會采用3dmax或者maya建立模型,渲染后再修整。在設計過程中,我們也與大多數游戲公司一樣使用了maya、3dmax、photoshop、painter等工具。
b. 確定游戲的各項參數及目標設備
這要求程序人員能給出準確的圖片限制大小,即所有圖片允許美工占用多少空間。由于手機游戲的制作受數據量的限制很大,所以我們在設計游戲時,經常為減少1k空間大小而大傷腦筋。另外,就是需要準確了解該手機允許的色彩數、分辨率、整屏刷新率,其實這也是對游戲引擎的一種測試。
以motoracer 3d為例,我們設想使其運行在nokia 9210、nokia 7650/3650、sony ericsson p800、pocket pc平臺上。在數位紅,由于我們擁有了自主開發引擎dragon bone game engine for mobile phone,游戲引擎是跨平臺的,所以這一步驟我們就省去了不少時間。我們以nokia 7650/3650為最初調試藍本,原因是在這些設備中,nokia 7650/3650的速度相對較慢,屏幕尺寸也相對其他設備小,因此以它為基礎設備最為合適。
如下表,我們設計了motoracer 3d的基本技術參數。
技術參數 達成目標及要求
圖像刷新速度 >18/fps
文件安裝完成大小 <1000k
文件未安裝大小 <400k
占用內存峰值 <700k
使用過程中游戲占用內存 <700k
游戲與操作系統兼容性 nokia 9210、nokia 7650/3650、sony ericsson p800、pocket pc
游戲圖形特效清單 無 alpha
圖形文件
聲音文件 .wav
數據自定義
目錄結構/變動文件清單
使用的動態鏈接庫 未知
下面是經過初步估計的基本圖片清單:
跑道外面的沙地草地元素
跑道的邊上的指示方向的牌。(左右)
跑道地面元素
背景的天空圖。
起跑線。
選擇的時候得車圖(4張)
比賽開始前站立的背面圖(4張)。
比賽時候得車加人背面圖(4套,每套9張,分別9個角度,從直立開始,每15度一張。)
撞車后的圖(3楨)
比賽完畢名次畫面。
速度儀表圖。
數字(0至9等寬橫排,分別有4套,速度數字,檔位數字,排位數字)
菜單背景
top ten
按鈕
巡回賽排名的背景
c. 準備游戲策劃
很多開發者認為,手機游戲的策劃不重要,這個觀點是嚴重錯誤的,手機游戲的美術與程序開發工作量都非常有限,其表現力也受非常大的制約,因此一款手機游戲的可完性如何在某種意義上完全取決于游戲策劃本身。
在此過程中,手機游戲策劃基本同傳統游戲策劃無異。但游戲策劃必須要對游戲的操作做出準確的設計,每個手機的鍵盤都不太相同,畢竟pc上的鍵盤基本都是101鍵。
再就是根據上面第一步給定的美工空間限制,美工要同策劃共同商議,嚴格計算每張圖片占用的空間,甚至是一個小圖標都是不可以漏掉的。
以motoracer 3d為例,我們的游戲策劃做了大量有關物理力學方面的公式,使其美工在設計圖片時更符合真實的效果。
如下表:我們將每種賽車的速度特性均體現出來。
gear 1 gear 2 gear 3 gear 4 gear 5 grip 顏色
車1 最大速度(mph) 97 107 135 156 176 0.45 綠黃
加速度(mph/秒) 21 18 16 12 8
車2 最大速度(mph) 90 102 127 148 168 0.25 紫黃
加速度(mph/秒) 23 20 18 14 10
車3 最大速度(mph) 102 112 140 160 180 0.65 藍黃
加速度(mph/秒) 20 16 13 10 7
車4 最大速度(mph) 94 105 133 152 172 0.35 黃藍
加速度(mph/秒) 22 19 17 13 9
車5 最大速度(mph) 104 115 145 166 182 0.75 黑紅
加速度(mph/秒) 19 17 14 10 7
車6 最大速度(mph) 92 105 133 152 178 0.5 紅黃
加速度(mph/秒) 21 18 15 11 8
d. 美術及程序開發工作
motoracer 的貼圖設計
建立摩托車的模型與賽手
調整運行時的動作
另外最重要的就是如果想做一款motoracer這樣的游戲,首先自己就應該是摩托車的行家,我們motoracer 3d的首席美術設計師王科,就是一個瘋狂的摩托車發燒友,他可以為了攢錢買機車,啃一年的饅頭。呵…
e. demo測試
測試工作以motoracer 3d為例,我們開發周期6個月,因為有了引擎的緣故,使主代碼開發周期縮短至3個月,為了保證這款產品具備國際水準,剩余的3個月我們基本都在找問題、雞蛋里挑骨頭。于是一款位列全球手機游戲銷售前三名的motoracer 3d終于出爐了。
當然,在數位紅像motoracer 3d的幸運產品并不多,數位紅有30%的產品在demo期間就因為可完性、操作感等問題最終沒有面世。畢竟想要打造一個優秀的品牌是要做出很大犧牲的。
iii. 手機游戲制作寶典
由于手機硬件設備方面的諸多限制和性能差異,我們在游戲的開發和制作過程中無法天馬行空般的進行創作,而不得不綜合考慮到多方因素的平衡。下面列出的是一些關鍵的性能參數,這些參數都直接影響游戲的效果。
分辨率
手機的屏幕大小各有不同,從80*30到320*240,就好比在pc發展過程中的cga、ega乃至vga,分辨率的高低直接導致了造型的大小及表現力,這點相信每個設計人員都有所體會。另外,由于手機型號及操作系統的多樣性,導致了一款游戲并不能不加改動的在不同的手機上運行。對于美術設計人員而言,就要在設計之初考慮屏幕的自適應問題。比如在128×128分辨率下與200×200的分辨率下,如何可以不重新更換圖片,但又達到同樣的效果?
色彩數量
目前手機能達到的色彩數量也是限制美術人員發揮的一個重要瓶頸。從過去幾年的黑白屏幕手機到現今256色、4096色及真彩色。digital-red在開發游戲時接觸過非常多的手機,其中有的手機號稱能顯示4096色,但我們將一張4096色的色階圖進行顯示,便發現有的顏色根本無法區分,更讓人吃驚的是,個別手機還色偏嚴重。所以,設計人員是一定要根據實際手機進行圖片繪制,在此,digital-red有過非常多的教訓。
明亮度
液晶屏幕由于其獨特的發光原理,并不能達到傳統顯示器的亮度,同時也就導致了很多色彩豐富的圖案在強光下,不能顯示出原有的效果,這點在手機戶外顯示時尤其明顯。因此設計人員在設計手機游戲圖片時一定要考慮這點,不能將色彩對比度設置的過于接近、圖片設計一定要簡潔明快,避免過小的圖片。
顯示速度
在我們接觸的手機里,很多由于運算速度的問題,導致動畫幀數并不能流暢,甚至達到不了10幀/秒,這對于游戲動畫而言是致命的,我們一般采取局部刷幀或者盡量避免全屏幕動畫來盡量達到預期效果。而且液晶屏幕本身也有顯示速度問題,我們就發現過很多手機都有影像“拖尾”情況。這種情況,在實際游戲中很容易造成玩家的視覺疲勞,尤其在顛簸的車上或者是行動中,游戲時間過長,就有頭暈目眩的感覺。如此,即使是一款優秀的游戲也無法留住玩家了。
電力
由于手機是液晶屏幕,大多數設備在高亮度的像素顯示與一般像素顯示上,兩者耗電量是有所區別的,例如白色背景就要比黑色背景消耗更多的電池能量。因此,對于手機游戲而言,要盡可能節省玩家的電池,也算是對玩家的一種體貼吧。
手機游戲開發過程中的一些錯誤觀念
很多想開發手機游戲的朋友們對于手機游戲都充滿了幻想,digital-red也曾與這些朋友們一樣,在腦海中有非常多的想法等待實現,但一旦真正開發游戲的時候我們就發現很不現實,這里將幾個常見的錯誤認識與諸位分享:
移植pc游戲到手機上
pc上的游戲已經以百兆來計算其占用空間了,而很多手機游戲是以k來計算,大多數的手機游戲能安裝60k的游戲就算不錯了。
j2me游戲不用改動可以運行在各種手機上
j2me在移動設備上有一個midp 1.0標準,但各個手機廠商在推出支持j2me的手機上都對其進行了擴充甚至改動,一個程序想要達到最理想的效果就一定要針對不同型號的手機。
用java開發手機游戲要比用c++好
使用java開發手機游戲的確非常方便,但在效果與性能上很難與c++代碼實現效果比擬。如在symbian os/wince設備上我們還是推薦盡量使用c++來開發為好。
java開發出的應用程序占用的空間小
在開發小型應用時,java程序的確空間占用較小,但如果游戲項目過大,java游戲的小巧優勢就很難體現了。
手機游戲策劃與傳統游戲策劃無異
手機游戲的策劃禁忌非常多,要求策劃人員必須全面了解手機的技術性能才能做出針對性的優秀游戲。
美術可以畫大圖,然后再縮小
一張大圖如果縮成12*12大小,效果就可想而知了。
轉行做程序員?
特別寫給要轉行編程事業的你(非技術指導,只做可行性分析)!最近一年,一些工作幾年的朋友,向我了解轉行做程序員是否靠譜,大家心懷美麗的期待,“高于不少行業的薪資福利待遇”、“期待掌握技術,無生存壓力”、“做技術氛圍單純”、“拓寬視野和資源”…
這些美好的期待,我也曾有過,回歸理性的我,以一個經歷過風口的老程序員,聊聊這個話題,給你一個實在的參考,無論你是否決定轉行做程序員,我相信,你都會做出“自洽”的選擇。先說說編程入門的事兒
但對于想轉行做程序員的小伙伴,大多欠缺編程基礎,在進入一家公司做程序員之前,必須考慮學習編程的時間和精力成本。無論你信心滿滿,還是心有疑慮,只要在編程學習這件事兒下過功夫,你心里就有譜了。
JAVA全課程架構圖無論是網課,還是線下架構培訓,編程培訓課程大綱大致如此,設計學習時間為半年,學習方式為脫產學習。從Java核心基礎到項目實戰,完成6~7階段學習,如果是完全零基礎,這個挑戰還挺大。課程密度非常大,每天不間斷上課至少8小時,還要大量練習代碼實操,每天在學習時間至少保證10小時以上,有刻苦的人每天只睡5小時,用功程度堪比考研。
Java 核心基礎和數據庫關鍵技術兩個單元是“基礎的基礎”,在大學計算機專業,這是兩門課程,在職業技能培訓機構,這兩門課被壓縮到 2~3 個月時間。我參加的線下培訓時,班上60人,除了少數計算機專業學員、幾個領悟力非常強的小伙伴,大多數人卡在基礎階段一直懵逼,你要用沒理解的理論去理解更陌生的知識,一看貌似懂了,一上手就廢,啥也不是?。?!這就是編程思想的錘煉過程,編程思想的獲得和培養需要手眼腦反反復復校準,不斷強化。
第六階段的“大型企業項目”實戰最貼近企業需求,在培訓課程設計中,屬于課程收尾階段,非常重要,也是最難的,就像蘇乞兒領悟降龍十八掌是前面十七掌的融合。這個階段,你花兩個月或更久,弄通透了,都是值得的(也有人經此階段勸退了自己),通過企業項目實戰,你具備參與編程工作能力,具備了程序員的入門基礎,你可以出去找工作了。
客觀說,學習編程,尤其零基礎入門的小伙伴,脫產學習半年也是很緊張的,不懂的地方,需要反復看教學視頻回放或請教老師。如果不能用整塊時間學習,這個學習周期要用多久,就看自己實際情況了。
這也解釋了程序員真的不能速成!對于不少計算機相關專業的小伙伴,畢業后想進入開放崗位,也要接受崗前培訓,如果平時就注重企業項目實戰,有一定參與經驗,上手速度會快些。外行直接進入,不付出努力是不現實的,半年或一年的努力要與這個專業的人在同一崗位競爭,入門學習真的只是開端,如果你正在苦苦堅持學習,請務必認識到這一點。
資本退燒的市場大環境
為什么會有人選擇“半路出家”做程序員,最大的因素就是一個字——錢。要知道現在程序員普遍待遇還是比很多白領,甚至很多行業中層管者的待遇要高2~3倍,一些城市的網約車司機不要說996,甚至是007,到手的錢也就7k左右。
說到收入高,就得提到資本作用力。我是10年入程序員坑,那會兒不少企業,甚至是名企直接去大學或培訓機構“撈人”,資本不斷燃起一輪接一輪燒錢大戰,不斷創造著財富神話,對于沒有背景,只有努力的人來說,轉行程序員,增加收入不是夢?。?!那會兒,我的起步工資很輕松拿到了8.5k,還只是平均水平而已,除了產品上線前的倆月,平時加班沒有現在這么多...
回顧幾個標志性資本燒錢事件:
事件一:資本催生了千團大戰,最終阿里助美團獲勝,如今阿里自家餓了么與美團再起風云,陷入“誰是頭部一哥”之爭;
事件二:如火如荼的共享單車已經進入“后燒錢時代”,這是一場“三國殺”,青桔、美團夾擊哈羅;
事件三:網約車大戰,滴滴一戰成名,又陷入高德地圖、易到、攜程圍獵中;
國內的互聯網企業不斷掀起燒錢大戰時代已經翻篇了,基本是幾家巨頭在不斷拓展領域,大殺四方,掌握了足夠的話語權,很難再掀起大的燒錢戰,新生企業沒有能力挑戰大廠,大廠技術和管理成為行業標準,同時,一些“大廠病”,如996,對35+的員工不夠友好...也被不少中小企業學習了,給得多,要求也多,動不動就 KPI 你。
掌編程技術可“一直當飯吃”?
對于市面上大多數招聘程序員崗位而言,還真不是能永久的。有人說:“互聯網技術梯隊和青樓也差不多,不許人間見白頭”。
鵝廠好操作:一手裁員,一手招人以鵝廠為例,不愿意給一個5年資深碼農60w年薪,卻很愿意用60w接納3個985、211院校本科生,把他們培養成新碼農。現在高校注重校企合作,培養學生工作能力,不少計算機專業本科生、研究生很容易參加校企項目。他們精力更旺盛,學習能力不差,也不貴,跟前輩比,更快適應社會工作。這或許是技術人員養成模式,不斷有后浪涌現,不愁前浪不乖,也預示了老程序員的職業天花板。
雷軍說過,在風口上,豬都能飛起來,風口之后呢,是不是會掉下來?我有位朋友,當年加入創業公司,沒想到上市了,不少人都羨慕他。實際情況是,不斷有211、985名校研究生加入團隊,還有人拿著專業證書和專利進來,他為公司做了很多貢獻,現在的焦慮已經不是能否當研發部一把手的問題,而變成了能夠不被裁撤留下來。
這種趨勢下,無論科班出身,還是半路出家的技術人員,不免除工具人屬性,被安排的干電池命運。所以,不得不考慮職業壽命,或職業再選擇,這并不是年齡35+人群的專屬。
php程序員張賢建兼職送外賣95后計算機專業科班出身的程序員僅工作3年,擔心35歲以后無代碼可寫,還得送外賣,提前兼職體驗送外賣,不管是戲言,還是真焦慮,這邊提前危機意識是時代的焦慮觸發的。
技術崗位圈子簡單、氛圍好,真如此?
有人認為技術崗位圈子簡單,沒有太多勾心斗角,就可以避免現在職場中的諸多不如意。只能說想法非常美好,但有人的地方就有江湖,遇見什么人,有什么狀況,都是比較隨緣的事兒。那在程序員圈,會遇到哪些事情呢?
歡喜冤家,宜解不宜結程序員與產品經理的愛恨情仇的事例,大家自己去搜吧。產品經理畫原型圖、寫文檔給程序員,要你代碼實現,產品經理也可能沒有編程經驗,根據業務和用戶調研作為依據,要求程序員做事,而程序員如果不能理解業務,只懂增刪改查。說不上是產品經理給程序員挖坑,還是反過來,加上996、007工作模式,人難免有火氣,或者氛圍并沒有想象中的芬芳~
總結:想通過IT培訓班學習也好,自學也罷,要轉行做程序員,先要守住自己的心,不被培訓機構套路,不被勵志事例鼓動,主動收集行業信息,評估自己要立志以此為長期職業,還是趁年輕賺點快錢后另規劃職業,這是首先要想清楚的,再投入學習,再難,也不容易動搖信心,給自己一個滿意的結果,如此!
以上就是關于編程 游戲地圖算法實現和導航地圖該如何編寫的相關問題解答,希望對你有所幫助。