Xây dựng một trò chơi trình duyệt nhiều người chơi thời gian thực trong chưa đầy một ngày – Phần 1/4 – Cộng đồng Dev, Tòa nhà nhiều người chơi | Trò chơi chơi miễn phí

Trò chơi chơi miễn phí

Như bạn có thể thấy, lớp này có ba phương thức trống. Chúng đi kèm với Phaser.Lớp cảnh. Mỗi phương pháp này có một chức năng khác nhau như được giải thích dưới đây

Xây dựng một trò chơi trình duyệt nhiều người chơi thời gian thực trong chưa đầy một ngày – Phần 1/4

Màn hình trò chơi

Bạn có chơi game không. Tât nhiên! Bao giờ nghĩ đến việc tự xây dựng một người. Hmm.. Các trò chơi có vẻ khó xây dựng. Với rất nhiều tác phẩm di chuyển liên quan (hoàn toàn theo nghĩa đen), sự phát triển trò chơi có vẻ như nó bị hạn chế đối với các nhà phát triển, người đã đắm mình vào sâu vào vùng nước thánh của mạng, toán học, đồ họa và những thứ tương tự. Tuy nhiên, với Web phát triển rất nhanh và với tất cả các giao thức và thư viện mới đã kéo dài trong những năm gần đây, giờ đây nó rất đơn giản để bắt đầu với việc xây dựng các trò chơi nhiều người chơi dựa trên trình duyệt. Trong bài viết này, chúng ta sẽ xem xét việc thực hiện từng bước một trò chơi nhiều người chơi theo thời gian thực (Ah, nỗi nhớ!) với Phaser3 và thời gian thực ABLE. Tôi đã tổ chức trò chơi cuối cùng tại https: // space-invaders-multiplayer.Herokuapp.com/ cho bạn để thử nó. Trên đường đi, chúng tôi sẽ hiểu kiến ​​trúc, thiết kế hệ thống, các giao thức mạng đằng sau điều này và cũng nhìn vào những cảnh báo để ghi nhớ khi xây dựng các trò chơi dựa trên trình duyệt nhiều người chơi. Loạt hướng dẫn này được chia thành bốn phần:

  • Phần 1: Giới thiệu về các khái niệm chơi game và thư viện Phaser
  • Phần 2: Đánh giá các giao thức mạng cho các ứng dụng thời gian thực
  • Phần 3: Thực hiện mã phía máy chủ để giữ cho tất cả người chơi đồng bộ hóa
  • Phần 4: Kết thúc mã phía máy khách để hiển thị trò chơi

Một điều cuối cùng trước khi chúng ta bắt đầu. Bài viết này giả định sự hiểu biết cơ bản về JavaScript và Express/NodeJS. Tôi sẽ cố gắng và giải thích mọi thứ khác càng nhiều càng tốt ����‍����

Hãy chơi game!

Phần 1 – Giới thiệu về các khái niệm chơi game và Phaser

Hãy bắt đầu bằng cách xem xét các quy tắc cho trò chơi vì nó không chính xác sẽ giống như Retro Classic ban đầu.

Quy tắc trò chơi cho những kẻ xâm lược không gian nhiều người chơi

  • Khi một người chơi mới tham gia, họ sẽ được gán ngẫu nhiên một hình đại diện quái vật trong số ba giống có sẵn.
  • Mỗi người chơi có thể di chuyển hình đại diện của họ bên trái hoặc phải bằng các phím mũi tên trên bàn phím của họ
  • Mỗi người chơi sẽ nhìn thấy hình đại diện của riêng họ bằng màu trắng nhưng thấy những người khác sẽ có màu ngẫu nhiên được gán sẵn cho họ
  • Khi một số người chơi đặt trước tham gia trò chơi, một con tàu được phóng. Con tàu này di chuyển dọc theo trục ngang theo hướng được chọn ngẫu nhiên thay đổi ngẫu nhiên cứ sau 5 giây. Cùng với điều này, vận tốc của con tàu cũng sẽ thay đổi. Con tàu này cũng bắn đạn vào khoảng thời gian đều đặn mà chúng ta cũng có thể đặt trước
  • Tất cả các avatar tự động di chuyển xuống với mức tăng đặt trước trong suốt trò chơi.
  • Mục tiêu để giành chiến thắng trong trò chơi là làm cho nó đến biên giới dưới cùng của màn hình trò chơi mà không bị giết bởi một hoặc nhiều viên đạn bị tàu bắn.

