1. 程式人生 > >Cocos2d-x,IOS,遊戲,開發/交流/學習/資源 馬宗揚

Cocos2d-x,IOS,遊戲,開發/交流/學習/資源 馬宗揚

此篇文章獻給初學遊戲設計的開發者,希望能夠幫助同學們各好的瞭解遊戲與引擎。

1. 什麼是遊戲

遊戲的型別有很多種,而今天我們所談,無疑是電子遊戲。

     對於一般的開發者而言,遊戲無非就是程式的代名詞,一款遊戲在研發人員的眼中恐怕與一般的軟體開發無異,然而遊戲的意義真的僅此而已嗎?我們在遊戲的過程中可以在一個二維或三維的虛擬世界中控制人或物讓他們按照我們的要求進行互動從而獲得樂趣,而這便是遊戲獨有的魅力——模擬與互動性。

     從遊戲的特徵上來看我們不難發現,電子遊戲事實上就是一種虛擬的現實,這也是電子遊戲被稱之為繼八大藝術之後第九大藝術的原因。它擁有八大藝術所具備的共性卻又擁有自己獨特的藝術樣式,它能夠使欣賞著不侷限於第三方的身份去感受作品本身的氣息,從而達到身臨其境之感。無論是戲劇、電影、文學、又或是音樂,當我們每一個人作為欣賞者去品味這些創作者的藝術時,即使作品本身再完美,不同的人都將會有不同的感受,因為我們每個人與創作者的角度不同,這樣欣賞者就會受到自身的限制而無法真正的還原藝術本身的靈魂。而電子遊戲的互動式,卻能夠使人真正的融入到作品中,至少就目前而言這是其它任何一種藝術都望塵莫及的。也正是因為遊戲本身的模擬與互動性註定了其發展的最終趨勢——虛擬現實。

2. 何為引擎

人們對遊戲引擎的定義是:用於控制所有遊戲功能的主程式。通常在一個遊戲開發的團隊中會將工程師分為引擎程式設計師與遊戲程式設計師,前者負責引擎系統的功能,例如遊戲中的實時渲染,光影計算,人工智慧,物理系統,動畫技術及音樂等等;而後者則負責遊戲的邏輯的實現,即遊戲本身的玩法。通過這一點我們可以發現遊戲引擎實際就是遊戲的框架,它為前端開發者提供了各種各樣的遊戲中所需要的元件。有人將遊戲引擎比喻為賽車的引擎,從遊戲的效能角度來說這一比喻是很貼切的,引擎就像是一個導演一樣指揮著各個功能模組協調操作,而遊戲最終渲染出來的畫面效果及執行時的流暢性與引擎也有著很大的關係(當然某些遊戲被稱作顯示卡殺手的原因也並非是引擎的關係)。說到這裡有人可能會認為引擎工程師要比遊戲研發工程師厲害很多,事實並非如此,引擎工程師更關心的對引擎系統元件功能的實現,而遊戲研發工程注重的卻是對遊戲邏輯的抽象,著重點各有不同,卻並無高低之分,因為遊戲與引擎之間的分界線本就是模糊的。

3. 引擎的由來

    在遊戲開發的初期,並沒有引擎這一概念,人們每開發一款遊戲都會從零開始編寫程式碼,這樣便浪費了大量的時間和費用。後來人們便將某些具有類似題材的遊戲程式碼整理出來作為下一款該類遊戲的基本框架。所以,好的遊戲引擎都是為了某種特定的遊戲型別而設計的,越是通用的引擎(可以製作很多種遊戲內容的引擎),它在特定平臺執行特定遊戲的效能就越一般,所以,不要指望某種可以橫跨N多個平臺製作N多種型別遊戲的引擎效能會很牛X(實際上可以在任何平臺執行任何遊戲內容的引擎基本永遠不會出現),因為高效的東西總是需要取捨的。

4. 引擎發展簡史

