原创 解釋性腳本語言與編譯性語言的區別

Lua代碼的執行流程 腳本語言通常都是解釋執行的,每一門腳本語言都會有自己定義的OpCode(operation code, 也稱爲 bytecode,即操作碼或字節碼),即爲這門程序定義的“彙編語言”。一般的編譯型語言,比如C等,經過編

原创 數據結構與算法博客總結大全

 Interview-Algorithms-DataStruct - https://github.com/0voice/interview_internal_reference#1 - https://github.com/ZXZxin

原创 Userdata

話從這裏說起 在我發表《Lua中的類型與值》這篇文章時,就有讀者給我留言了,說:你應該好好總結一下Lua中的function和userdata類型。現在是時候總結了。對於function,我在《Lua中的函數》這篇文章中進行了總結,而這篇

原创 延遲補償的總結

國內的網絡遊戲多是客戶端/服務器方式,而對於遊戲實時性要求比較高的網遊,如 果採用客戶端發送時間包給服務器,服務器校驗後再下發給客戶端表現的話,網絡延時 和抖動都會惡化遊戲體驗。對於客戶端和服務器的同步問題, 一般有兩種算法解決: ① 、

原创 守望先鋒等FPS遊戲的網絡同步

在一個採用C/S架構的遊戲中,客戶端和服務端的遊戲狀態有差異是不可避免的。客戶端和服務端各自都維護了一份遊戲狀態。這兩份遊戲狀態依賴網絡包通信保持同步。但由於各客戶端到服務端的時延具有不確定性,遊戲狀態同步變得非常困難。通常服務端在遊戲拓

原创 快節奏多人遊戲同步(3)-Entity插值

PART 1 概述 在本系列的「第一篇文章」中,我們介紹了關於權威服務器及其反作弊特性,然而僅僅是最簡單的實現可能會導致關於可玩性和響應速度的問題。在「第二篇文章」中,我們提出了「客戶端預測」的方案來克服這個困難。 以上兩篇文章事實上介紹

原创 Unity3d聊天視圖適應手機鍵盤視圖

我們實際開發出來的聊天系統,有時候會出現這樣一個現象,點擊InputField會彈出手機系統的鍵盤,鍵盤的彈出會遮住InputField甚至頻道里面的消息。爲了解決遊戲聊天視圖被這個系統鍵盤遮擋的問題,最直接的思路就是,輸入框根據鍵盤的高

原创 List和Dictionary的使用技巧總結

List和Dictionary想必是我們平常用到最多的C#容器了,他們使用起來都很簡單,所以很多人就可能就沒去深究,其實在使用過程中有很多的小技巧能讓我們寫的代碼變得更高效也更安全。 1·合理的指定初始容量。 List和Dictionar

原创 Lua腳本性能優化指南

Lua腳本是C語言實現的腳本,廣泛應用於客戶端擴展腳本,例如魔獸世界等網遊。但是Lua的性能一般,並且有許多不好的實現,誤用會大大降低系統的性能。 網絡上有一些關於Lua腳本性能優化的資料,但是都是針對Lua撰寫的,寫作年代較早,一些優化

原创 遊戲開發中,邏輯與渲染的分離

回顧之前做的幾個Demo,做點總結。 一、做法: 爲了更清晰,NRatel將遊戲對象類拆分爲兩個類,如下: 1、定義“純粹的邏輯類”。   基本職責:對遊戲對象的“邏輯值”進行定義、存儲和計算。   關鍵要素:只關心邏輯數據,不考慮渲染問

原创 Lua 性能

Overview This page is copied from the CA wiki. The widget used in the performance tests is available from the CA SVN. O

原创 Unity3D與iOS的交互

1. 關於Unity3D Unity3D(以下簡稱U3D)是由Unity Technologies開發的一個讓玩家輕鬆創建諸如三維視頻遊戲、建築可視化、實時三維動畫等類型互動內容的多平臺的綜合型遊戲開發工具,是一個全面整合的專業遊戲引擎。

原创 table.sort的注意點總結

lua中對table的排序一般是用lua自帶的table.sort()函數排序,一般不採用自己寫的排序的方式,以下來說一說 table.sort()排序和在工作中遇到的問題  1.排序的方式 table.sort(tbl,functio

原创 C# 委託的三種調用示例(同步調用 異步調用 異步回調)

本文將主要通過同步調用、異步調用、異步回調三個示例來講解在用委託執行同一個加法類的時候的的區別和利弊 首先,通過代碼定義一個委託和下面三個示例將要調用的方法: public delegate int AddHandler(int a,i

原创 Lua Table遍歷總結

當我在工作中使用lua進行開發時,發現在lua中有4種方式遍歷一個table,當然,從本質上來說其實都一樣,只是形式不同,這四種方式分別是:   for key, value in pairs(tbtest) do   XXX   e