Có thể tạo ra các trò chơi 3D bản địa (như CS: GO, Call of Duty, Battlefield, v.v.) với JavaScript không? Tôi muốn tạo một trò chơi sẽ không được chơi trong trình duyệt web, nhưng được cài đặt và chơi trên máy người dùng như mọi trò chơi. Show
Smmehrab 6767 Huy hiệu bạc15 Huy hiệu Đồng7 silver badges15 bronze badges Hỏi ngày 8 tháng 7 năm 2020 lúc 22:12Jul 8, 2020 at 22:12
Bạn có thể kiểm tra ba.js, đây là thư viện JavaScript giúp bạn xây dựng các trò chơi 3D. Mặc dù nó không hoàn toàn đáp ứng tình trạng của bạn, vì nó cũng chạy trên trình duyệt web. Tôi không hoàn toàn chắc chắn về việc xây dựng các trò chơi bản địa với javascript, nhưng bạn có thể sử dụng electron.js để tạo ứng dụng máy tính để bàn của trò chơi javascript của bạn. Đã trả lời ngày 8 tháng 7 năm 2020 lúc 22:32Jul 8, 2020 at 22:32
Smmehrabsmmehrabsmmehrab 6767 Huy hiệu bạc15 Huy hiệu Đồng7 silver badges15 bronze badges Hỏi ngày 8 tháng 7 năm 2020 lúc 22:12 Bạn có thể kiểm tra ba.js, đây là thư viện JavaScript giúp bạn xây dựng các trò chơi 3D. Mặc dù nó không hoàn toàn đáp ứng tình trạng của bạn, vì nó cũng chạy trên trình duyệt web. Tôi không hoàn toàn chắc chắn về việc xây dựng các trò chơi bản địa với javascript, nhưng bạn có thể sử dụng electron.js để tạo ứng dụng máy tính để bàn của trò chơi javascript của bạn.Aug 4, 2020 at 10:57
NoNam4NoNam4NoNam4 Đã trả lời ngày 8 tháng 7 năm 2020 lúc 22:321 silver badge8 bronze badges Tôi biết bạn đang nghĩ gì: Tại sao bạn lại sử dụng JavaScript để phát triển trò chơi? Tôi đã nghĩ điều tương tự khi lần đầu tiên tôi phát hiện ra rằng bạn có thể sử dụng JavaScript, cũng như HTML5, để phát triển các trò chơi 3D. Sự thật là, kể từ khi giới thiệu API JavaScript WebGL, các trình duyệt hiện đại có khả năng trực quan cho phép chúng hiển thị đồ họa 2D và 3D phức tạp và phức tạp hơn mà không cần dựa vào các plugin của bên thứ ba. Bạn có thể bắt đầu hành trình phát triển trò chơi web của mình với Pure JavaScript, đây có lẽ là cách tốt nhất để tìm hiểu nếu bạn là người mới bắt đầu. Nhưng tại sao lại phát minh lại bánh xe khi có rất nhiều động cơ trò chơi được áp dụng rộng rãi để lựa chọn? Trong hướng dẫn này, chúng tôi sẽ khám phá sáu công cụ trò chơi JS/HTML5 hàng đầu, được xếp hạng theo số lượng sao GitHub và hướng dẫn bạn cách sử dụng chúng. 1. ba.jsThree.js là một trong những thư viện JavaScript phổ biến nhất để tạo và hoạt hình đồ họa máy tính 3D trong trình duyệt web bằng WebGL. Nó cũng là một công cụ tuyệt vời để tạo các trò chơi 3D cho các trình duyệt web. Vì ba.js dựa trên JavaScript, nên việc thêm bất kỳ tương tác nào giữa các đối tượng 3D và giao diện người dùng, chẳng hạn như bàn phím và chuột. Điều này làm cho thư viện hoàn toàn phù hợp để tạo các trò chơi 3D trên web. Ưu điểm
Nhược điểm
Ba.js trong hành độngNếu bạn đang tìm cách đi sâu vào việc tạo các đối tượng 3D đơn giản hoặc phức tạp trên web, ba.js là thư viện đi. Những lợi thế hàng đầu của nó bao gồm một cộng đồng tài năng và rộng lớn và rất nhiều ví dụ và tài nguyên. Three.js là thư viện hoạt hình 3D đầu tiên mà tôi đã làm việc và tôi đã giới thiệu nó cho bất kỳ ai bắt đầu phát triển trò chơi. Hãy để tạo ra một hình học xoay đơn giản để chứng minh những gì ba.js có thể làm. import * as THREE from 'js/three.module.js'; var camera, scene, renderer; var geometry, material, mesh; animate(); Tạo chức năng function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }9 để thiết lập mọi thứ chúng ta cần để chạy hoạt hình demo của chúng ta với ba.js. function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); } Tiếp theo, tạo hàm function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }0 để làm động đối tượng với loại chuyển động mong muốn của bạn. function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); } Kết quả đã hoàn thành sẽ trông như thế này: 2. pixijsNếu bạn đang tìm kiếm một thư viện JS để tạo đồ họa phong phú và tương tác với sự hỗ trợ cho các ứng dụng đa nền tảng, thì không có gì khác ngoài PIXIJS. Công cụ tạo HTML5 này cho phép bạn phát triển hoạt hình và trò chơi mà không có kiến thức trước về API WebGL. Ưu điểm
Nhược điểm
Hướng đến người mới: Bởi vì API phục vụ cho người mới, nhiều tính năng nâng cao được ẩnThiếu hỗ trợ: Không có hỗ trợ tích hợp để lập chỉ mục không gian, làm cho raycast chính xác hoặc loại bỏ frustum và phát hiện va chạm là vô vọng trong các kịch bản phức tạp Ba.js trong hành động npm install pixi.js import * as PIXI from 'pixijs' //or CDN <script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/5.1.3/pixi.min.js" ></script> Nếu bạn đang tìm cách đi sâu vào việc tạo các đối tượng 3D đơn giản hoặc phức tạp trên web, ba.js là thư viện đi. Những lợi thế hàng đầu của nó bao gồm một cộng đồng tài năng và rộng lớn và rất nhiều ví dụ và tài nguyên. import * as PIXI from 'pixi.js'; const app = new PIXI.Application(); document.body.appendChild(app.view); app.loader.add('jumper', 'jumper.png').load((loader, resources) => { const bunny = new PIXI.Sprite(resources.bunny.texture); bunny.x = app.renderer.width / 2; bunny.y = app.renderer.height / 2; bunny.anchor.x = .5; bunny.anchor.y = .5; app.stage.addChild(bunny); app.ticker.add(() => { bunny.rotation += .01; }); }); Three.js là thư viện hoạt hình 3D đầu tiên mà tôi đã làm việc và tôi đã giới thiệu nó cho bất kỳ ai bắt đầu phát triển trò chơi. Hãy để tạo ra một hình học xoay đơn giản để chứng minh những gì ba.js có thể làm.Tạo chức năng function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }9 để thiết lập mọi thứ chúng ta cần để chạy hoạt hình demo của chúng ta với ba.js. Ưu điểm
Nhược điểm
Phaser trong hành độngPhaser tốt để phát triển các ứng dụng trò chơi đa nền tảng. Sự hỗ trợ của nó cho một loạt các plugin và cộng đồng lớn các nhà phát triển xây dựng các trò chơi với Phaser giúp việc bắt đầu với khung. Hãy để xây dựng một ứng dụng cơ bản với Phaser. npm install [email protected] //OR <script src="//cdn.jsdelivr.net/npm/[email protected]/dist/phaser.min.js"> >/script> Tiếp theo, chuyển trong một số cấu hình mặc định cho động cơ Phaser của bạn. const config = { type: Phaser.Auto, width: 900, height: 700, physics: { default: 'arcade', arcade: { gravity: { y: 200 }, } }, scene: { preload: preload, create: create } }; const game = new Phaser.Game(config); Tạo chức năng tải trước để tải trong các tệp tĩnh mặc định của bạn. function preload() { this.load.setBaseURL('http://labs.phaser.io'); this.load.image('sky', 'assets/skies/space3.png') this.load.image('logo', 'assets/sprites/phaser3-logo.png'); this.load.image('red', 'assets/particles/red.png'); } Cuối cùng, xác định chức năng function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }1 của bạn để hiển thị trò chơi mới được tạo của bạn. Nhiều bài viết tuyệt vời hơn từ Logrocket:
function create(){ this.add.image(500, 500, 'sky'); const particles = this.add.particles('red') const emitter = particles.createEmitter({ speed: 100, scale: {start: 1, end: 0}, blendeMode: 'ADD' }); const logo = this.physics.add.image(400, 100, 'logo'); logo.setVelocity(100, 200); logo.setBounce(1,1); logo.setCollideWorldBounds(true); emitter.setFollow(logo) } 4. Babylon.jsBabylon.js là một trò chơi mạnh mẽ, đẹp đẽ, đơn giản và mở và động cơ kết xuất được đóng gói vào một khung JavaScript thân thiện. Ưu điểm
Nhược điểm
Babylon.js hoạt độngNhiều thương hiệu lớn tin tưởng Babylon.js là công cụ phát triển trò chơi của họ. Babylon và các mô -đun của nó được xuất bản trên NPM. npm install babylonjs --save // TO USE import * as BABYLON from 'babylonjs' // OR import { Scene, Engine } from 'babylonjs' Tạo một tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }2 và dán như sau. function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }0 Tiếp theo, tạo một tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }3 và bao gồm mã sau. function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }1 Tạo tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }4 và dán vào: function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }2 Dưới đây là một bản xem trước về hoạt hình của bạn sẽ trông như thế nào. 5. Vật chất.jsMatter.js là một công cụ vật lý cơ thể JavaScript 2D, cứng nhắc cho web. Mặc dù nó là một công cụ vật lý JavaScript, bạn có thể kết hợp nó với các gói và plugin khác nhau để tạo ra các trò chơi web thú vị. Ưu điểm
Nhược điểm
Tài liệu: Động cơ thiếu tài liệu API.Không phù hợp cho các dự án nhỏ hơn Babylon.js hoạt động function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }3 Nhiều thương hiệu lớn tin tưởng Babylon.js là công cụ phát triển trò chơi của họ. function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }4 Babylon và các mô -đun của nó được xuất bản trên NPM. Tạo một tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }2 và dán như sau. Tiếp theo, tạo một tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); } 3 và bao gồm mã sau.Tạo tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }4 và dán vào: Ưu điểm
Nhược điểm
PlayCanvas trong hành độngPlayCanvas là tuyệt vời để tạo ra các dự án công cộng nhỏ hoặc các dự án trường học - ít nhất, đó là những gì tôi đã sử dụng. Nếu bạn cần nhiều tính năng hơn và kiểm soát nhiều hơn đối với phát triển trò chơi của mình, bạn có thể muốn xem xét đăng ký các tính năng cao cấp. function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }5 Tạo một tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }2 và thêm mã sau. function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }6 Tiếp theo, tạo một tệp function animate() { init(); requestAnimationFrame( animate ); mesh.rotation.x += .01; mesh.rotation.y += .02; renderer.render( scene, camera ); }3 và dán vào sau. function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }7 Để tạo máy ảnh và ánh sáng cho đối tượng: function init() { const camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, .01, 20 ); camera.position.z = 1; const scene = new THREE.Scene(); const geometry = new THREE.BoxGeometry( 0.5, 0.5, 0.5 ); const material = new THREE.MeshNormalMaterial(); const mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); }8 Mã trên sẽ tạo ra kết quả sau. Suy nghĩ cuối cùngBằng cách phá vỡ các ưu điểm, nhược điểm và sử dụng các trường hợp liên quan đến mỗi công cụ trò chơi JS/HTML5 được liệt kê ở trên, tôi hy vọng bạn đã hiểu rõ hơn về việc này phù hợp nhất với loại trò chơi hoặc hoạt hình mà bạn đang tìm kiếm để tạo. Trong hầu hết các trường hợp, tôi khuyên bạn nên sử dụng ba.js, đặc biệt là nếu bạn đang tìm kiếm nhiều hơn hoặc một công cụ kết xuất hơn là một công cụ trò chơi. Do sự phổ biến của nó trong hệ sinh thái nhà phát triển, nó sẽ dễ dàng tìm thấy tài nguyên toàn diện để giúp bạn phát triển và chạy. Nếu bạn tập trung vào phát triển trò chơi nhiều hơn, tôi sẽ đề xuất Babylon.js vì sự đơn giản của nó. Babylon cũng có một cơ sở mã hóa được cập nhật và phát triển bên thứ ba hoạt động và tính năng sân chơi là một công cụ tuyệt vời để thử nghiệm. PlayCanvas là một tùy chọn sao lưu vững chắc - nó chủ yếu là một công cụ trò chơi và bạn có thể sử dụng nó để xây dựng các trò chơi 3D phức tạp. Bạn sử dụng công cụ trò chơi nào trong các dự án phát triển trò chơi của mình? Hãy cho chúng tôi biết trong các ý kiến! Logrocket: Debug Lỗi JavaScript dễ dàng hơn bằng cách hiểu bối cảnhMã gỡ lỗi luôn là một nhiệm vụ tẻ nhạt. Nhưng bạn càng hiểu lỗi của mình thì càng dễ dàng sửa chúng. Logrocket cho phép bạn hiểu các lỗi này theo những cách mới và độc đáo. Giải pháp giám sát frontend của chúng tôi theo dõi sự tham gia của người dùng với các mặt tiền JavaScript của bạn để cung cấp cho bạn khả năng tìm hiểu chính xác những gì người dùng đã làm dẫn đến lỗi. Logrocket Records nhật ký bảng điều khiển, thời gian tải trang, ngăn xếp, yêu cầu/phản hồi mạng chậm với các tiêu đề + thân, siêu dữ liệu trình duyệt và nhật ký tùy chỉnh. Hiểu được tác động của mã JavaScript của bạn sẽ không bao giờ dễ dàng hơn! Hãy thử nó miễn phí. Động cơ trò chơi 3D nào sử dụng JavaScript?Trong bài viết này, chúng tôi sẽ khám phá 8 công cụ trò chơi JavaScript chọn tay hàng đầu mà mọi nhà phát triển JS nên biết về ... Pixijs. Pixijs là một thư viện kết xuất 2D linh hoạt và nhanh nhất đáng kinh ngạc. .... Phaser. .... Babylon. .... PlayCanvas Webgl Game Engine. .... Dưa gang. .... Phát triển. .... Quả kiwi. .... Three.. Cái nào tốt nhất cho phát triển trò chơi 3D?Danh sách các công cụ được ưa thích nhất của các chuyên gia để phát triển các trò chơi video 3D cho các thiết bị khác nhau bao gồm Unity, Autodesk 3DS Max, Autodesk Maya và Blender Game Engine.UNITY, Autodesk 3ds Max, Autodesk Maya and Blender Game Engine.
Bạn có thể xây dựng các trò chơi với JavaScript không?JavaScript có thể được sử dụng để phát triển một loạt các loại trò chơi khác nhau.Và các trò chơi được tạo bằng JavaScript có thể chạy trên hầu hết mọi thiết bị với trình duyệt web.. And games created with JavaScript can run on almost any device with a web browser.
Ba JS có tốt để phát triển trò chơi không?Three.js là một thư viện mạnh mẽ để tạo các mô hình và trò chơi ba chiều.Chỉ với một vài dòng JavaScript, bạn có thể tạo bất cứ thứ gì từ các mẫu 3D đơn giản đến các cảnh theo thời gian thực, quang học.Bạn có thể xây dựng hình học 3D đơn giản và phức tạp, animate và di chuyển các đối tượng thông qua một cảnh giống như thật, và nhiều hơn nữa. js is a powerful library for creating three-dimensional models and games. With just a few lines of JavaScript, you can create anything from simple 3D patterns to photorealistic, real-time scenes. You can build simple and complex 3D geometrics, animate and move objects through a lifelike scene, and more. |