Tập sách nhỏ javascript về thiết kế mã trò chơi

Tạo trò chơi trong trình duyệt là một cách tuyệt vời để thực hành các kỹ năng JavaScript của bạn và đồng thời vui chơi

Dự án JavaScript dành cho người mới bắt đầu (sê-ri 8 phần)

  • 1 Tạo ứng dụng JavaScript đầu tiên của bạn — Trình tạo trích dẫn ngẫu nhiên
  • 2 Cách tạo Ứng dụng Tìm kiếm Wikipedia bằng JavaScript
  • 3 Cách tạo Ứng dụng Máy tính bằng JavaScript
  • 4 Cách tạo Ứng dụng Todo List bằng JavaScript
  • 5 Cách tạo Trình phát video HTML5 tùy chỉnh bằng JavaScript
  • 6 Cách xây dựng Trò chơi Simon bằng JavaScript
  • 7 Cách tạo Ứng dụng hẹn giờ Pomodoro bằng JavaScript
  • 8 Cách tạo tiện ích mở rộng Chrome đầu tiên của bạn

Trong hướng dẫn này, chúng ta sẽ phát triển Trò chơi Simon cổ điển bằng JavaScript. Mục tiêu của trò chơi là lặp lại một loạt các lần nhấp ô ngẫu nhiên do trò chơi tạo ra. Sau mỗi vòng, trình tự trở nên dài hơn và phức tạp hơn khiến bạn khó nhớ hơn

Tập sách nhỏ javascript về thiết kế mã trò chơi

Chơi phiên bản trực tiếp của trò chơi

Thông thường, bạn sẽ có bốn ô khác nhau, mỗi ô có một màu và âm thanh riêng được kích hoạt khi nhấn. Âm thanh hỗ trợ người chơi ghi nhớ trình tự và trò chơi kết thúc nếu người chơi bỏ lỡ một bước trong trình tự

điều kiện tiên quyết

Hướng dẫn này giả định kiến ​​thức cơ bản về JavaScript và DOM

Bắt đầu

Lấy các tệp HTML và CSS cho trò chơi trên GitHub. Hướng dẫn thiết lập dự án có trong tệp README đi kèm. Bạn cũng có thể làm theo hướng dẫn sử dụng JSFiddle nếu muốn

Tập sách nhỏ javascript về thiết kế mã trò chơi

Đây là điểm bắt đầu trên JSFiddle

Như đã đề cập trước đó, một vòng bắt đầu khi trò chơi kích hoạt một hoặc nhiều ô xếp theo thứ tự ngẫu nhiên và kết thúc khi người chơi lặp lại thứ tự đó bằng cách nhấn các ô xếp. Ở vòng tiếp theo, số lượng ô trong chuỗi tăng thêm một

Hãy bắt đầu bằng cách tạo một mảng để theo dõi chuỗi lần nhấp ô ban đầu và mảng thứ hai cho chuỗi con người

let sequence = [];
let humanSequence = [];

Tiếp theo, chọn nút bắt đầu và tạo một hàm

<span class="info js-info hidden">span>
2 mới sẽ được thực thi khi nhấp vào nút này

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);

Tại thời điểm này, một khi nút bắt đầu được nhấn, nó sẽ bị ẩn. Phần tử

<span class="info js-info hidden">span>
3 cũng cần được hiển thị vì đó là nơi thông báo trạng thái sẽ được hiển thị. Nó có lớp
<span class="info js-info hidden">span>
4 theo mặc định được áp dụng trong HTML đã được tạo kiểu bằng
<span class="info js-info hidden">span>
5 trong CSS, vì vậy đó là thứ cần phải xóa khi trò chơi bắt đầu

<span class="info js-info hidden">span>

Cập nhật tệp JavaScript của bạn như hình bên dưới

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}

Bây giờ, sau khi nhấp vào nút bắt đầu, phần tử

<span class="info js-info hidden">span>
3 sẽ hiển thị thông báo yêu cầu người dùng đợi trình tự kết thúc

Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này

Bắt đầu vòng tiếp theo

Tạo một biến

<span class="info js-info hidden">span>
7 mới bên dưới
<span class="info js-info hidden">span>
8. Đó là cách chúng tôi theo dõi số vòng đã chơi cho đến nay

<span class="info js-info hidden">span>
1

Tiếp theo, tạo một hàm

<span class="info js-info hidden">span>
9 mới ngay phía trên
<span class="info js-info hidden">span>
2 như trong đoạn trích bên dưới. Mục đích của chức năng này là để bắt đầu chuỗi nhấp chuột tiếp theo