Các thành phần của một trò chơi nhiều người chơi thời gian thực

Mặc dù có vẻ như có rất nhiều thứ đang diễn ra đằng sau một trò chơi thời gian thực được nối mạng, nhưng chúng thực sự có ba thành phần cốt lõi:

Hãy nhìn vào từng điều này xa hơn.

1. Tài sản

Tài sản là những yếu tố quan trọng tạo nên trò chơi. Nếu bạn muốn một đối tượng xuất hiện trong trò chơi của mình, bạn có thể vẽ một cái trên khung ảnh trò chơi hoặc tốt hơn là sử dụng hình ảnh hoặc một tấm sprite và hoạt động cùng. Tương tự, bất kỳ âm thanh nào bạn muốn giới thiệu và chơi trong trò chơi sẽ thuộc tài sản của nó.

Tài sản trò chơi

Nếu bạn quan tâm đến việc làm cho chủ đề trò chơi của bạn siêu arcade, bạn có thể làm theo hướng dẫn nghệ thuật pixel này của Glauber Kotaki để tìm hiểu làm thế nào.

2. Vật lý

Vật lý là những gì cho phép chúng ta di chuyển tài sản xung quanh và quyết định các đối tượng khác nhau trong trò chơi của chúng ta tương tác với nhau như thế nào. Ví dụ, trong một trò chơi đơn giản của pong, quả bóng được trả lại theo một hướng nhất định, với một vận tốc nhất định tùy thuộc vào phần của mái chèo mà nó va chạm. Tương tự, trong trò chơi của chúng tôi, điều này có thể bao gồm tính toán nơi con tàu cần phải đi, với vận tốc, bắn đạn, va chạm các vật thể này với hình đại diện của người chơi, v.v.

Tất cả những điều này về cơ bản là các tính toán toán học phù hợp với các khái niệm về vật lý, dưới mui xe. Nhưng rất nhiều toán học có thể quá sức để viết từ đầu ngay cả đối với một trò chơi đơn giản. Vì vậy, thay vì viết mọi từ đầu, chúng ta có thể sử dụng một công cụ vật lý có thể thực hiện hầu hết các phép thuật toán học cho chúng ta.

3. Kết nối mạng

Thành phần cốt lõi cuối cùng đặc biệt quan trọng đối với trò chơi trực tuyến trực tiếp nhiều người chơi là kết nối mạng. Có thể rất khó để duy trì sự đồng bộ giữa tất cả những người chơi, hãy tìm ra người chơi nào đã chết và nếu mọi người khác đồng ý với yêu cầu đó.

Đừng lo lắng nếu tất cả những điều này bắt đầu nghe có vẻ phức tạp, nó không cần phải. Có nhiều mẫu thiết kế có sẵn có thể giúp chúng tôi bắt đầu đúng cách. Chúng ta có thể chọn cách chúng ta muốn kiến ​​trúc trò chơi, liên quan đến cơ chế của trò chơi cụ thể được đề cập. Trong suốt loạt bài viết này, chúng ta sẽ nói về các mẫu và lựa chọn kiến ​​trúc mà tôi đã đi cùng để xây dựng trò chơi này và tại sao.

Bây giờ chúng ta đã hiểu rõ hơn về các thành phần cốt lõi, hãy khám phá cách chúng ta có thể làm cho chúng hoạt động trong trò chơi của mình.

Sử dụng Phaser 3 để thêm tài sản và cho phép vật lý

