製作一款網頁遊戲要怎麼做

  很多人想投身遊戲行業,成為真正的遊戲製作人。但是他們對遊戲的製作過程,和各個職位的職能都是比較陌生的。對網頁遊戲開發也不夠了解,但今天小編就告訴你們遊戲到底是怎麼製作出來的。

  網頁遊戲開發的程式構成分為三大部分

  1、資料流程

  資料流程其中,資料流程包括了功能。也只有在功能中才能體現資料流程。

  比如最簡單的賣買產品。要實現這個功能,那麼需要有產品基礎表、產品詳細表、商店表、揹包表。如果擴充套件性更強,相應的雙表是少不不了的。

  表的問題都簡單了,關鍵是這個物品有什麼用,這樣物品的來源,一大堆資料,物品的走向,又是一大堆資料。最後,這些資料得繞成一個圈。繞圈是一件困難的事情,特別是功能和道具多了起來的時候。難度是2的n次方。

  2、美術

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

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

  3、程式分5個部分

  資料庫:一大堆基礎資料表和詳細資料表。基礎資料表:比如等級1到等級100的使用者的屬性初始值。詳細資料表:每個使用者的具體屬性。

  功能頁面、功能函式。主要就是資料存取,判斷,資料走向。

  製作網頁遊戲詳細的例子

  那麼一個webgame的基本內容需要

  資料庫:玩家、地圖、城市、建築、武器、士兵。

  功能:登陸、升級、個人戰鬥、士兵之間的戰鬥、與城市的戰鬥、修建建築、打造武器、買賣道具。注意:每一個功能,必然對應1個或多個數據表。上面資料庫中所列的只是基礎中的基礎。

  首先是地圖、城市、建築。這裡認為,地圖可以有多張,城市在地圖上,建築在城市內。

  地圖表Map :Map_ID ,X座標,

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

  城市表

  建築表

  其中,地圖表確定城市的位置,城市表確定城市的相關資料以及所有人,建築表內的多條資訊屬於某一個城市。

  建表後,顯示出來。一個for迴圈。把地圖表整個取出來就ok。跟普通網站的新聞列表沒太大區別。不同的是,你需要取得X座標和Y座標定位。可以用tabel也可以用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 “;”; echo

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

  “z-index:0;”; echo “

  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].”>

  ”;}}}

  上面是一個很簡單的地圖類。程式碼可能不太正確,意思是正確的。就是根據map表中的座標,生成了一組div層,以及這一組層的css。你可以改為table的。你可以也把座標放到一個欄位裡,用陣列的形式取。

  使用的時候,用

  new map;mapN;

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

  城市內的建築也類似。如果要顯示出來的話。

  有了地圖和城市後。

  涉及到的問題就是城市裡資源的產生。

  這時候,City表裡需要有可供判斷的時間和數量的欄位。比如:產生資金量Money,產生資金花費的時間Action_Time,上次產生資金時間Money_time。

  這兩個欄位的數值應該在City_base表裡出現。即城市基礎表,不同等級,不同型別城市的對應數值。這是給策劃填資料用的,建好表後就等策劃去頭痛吧。如果你身兼數職。。。

  如何自動產生資源呢?

  我們可以在城市所有人改變的時候,寫入一個時間。或者在城市初始化的時候寫入一個時間。

  $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;

  我們假定當前城市產生資金量為100。即$Money=100;具體的數值,應該是由City_base表裡取出的。

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

  這時候,有基礎時間了。有基礎資金產量了。有間隔時間了。

  讓它迴圈執行起來就行了。

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

  服務端,資源定時器設定為5分鐘執行一次。那麼我們的誤差就是5分鐘。對網頁遊戲來說,可以接受。戰鬥的定時器得1分鐘吧。當然伺服器夠牛的話,幾秒鐘都可以。

  每次執行什麼程式碼呢?

  首先得新建一個定時器任務的表。目的就是讓定時器知道需要執行哪些程式和資料的更新。表內容比如:城市資源更新。當然,這個表可要可不要。建立的好處是方便處理類似保護狀態不產生資源之類的問題。

  服務端程式:

  獲得當前伺服器時間。

  獲得當前需要更新城市。

  判斷伺服器時間與$Money_time的時間差。時間戳,具體的時間戳網上資料滿多的。

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

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

  客戶端程式:

  獲得當前伺服器時間。

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

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

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

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

  C語言定時器,找個C語言程式設計師,超簡單;前臺的javascipt,網上有很多倒計時的程式碼,找個來改改就能用。

  LANGUAGE=”JavaScript”>var maxtime =

  這裡是你的時間差///一個小時,按秒計算,自己調整!function

  CountDown{ifmaxtime>=0{minutes =

  Math.floormaxtime/60;seconds = Math.floormaxtime%60;msg =

  “你的文字說明”+minutes+”分”+seconds+”秒”;//動態顯示剩餘時間。document.all["timer"].innerHTML=msg;//ifmaxtime

  == 3

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

  = setInterval”CountDown”,1000;

  這個是網上找的程式碼。稍微修改就可以用的。這裡只是顯示了倒計時。也可以改為顯示資源的增加情況。

  C語言裡操作mysql資料庫。

  // TODO: Add your control notification handler

  code herebool bRes = m_dbConn.Connect”資料庫ip地址”, 3306 , “使用者名稱”,

  “[email=d203!@#ghj]密碼[/email]“, “資料庫名”;

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

  string strSql = “select * from city limit

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

  m_dbConn.ExecuteQuerystrSql;whilers->Next{string str =

  rs->GetString”username”;AfxMessageBoxstr.c_str;}/*strSql

  = “update city set money=money +100 where

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

  bRes = m_dbConn.ExecuteUpdatestrSql;

  if!bRes{AfxMessageBox”ExecuteUpdate

  fail”;}*/m_dbConn.Close;

  定時器的主函式。void

  CBeiLiDlg::Go{whiletrue{//

  AfxMessageBox”go”;Sleep5*1000;//毫秒。定時器重新整理時間。}}//相當的簡單..。

  當然。這裡的C的程式碼不能直接用。只是一部分。

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

  接下來是城市裡的建築。

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

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

  當然,這個效果是可有可無。你可以直接給個類似新聞列表的顯示,再加個倒計時就行。顯示的效果就是,點修建後。不重新整理頁面,調入一張動畫圖片。並在時間到後自動轉換為其他圖片。

  language=’javascript’> function xiujian {

  top.abc.document.getElementById’前臺建築位置所在圖片的id’.src=’修建後建築的圖片地址’;//顯示修建後的建築圖片。可以加上後臺時間判斷。其中abc,是建築所在層的id,

  } function xiujian1 {

  setTimeout’xiujian’,5000;//動畫時間5秒。這裡也可以加入時間判斷。當時間不到的完成的時候,繼續呼叫動畫。

  } function donghua {

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

  } donghua; xiujian1;

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

  建築基礎表:產出,型別,圖片等等。。建築詳細表:屬於哪個城市,可以在城市表裡關聯。關聯的方式不同會對程式有很大的影響。各種關聯方式都行,但是一旦關聯方式確定後,最好別改動。

  現在建築也有了。用類似的定時方式,打工,徵兵等等都可以實現。

  戰鬥,兵的引數:兵種,數量,攻擊,防禦等等。

  戰鬥的臨時表:誰的兵,打誰,出發時間,戰鬥時間,戰鬥結果。

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

  webgame中,戰鬥的過程分兩種,

  一種是給出雙方引數,時間到,就根據公式計算結果。

  一種是半即時或者即時的戰鬥,可以邊打邊喝藥邊用技能的那種。

  第一種流程。

  點出兵。這時候,兵的引數,出發時間,到達時間,都記錄進戰鬥臨時表。

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

  最後把結果分別發給雙方。又涉及到一個短資訊系統。

  第二種流程。

  點攻擊。馬上就處理資料。打打npc好做。玩家之間對戰,也可以把被攻擊的玩家當成npc來處理。

  兩個人或兩人以上即時戰鬥。需要用到ajax了。目前在技術上和理論上是沒問題的,還沒實際寫程式碼,所以不好講。

  很簡單的公式,兩種戰鬥都可以用到:

  intvalsqrt$User_B_AP-sqrt$User_A_DP;

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

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

  ajax函式:可選某些需要偽即時的功能要用到。

  javascript函式:可選模擬客戶端的資料計算。也就是webgame的與時間相關的資料。分為兩部分。一部分是真實資料,是由伺服器端的定時器計算的。另一部分是隻有初始值,客戶端顯示用的。不需要即時同步,僅僅需要模擬同步就行。

  伺服器定時器:C語言或自己設定伺服器定時迴圈執行某一段程式碼。而這段程式碼主要是根據資料庫的資料進行更新。這個可以找個C語言程式設計師來做。對於C語言程式設計師來講,這個功能是相當的簡單。當然,具體的處理資料的判斷和操作資料庫,需要你自己寫。讓C語言程式設計師給你段標準程式碼就行了。完全支援sql語句的。

  當然在網頁遊戲開發前,還要組織相關的專業人才,製作一款網路遊戲需要的最核心人才是原畫、2D、3D、程式設計、策劃等這些方面的人才是必不可少的,因此,要開發一個網頁遊戲除了要程式設計師以外,千萬不要忘了準備以上人才。

  網頁遊戲遊戲種類

  策略類

  可以說策略類遊戲這是最主流的一類網頁遊戲,玩家在遊戲中扮演的是一塊領域星球/國家/城市等的統治者,可以招募英雄將軍,通過發展自己的領域去佔領周邊的領域,或者侵佔其他玩家的領域。戰爭以系統自動計算的方式進行,勝負取決於雙方的軍事實力,所以不線上的玩家只要建設好防禦設施擁有足夠的防禦兵力就不用擔心被別人侵略。

  “借鑑”了《OGAME》的作品可謂舉不勝舉,較為流行的就有:《戰千雄》、《臥龍吟》、《戰神世界》、《地球帝國網路》、《亂舞春秋》、《圖騰三國》、《世界領袖》與《三國風雲》等。

  寵物養成類

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

  網頁MMORPG類

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

  休閒競技類

  休閒競技類遊戲是當前最受歡迎的網頁遊戲之一,使用者可以在放鬆身心的同時獲得遊戲帶來的樂趣,休閒競技類遊戲通常操作簡易,畫面以卡通形象為主,內容又十分豐富,同時遊戲又帶有一定的競爭性,是玩家帶有娛樂的心態去競技。比如:彈彈堂,坦克大戰,熱舞街等。

  模擬經營類

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


猜您感興趣: