Lập trình game 2D trên HTML5, Phần 1: Giới thiệu
Snail Bait
Điều tuyệt vời khi phát triển phần mềm là bạn có thể đưa bất cứ điều gì sng động mà bạn có thể
tưởng tượng ra lên màn hình, miễn là chúng có . Do không b vướng vào nhng hạn chế vật
đã cản trở các kỹ sư trong các nnh khác, nên các nhà phát trin phần mềm tu đã sử dụng
các bộ công cụ API đồ ha và giao diện người dùng (UI) để thực hiện các ứng dụng sáng tạo và
hp dẫn. Người ta có thể cho rằng dạng phát triển phần mềm sáng to nhất là lập trình trò chơi;
mt vài nlc đáng làm theo quan đim sáng tạo còn hơn cả việc biến cái nhìn của bạn về trò
chơi trở thành hiện thực.
Các trò chơi video nhảy bậc thềm (Platform Games - PG)
Donkey Kong, Mario Bros., Sonic the Hedgehog Braid tất cả đều là các t chơi nổi tiếng, bán
chy nhất và tt cả chúng đều là những trò chơi nhảy bậc thềm. lúc các trò chơi nhảy bậc
thềm đã chiếm 1/3 doanh thu của tất cả trò chơi video. Hin nay, thị phần của chúng đã thấp hơn
đáng kể, nhưng vẫn còn có nhiều trò chơi nhảy bậc thềm thành công.
Tuy nhiên, điều đáng làm không có nghĩa là dlàm; thực ra, thường là ngược lại. Việc thực hin
các trò chơi, đặc biệt là các tchơi video, đòi hi phi có mt sự hiểu biết tốt về lập trình, hiểu
biết tốt về các hình nh đồ họa và ảnh động và rất nhiều kiến thức toán học pha trộn với liều
lượng đáng kể về tính nghệ thuật và tính sáng tạo. Và đó chỉ là sự khởi đầu. Các nhà phát triển
trò chơi thành công dành rất nhiều thời gian để trau chuốt trò chơi của mình bằng cách tinh lc
cách chơi trò chơi và các hình nh đồ họa, ngoài việc thực hin nhiều khía cạnh của trò chơi
không liên quan gì đến cách chơi — chẳng hạn như các bảng ghi điểm, các hướng dẫn, các hình
ảnh động giữa các vòng đời và các mức chơi và các trình tự kết thúc trò chơi.
Mục đích của loạt bài này là giới thiệu cho bạn cách thực hin mt trò chơi video HTML5 để bạn
có thể bắt đầu làm việc với mt trò chơi riêng của mình.
��<div class="ibm-container"> <h2>Gi-i thi-u</h2> <div class="ibm-container-body">
<div class="ibm-youTube-container-alternate" align="center"> <iframe width="620"
height="332" src="http://www.youtube.com/embed/xVeK8Km7uM8?rel=0" frameborder="0"
allowfullscreen title="L-p trnh game 2D trn HTML5"></iframe> </div> </div> </div>
Hãy xem ni dung video "Giới thiệu về loạt bài này" ở đây.
Trò chơi: Snail Bait
Trong loạt bài này, tôi sẽ hướng dẫn bạn cách thực hiện một trò chơi video nhảy bậc thềm trước
tiên bng HTML5 Canvas API (API Khung nền ảnh HTML5). Trò chơi đó là Snail Bait, được
hiển thị trong Hình 1. Bạn có thể chơi trò chơi này trực tuyến, xem phần i nguyên để có mt
liên kết đến trò chơi này. Hãy bảo đảm rằng trình duyệt của bn có tăng tốc phần cứng cho
Canvas (chỉ vừa mới được trin khai thực hiện trong hầu hết các trình duyệt, trong đó có Chrome
kể từ phiên bản 18); nếu không, hiệu năng của Snail Bait sẽ vô cùng kém. (Xem ô bên Hiệu năng
của HTML5 Canvas để biết thêm thông tin).
Hình 1. Snail Bait chạy trong Chrome
Các công nghệ HTML5 được dùng trong Snail Bait
Canvas (2D API)
Điều khiển thời gian cho các hình ảnh động dựa trên kịch bản lệnh
Âm thanh
CSS3 (các quá trình chuyển tiếp và các truy vấn phương tiện)
Snail Bait là mt trò chơi nhảy bậc thềm cổ đin. Nhân vật chính, mà tôi sẽ đơn giản gọi là cô
đang chạy, chy dọc theo các bậc thềm và nhảy qua lại giữa các bậc thềm ti nổi di chuyển theo
chiu ngang. Mục tiêu cui cùng của nhân vật là đến được mt bậc thềm rung động có mt nút
nhấn vàng ở cuối mức chơi. Tất cả nhân vật, bậc thm đung đưa và nút nhấn vàng đều được hiển
th trong Hình 1.
Người chơi điều khiển nhân vật bằng bàn phím: phím d để di chuyển nhân vật sang trái, phím k
di chuyển nhân vật sang phải, phím j hay f tạo bước nhảy của nhân vật và phím p để tạm dừng
trò chơi.
Khi t chơi bắt đầu, nhân vật của bạn có ba 'mạng'. Các biểu tượng nhân vật biểu thị số 'mạng'
còn li được hiển thị ở phía trên bên trái của khung nền ảnh của trò chơi, như bạn có thể thấy
trong Hình 1. Trong hình trình của nhân vật, để đi đến cuối màn chơi, nhân vật phải tránh những
kẻ xấu — những con ong, con dơi c sên đồng thời cố gắng thu thập các thứ có giá tr như
đồng tin, những viên hồng ngọc và ngọc bích. Nếu nhân vật va chạm vào những kẻ xấu, nhân
vt sẽ bị nổ tung, bạn sẽ mất mt mạng và phải quay lại màn chơi từ đầu. Khi nhân vật chạm vào
những thứ tốt, s điểm của bạn sẽ tăng lên và phát ra mt hiệu ứng âm thanh.
Có dùng các phím WASD không?
Theo quy ước, các trò chơi máy tính thường sử dụng các phím w, a, s và d để điều khin trò chơi.
Quy ước đó được phát trin chyếu là vì nó cho phép những người chơi thuận tay phải sử dụng
chut và bàn phím đồng thời. cũng để cho tay phi tự do để nhn phím spacebar hoặc các
phím btrợ chẳng hn như phím Ctrl hoặc ALT. Snail Bait không sử dụng các phím WASD vì
nó không nhận đầu vào từ chuột hoặc các phím bổ trợ. Nhưng bạn có thể dễ dàng sửa đổi mã của
trò chơi để sử dụng bất k tổ hợp các phím nào.
'Những kẻ xấu' thường được treo lơ lng đâu đó để trực chờ nhân vật của chúng ta chạm vào
chúng. Tuy nhiên, c sên t lâu lâu lại bắn các bom ốc sên (quả bóng bạc được hiển thị gần giữa
Hình 1). Các quả bom, cũng giống như những kẻ xấu khác, làm nổ tung nhân vật nếu như vô tình
chm vào chúng.
Trò chơi kết thúc theo một trong hai cách: bạn mất tất cả ba mạng hoặc bạn đưa nhân vật đến bậc
thềm đung đưa (bạn sẽ được điểm thưởng khi đáp xuống nút nhấn màu vàng). Dù bằng cách nào
đi na, trò chơi sẽ kết thúc bằng danh sách những người đã thực hin trò chơi được thể hiện
trong Hình 2:
Hình 2. Danh sách những người đã thực hiện trò chơi
Điều bạn không thể nhìn thấy trong Hình 1 là mi thứ — trừ nhân vật do bạn đang điều khiển di
chuyển mt cách liên tục. Chuyển động cuộn này tiếp tục phân loi Snail Bait như là mt trò
chơi nhảy bậc thềm cuộn sang bên cạnh. Tuy nhiên, đó không phải là chuyển động duy nhất
trong trò chơi này để dẫn tôi đến các hình nh 2D (hai chiều) và các hành vi của chúng.
Về đầu trang
Các hình ảnh 2D: Phân vai các nhân vật
Hiệu năng của HTML5 Canvas
Gần đây, hầu hết các trình duyt đều thực hiện tăng tốc phần cứng cho các quá trình chuyển tiếp
CSS nhưng vẫn chưa làm được như vậy với Canvas. Canvas đã luôn tương đối nhanh, đặc biệt là
so với các hệ thống đồ họa khác như Scalable Vector Graphics (SVG - Đồ họa Vectơ co giãn
được), nhưng Canvas không có sự tăng tốc phần cứng là không khớp với bất cứ thứ gì tăng
tốc phần cứng.
Bây giờ, tất cả các trình duyệt hiện đại đều tăng tốc phần cứng cho các phần tử Canvas. iOS 5
cũng vậy, có nghĩa là các trò chơi video dựa trên Canvas với hình ảnh động mượt mà bây giờ có
th chạy không chỉ trên máy tính để bàn, mà cả trên các thiết bị di động của Apple.
Ngoại trừ nền sau, mi thứ trong Snail Bait đều là mt hình ảnh 2D (sprite). Một hình ảnh 2D là
mt đối tượng mà bạn có thể vẽ trên khung nn ảnh của trò chơi. Các hình ảnh 2D không phải là
mt phần của API Canvas, nhưng chúng đơn gin và dễ thực hiện. Các hình nh 2D của trò chơi
là:
Các bc thềm (các vật vô tri vô giác)
Cô bé đang chạy (nhân vật chính)
Các con ong và các con dơi (xấu)
Các nút nhấn (tốt)
Các viên đá hồng ngọc và bích ngọc (tốt)
Tiền xu (tốt)
Các con c sên (xấu)
Bom của ốc sên (xấu)
Bên cạnh việc cuộn từ phải sang trái, hầu như tt cả các hình nh 2D của trò chơi chuyn
động độc lp riêng của mình. Ví dụ, những viên đá hồng ngọc và bích ngọc nhấp nhôcác tốc
độ khác nhau và các nút nhn và c sên đi ti đi lui dọc theo chiều dài của bậc thềm mà chúng
trên đó.
Replica Island
Ý tưởng cho các hành vi của hình ảnh 2D là mt ví dụ về các mẫu thiết kế Chiến lược đến
t Replica Island, mt trò chơi nhảy bậc thềm nguồn mở phổ biến trên Android. Hầu hết các hình
ảnh đồ họa của Snail Bait ly tReplica Island (được sử dụng theo giy pp). Xem phần i
nguyên để có các liên kết đến mẫu thiết kế Chiến lược trên Wikipedia và trang chcủa Replica
Island .
Sự chuyển động độc lập này là mt trong nhiều hành vi của hình ảnh 2D. Các hình ảnh 2D có thể
nhng hành vi khác không liên quan gì đến chuyển động cả; ví dụ, bên cạnh chuyển động
nhp nhô, những viên đá hồng ngọc và ngọc bích còn sáng lấp lánh.
Mỗi hình nh 2D có mt mảng các hành vi. Một hành vi chỉ đơn giản là mt đối tượng có mt
phương thức execute(). Trong mi khung hình của hình nh động, trò chơi gọi từng phương
thức execute() của hành vi. Trong phương thức đó, các hành vi xử lý các hình ảnh 2D gắn với
chúng theo mt cách o đó tùy thuộc vào các điều kiện của trò chơi. Ví dụ, khi bạn nhấn phím k
để di chuyển nhân vật sang bên phải, hành vi di chuyển sang bên của nhân vật sau đó sẽ di
chuyển nhân vật về bên phải trong mi khung hình của hình ảnh động cho đến khi bạn thay đổi
hướng của nhân vật. Một hành vi khác, chạy tại chỗ, định kỳ thay đổi hình ảnh của nhân vật để
nó xuất hiện như là nhân vật đang chy tại ch. Cả hai hành vi đó kết hợp li để làm cho hình
ảnh đó xuất hiện như là nhân vật đang chạy hoặc sang trái hoặc sang phải.
Bảng 1 liệt kê các hình ảnh 2D của trò chơi và các hành vi tương ứng của chúng:
Bảng 1. Các hình ảnh 2D và các hành vi trong Snail Bait
Hình ảnh 2D
Các hành vi