Phaser là một khung JavaScript có nguồn gốc mở và WebGL cho HTML5. Chúng tôi sẽ sử dụng Phaser 3 để xây dựng trò chơi. Lý do tôi đặc biệt đề cập đến phiên bản là có nhiều thay đổi phá vỡ giữa Phaser 2 và 3 bao gồm cả cú pháp. Ngoài ra, trong trường hợp bạn đang tìm cách thêm một số tính năng mới thú vị vào trò chơi trong tương lai, bạn nên biết những gì/nơi để tìm.

Logo Phaser3

Phaser không chỉ cho phép chúng tôi hiển thị tài sản trên khung vẽ, phát hình ảnh động và âm thanh, v.v. Điều này có nghĩa là chúng ta chỉ có thể nói nó những việc như những gì cần phải làm khi hai đối tượng va chạm và nó sẽ tự động để mắt đến va chạm và thực hiện một đoạn mã nếu nó xảy ra.

Có một loạt video hướng dẫn thực sự tốt cho Phaser mà tôi muốn giới thiệu nếu đây là lần đầu tiên bạn làm việc với Phaser 3.

Trong phiên bản TL; DR của nó, với Phaser3, chúng ta có thể chỉ định một đối tượng cấu hình có thông tin về Canvas và chính trò chơi, bao gồm kích thước của khung vẽ, các thuộc tính kiểu của nó, nhiều cảnh khác nhau được bao gồm trong trò chơi của chúng ta (thảo luận sớm), loại động cơ vật lý (như Phaser có nhiều), v.v.

Sau đó chúng tôi vượt qua đối tượng cấu hình để bắt đầu một trò chơi mới.

Điều này nghe có vẻ hơi khó hiểu vì bạn chưa thấy bất kỳ mã nào. Hãy làm điều đó tiếp theo.

Bắt đầu với trò chơi

Hãy để ngay bây giờ hãy đi thẳng vào màn hình trò chơi. Chúng tôi sẽ lo lắng về các trang ra mắt và bảng xếp hạng, sau này. Trò chơi của chúng tôi sẽ là một trang HTML với một tấm bạt được hiển thị trên đó. Băng vải này sẽ giữ và chạy trò chơi thực tế. Vì vậy, hãy tạo một tệp, hãy gọi nó là chỉ mục.HTML . Để giữ mọi thứ được tổ chức, chúng tôi sẽ lưu trữ tất cả các tệp HTML của chúng tôi trong một thư mục có tên . Hãy bắt đầu các chế độ xem/chỉ mục.Tệp HTML có bộ xương cơ bản:

Như bạn có thể thấy, tất cả những gì chúng ta đang làm ở đây là liên kết đến các tệp CSS và JS mà chúng ta sẽ thêm vào trong thời gian ngắn, nhưng cũng quan trọng hơn là liên kết đến Phaser JS CDN. Bạn có thể sao chép CSS trực tiếp từ dự án GitHub

Ngoài ra, trong cơ thể HTML, chúng ta có một div với một id của người phụ trách trò chơi . Đây là nơi chúng tôi sẽ thêm vải chơi trò chơi của chúng tôi thông qua JavaScript.

Hãy tạo một tệp trong thư mục công khai, hãy gọi nó là tập lệnh.JS và bắt đầu bằng cách xác định đối tượng cấu hình trò chơi mà chúng ta đã nói trước đó.

Như bạn có thể thấy, ngoài việc chỉ định kích thước của khung vẽ và màu nền của nó, chúng tôi cũng đã chỉ định nơi mà canvas này cần phải đi (được xác định bởi cha mẹ) và một mảng các cảnh mà chúng tôi muốn là một phần của điều này trò chơi.