關於世界上第一款遊戲引擎的說法可謂眾說紛紜,但是通常大家比較認同的是1992年3D Realms公司(該公司為Apogee Software公司劃分出的獨立開發部門

)釋出的 Wolfenstein 3D(德軍司令部),這款遊戲可謂是FPS(First Person Shoot,第一人稱射擊遊戲)遊戲的鼻祖,這也是後來3D遊戲引擎與FPS遊戲密不可分的原因。Wolfenstein 3D成功的在遊戲中引入了Z軸的的概念,使平面增加了一個縱深空間。而這款引擎的作者便是id software公司的聯合創始人John Carmark(約翰·卡馬克),一個被賦予遊戲之神稱號的電玩遊戲程式設計師,在Wolfenstein 3D釋出不久之後,id SoftWare便釋出了另外一款在引擎史具有重大意義作品——Doom(毀滅戰士)。Doom引擎是世界上第一個被用於授權的引擎,而John Carmark的地位也從此在遊戲界站穩了腳跟(目前卡馬克已從id SoftWare公司離職,研發虛擬現實之眼)。

       在引擎的進化史上另外一款能夠與Doom比肩的遊戲便是Duke Nukem 3D(毀滅公爵3D),由Apogee Software公司1994年研發的Build引擎打造,毀滅公爵已經具備瞭如今我們所接觸到的第一人稱射擊遊戲所包含的絕大多數內容,但是Build引擎仍然無法被成為一個真正意義上的3D引擎,因為從引擎本身來講Build並沒有什麼實質性的突破,然而,在1996年id software公司釋出了Quake(雷神之錘)之後,這個局面被打破了。雷神之錘不僅能夠完全支援粒子特效及動畫,更重要的是實現了網路遊戲的大眾化,將網路遊戲帶到了人群中。

       與此同時,我們在來看看同期國內的情況,1995年,由大宇旗下的狂徒工作室研發的仙劍奇俠傳誕生了,1996年,由河洛工作室研發的金庸群俠傳問世,在這個期間,國內還並沒有一款成型的遊戲引擎,而這些DOS遊戲也都是基於組合語言完成的,儘管遊戲本身的功能和畫面以及所使用的技術並不如同期國外的產品,但這兩款遊戲在中國的遊戲史上仍然具有非凡的意義,也是無數人心中永遠的回憶。

       繼雷神之錘之後,id software公司很快推出了雷神之錘2,在當時的3D引擎市場上佔據了霸主之席。然而,在1998年Epic Games公司的Unreal(虛幻)闖入FPS世界之後,雷神之錘便出現了一個強勁的競爭對手。在1998年同時出現的還有另外兩款引擎,一款是Looking Glass工作室研發的Dark引擎(後由於工作室倒閉引擎未能繼續研發),而另外一款便是大名鼎鼎的半條命(Half-Life)了,其實包括我們在後期玩CS的時候也不難發現,這款遊戲中始終留有雷神之錘的影子,這是因為半條命引擎正是基於雷神之錘1和雷神之錘2引擎打造。

       在進入了21世紀之後,引擎分化的趨勢也逐漸展開,而在2000年左右的時候,國內也誕生了不少的遊戲引擎,例如當年大名鼎鼎的夢幻西遊及大話西遊系列便是通過一款名為風魂的圖形引擎打造,風魂引擎是雲風在大學時期的一項作品,儘管現在看來這款引擎並不十分完美,但在當時也算紅極一時。筆者早些年玩過的一款令我印象十分深刻的遊戲便是可樂吧的奇遇(現已改名為奇遇之城),事實上這也是筆者玩過的第一款網路遊戲,這款遊戲是使用可樂吧的FancyBox引擎打造。同時國內的一些製作單機遊戲的工作室也開始了引擎的研發,例如當年的仙劍2,軒轅劍3以及大富翁4,都是採用了大宇旗下的DOMO工作室自主研發的遊戲引擎打造,而當年金山旗下的西山居工作室也是憑藉了其自主研發的OverMax引擎打造出來複活、秦殤等黑馬級別的遊戲,同一時期的經典遊戲還有很多,2002年可謂是中國單機遊戲的最後一個巔峰,之後便徹底淪入了網遊的時代。

       在2001年之後誕生的引擎大多以追求畫面的真實和內容的真實為主,同時也在朝著網路的方向探索,而在2005年之後,昔日的小弟引擎也終成為了引擎界的巨頭,05年Epic遊戲公司的Unreal 3問世,07年 CryEngine 2強勢登場,08年第一款使用Frostbite Engine(寒霜)引擎打造的戰地:叛逆連隊釋出,無一不標識這新的引擎時代到來。

       而國內的引擎大多因為後期無人維護以及技術落後的原因紛紛被遺棄,國產單機遊戲市場也在歐美大作的衝擊下逐漸萎縮,也只有個別工作室在勉力支撐,而所使用的引擎也大多是引入了國外的引擎,例如仙劍4,仙劍5,仙劍5前傳以及軒轅劍所使用的RenderWare引擎(曾用於製作戰地2,GTA系列遊戲等),除此之外大多數公司都已轉型,直到近兩年來單機遊戲才有回暖的趨勢。在近兩年來的單機遊戲作品中血雨算是一款成功之作,而國內四劍遊戲也僅有古劍奇譚的表現能稱得上用心制之作,古劍2的畫面在國內的遊戲中已經可以算是相當高的水準了;而同樣在13年釋出的三劍之一的軒轅劍6曾被人稱作是砸了Unity的招牌,在筆者看來說是Unity砸了軒轅劍更為貼切一些,畢竟目前的Unity 3D引擎用來做大型PC的確是有些勉強;13年另外一款備受關注的單機PC大作便是由玄黃工作室打造的凡人修仙傳了,這款號稱國內第一款ARPG遊戲的大作在耗時三年精心製作後終於上市,可上市不久之後玄黃卻解散了,其中原因不言而喻。14年有一個令筆者十分振奮的訊息便是河洛工作室重組了,這個當年打造了金庸群俠傳,武林群俠傳,三國群俠傳的工作室終於再一次的回到了單機遊戲的視野中,而在7月18日西山區的新作新劍俠傳奇也將上市(這遊戲的人物模型是劍網3嗎??),儘管宣傳片看起來很一般,但筆者相信這款遊戲能夠延續劍俠情緣系列的經典。

       除了國內的單機遊戲之外,國內的網路遊戲引擎的發展也可謂是進步神速,其中的代表作品便是金山的劍網3和完美世界,但是這兩款引擎距離國外的高富帥引擎仍然有著不小的差距。好在2012年國內出現了兩款號稱次時代引擎的傢伙,一款為方舟工作室自主研發的AkEngine,代表作武魂;而另外一款就是搜狐暢遊的黑火引擎了,黑火引擎曾經發布了一段名為代號X7的宣傳片,實際為與大宇合作將要打造的軒轅劍7,但從宣傳片上來看黑火引擎的畫面的確可以追上世界一流引擎的步伐了,但實際效果如何還是要等到作品真正釋出時再做討論。

    儘管目前可供我們選擇的優秀遊戲引擎有很多,但是一款能否製作出來黑馬遊戲並不在於引擎本身,而在於使用它的人。因為遊戲界的至理名言是"內容為王(content is king)"。

