❶ 我想成為游戲開發程序員
一、游戲程序開發的工作主要包括哪些方面
游戲開發中的程序開發主要由如下幾個方面組成:
1.圖形引擎
2.聲音引擎
3.物理引擎
4.游戲引擎
5.人工智慧或游戲邏輯
6.游戲GUI界面(菜單)
7.游戲開發工具
8.支持區域網對戰的網路引擎開發
9.支持互聯網對戰的網路引擎開發
下面逐一介紹每個部分:
1.圖形引擎主要包含游戲中的場景(室內或室外)管理與渲染,角色的動作管理繪制,特效管理與渲染(粒子系統,自然模擬(如水紋,植物等模擬)),光照和材質處理,LOD(Level Object Detail)管理等,另外還有圖形數據轉換工具開發,這些工具主要用於把美工用DCC軟體(如3DS Max,Maya,Soft XSI,Soft Image3D等)軟體製作的模型和動作數據以及用Photo shop或painter等工具製作的貼圖,轉化成游戲程序中用的資源文件。
2.聲音引擎主要包含音效(Sound Effect簡稱SE),語音(VOICE),背景音樂(Background music簡稱BGM)的播放。SE是指那些在游戲中頻繁播放,而且播放時間比較短,但要求能及時無延遲的播放,VOICE是指游戲中的語音或人聲,這部分對聲音品質要求比較高,基本上用比較高的采樣率錄制和回放聲音,但和SE一樣要求能及時無延遲的播放,SE在有的時候因為內存容量的問題,在不影響效果的前提下,可能會降低采樣率,但VOICE由於降低采樣率對效果影響比較大,所以一般VOICE不採用降低采樣率的做法。BGM是指游戲中一長段循環播放(也有不循環,只播放一次)的背景音樂,正是由於BGM的這種特性,一般游戲的背景音樂是讀盤(光碟或硬碟)來播放。另外一些高級聲音特效,如EAX,數字影院系統(DTS5.1),數字杜比環繞等。
3.物理引擎主要包含游戲世界中的物體之間、物體和場景之間發生碰撞後的力學模擬, 以及發生碰撞後的物體骨骼運動的力學模擬(比較著名的物理引擎有havok公司的game dynamics sdk,還有open source 的ODE—Open Dynamics Engine)。
4.游戲引擎主要是把圖形引擎、聲音引擎、物理引擎整合起來,主要針對某個游戲製作一個游戲系統,其包含游戲關卡編輯器,主要用途是可以可視化的對場景進行調整,光照效果和霧化等效果調整,事件設置,道具擺放,NPC設置,另外還有角色編輯器,主要用於編輯角色的屬性和檢查動作數據的正確性。一般日本游戲公司的做法,他們會把關卡編輯器和角色編輯器直接做到游戲中,所有的參數調整都在游戲中通過調試菜單來進行編輯,所以一般他們把這部分調試菜單的功能做的很強大,同時在屏幕上實時的顯示一些重要的信息,這樣做的好處是關卡編輯器調整的效果直接就是游戲的效果,但是對於程序的重用性來說可能不是很好,比如說要用到另外一個游戲項目中就比較難,除非兩個游戲類型相同,只要把場景和角色數據換一下,還有做下一代產品也沒有問題,只要根據式樣增加調試菜單的功能就可以了。
5.人工智慧和游戲邏輯開發,這部分日本和歐美的游戲開發模式也有很大不同,在歐美游戲公司中運用腳本語言開發很普遍,所以這部分程序開發主要是用腳本語言編寫,而且腳本程序和游戲程序的耦合性很低,有單獨的編輯、編譯和調試環境,這樣比較利於游戲程序和關卡設計開發分開,同時並行開發,所以一般他們都會有專門做關卡設計的程序員崗位。而日本游戲公司腳本語言一般和游戲的耦合性比較高,一般通過一些語言的宏功能和一些編譯器的特定功能來完成一個簡單的腳本系統,所以一般這些腳本程序只能在游戲程序中進行調試,而不能在一個單獨的腳本編輯,編譯環境中進行開發。
6.游戲GUI界面(菜單),主要是指那些游戲中用戶界面設計,有做的復雜,有簡單的,做的簡單就是2D GUI界面,做的復雜有3D GUI界面。
7.游戲開發工具主要包含關卡編輯器,角色編輯器,資源打包管理,DCC軟體的插件工具等開發。
8.支持區域網對戰的網路引擎開發,主要解決區域網網路發包和延遲處理,通訊同步的問題,有同步通訊和非同步通訊兩種做法,非同步通訊用於那些對運行幀速要求比較高的游戲,同步通訊相對非同步通訊來說效率相對低,但是同步通訊的編程模型相對非同步通訊來得簡單一些。
9.支持互聯網對戰的網路引擎開發,目前大部分網游都是C/S結構的,伺服器端軟體配置管理,伺服器程序的最優化,還有游戲大廳、組隊、游戲邏輯處理、道具管理、收費系統等。另外還有一些網路系統是C/S和P2P兩種結構混合的,如XBOX Live等。
二、游戲公司中有哪些和程序員相關的崗位
程序員在游戲公司中的崗位在日本游戲公司和歐美的游戲公司有些不同,日本游戲公司中程序員的崗位主要有技術監督(Director),主程序員(Main Programmer),程序員(Programmer),在日本游戲公司里負責游戲項目開發的程序員,一般不會專門根據工作內容劃分程序員,除了獨立的系統研究室和聲音系統製作部門(這兩個部門是比較獨立的,往往同時給好幾個項目服務),負責每個游戲項目開發的程序員,隨時都可能一人多職,比如說主程序員除了負責整個游戲系統以外,可能還要負責圖形或聲音引擎開發等,程序員除了人工智慧以外還有菜單製作等。這種情況在歐美的游戲公司比較少見,他們分工的比較細,一般有圖形程序員,聲音程序員,人工智慧或游戲關卡程序員,物理程序員,每個組中可能還會有一個Leader。
三、游戲公司一般是如何招聘程序員的
這一點,日本公司和歐美公司也有些不同。日本公司一般喜歡從一些高校中招聘一些應屆優秀畢業生,一方面比招聘有經驗的人要來的成本低,另方面新人是一張白紙,容易培養,像SEGA、KONAMI等都是按這種原則招聘員工的,所以想進入日本游戲公司,你要學好你的軟體課程。而歐美公司希望招聘進來,能馬上進入項目的開發中去,所以他們一般希望招聘有工作經驗的人,即使不是行業中,在相關行業中工作2、3年的也可以,所以想進入歐美游戲公司你的工作經歷很重要。
四、想成為一名游戲開發程序員應該具備哪些條件
我覺的一個游戲軟體程序員,最起碼的要求是熟練掌握計算機本科專業所學的知識,主要包括C語言或C++語言,數據結構,編譯原理,演算法等,另外線性代數、微積分、牛頓力學在圖形和物理引擎開發方面用途也很廣泛,如果要提高的話還有必要了解硬體相關的知識如計算機體系結構、匯編語言,這些對我們學習一個新的硬體平台、編寫最優化代碼、提高自己游戲的競爭力都是非常有益的。另外,保持有恆心、不怕苦(比如說通宵加班)的心態,對游戲的熱情也是非常重要的。對於那些想進入游戲行業,但缺乏軟體開發知識的人,可以通過參加游戲開發培訓來
五、學習游戲編程有哪些好方法
現在有很多人,計算機本科畢業,學了很多軟體開發的知識,但是一旦要用到實際的項目開發時,感覺無從下手,這主要是在學校里運用知識的機會太少了。所以學習游戲編程最好的方法是能實際參與到一個好的游戲項目中和有豐富開發經驗的人一起開發游戲,可能學到很多你從書本上學不到知識和技能。但有時候你一時還沒有機會參與到一個好項目中,沒有機會進入一家好的游戲公司,但是你對游戲開發有一腔熱情,很希望學習游戲開發的技能,那你就應該去參加專門的游戲開發培訓,因為游戲開發培訓班中的老師都是一些有豐富開發經驗的老師,一般都有五年豐富的項目開發經驗,聽他們的課,實際上就是在和他一起分享這么多年的開發經驗,另外游戲開發培訓課程中會專門設計一些項目和課題,它們本身就是可以直接運用游戲開發中,這樣你可以不進入著名的游戲公司,但可以學到這些公司中一些常用的開發技能。另外還有一種方法經濟實惠的方法,參加一些網上志願者的開源項目,這些項目從品質來說有好有壞,選擇一個好的項目非常重要,另外他們中間本身有許多是業內人士,本來你要進入他們公司,才能學習到他們的經驗,但是通過開源項目,你就有向他們學習的機會了,說不定哪一天,你就進入一家知名的游戲公司了,不過目前開源的完整游戲項目好的不多,到是在圖形引擎和物理引擎方面有一些很不錯的開源項目,但要加入進去的話,你的基礎一定要好啊,有些開源的團隊也不是隨便什麼人就能加入的。
❷ 程序員工作時可以聽音樂嗎
個人認為工作的時候
尤其是做復雜的邏輯編程時候需要大腦高度集中的思考
最少不要聽音樂
如果幹累了可以聽聽緩解一下壓力
有時候就算遇到困難
也許聽聽因為會
休息一下
問題可能就解決了
至少我經常這樣
❸ 為什麼程序員工作時喜歡戴耳機
網友一:
哈哈哈,看到這個問題後,我立刻就聯想到我們公司的那些神經質的程序猿們。
他們的腦洞,真的是我們常人無法比擬的。而且我行我素,帶著耳機,甚是與世隔離。我是一個性格比較外向的人,比較鬧騰點,而程序猿們的世界需要安靜,所以,他們很是拿我沒辦法,哭笑不得。
我特別注意過,我有項目需要給他們安排時間,規定計劃的時候,他們對這個時間很是排斥,開會的時候也是帶上耳機,也不知道他們在聽什麼。
有一次,實在忍無可忍,我對他們大發雷霆。拿過來他們的耳機,你猜我聽到了什麼?居然是。。。相聲,郭德綱的相聲。我還想呢,他們在敲代碼的時候,還咯咯咯自己傻樂。
後來溝通後得知,他們聽的都是一些抒情的歌曲/節奏,或者是各種各樣的相聲,他們的目的就是放鬆放鬆自己的精神,或者是一種發泄。
所以,我們盡量不要打擾他們,他們需要安靜的敲代碼,讓他們穩穩地活在密密麻麻的代碼世界中。
網友二:
我們公司也很多程序員。工作時間經過,一眼望去,還真的很多人都在戴著耳機。
曾經有好多次,收到其他部門的投訴,說應該禁止研發部跟設計部的程序員跟設計師在上班時間戴耳機。
因為其他部門的同事找他們的時候,很多情況盡管在同一個空間的辦公室喊了很多聲都沒人回應,只能跑到他們的座位,動一下他們才有慢慢反應過來。
這在其他職能部門或者銷售部門來說,程序員工作的時候戴著耳機是不專心工作的表現。
他們對其他同事呼喊的「漠視」,讓其他同事覺得他們一副高高在上的感覺。
於是後來研發老大內部發了個公告,說上班時間禁止戴耳機。
公告之後,同樣在辦公時間呼叫程序員,他們這次沒戴耳機了,結果他們還是好像聽不到一樣,沒有回應。
因為當他們真正在深度思考的時候,真的戴耳機跟沒戴耳機一個樣。
所以,很多程序員上班時間戴耳機就是為了防止外界干擾他們寫代碼的思路。我問過一些程序員,他們普遍都說,當他們正在解決一個bug或者寫一個演算法的時候,如果剛好有外界干擾打斷了他們的思路,他們真的會想sha人的。
所以,他們可能耳機里放著歌,其實是在想怎麼寫代碼。
網友三:
因為正好在研發類型的公司工作過,周圍基本都是程序員和工程師,所以對這個題目還是頗有共鳴的。別說程序員哥哥們喜歡在工作時戴耳機,當時走出那一站地鐵口,基本所有穿格子襯衫,背著電腦雙肩包的IT小哥哥,走路也都是戴著耳機的。
為什麼他們要戴耳機?其實戴上耳機是在表明一種態度,就是在對外宣布:「不要打擾我,讓我一個人靜一靜」。大家都知道程序員要寫代碼。
但事實上,高級程序員上班時候大部分時間都是在思考,而不是在寫代碼,正常高級程序員每天的代碼產出量大約是20行,一行行代碼會在各種情況下被運行無數次,不深思熟慮的話肯定會出錯。
所以程序員的核心工作是思考,而不是寫代碼。思考就需要一個相對安靜和獨立的環境,不想被外界干擾。
那麼,他們在聽什麼?當然,大部分時候都在聽歌咯,有人喜歡舒緩溫柔的背景音樂,有人喜歡歐美流行歌曲,甚至可能還有程序員小哥喜歡聽各種段子和笑話來緩解工作的壓力。
不過也有人其實什麼都沒有聽,耳機裡面是沒有聲音的,戴上耳機只是個習慣,用來隔離外界的噪音而已。
網友四:
作為一個互聯網公司的項目leader,我來歸納下他們可能在聽什麼:
沒聲音。只是因為他們敲代碼需要一個非常專注安靜的環境,戴著耳機可以避免其他人頻繁的打擾。要知道打擾程序員敲代碼,他們從代碼世界出來的時間需要5分數,然後再次回去又需要十分鍾。幫助更好的創作。代碼在我們非專業人士看來,一堆字母非常枯燥,但是對程序員來說,卻是一種創造設計的工作,代碼的背後是實現一項項功能的基礎。聽著音樂,可以更好地幫助他們創造。無聊解壓。有時候敲代碼或者改bug,是他們能力范圍之下或者經常重復的動作,這樣的工作不用怎麼深度思考,所以戴著耳機,聽些振奮人心的歌曲或者舒緩的音樂,可以幫助他們度過這段無聊的時間,也激發他們工作的動力。
有些追求極致的程序員,甚至都會選擇一些品質好的降噪耳機,這樣帶上去他們真的會沉浸在他們的創作世界。
有些公司禁止員工上班時間戴耳機,但是都會把程序員除外。因為既然耳機對程序員來說是工作的利器,幹嘛要禁止呢?
所以如果你真的想要了解程序員他們的行為,那麼你首先要了解他們的工作,他們的需求與心理想法。
從程序員這么專注的精神角度看來,他們是值得很多單身女性交往的對象。
網友五:
我想程序員的心理我最懂了,也知道他們為什麼工作的時候戴耳機。
Hello Word ,這個詞是不是很熟悉,沒錯,這是學程序時老師教的第一個程序,在學習Java,Android,iOS,PHP,JavaScript語言時,第一個案例,就是Hello Word。
一個Hello Word開啟了代碼的世界,從此一發不可收拾。在代碼的世界裡徜徉,就像一個人獨自在月光下行走,周圍是那麼的安靜,沒有喧囂,沒有浮華,只有敲打鍵盤的聲音。
思維就像高速行駛的動車一樣運作,沿著一條線快速的向前跑,這是只有沉浸在代碼的世界才能感受到的。此時無疑是效率最高,思維最敏捷的時候。
怎麼樣才能在公司保持有這么好的編程環境呢,戴耳機聽音樂是最好的辦法。
他們一邊想問題一邊聽自己喜歡的音樂,聲音不要太大,讓心平靜下來就好。聽音樂有助於程序員提高編程效率,進入到代碼的世界。就像李白喝酒後詩興大發,做出了流傳千古的詩句一樣。
別問我怎麼知道的,因為我就是程序員。我
所在的幾家公司,沒有一家公司有過程序員不準聽音樂的規定,因為程序的老大,上司也是程序員過來的,所以程序員的上司,老大都懂。只有這樣的規定,聽音樂要戴耳機。
網友六:
其實程序員帶上耳機通常是告訴其他人不要打攪我。所以實際上根本沒有在放音樂,或者是其實忙起來根本不知道自己聽的什麼歌??尤其遇到bug時候。
程序員其實上班都比較比較苦悶的,他們的世界好像都是與世隔絕,忘了吃飯忘了時間腦海里只有代碼和沒有實現的邏輯。
他們戴上耳機即使不聽音樂也行,靜靜的數自己的心跳使得自己足夠的安靜下來工作,帶上耳機隔絕一些嘈雜的聲音使得自己更專心自己的編程。
程序這個東西著迷以後有特別的靈感和思路的時候是停不下來的,在程序員盡興的正在寫程序的時候最好別打擾,因為創做和靈感就在一瞬間的事情。
不過不是每個人都能接受程序員工作的時候戴耳機的。
我以前就聽一個運營總監在批評手下的一個開發人員,因為這個開發程序員一直戴著耳機聽音樂,完全不關心外面的世界,以至於他領導每次叫他很多次,叫很多聲他都聽不見,惹得那個運營總監最終發火了。
另外,其實從安全和健康角度看,也不太好一直戴耳機聽音樂的,對耳膜的傷害非常大,所以程序員哥哥們,還是應該適當拿下耳機休息一段時間,多和周邊的同事溝通交流一下,這樣再回到工作中,也許狀態更好。
❹ 程序員的交接工作
人在場的情況下進行,如果有一段交接期就更好了,可以讓接替人在這段時間內參加交接人的項目,根據該程序員的重要性按下面順序[重要性遞增],交接工作主要針對未完成的項目任務進行:
1.目前未完成的軟體代碼和文檔,代碼和文檔應相對應,關鍵代碼應該有詳細注釋,各個模塊的解釋性文檔,設計文檔等.[這塊如果公司有好的規范是很方便的,如果沒有一個好的規范一般只有代碼沒有文檔就很麻煩了,要求重新寫出代碼說明,規范代碼注釋.對關鍵代碼要求交接人和接受人之間有口頭的說明和解釋]
2.目前未完成的設計任務,其中按其擔當職責不同有下面幾個東西需要交接:模塊設計文檔[系統架構/主程序員],模塊變動文檔[主程序員],模塊測試文檔[主程序員/程序員],系統測試文檔[主程序員/系統架構],系統分析書[系統架構],需求分析書[系統架構/主程序員].要求所有交接必須項目經理,交接人,接收人三人在場,並口頭解釋說明.
3.人事關系交接,這塊應該不屬於項目交接了呵呵.
4.長期有效的聯系地址或電話.
交接工作的成效考核:接收人必須對原有項目有充分的認識,能夠完全代替交接人進行工作.所有文檔符合規范,代碼有充分的注釋.已完成的測試文檔必須詳細.至此交接工作應該算是圓滿完成了.
上面是一般性交接工作的流程和需要注意的地方,一個好的交接必須有完善的規范做支撐,才能達到事半功倍的效果,希望對LZ有幫助.
❺ 程序員的交接工作應注意些什麼
程序員離職後進行交接工作時要考慮全面,具體有以下這些方面:
技術層面:
最後修改的代碼提交入庫Git或SVN。
自己整理過的技術文檔。
自己使用設備(實體伺服器、虛擬機、Docker等)的IP、用戶名、密碼。
自己的項目進度文檔。
非叢野技術層面:
歸還公司的工牌或者鑰匙。
歸還彎羨公司的設備。
辦好離職埋鄭拍手續。