Phaser sử dụng khái niệm ‘cảnh’ để tổ chức nội dung của trò chơi. Bạn có thể nghĩ về một cảnh như những gì bạn có thể nhìn thấy trực quan tại bất kỳ thời điểm nào. Trong khi chơi một trò chơi, nếu trò chơi chuyển sang một nền khác với các tương tác khác nhau giữa các đối tượng trò chơi, thì đó có thể là một cảnh riêng biệt với những gì bạn đang xem trước đây.

Đối với trò chơi của chúng tôi, chúng tôi sẽ có một cảnh duy nhất (được xác định bởi Gamescene). Một cảnh trong Phaser là một lớp mở rộng Phaser.Lớp cảnh. Hãy xác định điều này cho trò chơi của chúng tôi. Thêm mã sau ở trên đối tượng cấu hình vì nó đang tham khảo lớp gamescene.

Như bạn có thể thấy, lớp này có ba phương thức trống. Chúng đi kèm với Phaser.Lớp cảnh. Mỗi phương pháp này có một chức năng khác nhau như được giải thích dưới đây

  1. Phương thức preload () có được tất cả các tài nguyên mà chúng ta có thể cần, từ bất cứ nơi nào chúng, tải chúng vào và giữ chúng sẵn sàng khi chúng tôi muốn thêm chúng vào trò chơi của chúng tôi.
  2. Phương thức created () được thực thi một lần khi trò chơi chạy lần đầu tiên. Chúng ta có thể thêm tất cả các khởi tạo biến, định nghĩa hoạt hình, v.v., trong phương pháp này.
  3. Phương thức cập nhật () được thực hiện liên tục trong một vòng lặp miễn là trò chơi được bật và do đó có thể liên tục cập nhật các đối tượng trò chơi theo logic trò chơi. Chúng tôi sẽ cập nhật các avatar, bắn đạn, di chuyển con tàu, tất cả trong phương pháp này..

Tải tài sản và tạo hình ảnh động

Hãy tiếp tục và tải một số tài sản ngay bây giờ. Xác định phương thức preload () như sau

Ban đầu tôi đã lưu trữ trò chơi này trên Glitch lưu trữ tất cả các tài sản trong thùng của nó, có thể truy xuất được bởi một liên kết CDN. Bạn có thể sử dụng giống nhau, nếu không Amazon S3 là một tùy chọn phổ biến khác.

Chúng tôi đã thêm ba loại hình đại diện, tất cả đều có màu trắng và ba màu khác. Ngoài những thứ đó, chúng tôi cũng đã thêm tài sản cho tàu, viên đạn và tất nhiên là vụ nổ để chơi khi người chơi chết.

Như bạn có thể thấy, chúng tôi đã tải một tài sản Spritesheet trong Phaser bằng cách sử dụng cái này.trọng tải.spritesheet () và đã gửi nó ba tham số:

  • định danh
  • Đường dẫn đến tệp thực tế
  • Kích thước của tệp (tính bằng pixel).

Chúng tôi cũng chỉ có thể gọi nó là một hình ảnh nhưng sau đó chúng tôi sẽ không thể thực hiện các hình ảnh động tuyệt vời với nó vì bạn sẽ sớm thấy.

P.S. Có một cách tốt hơn để thực hiện các màu Avatar. Chúng tôi chỉ cần thêm một màu sắc vào một sprite hiện có thay vì tải cùng một đối tượng với nhiều màu như các tài sản riêng biệt. Tôi chưa biết làm thế nào, nhưng tôi sẽ cập nhật nó khi tôi đã tìm ra nó 🙂

Nếu bạn kiểm tra tờ sprite “Vụ nổ”, bạn sẽ thấy rằng đó là một loạt các hình ảnh khác nhau được đặt cạnh nhau. Cách chúng tôi gây ra “hoạt hình” là bằng cách xem qua những hình ảnh khác nhau ở một tốc độ cụ thể, điều này có vẻ như nó thực sự là một video trong suốt về một vụ nổ xảy ra.

Trong phương thức Tạo (), chúng tôi sẽ xác định hoạt hình cho vụ nổ này:

