搜尋

隨機推薦

02 十二月 2009

遊戲引擎(Game Engine)是什麼?大多數人給出的解釋都是基於engine的英文翻譯,將遊戲引擎等同於汽車中的引擎(發動機),再好一些的解釋成動力,這些解釋都對,但是動力只說並不全面,不能完整反映出遊戲引擎在遊戲中的作用與地位。


clip_image001

先舉一個簡單例子,在某遊戲中的一個場景中,玩家控制的角色躲藏在屋子裡,敵人正在屋子外面搜索玩家。突然,玩家控制的是一個穿迷彩服的士兵,突然碰倒了桌子上的一個杯子,杯子墜地發出破碎聲,敵人在聽到屋子裡的聲音之後聚集到玩家所在位置,玩家開槍射擊敵人,子彈引爆了周圍的易燃物,產生爆炸效果。在這個簡單而常見的過程中,遊戲引擎便在後台起著作用,控制著遊戲中的一舉一動。

clip_image002 
一些遊戲中常見的場景都是引擎在後台起著作用

把這個過程用專業們的語言分解一下就會變成這樣:首先出場的是可以行動的士兵,也就是人物模型。模型由引擎中的動畫系統賦予運動能力,遊戲中角色能做出什麼動作便取決於動畫系統有多強大。人物的真實程度則取決於3D模型渲染引擎的能力,這也是遊戲引擎最重要的功能之一,遊戲的畫質高低便由它來決定。之後,士兵碰倒了杯子,這個過程涉及到引擎的碰撞檢測,它可以決定不同的物體在接觸的時候會產生什麼樣的結果,有的遊戲能穿牆有的則不能便是不同的碰撞檢測控制的。例子中設定的是把杯子碰倒了,杯子發出了破碎聲。在發生某種動作的同時發出相應的聲音則屬於引擎中的音效處理了。杯子破碎的聲音吸引了敵人的注意,這是引擎中的AI智能運算在起作用,最後雙方交火引發爆炸,爆炸產生的煙霧、爆炸物飛散則是引擎中的物理效果在起作用了。 
可以說,遊戲引擎雖然有著“動力(Engine)”之名,但是其實際上卻是行“大腦(brain)”之實,指揮控制著遊戲中各種資源。遊戲引擎的準確定義也是如此,“用於控制所有遊戲功能的主程序,從計算碰撞、物理系統和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等。”通常來講,遊戲引擎包含以下系統:渲染引擎(即“渲染器”,含二維圖像引擎和三維圖像引擎)、物理引擎、碰撞檢測系統、音效、腳本引擎、電腦動畫、人工智能、網絡引擎以及場景管理。(引自wikipedia)

看了一下datastore的入門,以及開始採用MVC方式來寫php,於是想拿php為redis寫個model,可以實現一些datastore的基本功能...於是碰到這樣一個問題-.-

php裡__CLASS__這類東西是靜態綁定的,如果不再子類裡重載的話,那麼繼承父類方法所得到的依舊是父類的名稱而不是子類的名稱。比如:

class A{
function __construct(){
echo __CLASS__;
}
static function name(){
echo __CLASS__;
}
}
class B extends A{}

此時無論將B實例化還是直接調用靜態方法,echo出來的都會是A。翻qeephp裡是用子類重載的方式解決這個問題,可是這樣的話沒新搞一個子類就得把相應調用類名的方法重載一邊.....這算是php在oop上的缺陷吧,試了試python上沒這個問題。

google之。找到兩個函數get_class()和get_called_class()。get_class()用於實例調用,加入參數($this)可解決子類繼承調用的問題,而get_called_class()則是用於靜態方法調用,可是...這玩意兒只在php 5.3以後才有....5.3還是比較遙遠的事...還好5.2之前可以手動實現這個函數:參閱http://php.net/manual/en/function.get-called-class.php 下方有高手添加了幾種5.3之前的實現方式。這樣,即可實現印出靜態子類別的方法了。

Key Codes


