學習啦 > 知識大全 > 方法百科 > 物品制作方法 > 制作一款網(wǎng)頁游戲要怎么做

制作一款網(wǎng)頁游戲要怎么做

時間: 虹靜960 分享

制作一款網(wǎng)頁游戲要怎么做

  很多人想投身游戲行業(yè),成為真正的游戲制作人。但是他們對游戲的制作過程,和各個職位的職能都是比較陌生的。對網(wǎng)頁游戲開發(fā)也不夠了解,但今天小編就告訴你們游戲到底是怎么制作出來的。

  網(wǎng)頁游戲開發(fā)的程序構(gòu)成分為三大部分

  1、數(shù)據(jù)流程

  數(shù)據(jù)流程其中,數(shù)據(jù)流程包括了功能。也只有在功能中才能體現(xiàn)數(shù)據(jù)流程。

  比如最簡單的賣買產(chǎn)品。要實現(xiàn)這個功能,那么需要有產(chǎn)品基礎(chǔ)表、產(chǎn)品詳細表、商店表、背包表。如果擴展性更強,相應的雙表是少不不了的。

  表的問題都簡單了,關(guān)鍵是這個物品有什么用,這樣物品的來源,一大堆數(shù)據(jù),物品的走向,又是一大堆數(shù)據(jù)。最后,這些數(shù)據(jù)得繞成一個圈。繞圈是一件困難的事情,特別是功能和道具多了起來的時候。難度是2的n次方。

  2、美術(shù)

  UI:簡潔漂亮的界面總會有好處。

  小圖標:道具,地圖,裝備,一類至少10個吧?大體上百把個是需要的。

  3、程序分5個部分

  數(shù)據(jù)庫:一大堆基礎(chǔ)數(shù)據(jù)表和詳細數(shù)據(jù)表。基礎(chǔ)數(shù)據(jù)表:比如等級1到等級100的用戶的屬性初始值。詳細數(shù)據(jù)表:每個用戶的具體屬性。

  功能頁面、功能函數(shù)。主要就是數(shù)據(jù)存取,判斷,數(shù)據(jù)走向。

  制作網(wǎng)頁游戲詳細的例子

  那么一個webgame的基本內(nèi)容需要

  數(shù)據(jù)庫:玩家、地圖、城市、建筑、武器、士兵。

  功能:登陸、升級、個人戰(zhàn)斗、士兵之間的戰(zhàn)斗、與城市的戰(zhàn)斗、修建建筑、打造武器、買賣道具。(注意:每一個功能,必然對應1個或多個數(shù)據(jù)表。上面數(shù)據(jù)庫中所列的只是基礎(chǔ)中的基礎(chǔ)。)

  首先是地圖、城市、建筑。這里認為,地圖可以有多張,城市在地圖上,建筑在城市內(nèi)。

  地圖表Map :Map_ID ,X坐標,

  Y坐標,City_ID(城市ID),描述。其中Map_ID是指地圖的id。不是自動編號。一張地圖就是一個Map_ID,可以重復。

  城市表City:City_ID,城市名字,城市所有人,城市等級,城市資源,描述。

  建筑表Build:ID,City_ID,建筑名稱,建筑等級,建筑功能。

  其中,地圖表確定城市的位置,城市表確定城市的相關(guān)數(shù)據(jù)以及所有人,建筑表內(nèi)的多條信息屬于某一個城市。

  建表后,顯示出來。一個for循環(huán)。把地圖表整個取出來就ok。跟普通網(wǎng)站的新聞列表沒太大區(qū)別。不同的是,你需要取得X坐標和Y坐標定位??梢杂胻abel也可以用div。

  class Map//地圖類{var $Map_ID;function

  Map_bg_css($Map_ID) {

  $this->Map_ID = $Map_ID;mysql_select_db($db_name,$link);$sql=”select * from map where

  Map_ID=’”.$this->Map_ID.”‘ limit 1″; $result=mysql_query($sql,$link); echo “

  type=”.”text”.”/”.”css>”;$rs=mysql_fetch_array($result); echo

  “#map{”; echo “position:absolute;”; echo

  “width:”.$rs[X坐標].”px;”; echo “height:”.$rs[Y坐標].”px;”; echo

  “z-index:0;”; echo “left:0px;top:0px;}”;}function

  Map_bg($Map_ID){

  $this->Map_ID = $Map_ID;$sql=”select * from map where Map_ID=’”.$this->Map_ID.”‘”; $result=mysql_query($sql,$link);while($rs=mysql_fetch_array($result)){ echo “

  ”; echo

  “

  title=”.$rs[ID].”>

  ”;}}}

  上面是一個很簡單的地圖類。代碼可能不太正確,意思是正確的。就是根據(jù)map表中的坐標,生成了一組div層,以及這一組層的css。你可以改為table的。你可以也把坐標放到一個字段里,用數(shù)組的形式取。

  使用的時候,用

  new map;map(N);

  其中N是map表里的地圖Map_ID.

  城市內(nèi)的建筑也類似。如果要顯示出來的話。

  有了地圖和城市后。

  涉及到的問題就是城市里資源的產(chǎn)生。

  這時候,City表里需要有可供判斷的時間和數(shù)量的字段。比如:產(chǎn)生資金量Money,產(chǎn)生資金花費的時間Action_Time,上次產(chǎn)生資金時間Money_time。

  這兩個字段的數(shù)值應該在City_base表里出現(xiàn)。(即城市基礎(chǔ)表,不同等級,不同類型城市的對應數(shù)值。這是給策劃填數(shù)據(jù)用的,建好表后就等策劃去頭痛吧。如果你身兼數(shù)職。。。)

  如何自動產(chǎn)生資源呢?

  我們可以在城市所有人改變的時候,寫入一個時間?;蛘咴诔鞘谐跏蓟臅r候?qū)懭胍粋€時間。

  $Now_Time=date(’Y-m-d H:i:s’);

  (說明:$開頭是變量的意思。php里特有的。如果是asp的話可以寫成。Now_Time=Now()

  )

  把$Now_Time寫入到Money_time里。

  update(”UPDATE City SET Money_time=’$Now_Time

  WHERE City_ID=’$City_ID’ LIMIT 1;”);

  $City_ID是你自己定義的。指某一個城市。如:$City_ID=1;

  我們假定當前城市產(chǎn)生資金量為100。即$Money=100;(具體的數(shù)值,應該是由City_base表里取出的。)

  假設(shè)間隔時間為$Action_Time,我們再假定是每小時執(zhí)行一次。即$Action_Time=3600;(具體的數(shù)值,是根據(jù)你的初始化表里取得的。也可以根據(jù)城市等級或者用戶等級取得。反正隨便你自己怎么設(shè)定。)

  這時候,有基礎(chǔ)時間了。有基礎(chǔ)資金產(chǎn)量了。有間隔時間了。

  讓它循環(huán)執(zhí)行起來就行了。

  上面說過,服務端用C語言定時器。客戶端用javascript。

  服務端,資源定時器設(shè)定為5分鐘執(zhí)行一次。那么我們的誤差就是5分鐘。對網(wǎng)頁游戲來說,可以接受。(戰(zhàn)斗的定時器得1分鐘吧。當然服務器夠牛的話,幾秒鐘都可以。)

  每次執(zhí)行什么代碼呢?

  首先得新建一個定時器任務的表。目的就是讓定時器知道需要執(zhí)行哪些程序和數(shù)據(jù)的更新。表內(nèi)容比如:城市資源更新。當然,這個表可要可不要。建立的好處是方便處理類似保護狀態(tài)不產(chǎn)生資源之類的問題。

  服務端程序:

  獲得當前服務器時間。

  獲得當前需要更新城市。

  判斷服務器時間與$Money_time的時間差。(時間戳,具體的時間戳網(wǎng)上資料滿多的。)

  判斷時間差是否大于$Action_Time。

  大于,則更新資源。同時更新$Money_time。小于,則無操作。

  客戶端程序:

  獲得當前服務器時間。

  獲得當前城市的$Money,$Money_time,$Action_Time。

  使用javascript顯示剩余時間的倒計時,以及增加的資源量。

  客戶端特殊情況觸發(fā):因為客戶端顯示的資源情況是偽同步,所以當客戶端使用該資源的時候。需要服務端將當前的實際資源更新,屬于定時器處理的時間也需要更新。即,當客戶端觸發(fā)涉及資源的情況時,立即更新當前資源。同時更新定時器中會用到的$Money_time。這樣才不會造成,看的資源用不到,或者定時器重復產(chǎn)生資源。

  總體來說。這部分程序都很簡單。難點在C語言定時器的制作,以及前臺javascipt倒計時的寫法上。

  C語言定時器,找個C語言程序員,超簡單;前臺的javascipt,網(wǎng)上有很多倒計時的代碼,找個來改改就能用。

  LANGUAGE=”JavaScript”>var maxtime =

  這里是你的時間差///一個小時,按秒計算,自己調(diào)整!function

  CountDown(){if(maxtime>=0){minutes =

  Math.floor(maxtime/60);seconds = Math.floor(maxtime%60);msg =

  “你的文字說明”+minutes+”分”+seconds+”秒”;//動態(tài)顯示剩余時間。document.all["timer"].innerHTML=msg;//if(maxtime

  == 3)

  document.all["timer"].innerHTML=’只剩3秒!’;–maxtime;}else{clearInterval(timer);document.all["timer"].innerHTML=’時間到’;}}timer

  = setInterval(”CountDown()”,1000);

  這個是網(wǎng)上找的代碼。稍微修改就可以用的。這里只是顯示了倒計時。也可以改為顯示資源的增加情況。

  C語言里操作mysql數(shù)據(jù)庫。

  // TODO: Add your control notification handler

  code herebool bRes = m_dbConn.Connect(”數(shù)據(jù)庫ip地址”, 3306 , “用戶名”,

  “[email=d203!@#ghj]密碼[/email]“, “數(shù)據(jù)庫名”);

  if(!bRes){AfxMessageBox(”connect fail”);return;}

  string strSql = “select * from city limit

  1″;//所有顯示或取值類的都用這段。中間的sql語句可以自己構(gòu)造。ResultSet* rs =

  m_dbConn.ExecuteQuery(strSql);while(rs->Next()){string str =

  rs->GetString(”username”);AfxMessageBox(str.c_str());}/*strSql

  = “update city set money=money +100 where

  City_ID=’xxx’”;//所有的增加、刪除、更新都用這段,中間的sql語句可以自己構(gòu)造。

  bRes = m_dbConn.ExecuteUpdate(strSql);

  if(!bRes){AfxMessageBox(”ExecuteUpdate

  fail”);}*/m_dbConn.Close();

  定時器的主函數(shù)。void

  CBeiLiDlg::Go(){while(true){//

  AfxMessageBox(”go”);Sleep(5*1000);//毫秒。定時器刷新時間。}}//相當?shù)暮唵?.。

  當然。這里的C的代碼不能直接用。只是一部分。

  地圖、城市、基本上算是有了。

  接下來是城市里的建筑。

  上面講的資源增加,其實定位在建筑上更準確。不過建筑的分類和數(shù)值會復雜很多。那是策劃考慮的問題。

  建筑上,只講一個前臺的修建效果。

  當然,這個效果是可有可無。你可以直接給個類似新聞列表的顯示,再加個倒計時就行。顯示的效果就是,點修建后。不刷新頁面,調(diào)入一張動畫圖片。并在時間到后自動轉(zhuǎn)換為其他圖片。

  language=’javascript’> function xiujian() {

  top.abc.document.getElementById(’前臺建筑位置所在圖片的id’).src=’修建后建筑的圖片地址’;//顯示修建后的建筑圖片??梢约由虾笈_時間判斷。其中abc,是建筑所在層的id,

  } function xiujian1() {

  setTimeout(’xiujian()’,5000);//動畫時間5秒。這里也可以加入時間判斷。當時間不到的完成的時候,繼續(xù)調(diào)用動畫。

  } function donghua() {

  top.abc.document.getElementById(’前臺建筑位置所在圖片的id’).src=’建筑動畫所在的地址’;//顯示修建動畫。

  } donghua(); xiujian1();

  后臺部分,把時間到增加資源的代碼改為時間到增加或更新建筑就行了。又是增加N個表。。

  建筑基礎(chǔ)表:產(chǎn)出,類型,圖片等等。。建筑詳細表:屬于哪個城市,可以在城市表里關(guān)聯(lián)。關(guān)聯(lián)的方式不同會對程序有很大的影響。各種關(guān)聯(lián)方式都行,但是一旦關(guān)聯(lián)方式確定后,最好別改動。

  現(xiàn)在建筑也有了。用類似的定時方式,打工,征兵等等都可以實現(xiàn)。

  戰(zhàn)斗,兵的參數(shù):兵種,數(shù)量,攻擊,防御等等。

  戰(zhàn)斗的臨時表:誰的兵,打誰,出發(fā)時間,戰(zhàn)斗時間,戰(zhàn)斗結(jié)果。

  這里的幾個字到是簡單。實際的表會復雜一些。

  webgame中,戰(zhàn)斗的過程分兩種,

  一種是給出雙方參數(shù),時間到,就根據(jù)公式計算結(jié)果。

  一種是半即時或者即時的戰(zhàn)斗,可以邊打邊喝藥邊用技能的那種。

  第一種流程。

  點出兵。這時候,兵的參數(shù),出發(fā)時間,到達時間,都記錄進戰(zhàn)斗臨時表。

  定時器中,處理戰(zhàn)斗的部分,判斷時間是否到開打的時候。到開打的時間了,則取得被攻擊方的兵的參數(shù)。然后通過幾個公式計算結(jié)果。處理結(jié)果,比如誰的兵掛了多少,戰(zhàn)場掉落了多少錢,城市被誰搶到了。一大堆判斷以及updata。(這里的定時器處理和獲得資源的定時器處理是很類似的。)

  最后把結(jié)果分別發(fā)給雙方。(又涉及到一個短信息系統(tǒng)。)

  第二種流程。

  點攻擊。馬上就處理數(shù)據(jù)。打打npc好做。玩家之間對戰(zhàn),也可以把被攻擊的玩家當成npc來處理。

  兩個人或兩人以上即時戰(zhàn)斗。需要用到ajax了。目前在技術(shù)上和理論上是沒問題的,還沒實際寫代碼,所以不好講。

  很簡單的公式,兩種戰(zhàn)斗都可以用到:

  intval(sqrt($User_B_AP)-sqrt($User_A_DP));

  根號下攻擊-根號下防御=傷害。

  具體寫的時候,公式肯定會復雜不少,不過這頭痛的事,還是交給策劃去做吧。

  ajax函數(shù):(可選)某些需要偽即時的功能要用到。

  javascript函數(shù):(可選)模擬客戶端的數(shù)據(jù)計算。也就是webgame的與時間相關(guān)的數(shù)據(jù)。分為兩部分。一部分是真實數(shù)據(jù),是由服務器端的定時器計算的。另一部分是只有初始值,客戶端顯示用的。不需要即時同步,僅僅需要模擬同步就行。

  服務器定時器:(C語言或自己設(shè)定服務器)定時循環(huán)執(zhí)行某一段代碼。而這段代碼主要是根據(jù)數(shù)據(jù)庫的數(shù)據(jù)進行更新。這個可以找個C語言程序員來做。對于C語言程序員來講,這個功能是相當?shù)暮唵?。當然,具體的處理數(shù)據(jù)的判斷和操作數(shù)據(jù)庫,需要你自己寫。讓C語言程序員給你段標準代碼就行了。完全支持sql語句的。

  當然在網(wǎng)頁游戲開發(fā)前,還要組織相關(guān)的專業(yè)人才,制作一款網(wǎng)絡游戲需要的最核心人才是原畫、2D、3D、程序設(shè)計、策劃等這些方面的人才是必不可少的,因此,要開發(fā)一個網(wǎng)頁游戲除了要程序員以外,千萬不要忘了準備以上人才。

  網(wǎng)頁游戲游戲種類

  策略類

  可以說策略類游戲這是最主流的一類網(wǎng)頁游戲,玩家在游戲中扮演的是一塊領(lǐng)域(星球/國家/城市等)的統(tǒng)治者,可以招募英雄(將軍),通過發(fā)展自己的領(lǐng)域去占領(lǐng)周邊的領(lǐng)域,或者侵占其他玩家的領(lǐng)域。戰(zhàn)爭以系統(tǒng)自動計算的方式進行,勝負取決于雙方的軍事實力,所以不在線的玩家只要建設(shè)好防御設(shè)施擁有足夠的防御兵力就不用擔心被別人侵略。

  “借鑒”了《OGAME》的作品可謂舉不勝舉,較為流行的就有:《戰(zhàn)千雄》、《臥龍吟》、《戰(zhàn)神世界》、《地球帝國網(wǎng)絡》、《亂舞春秋》、《圖騰三國》、《世界領(lǐng)袖》與《三國風云》等。

  寵物養(yǎng)成類

  這類游戲雖然在玩家數(shù)量上不如前面的戰(zhàn)爭策略類游戲,不過寵物養(yǎng)成類的游戲數(shù)量可絕對不比任何戰(zhàn)爭策略類游戲少,比較知名的如《怪物世界》、《寵物特工》、《創(chuàng)世之光》、《最終幻想WEB》等。這其中MOP的《貓游記》已經(jīng)成了養(yǎng)寵型網(wǎng)頁游戲的代表之作。與其他類型的WEB游戲相比,該類型游戲更注重玩家之間的交流與互動,更接近于一個社區(qū)網(wǎng)游。游戲中,玩家可以培養(yǎng)自己的寵物,通過打怪練級來提高寵物的各項屬性,還可以和其他玩家的寵物進行PK競技。同時,寵物還可以擁有自己的技能和裝備,可以與其他寵物合成......但從寵物系統(tǒng)上來看《貓游記》已經(jīng)和普通的網(wǎng)絡游戲沒什么兩樣了。

  網(wǎng)頁MMORPG類

  角色扮演類網(wǎng)頁游戲中的《笑傲江湖》大概可以算是中國網(wǎng)頁游戲的鼻祖級游戲了,《笑傲江湖》從最早的江湖聊天室演變發(fā)展而來,早在2000年的時候就曾經(jīng)風行一時,擁有N多個游戲版本。玩家在游戲中扮演初出茅廬的俠客,通過各種方式(如任務、打怪、PK等)升級提高自己的能力屬性,可以購買或打造武器裝備、修煉或自創(chuàng)武功技能,可以創(chuàng)建或加入某個門派?;旧衔鋫b題材類網(wǎng)游所擁有的功能,它都能實現(xiàn)。

  休閑競技類

  休閑競技類游戲是當前最受歡迎的網(wǎng)頁游戲之一,用戶可以在放松身心的同時獲得游戲帶來的樂趣,休閑競技類游戲通常操作簡易,畫面以卡通形象為主,內(nèi)容又十分豐富,同時游戲又帶有一定的競爭性,是玩家?guī)в袏蕵返男膽B(tài)去競技。比如:彈彈堂,坦克大戰(zhàn),熱舞街等。

  模擬經(jīng)營類

  模擬經(jīng)營類游戲是由玩家扮演管理者的角色,對游戲中虛擬的現(xiàn)實世界進行經(jīng)營管理。模擬經(jīng)營類游戲按游戲載體分,主要包括模擬經(jīng)營類單機游戲和模擬經(jīng)營類網(wǎng)頁游戲,模擬經(jīng)營類網(wǎng)頁游戲主要表現(xiàn)在體育類型較為多一些,代表作由:足球經(jīng)理、籃球經(jīng)理、商業(yè)大亨等。


猜您感興趣:

1.網(wǎng)頁游戲占內(nèi)存怎么辦

2.如何開發(fā)一個網(wǎng)頁游戲

3.如何制作一個網(wǎng)頁

4.怎么學習制作游戲

5.游戲原畫制作的步驟

6.用手機怎么制作網(wǎng)頁

7.photoshop怎樣制作網(wǎng)頁首頁

2129343