相關推薦

Cocos2d-x,IOS,遊戲開發/交流/學習/資源

此篇文章獻給初學遊戲設計的開發者,希望能夠幫助同學們各好的瞭解遊戲與引擎。 1. 什麼是遊戲 遊戲的型別有很多種,而今天我們所談,無疑是電子遊戲。      對於一般的開發者而言,遊戲無非就是程式的代名詞,一款遊戲在研發人員的眼中恐怕與一般的軟體開發無異,然而遊戲的意義真

Cocos2d-x,Android,IOS,遊戲HTML5開發/交流/學習/資源 沈大海

上一節談到啟動了節點,通過cleos工具可以獲取區塊鏈狀態 以上命令返回了以下內容: server_version:版本 chain_id:網路編號,以上圖片的網路編號是主網,但在未連線主網之前一定不是acaxxxxx開頭的 head_block_num:頭區塊編

Cocos2d-x Lua遊戲開發Mac環境搭建以及一點點感悟

感覺 慢慢 怎樣 tid lease 人生 第三方 什麽 增強 接觸Cocos2d-x 最近由於公司項目的需要,自己開始接觸Cocos,開始做一些簡單的輕量級的遊戲,以前沒有接觸過這一塊的東西,也是借助這個機會學習一下遊戲的開發,由於以前自己

cocos2d-x 3D實戰】開發一款體素遊戲--1. 準備工作

本系列文章記錄下使用cocos2d-x開發一款體素風遊戲的過程,遇到的問題,解決辦法及收穫。使用了cocos2d-x的3D功能,以下簡稱c3d 前言 最近cocos官網推薦了一款使用cocos2d-x開發的3D遊戲,叫《Steps》(信步),是一個烏克蘭

楊豐盛老師《Cocos2D-X跨平臺遊戲課程》

【課程簡介】   國內第一套Cocos2D-X手機遊戲引擎開發課程,受到Cocos2D-X官方以及創始人王哲全面肯定的 。 在當前手遊市場無比火爆的時代,手機遊戲永遠都是應用市場的主角,越來越多的人靠著開發手遊一夜暴富。遊戲創業團隊越來越多。 但是遊戲開發卻並不是大家想象的那

設計模式遊戲完美開發學習總結

一、State模式 GOF的解釋”:讓一個物件的行為隨著內部狀態的改變而變化,而該物件也像是換了類一樣”。 書中用State模式實現了場景的轉換。 這是State模式的結構圖。 /// <summary> 2

