Lua Game Engine ~Engine tự viết by Bullno1~

  • Thread starter Thread starter bullno1
  • Ngày gửi Ngày gửi
Status
Không mở trả lời sau này.

bullno1

Mr & Ms Pac-Man
Trước hết là sreenshot cái đã

tempbg5.png


Đây là engine do mình tự chế, nói là chế vì chỉ tập hợp mấy thứ nổi tiếng lại thôi, ko tự làm đc gì nhiều. Các thứ đó là:
Graphic:Irrlicht
Sound: IrrKlang
Level editor: Irredit
Script: Lua

Mục tiêu là làm ra một free+opensource 3d game engine vừa dễ, vừa tốt. Có thể đc coi như một game maker trong giới 3D.

Chức năng:
-Tất cả những chức năng mà mấy engine kia có
-Gắn scene node với một entity thông qua Irredit
-Lập trình hướng đối tượng trong Lua
-Hệ thống event giống game maker (Create,Step, Destroy, Collision)
-100% sử dụng script -> game chạy đc ngay, ko cần biên dịch

Cách xem demo:
Giải nén file mình attach ra rồi vào luagame\bin\debug rồi double click vào launcher.bat
Nếu có nhạc mp3 thì copy vào và đổi tên thành testmusic.mp3 để nghe thấy trong demo
Bấm nút f để cái model bay lên cao
Di chuyển camera bằng nút wasd
Bấm nút '~' để thấy chữ hoho xuất hiện trên console :))

Lập trình bằng lua: tham khảo( http://www.lua.org)
Cách tạo class,object,method,property:
Mã:
class("Classname")
function Classname:Create() --Day la constructor
  property1=1
  property2=2
end

function Classname:Destroy() --Destructor
end

function Classname:blah() --method
 blah blah blah
end

--Chú ý:Class với tên Classname ko đc quản lý bởi game engine
--Muốn đc quản lý thì class này phải inherit từ Entity:
--vd từ demo
class("crazygirl",Entity) --class "gái điên" là con của Entity :))
function crazygirl:Step()
   self:Rotate(0,5,0) -- con bé này điên nên nó xoay tròn =))
end

crazygirl(node) -- gắn scenenode vào entity này
--Thế là step nào con crazygirl cũng bị xoay đi một độ quanh trục y

Class con có thể override method của parent cũ. Để gọi lại method của parent thì thêm dấu _ vào đầu method vd: crazyboy:_Step() nếu crazyboy là con crazygirl . Riêng với Method Create và Destroy thì Class mới bắt buộc phải gọi method của parent trong method của mình(tại sao đừng hỏi)

class_of(o): trả lại class của o
class_name(c): class name của c
is_class(o): true nếu o là class
is_object(o):true nếu o là object
is_child(o,c) true nếu o là một object của class c hoặc o là con của c

Plugin cho irredit 7.0
-Copy file create launcher.bat vào cùng thư mục với irredit.exe rồi double click
-copy hết các file .nut và .bmp vào thư mục scripts của irredit
-double click vào một file .irr bất kì rồi chọn open wtih launcher.bat

-> từ nay cứ double click vào file .irr nào là irredit tự mở nó
Có thêm một nút mới trên toolbar : "CD" dùng để change working directory của engine vào cùng path của file .irr

Documentation+Tutorial cụ thể hơn sẽ có trong thời gian "Không xa" :))

Download
 
Boo (cái mà viết ra engine) là OOP dựa trên dotNet .

Lua (ngôn ngữ script của engine) là hơi OOP . Bản chất là ko có OOP, nhưng có thể tự chế vd:

robot={} //tạo một table với tên là robot, table là một thứ vừa là mảng, vừa là list, vừa là map trong lua. Phần tử của nó là số, string, table hay function cũng đc

function robot.shoot(a,b)
blah blah blah
end

Vd như cái demo kia OOP thấy rõ:

fs.WorkingDirectory='media' //chuyển đường dẫn vào thư mục media
abcmesh=sm:GetMesh('abc.x') //load model abc.x

SP là service oriented à?? Tui mới nghe chứ chưa dùng bao giờ.
 
Status
Không mở trả lời sau này.
Back
Top