<span class="info js-info hidden">span>
4

Mỗi lần

<span class="info js-info hidden">span>
9 được gọi, biến
<span class="info js-info hidden">span>
7 được tăng thêm 1 và chuỗi tiếp theo được chuẩn bị. Mỗi vòng mới được xây dựng dựa trên vòng trước đó, vì vậy những gì chúng ta cần làm là sao chép thứ tự các lần nhấn nút hiện có và thêm một vòng ngẫu nhiên mới vào đó. Chúng ta đã hoàn thành phần trước ở dòng cuối cùng của
<span class="info js-info hidden">span>
9, vì vậy, bây giờ hãy thêm một lần nhấn nút ngẫu nhiên mới vào trình tự

Tạo một hàm

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
4 mới ngay phía trên
<span class="info js-info hidden">span>
9

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
0

Biến

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
6 chứa các màu cho mỗi nút trên bảng trò chơi. Lưu ý cách các giá trị tương ứng với các giá trị của thuộc tính
const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
7 trong HTML

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
3

Chúng ta cần lấy một giá trị ngẫu nhiên từ mảng mỗi khi thực thi

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
4 và chúng ta có thể đạt được điều đó bằng cách sử dụng hàm
const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
9 kết hợp với
<span class="info js-info hidden">span>
10. Cái trước trả về một số dấu phẩy động, giả ngẫu nhiên trong phạm vi từ 0 đến dưới 1

Tập sách nhỏ javascript về thiết kế mã trò chơi

Điều đó không hữu ích cho chúng tôi vào lúc này. Nó cần được chuyển đổi thành một chỉ mục hợp lệ cho mảng

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
6 (0, 1, 2 hoặc 3 trong trường hợp này) để có thể truy xuất một giá trị ngẫu nhiên từ mảng mỗi lần. Nhân giá trị từ
const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
9 với độ dài của
const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
6 (là 4) đảm bảo rằng phạm vi của số ngẫu nhiên hiện nằm trong khoảng từ 0 đến nhỏ hơn 4 (thay vì 0 và nhỏ hơn 1)

Tập sách nhỏ javascript về thiết kế mã trò chơi

Tuy nhiên, những giá trị phân số đó không phải là chỉ mục mảng hợp lệ, vì vậy,

<span class="info js-info hidden">span>
10 được sử dụng để làm tròn các số xuống số nguyên lớn nhất nhỏ hơn hoặc bằng giá trị đã cho. Điều này cung cấp cho chúng tôi toàn bộ số nguyên từ 0 đến 3 có thể được sử dụng để truy xuất một giá trị ngẫu nhiên từ mảng
const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
6

Tập sách nhỏ javascript về thiết kế mã trò chơi

Hãy tận dụng giá trị trả về của hàm

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
4 trong
<span class="info js-info hidden">span>
9 như hình bên dưới

<span class="info js-info hidden">span>
4

Điều xảy ra ở đây là khi

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
4 được thực thi, nó trả về một giá trị ngẫu nhiên từ mảng
const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
6 (“đỏ”, “xanh lam”, “xanh lá cây” hoặc “vàng”) và giá trị này được thêm vào cuối mảng
<span class="info js-info hidden">span>
40

Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này

Chơi vòng tiếp theo

Bước tiếp theo là thực sự chơi vòng tiếp theo bằng cách kích hoạt các ô trên màn hình theo đúng thứ tự. Thêm các chức năng sau vào trên

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
4 trong tệp JavaScript của bạn

<span class="info js-info hidden">span>
9

Hàm

<span class="info js-info hidden">span>
42 lấy một mảng trình tự và lặp lại nó. Sau đó, nó sử dụng hàm
<span class="info js-info hidden">span>
43 để gọi
<span class="info js-info hidden">span>
44 ở các khoảng thời gian 600 mili giây cho mỗi giá trị trong chuỗi. Lý do
<span class="info js-info hidden">span>
43 được sử dụng ở đây là để thêm độ trễ nhân tạo giữa mỗi lần nhấn nút. Không có nó, các ô trong chuỗi sẽ được kích hoạt cùng một lúc

Số mili giây được chỉ định trong hàm

<span class="info js-info hidden">span>
43 thay đổi trên mỗi lần lặp. Nút đầu tiên trong chuỗi được kích hoạt sau 600 mili giây, nút tiếp theo sau 1200 mili giây (600 mili giây sau nút đầu tiên), nút thứ ba sau 1800 mili giây, v.v.

Trong hàm