Chúng tôi đã sử dụng Phaser này.Hoạt hình.tạo () phương thức để tạo hình ảnh động. Phương pháp này thực hiện:

  • Chìa khóa mà chúng ta sẽ sử dụng sau này để phát hoạt hình này
  • Khung tạo ra các khung bằng cách sử dụng định danh của tài sản mà chúng tôi muốn áp dụng hình ảnh động này
  • Framerate chỉ định tốc độ mà chúng tôi muốn chơi hoạt hình này
  • Lặp lại rằng chỉ định số lần hoạt hình sẽ chạy
  • HidonComplete chỉ định xem tài sản có hoạt hình hay không sẽ biến mất sau khi hoạt hình được thực hiện

Chúng tôi sẽ không thêm bất cứ điều gì trong phương thức CẬP NHẬT () ngay bây giờ. Nếu bạn nhận thấy, chúng tôi cũng chưa thực sự khởi tạo trò chơi, chúng tôi sẽ làm điều đó trong phần sau của loạt bài viết này.

Đó là nó bây giờ. Chúng tôi sẽ tìm hiểu về mạng cho các ứng dụng thời gian thực trong Phần 2 – Đánh giá các giao thức mạng cho các ứng dụng thời gian thực

Tất cả các bài viết trong loạt bài này:

  • Phần 1: Giới thiệu về các khái niệm chơi game và thư viện Phaser
  • Phần 2: Đánh giá các giao thức mạng cho các ứng dụng thời gian thực
  • Phần 3: Thực hiện mã phía máy chủ để giữ cho tất cả người chơi đồng bộ hóa
  • Phần 4: Kết thúc mã phía máy khách để hiển thị trò chơi

Một bản phát hành riêng có liên quan đến hướng dẫn này có sẵn trên GitHub nếu bạn muốn kiểm tra nó.

Bạn cũng có thể theo dõi dự án GitHub cho những phát triển mới nhất trong dự án này.

Nếu bạn có bất kỳ câu hỏi nào, xin vui lòng liên hệ với tôi trên Twitter @Srushtika. DM của tôi đang mở 🙂

Thể loại: Tòa nhà nhiều người chơi

Chimeraland là một MMORPG sinh tồn trên thế giới mở (trò chơi nhập vai trực tuyến nhiều người chơi) cho PC (Windows) và Mobile (Android/IOS) được phát triển bởi Pixel Soft và được xuất bản bởi Level Infinite. Trò chơi được đặt trong một thế giới thời tiền sử, thần thoại [Mạnh]

các cửa sổIPhone & iPad Android