This document is written by Helge Willum Larsen
It contains a list of all "onkeypress", "onkeydown" and "onkeyup" KeyCodes in JavaScript,
that can be typed with a DANISH KEYBOARD !!!
Other keyboards probably have other KeyCodes.

The first section is tested with the Microsoft Internet Explore 5.0 and the Netscape
Communicator 4.51. At this time, Netscape didn't support "onkeydown" and "onkeyup".

CasualJS Framework是根據ActionScript3.0的架構開發的一套適用於HTML5 Canvas的面向對象的開發框架。目的是讓你無縫的從AS3開發過渡到HTML5 Canvas開發。雖然Canvas提供了強大的繪圖功能,但滿足不了高級開發的需要。利用CasualJS的顯示對象架構及渲染機制,你可以輕鬆的在Canvas中操控各種位圖、圖形、影片剪輯等顯示對象,就如同在用AS3開發一樣愉快。

 

好久之前,發現必須應該有個動畫框架,才能支持開發出更加複雜的動畫效果。所以在學習Canvas的過程中,我就萌發了這樣的念頭,在無數大神大牛的啟發下,今天“出廠”一個小的動畫框架,希望能和有興趣的朋友一起探討交流一下。

 

 

HTML5入門

HTML5是HTML的最新版本,目標是更好地開發網絡應用程序。HTML5比HTML4擁有更簡潔的語法並且提供了更多新的特性。本文將對HTML5做一個大體的介紹。

HTML5能做什麼?

1. 離線存儲

HTML5可以讓你的WEB應用程序離線也能運行,它提供了一個稱作“應用程序緩存”的離線存儲功能,因此即使當用戶離線 ,瀏覽器仍然能夠訪問到它所需的文件。這些文件可以是HTML,CSS,Javascript 或者其它任何 網頁運行所需要的文件。

2.拖拽功能

HTML5提供了可以用來設計交互應用程序的本地拖拽功能,通過這個特性你可以拖動任何元素然後把它放到你想放到地方。

3.地理位置定位技術

HTML5的地理位置定位API可以讓你與所信任的網站分享你當前的位置信息,當然,隱私問題是這一特性所主要考慮的,W3.org聲明:

瀏覽器在沒有用戶許可的情況下不允許私自向網站發送用戶的地理位置信息。

比如一位用戶使用Firefox瀏覽器訪問了一個實現地理位置定位技術的網頁,瀏覽器會向用戶詢問是否共享他的地理位置信息,如果用戶同意,Firefox會收集附近無線接入點和訪問者IP地址信息,並把這些信息發送到默認設定的Google地理位置服務,處理之後的位置信息將會發送給用戶訪問的這個網站。

4.音頻和視頻

當前的HTML缺少在頁面中嵌入多媒體文件的特性,因此多媒體文件的嵌入需要使用各種的插件。比如FLASH被廣泛地用來嵌入音頻和視頻文件。現在可以非常方便地使用HTML5提供的audio和video標籤,而不用任何插件。

5.表單輸入

HTML5提供了幾個新的表單input類型,像彈出日曆,調色板,數字輸入框等等。這些可以創建擁有更好的輸入控制和驗證的高效表單。

 

這支library實在是非常地簡單易用, 而且在此網頁中馬上就可以測試其效果。

同時也提供了下面的example code, 只要將shortcut.js抓下來即可使用。

 

範例:

<script type="application/x-javascript" src="/shortcut.js"></script>
<script type="application/x-javascript">

shortcut.add("Ctrl+B",function() { alert("Bold"); });
</script>


如此一來只要按下 Ctrl + B 即可呼叫到我要的function.

 

Shortcut.js 下載頁面

HTML5 Logo

你是免不了的。每個人都在談論HTML5。自眾人開始濫用圓角和漸變效果以來,HTML5或許是最熱炒的技術。然而,許多人眼中所謂的HTML5實際上只是老式的DHTML和Ajax。有關HTML5的諸多信息中魚目混珠,因此,JavaScript專家雷米·夏普(Remy Sharp)和Opera公司的布魯斯·勞森(Bruce Lawson)著眼這些流言,對其中的常見謬誤和事實做了分類整理。

 

Please publish modules in offcanvas position.