<span class="info js-info hidden">span>
44, giá trị của
<span class="info js-info hidden">span>
48 được sử dụng để chọn các phần tử âm thanh và ô xếp phù hợp. Trong tệp HTML, hãy chú ý cách thuộc tính
<span class="info js-info hidden">span>
49 trên các phần tử
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
00 tương ứng với màu của nút

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
0

Lớp

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
01 được thêm vào ô đã chọn và phương pháp
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
02 được kích hoạt trên thành phần âm thanh đã chọn khiến tệp mp3 được liên kết trong thuộc tính
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
03 được phát. Sau 300 mili giây, lớp
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
01 lại bị xóa. Hiệu quả là mỗi ô được kích hoạt trong 300 mili giây và có 300 mili giây giữa các lần kích hoạt ô trong chuỗi

Cuối cùng, gọi

<span class="info js-info hidden">span>
42 trong hàm
<span class="info js-info hidden">span>
9 và gọi
<span class="info js-info hidden">span>
9 trong hàm
<span class="info js-info hidden">span>
2 như hình bên dưới

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
1

Bây giờ, khi bạn nhấn nút bắt đầu, vòng đầu tiên sẽ bắt đầu và một nút ngẫu nhiên sẽ được kích hoạt trên bảng

Tập sách nhỏ javascript về thiết kế mã trò chơi

Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này

Lượt của người chơi

Sau khi máy tính bắt đầu một vòng bằng cách kích hoạt chuỗi ô tiếp theo, người chơi cần kết thúc vòng bằng cách lặp lại mô hình kích hoạt ô theo đúng thứ tự. Nếu một bước bị bỏ lỡ trên đường đi, trò chơi sẽ kết thúc và đặt lại

Chọn tiêu đề và phần tử bộ chứa ô xếp bên dưới biến

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
09

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
2

Tiếp theo, tạo một hàm

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
30 cho biết rằng máy tính đã kết thúc vòng chơi và đã đến lúc người chơi lặp lại trình tự

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
3

Bước đầu tiên là xóa lớp

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
31 khỏi bộ chứa ô xếp. Lớp này ngăn việc nhấn các nút khi trò chơi chưa bắt đầu và khi AI chưa kết thúc chuỗi nhấn

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
4

Ở dòng tiếp theo, nội dung của phần tử

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
09 được thay đổi để cho biết rằng người chơi có thể bắt đầu lặp lại trình tự. Nó cũng cho biết có bao nhiêu vòi cần được nhập

Hàm

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
33 cần được thực hiện sau khi trình tự của máy tính kết thúc nên chúng ta không thể gọi nó ngay lập tức. Chúng ta cần thêm độ trễ nhân tạo và tính toán thời điểm máy tính sẽ hoàn thành chuỗi lần nhấn nút

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
5

Hàm

<span class="info js-info hidden">span>
43 ở trên thực thi
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
33 một giây sau khi nút cuối cùng trong chuỗi được kích hoạt. Tổng thời lượng của chuỗi tương ứng với mức hiện tại nhân với 600 mili giây là thời lượng cho mỗi ô trong chuỗi. Biến
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
36 cũng được gán cho chuỗi cập nhật

Trong lần cập nhật tiếp theo cho

<span class="info js-info hidden">span>
9, lớp
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
31 được thêm vào bộ chứa ô xếp khi vòng bắt đầu và nội dung của các phần tử
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
09 và
<span class="info js-info hidden">span>
40 được cập nhật

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
6

Tập sách nhỏ javascript về thiết kế mã trò chơi

Tiêu đề hiện phản ánh cấp độ hiện tại

Bước tiếp theo là phát hiện các lần nhấn nút của người chơi và quyết định chuyển sang vòng tiếp theo hay kết thúc trò chơi. Thêm trình lắng nghe sự kiện sau ngay bên dưới sự kiện cho

<span class="info js-info hidden">span>
41

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
7

Trong trình xử lý sự kiện ở trên, giá trị của

const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
7 trên phần tử đã được nhấp được truy cập và lưu trữ trong biến
<span class="info js-info hidden">span>
43. Nếu giá trị không phải là một chuỗi rỗng (đối với các phần tử không có thuộc tính
const startButton = document.querySelector('.js-start');
const info = document.querySelector('.js-info');

function startGame() {
  startButton.classList.add('hidden');
  info.classList.remove('hidden');
  info.textContent = 'Wait for the computer';
}
7), thì hàm
<span class="info js-info hidden">span>
45 được thực thi với giá trị
<span class="info js-info hidden">span>
43 làm đối số duy nhất của nó

Tạo hàm

