 |
|
CẢM VỀ GAME |
|
ENGINE - ĐỒ NGHỀ
CỦA DÂN SÀNH ĐIỆU
“SHINRA” NGUYỄN KIM THÀNH |
|
Nếu bạn từng chơi game, chắc chắn bạn cũng đã
từng mơ đến chuyện làm một game cho riêng mình, với
luật lệ và kịch bản do bạn tự bịa lấy... Còn gì thú
vị hơn khi bạn đóng vai trò của “Thượng đế” - sáng
tạo nên một thế giới mà trong đó mọi quy luật, mọi
tính mệnh đều do bạn làm chủ. May mà hiện nay, với
sự ra đời hàng loạt của các engine, các authoring
system, việc tạo game đã trở nên dễ dàng, nhanh
chóng đến nỗi nó không còn nằm ngoài tầm với của
chúng ta nữa... |
|
TẠI THUNG LŨNG SILICON ở Mỹ, trong một trường học
xập xệ, tràn lan những thứ “rác rưởi” như máy tính
Pentium4 3GHz, màn hình LCD 21 inch,... có một ông
giáo già bảo với học trò của mình: “Mỗi game trên
thị trường hiện nay đều có một engine phía sau nó.
Nếu như kịch bản là linh hồn thì engine chính là
xương sống của game”. |
|
Vâng, đó là lớp học GameDevelopers - chuyên về thiết
kế game của Trung tâm MITC tại Silicon Valley. Và vị
giáo sư đó đang nói về engine, thứ mà người ta buộc
phải nhắc đến khi tiến hành làm một game chuyên
nghiệp. Vậy rốt cuộc thì engine là... “thần thánh
phương nào”? |
|
SỰ TÍCH ENGINE |
|
Ngày xửa ngày xưa, khi quá hứng thú, Thượng đế đã tạo ra
vô thiên lủng những “bộ tăng tốc đồ họa 3D”. Các thiên
thần rất vui thích với vật này, lại làm thêm báu vật API
cho các bộ tăng tốc 3D. Để tranh giành chúng, các lãnh
chúa của vùng đất Ai-Ti gây nên những trận chiến API,
tạo ra vô số những thay đổi. MiniGL xuống, ICD lên,
DirectX 7.0 ra, Direct 8.1 vào. Glide2x biến mất,
Glide3x xuất hiện, rồi OpenGL 1.2 1.1, v.v... Thế nhưng
API vẫn là một thứ quá cao sang, chỉ dành cho dân
quý-sờ-tộc, những kẻ suốt ngày chải chuốt chúng bằng
lược hình chữ C... Cho đến một ngày nọ, có một hoàng tử
đã quá chán ngán việc dùng lược hình chữ C để chải API
nên quyết định tạo ra một con rối để thay chàng làm việc
đó, và chàng đặt tên nó là EnGiNe. |
|
3D engine cơ bản là một bộ thư viện các hàm xử lý đồ
họa ba chiều. Có rất nhiều 3D engine trên internet,
một số miễn phí, trong khi một số khác đòi hỏi phí
bản quyền. Nếu bạn có kinh nghiệm về C++, DirectX và
muốn “vọc” mã lệnh, bạn có thể dùng một engine miễn
phí. Với một hệ phát triển ứng dụng (như Visual
C++), bạn sẽ bắt đầu lập trình để thiết kế giao diện
người dùng, AI, âm thanh, hoạt cảnh, giao tiếp mạng,
và cuối cùng là game của mình. Lập trình tất cả
những món này sẽ cho bạn độ tùy biến tối đa, nhưng
cũng kéo theo đó tối đa những vấn đề cần giải quyết. |
|
3D engine đáp ứng tốt những yêu cầu của một lập trình
viên nhưng vẫn còn là thứ quá xa xỉ đối với những người
bình thường. Nắm bắt được điều đó, các authoring system
ra đời. Một authoring system như GameMaker, 3DGamemaker
bao hàm luôn bộ phận thiết kế, khiến việc tạo game dường
như chỉ còn là “kéo và thả”. Thông thường những
authoring system cũng cung cấp một ngôn ngữ đơn giản để
mở rộng thêm tính năng cho game. |
|
Bằng cách này, những dự án game rất phức tạp có thể đuợc
hoàn thành chỉ bằng một ít câu lệnh và một ít thời gian,
so với việc dùng một engine và viết trực tiếp từ C++.
Người ta tiên đoán rằng authoring system sẽ là thế hệ
tiếp theo của ngôn ngữ lập trình game và sẽ được dùng
trong hầu hết các công ty trong vòng mười năm tới. |
|
|
|
ĐI CHỢ ENGINE |
|
Hiện có vô số engine trên mạng, bạn có thể xem danh
sách của chúng tại 3D Engines List (http://cg.cs.tuberlin.de/~ki/engines.html).
3D Engines List cung cấp cái nhìn tổng quát về các
engine 3D. Mỗi engine đều có phần giới thiệu tính
năng, thông tin liên hệ (e-mail, trang chủ) và có cả
liên kết để tải về bản demo hay mã nguồn. Hiện trang
này đang chứa thông tin về 643 engine khác nhau. Bạn
có thể chọn từng nhóm engine đã được xếp loại theo
nhiều cách: theo ngày tháng, tính năng, ngôn ngữ,
phần cứng được engine đó hỗ trợ, v.v... |
|
Con số 643 engine có lẽ nói lên được phần nào sự khó
khăn cho chúng ta khi chọn một engine như ý. Bên cạnh
đó, có một phần khá lớn các engine được liệt kê vẫn còn
đang trong giai đoạn hoàn thiện, nhiều engine thậm chí
mới ở giai đoạn thí nghiệm, version chưa-được-mộtchấm
cũng đưa lên. Vì vậy, điều bạn nên chú ý đầu tiên là
phiên bản của engine, số càng lớn chứng tỏ engine được
xây dựng lâu năm, đầu tư nghiêm túc. Kế đến là các tính
năng kỹ thuật, khi chọn engine để làm game, bạn nên có: |
|
Culling System: Hệ thống
culling chỉ render bộ phận nào của dòng không bị che bởi
tường hay các vật thể khác. Hầu hết các engine 3D chuyên
nghiệp đều sử dụng một vài dạng culling system, thường
là BSP tree hay thuật toán Portal (hệ thống cây BSP
thường tỏ ra hiệu quả hơn portal system) Những engine
nửa mùa dành cho dân a-ma-tơ thường không có culling
system, dẫn đến việc mọi vật thể trong cảnh đều chiếm
thời gian render, mặc kệ chúng có bị che khuất hay
không. Như vậy có nghĩa là khi màn chơi càng lớn, và
càng có nhiều vật thể, game chạy càng chậm và càng giật.
Với hệ thống culling system, tốc độ render gần như độc
lập so với độ lớn của màn chơi và số lượng vật thể, nhất
là đối với những game “nội cảnh” (cảnh trong nhà). |
|
LOD system: Giúp tăng
cường tốc độ khung cho những màn có cảnh ngoài trời.
Nó tự động chuyển vật thể thành những hình khối đơn
giản hơn khi chúng ở xa camera, nhờ đó hạn chế số
lượng mặt polygon được vẽ trên một dây. |
|
Shadow mapping (cũng được gọi
là Lightmapping): Một hệ thống tạo ra ánh
sáng và bóng rất thực mà không làm chậm tốc độ
khung. Hệ thống Shadow mapping cho phép bạn đặt vô
số nguồn sáng tĩnh vào màn chơi, sau đó nó sẽ tự
tính toán độ phủ của ánh sáng và bóng tối lên mỗi bề
mặt. Hầu hết những game nổi tiếng hiện nay đều dùng.
Bạn có thể xem ảnh bên dưới và nhận thấy game sẽ trở
nên “chuyên nghiệp” như thế nào khi dùng tính năng
này. |
|
Particle System: Một hệ
thống phát sinh hiệu ứng bằng cách tạo ra vô số những
mảnh hạt nhỏ để mô phỏng hiệu quả đặc biệt như khói,
lữa, vụ nổ, v.v... Hiệu ứng particle (hình động) nếu
được làm tốt sẽ đẹp hơn sprite rất nhiều; thêm nữa, ngày
nay hầu hết game đều dùng kỹ thuật này. |
|

Game dùng Shadow Mapping |

Game không dùng Shadow Mapping |
|
Client/Server Network System:
Nếu bạn đang định làm một game mạng thì nên chú ý kỹ
phần này, tùy theo loại game bạn muốn làm, phải xem
engine có hỗ trợ peer-to-peer normal client/server,
hay mới hơn là zone không? Hệ thống peer-to-peer
liên kết các máy tính (PC) ngang hàng nhau. Mỗi PC
chạy bản game của riêng nó và trao đổi cập nhật
thông tin với tất cả PC khác. Trong một hệ thống
client/server, một PC được dùng làm máy chủ - server
sẽ chứa và chạy game. Tất cả các PC khác đều là
khách - client , chúng chỉ cập nhật nhân vật và
thông tin từ máy chủ. Để tránh việc phải cần thêm
một PC làm máy chủ, thông thường server cũng có thể
đảm nhận vai trò của máy khách trong cùng lúc. |
|
Peer-to-peer system thường được dùng nhiều trong
những game mạng thế hệ đầu, nhưng ngày nay chúng trở
nên hiếm vì có nhiều điểm dở khó cải thiện. Game
Peer-to-peer chạy không thống nhất (còn tùy thuộc
vào tốc độ từng máy và đường truyền), do đó một viên
đạn có thể trúng vào nhân vật trong máy này nhưng
lại trật trong máy khác cùng chơi. Bên cạnh đó,
Peer-to-peer không thể hỗ trợ số lượng người chơi
lớn. Chính vì vậy, ngày nay hệ thống client/server
được dùng phổ biến. Hệ thống zone system thật ra
cũng vẫn là client/server nhưng mạnh hơn nữa vì nó
hỗ trợ đa server. Thế giới trong game sẽ được chia
làm nhiều màn (zone) được điều khiển bởi những máy
chủ riêng lẻ. Hệ thống Zone cho phép số lượng người
chơi cực lớn cùng tham gia. |
|
Peer-to-Peer... tối đa 4-5 người
Client/Server... tối đa 25-50 người chơi
Zone... vô số, tùy vào lượng server |
|
Sau đây là những engine và authoring system đang được ưa
chuộng trên internet: |
|
3DState: Tên cũ là
3DMorfit (miễn phí), có nhiều hơn là một engine
thông thường: Một bộ chương trình khá đầy đủ để xây
dựng và điều chỉnh game - World Builder cho việc tạo
màn chơi, Terrain Builder để phát sinh địa hình, và
Developing Studio để phối hợp tất cả lại. Bên cạnh
đó, 3DState hỗ trợ nhiều loại ngôn ngữ: Delphi, C++,
VB và Javascript. Chỉ có điều, bạn sẽ phải trả 399
USD cho bản chuyên nghiệp nếu muốn có thêm nhiều
tính năng mạnh. Địa chỉ:
http://www.3dstate.com. |
|
DarkBasic: Có phí, sử
dụng ngôn ngữ Basic. DarkBasic có số lượng người
dùng vô cùng lớn so với các engine khác vì là một
công cụ thực sự mạnh để tạo nên những game chuyên
nghiệp. Phiên bản mới hỗ trợ thêm BSP, Bump và Light
mapping, cử động bằng khung xương, hệ thống hạt
Particle System. Tuy nhiên về mạng, DarkBasic chỉ hỗ
trợ Peer-to-peer. Địa chỉ:
http://www.darkbasic.com. |
|
3DGameMaker: Đây thực sự là
“mì ăn liền” cho những bạn không thích lập trình. Là họ
hàng của DarkBasic, 3DGamemaker hướng tới người dùng
không chuyên và trở thành hệ thống tạo game đơn giản
nhất. 3D GameMaker có một bộ thư viện nhân vật, dòng, âm
thanh dựng sẵn khổng lồ. Người dùng không cần viết code,
thậm chí không phải thiết kế nhân vật, vũ khí mà vẫn có
thể tạo ra những game trông cũng rất... chuyên nghiệp
như ai. Địa chỉ:
http://t3dgm.darkbasic.com. |
|
Game Maker: Miễn phí hoàn
toàn. Dù authoring system này sử dụng công nghệ 2D nhưng
bạn cũng có thể dùng nó để tạo ra những game thực sự
chuyên nghiệp. Game Maker có cộng đồng người dùng khá
lớn và được biết đến nhiều ở Việt Nam. Địa chỉ:
http://www.cs.uu.nl/people/markov/gmaker/download.html. |
|
RPG-Maker: Miễn phí,
cũng là một 2D authoring system, chuyên về thiết kế
game dạng nhập vai (RPG). Địa chỉ:
http://www.makeruniverse.webcalifa.com.br/rm2k3/rm2k3v104.
exe. |
|
|
|
THỬ DÙNG GAME MAKER ĐỂ LÀM
MỘT TRÒ CHƠI ĐƠN GIẢN |
|
Chơi game trên máy tính thiệt đã. Nhưng đã hơn nữa là
làm một game theo ý mình và đưa cho người khác chơi.
Thật không may, làm game cho máy tính nào phải là chuyện
dễ. Những game xịn đang bán trên thì trường mà bạn đã
chơi thường đuợc thiết kế khoảng từ một đến ba năm với
một lực lượng kỹ sư, họa sĩ, nhạc sĩ,... hùng hậu. Kinh
phí lên đến hàng triệu USD. |
|
Vậy
tức là tôi không thể tự làm game? May mắn là không. Dĩ
nhiên, bỏ qua chuyện làm ra những game cỡ Heroes hay Age
of Empires trong vài tuần. Những game đơn giản hơn như
Tetris, Pacman, Space Invaders, v.v... cũng rất thú vị
để giải trí và lại dễ dàng tạo ra. “Kẹt” một nỗi là
chúng vẫn yêu cầu bạn phải là một tay lập trình cứng cựa
để có thể điều quản hình ảnh, âm thanh cũng như việc
tương tác với người chơi, v.v... |
|
Nhưng bây giờ bạn đã có Game Maker. Game Maker được
tạo ra để làm cho việc thiết kế những game như vậy
dễ như... ăn chuối. Chẳng cần lập trình. Một hệ
thống chỉ cần kéo và thả, ráp và nối cho phép bạn
tạo ra game riêng của mình một cách nhanh chóng. Bạn
chỉ cần nhập hình, sprites (các hình động) âm thanh
vào và... khuấy đều. Và hơn thế, nếu bạn muốn game
mình phức tạp và chuyên nghiệp, Game Maker cũng có
sẵn một ngôn ngữ đơn giản cho bạn tùy biến. |
|
Game Maker chỉ chuyên về game hai chiều (2D). Vậy
nên sẽ chẳng có thế giới 3-D như Quake. Nhưng đừng
để điều đó làm bạn thất vọng. Rất nhiều game hay như
Age of Empires, Command & Conquer, và Diablo dùng kỹ
thuật sprite hai chiều, mặc dù trông chúng rất 3-D.
Với lại thiết kế game hai chiều dễ và nhanh hơn
nhiều! Nhưng điều tuyệt nhất là Game Maker miễn phí! |
|
Tìm hiểu khái niệm |
|
Trước khi bắt tay vào làm game, bạn nên có vài khái
niệm về chương trình. Game được tạo bằng Game Maker
bởi một hay nhiều room. Room phẳng, không 3D, nhưng
chúng có thể chứa những hình ảnh giả-3-D. Trong
những room này, bạn đặt object, thứ bạn có thể định
nghĩa qua chương trình. Những vật thể thông thường
là tường, banh tưng, nhân vật chính, quái vật,
v.v... Một số object (vật thể), như tường, chỉ nằm
đó và chẳng làm gì cả. Những vật thể khác, như nhân
vật chính, sẽ di chuyển và phản ứng theo nút người
chơi bấm (từ chuột, bàn phím hay joystick) và phản
ứng lẫn nhau. Ví dụ, khi nhân vật chính đụng vào
quái vật, anh ta sẽ chết. Object là thành tố quan
trọng nhất trong Game Maker, vậy chúng ta hãy bàn
thêm về nó. |
|
Trước tiên, hầu hết object cần có hình ảnh để chúng
có thể xuất hiện trên màn hình. Những hình ảnh đó
gọi là sprites. Sprite thường không là một ảnh đơn
mà là một tập ảnh nối tiếp nhau để tạo thành hoạt
hình. Bằng cách này, ta có thể làm nhân vật đi, trái
banh xoay, phi thuyền nổ tung, v.v... Trong suốt
game, sprite cho một object riêng biệt có thể thay
đổi (như làm cho nhân vật trở nên khác đi khi anh ta
bước sang trái hay phải). Bạn có thể tạo sprite theo
ý muốn trong Game Maker hay tải chúng từ file bên
ngoài (như GIF động,...). |
|
Rồi sẽ có điều gì đó xảy ra cho object, gọi là event
(sự kiện). Object có thể có một vài action (hành
động) khi sự kiện xảy ra. Có hàng trăm sự kiện có
thể xảy ra đối với object và nó cũng có chừng đó
hành động để phản ứng trở lại. Ví dụ, sẽ có sự kiện
“khởi tạo” khi object được tạo ra. Ví dụ, khi một
trái banh được tạo ra, bạn có thể gán cho nó một
loại hành động di chuyển. Khi hai object gặp nhau,
sẽ phát sinh sự kiện “đụng chạm”. Trong trường hợp
này, bạn có thể dùng nó để làm banh ngừng lại hay
chuyển hướng (cũng có thể dùng nó để chơi một đoạn
âm thanh). Khi người chơi bấm một nút trên bàn phím,
sẽ có sự kiện keyboard event, v.v... Với mỗi object
lúc thiết kế, bạn có thể gán cho nó rất nhiều hành
động tương ứng với những sự kiện khác nhau (và tất
cả những hành động để phản ứng đối với sự kiện,
chúng ta gọi nó là phương thức hoạt động của vật
thể). |
|
Một khi bạn đã khai báo những object của mình rồi
thì cũng chính là lúc định nghĩa các room - nơi để
object tồn tại. Room có thể dùng làm màn chơi hay
những vùng khác nhau trong game. Có những action có
thể chuyển từ room này sang room khác. Room cơ bản
phải có một cái nền. Nền có thể là một màu đơn giản
hay là một hình ảnh. Những hình nền như vậy có thể
được tạo ra trong Game Maker, hoặc bạn có thể tải
chúng từ bên ngoài (thật ra nền có nhiều công dụng,
nhưng mới đầu bạn chỉ cần nhớ là nó làm cho room đẹp
hơn). Tiếp theo, bạn sẽ đặt object vào room. Bạn có
thể đặt nhiều object giống nhau trong một room,
chẳng gì phải lo cả. Như thế, ví dụ, bạn chỉ cần
định nghĩa một bức tường một lần nhưng có thể xài nó
ở nhiều nơi khác nhau. Tương tự với những object
quái vật, miễn là chúng có cùng phương thức hoạt
động. |
|
Tóm lại, chúng ta có những thứ sau đây đóng vai trò
chủ yếu: |
|
Objects: Những thực thể
trong game. |
|
Rooms: Nơi chứa đựng
object. |
|
Sprites: Những hình ảnh
(động) được dùng để biểu thị objects. |
|
Sounds: Dùng trong game
dưới dạng nhạc nền hay hiệu ứng âm thanh,... |
|
Backgrounds: Ảnh dùng
làm nền cho rooms. |
|
Thật ra còn một yếu tố quan trọng nữa: Scripts,
những mẩu mã lệnh nhỏ được dùng để mở rộng khả năng
của Game Maker. |
|
Bắt đầu! |
|
Trước tiên, bạn nên tự mô tả game mình muốn làm (bạn
nên thường xuyên làm điều này trước vì nó sẽ giúp
bạn tiết kiệm rất nhiều thời gian sau này). Game
chúng ta thử làm sẽ rất đơn giản: Một trái banh dội
giữa các bức tường. Người chơi sẽ cố nhấp chuột vào
banh. Mỗi lần anh ta thành công sẽ được tăng điểm. |
|
Như vậy, chúng ta cần hai loại object: banh và
tường. Chúng ta cũng cần hai loại sprite: một cho
object banh và một cho object tường. Cuối cùng,
chúng ta muốn máy phát ra một âm thanh nhỏ khi người
chơi nhấp chuột trúng vào banh. Chúng ta sẽ chỉ dùng
một room để làm game này. (Nếu không muốn tự mình
làm, bạn có thể tải nó từ thư mục Examples với tên
“touch the ball.gmd”.) |
|
Trước tiên, chúng ta làm các sprite. Từ menu Add
chọn Add Sprite (bạn cũng có thể dùng nút tương ứng
trên thanh công cụ). Một form sẽ hiện ra. Trong
trường Name, nhập vào “wall”. Chọn nút Load Sprite
và chọn một hình (bạn có thể tìm thấy nó trong thư
mục Maze). Xong, đóng form lại. Làm tương tự để tạo
một sprite banh. Kế tiếp chúng ta sẽ xử lý phần âm
thanh. Từ menu Add chọn Add Sound. Một form khác
xuất hiện. Đặt tên cho âm thanh và chọn Load Sound.
Chọn một âm thanh thích hợp và thử nghe nó có hay
không bằng cách nhấp nút Play. Nếu bạn hài lòng rồi,
đóng form lại. |
|
Bước tiếp theo, chúng ta sẽ tạo ra hai object. Ta sẽ
làm object bức tường trước. Một lần nữa, bạn vào
menu Add, chọn Add Object. Một form phức tạp hơn sẽ
xuất hiện. Bên trái là một số thông tin chung của
object. Hãy đặt tên object của bạn và từ menu bung
chọn đúng sprite bức tường. Đánh dấu kiểm hộp chọn
Solid. Vậy là xong. Tiếp tục tạo object mới, đặt tên
nó là ball, và gán cho nó sprite trái banh. Lần này
khác với bức tường, chúng ta phải khai báo cách hoạt
động của trái banh. Ở giữa, bạn sẽ thấy một danh
sách rỗng cho sự kiện. Bên dưới nó là nút Add Event.
Nhấn nút này, bạn sẽ thấy tất cả những sự kiện dựng
sẵn. Chọn sự kiện creation. Sự kiện này được thêm
vào danh sách sự kiện cho trái banh. Phía xa bên
phải, bạn sẽ thấy tất cả những hành động dựng sẵn
được xếp nhóm. Trong nhóm move, chọn action với tám
mũi tên đỏ và kéo nó vào danh sách action ở giữa.
Hành động này sẽ làm object di chuyển theo một hướng
riêng biệt. Khi bạn thả nó vào danh sách action, một
hộp thoại sẽ hiện ra để bạn chọn hướng chuyển động
cho banh. Chọn cả tám mũi tên để tạo ra một hướng
ngẫu nhiên. Bạn có thể giữ nguyên speed là 8. Đóng
hộp thoại. Bây giờ, trái banh sẽ bắt đầu di chuyển
ngay lúc nó được tạo ra. Kế đến, chúng ta phải xác
định chuyện gì sẽ xảy ra khi có sự kiện banh va chạm
với tường. Tiếp tục nhấn Add Event. Nhấn vào nút sự
kiện collision và trong menu bung chọn vật thể wall.
Với sự kiện này, ta cần hành động dội lại - bounce
action. (Bạn có thể xem công dụng của những action
bằng cách giữ yên chuột trên tên của nó.) Cuối cùng,
chúng ta phải xác định chuyện gì sẽ xảy ra khi người
chơi nhấp chuột trái vào banh. Chèn một sự kiện
corresponding event và chọn chuột trái (left mouse)
button từ menu bung. Với sự kiện này, ta cần vài
hành động: một để phát ra âm thanh (có thể tìm trong
nhóm Misc. actions) và một tăng điểm số (trong cùng
nhóm), cùng hai hành động nữa để di chuyển banh đến
vị trí và hướng mới (giống như trong sự kiện
creation event). Với action sound, chọn âm thanh bạn
muốn. Cho action score, nhập vào giá trị 1 và đánh
chọn hộp Relative. Có nghĩa là 1 sẽ được thêm vào
điểm hiện hành (nếu bạn lỡ làm sai, có thể nhấp đúp
chuột vào action để thay đổi các tham số của nó). |
|
Bây giơ, các vật thể đã sẵn sàng. Chúng ta sẽ làm
room. Thêm một room mới vào game bằng menu Add. Bên
phải, bạn sẽ thấy một room trống. Bên trái, bạn sẽ
có một số thuộc tính để tinh chỉnh, như độ dài rộng
của room. Và ở góc trái dưới, bạn có thể chọn một
object từ menu bung. Bằng cách nhấp vào room, bạn có
thể đặt object vào đó. Bạn có thể xóa bằng nút chuột
phải. Hãy tạo một vòng khung xung quanh room bằng
vật thể tường-wall object. Cuối cùng, đặt một hoặc
hai object banh vào room. Sẵn sàng. Bây giờ là lúc
bạn chơi thử game. Nhấn nút Run và xem chuyện gì xảy
ra. Nếu bạn làm đúng thì trái banh sẽ bắt đầu di
chuyển. Thử nhấp chuột vào nó và xem chuyện gì xảy
ra. Bạn có thể ngưng trò chơi lại bằng phím Esc. Bạn
có thể thay đổi thêm vài thứ theo ý thích! |
|
Xin chức mừng, bạn đã làm ra một game đầu tiên cho
mình! |
|
|
|
 |
|
 |