cocos2d-x遊戲——飛機大戰

上週,我做了一個基於 cocos2d-x 的飛機大戰的遊戲,因為我剛學cocos2d-x沒多久,所以這個飛機大戰很多都是看著別人的教程,再加上自己的一些想法,來做的。 下面我想說一說我的思路。 飛機大戰有三個場景: LayerGameStart(遊戲開始

遊戲伺服器開發需要學習的技術

一,遊戲伺服器程式語言的選擇  所謂的遊戲伺服器程式語言其實有很多,基本上任何一種語言都可以作為遊戲伺服器的程式語言。這需要根據自己遊戲的型別和要求加以選擇。比如C++,Java ,Erlang,go等等。目前我用過的只有C++和Java.但是以Java為主。所以接下來就以自

【支付】Cocos2d-x IOS內購(IAP支付)

【說明】 遊戲開發中,整合支付是一個重要的環節,AppStore稽核指南規定,App內虛擬物品必須使用IAP支付。這篇文章主要記錄我在整合IAP的過程,我參考了泰然網的一篇文章,對其進行了封裝和擴充套件,並對結構和使用流程進行了簡單的介紹,僅供自己學習使用。 關於iTune

cocos2d-x 交叉編譯維護mk檔案的“萬能”配置解決(轉載)

之前研究cocos2d-x的環境,大部分網上教程都沒提mk檔案的配置怎麼適應大專案的情況,都是以幾個檔案的專案在做demo演示,最近專案越來越大,在用手動配置mk檔案的話,是件很不科學的事,於是找到了這篇文章,留下學習的足跡,同時與大家分享。 Makefile Andro

Cocos2d-x簡單遊戲程式碼實現|第三部分:引導層

#ifndef __ShootPlane__InstroLayer__ #define __ShootPlane__InstroLayer__ #include <iostream> #include "commonHeader.h"

cocos2d-x ios 設定橫屏/豎屏(全)

Cocos2d-x專案\iOS\RootViewController.mm檔案中。 以下方法任選其一即可…      本人機子函式二ok! 函式一: (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)inter

cocos2d-x開發遊戲使用Texture packer來合併圖片

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

iOS-cocos2d-X 遊戲開發之四】Cocos2dX建立Android NDK新專案並編譯匯入Eclipse中正常執行!

站文章均為 李華明Himi 原創,轉載務必在明顯處註明: 轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/android-game/645.html          ☞ 點選訂閱 ☜ 本部落格最新動態

關於Cocos2d-x遊戲開發學習過程的一個總結

首先,關於Cocos2d-x專案的建立:    1.需要在Cocos2d-x的下載解壓目錄下建立工程(以下簡稱cc)  例如:D:\cocos2d-x-2.2.6,找到該檔案下的tools資料夾下的project-creator中的專案建立批處理檔案。工程名為專案名稱,自定義

cocos2d-x 3.x遊戲開發學習筆記(1)--mac下配置cocos2d-x 3.x開發環境

原文:http://blog.csdn.net/likendsl/article/details/34617725 開啟使用者目錄下.bash_profile檔案,配置環境  [python] view plaincopyprint? vim ~/.b

手機遊戲引擎的選擇--學習遊戲開發Cocos2d-x和Unity3D/2D哪個前景更好?更易上手?

現在手遊火的一塌糊塗,引擎也是層出不窮除了引領3D市場的Unity3D,獨霸2D市場的Cocos2D-X之外,還有虛幻、Sphinx等,甚至搜狐也開發了國產的Genesis-3D引擎。 其它的不多說

Cocos2d-x遊戲開發之lua編輯器 Sublime 搭建集成cocos2dLuaApi和自有類

系統 下一個 下載 tail mil 命令 term 小寫 一次 版權聲明:本文為博主原創文章。未經博主同意不得轉載。 https://blog.csdn.net/wisdom605768

linux下開發解決cocos2d-x中編譯出現的一個小問題, undefined reference to symbol &#39;pthread_create@@GLIBC_2.2.5&#39;

water span x86 code bject data- ace 技術分享 inux 解決cocos2d-x中編譯出現的一個小問題 對於cocos2d-x 2.×中編譯中,若頭文件裏引入了#include "cocos-ext.h",在進行C++編譯的時候會遇到例

Cocos2d-x使用iOS遊戲內付費IAP(C++篇)

pos ack tegra cocos2d http tor -c html5 trac http://www.cocos2d-x.org/docs/manual/framework/html5/jsb-ios-iap/ios-storekit-integratio