Muck là một trò chơi Roguelike miễn phí* Người chơi đơn và nhiều người chơi cho PC (Windows) của nhà phát triển nổi tiếng Na Uy, Artist và YouTuber Dani (người cũng đã tạo ra Cua Game và Karlson). Muck là một poly thấp, giản dị (rất) sự pha trộn đầy thách thức của sự sống còn (e.g. […]

các cửa sổ

Sandbox là một hệ sinh thái chơi trò chơi và chơi trò chơi miễn phí và chơi trò chơi cộng đồng cho PC (Windows và Mac) trong phát triển tích cực (Open Alpha) và được xây dựng trên blockchain Ethereum (tương tự như Decentraland). Người chơi có thể xây dựng, sở hữu, chia sẻ và [Mạnh]

các cửa sổ

Core là một bộ sưu tập trò chơi miễn phí và nền tảng làm trò chơi tương tự như Crayta và Roblox. Core nói cách khác là một loạt các trò chơi miễn phí để chơi và thế giới để khám phá được thiết kế bởi một cộng đồng nhà phát triển toàn cầu mà bạn có thể dễ dàng [Mạnh]

các cửa sổ

Crayta là một nền tảng làm trò chơi hợp tác miễn phí để chơi và bộ sưu tập trò chơi arcade nhiều người chơi được xây dựng trên Unreal Engine 4 cho PC, tương tự như Core và Roblox. Người chơi có thể nhảy vào và tạo các trò chơi cùng nhau trên đám mây, bất kể kinh nghiệm lập trình của họ. Từ […]

các cửa sổ

Wild Terra Online là một MMORPG miễn phí với các tính năng Sandbox và Survival, được đặt trong một thế giới giả tưởng thời trung cổ do người chơi kiểm soát. Bạn sẽ không cần phải hoàn thành một chuỗi các nhiệm vụ và giết một ngàn con sói để tạo ra thiết bị. Mọi thứ đều nhiều […]

các cửa sổMac Linux

ARK: Survival Evolve (di động) là trò chơi sinh tồn hành động di động miễn phí* miễn phí của Studio Wildcard cho Mobile (Android, iOS), lấy bối cảnh thế giới thời tiền sử nơi người chơi, người bị mắc kẹt trên đảo, phải sống sót sau khi chuyển vùng Khủng long và các động vật thời tiền sử khác, các mối nguy hiểm tự nhiên, [Mạnh]

IPhone & iPad Android

Unturned là một trò chơi bắn súng và trò chơi bắn súng có chủ đề Zombie theo chủ đề Zombie miễn phí cho PC (Windows, Mac và Linux) trong thể loại sinh tồn MMO/nhiều người chơi mới nổi (mặc dù bạn cũng có thể chơi một mình hoặc trong PVE). Thay vì tập trung vào [V]]

các cửa sổMac Linux

Totemori là một trò chơi Brawler nhiều người chơi vui vẻ và sáng tạo và sáng tạo, nơi bạn xây dựng các tòa tháp trong khi cố gắng lật đổ mọi người khác. Totemori có nhiều người chơi địa phương so với và co-op cho tối đa 4 người chơi. Chơi với bạn bè của bạn hoặc luyện tập chống lại bot, [Mạnh]

các cửa sổMac Linux

Galactic Junk League là một đấu trường crafter chơi miễn phí cạnh tranh-một game bắn súng trộn với khả năng xây dựng tàu gần như vô hạn. Xây dựng bất cứ điều gì. Chiến đấu với bất cứ ai. Trong không gian. Xây dựng tàu rác của bạn theo nghĩa đen là bất kỳ hình dạng và kích cỡ nào và chiến đấu chống lại những sáng tạo của [Mạnh]

các cửa sổ

Creativerse là một trò chơi Sandbox MMO miễn phí và chơi thế hệ tiếp theo thú vị về phiêu lưu, khám phá và sáng tạo với bạn bè của bạn. Và bây giờ nó là miễn phí để chơi. Bạn bị mắc kẹt trong một thế giới rộng lớn và bí ẩn được bao quanh bởi những con thú hung dữ và [Mạnh]

các cửa sổ Mac

Gunscape là một bộ công cụ xây dựng FPS. Nó là một trò chơi cho phép bạn phát triển với sự sáng tạo của mình trong hộp cát hành động bơm! Gunscape thực hiện điều này bằng cách cung cấp các công cụ dễ sử dụng dựa trên giao diện đặt khối mà mọi người đã quen thuộc để tạo ra một người chơi đơn [Muff]

các cửa sổMac Linux

Trove là một voxel mmorpg miễn phí để chơi bởi Trion Worlds cho PC (Windows, Mac), Xbox One, PS4 và Nintendo Switch Switch. Trove có vô số cõi chứa đầy các nhiệm vụ, rương và kẻ thù lớn và nhỏ. Khám phá và tạo theo cách của bạn […]

các cửa sổMacPlaystation 4Xbox một Công tắc

Roblox là một nền tảng trò chơi trực tuyến và trò chơi trực tuyến nhiều người chơi miễn phí (tương tự như Core và Crayta) cho phép người dùng thiết kế và chia sẻ các trò chơi và cấp độ của riêng họ, và chơi tất cả các loại trò chơi được tạo bởi người dùng khác, từ [[ …]

Liked Liked