<span class="info js-info hidden">span>
45 ngay phía trên
<span class="info js-info hidden">span>
2 như hình bên dưới

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
8

Hàm này đẩy giá trị khối xếp vào mảng

<span class="info js-info hidden">span>
8 và lưu trữ chỉ mục của nó trong biến
<span class="info js-info hidden">span>
90. Âm thanh tương ứng cho nút được phát và các bước còn lại trong trình tự được tính toán và cập nhật trên màn hình

Khối

<span class="info js-info hidden">span>
91 so sánh độ dài của mảng
<span class="info js-info hidden">span>
8 với mảng
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
36. Nếu họ bằng nhau, điều đó có nghĩa là vòng đấu kết thúc và vòng tiếp theo có thể bắt đầu. Tại thời điểm đó, mảng
<span class="info js-info hidden">span>
8 được đặt lại và hàm
<span class="info js-info hidden">span>
9 được gọi sau một giây. Độ trễ là để cho phép người dùng nhìn thấy thông báo thành công, nếu không, nó sẽ không xuất hiện vì nó sẽ bị ghi đè ngay lập tức

Tập sách nhỏ javascript về thiết kế mã trò chơi

Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này

So sánh trình tự

Chúng ta cần so sánh thứ tự mà người chơi chạm vào các nút với thứ tự của trình tự do trò chơi tạo ra. Nếu thứ tự không khớp, trò chơi sẽ đặt lại và hiển thị thông báo cảnh báo người chơi về lỗi

Tạo một hàm

<span class="info js-info hidden">span>
96 mới cho mục đích này ở trên
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
33

const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
9

Chức năng này hiển thị cảnh báo và khôi phục trò chơi về trạng thái ban đầu. Hãy sử dụng nó trong

<span class="info js-info hidden">span>
98 như hình bên dưới

<span class="info js-info hidden">span>
0

Nếu giá trị của phần tử được truy xuất bởi

<span class="info js-info hidden">span>
90 trong cả hai mảng
const startButton = document.querySelector('.js-start');

function startGame() {
  startButton.classList.add('hidden');
}

startButton.addEventListener('click', startGame);
36 và
<span class="info js-info hidden">span>
8 không khớp, điều đó có nghĩa là người chơi đã thực hiện sai lượt. Tại thời điểm đó, một cảnh báo được hiển thị và trò chơi sẽ đặt lại

Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này

Chuẩn bị trạng thái kết thúc

Trò chơi chủ yếu hoạt động nhưng chúng tôi cần giới thiệu trạng thái kết thúc khi người chơi thắng trò chơi. Tôi đã chọn 20 vòng, nhưng bạn có thể sử dụng bất kỳ số nào bạn thích. Trò chơi Simon kinh điển đã kết thúc sau 35 vòng đấu

Đây là phần kết thúc trò chơi nếu người dùng đến và hoàn thành vòng thứ 20

<span class="info js-info hidden">span>
1

Sau khi hoàn thành vòng thứ 20, một thông báo chúc mừng sẽ được hiển thị và trò chơi sẽ đặt lại. Đảm bảo dùng thử và xem liệu bạn có thể đạt cấp 20 mà không bị trượt không

Hãy thư giãn và xem mã hoàn chỉnh ở cuối bước này

Sự kết luận

Trong hướng dẫn này, chúng tôi đã phát triển một trò chơi Simon đang hoạt động với JavaScript. Tôi hy vọng bạn đã có rất nhiều niềm vui khi xây dựng nó. Bạn có thể tiến xa hơn bằng cách thử nghiệm các thiết kế khác nhau hoặc bằng cách thêm các tính năng bổ sung. Ngoài ra còn có một số bản sao bạn có thể học hỏi và sử dụng như một nguồn cảm hứng

Bạn có thể thiết kế trò chơi bằng JavaScript không?

Có. JavaScript là ngôn ngữ tuyệt vời để phát triển trò chơi, tùy thuộc vào loại trò chơi bạn muốn tạo . JavaScript là tốt nhất cho các trò chơi dựa trên web và di động. Đây cũng là một ngôn ngữ tuyệt vời cho trẻ em học vì nó thường dễ hiểu và có nhiều tài nguyên trực tuyến dành cho các lập trình viên.

Bạn có thể tạo trò chơi 3D bằng JavaScript không?

WebGL về cơ bản là OpenGL ES 2. 0 cho Web — đó là API JavaScript cung cấp các công cụ để xây dựng hoạt ảnh tương tác phong phú và tất nhiên, cả trò chơi. Bạn có thể tạo và hiển thị đồ họa 3D động bằng JavaScript được tăng tốc phần cứng .