Hướng dẫn what 3d game engines use javascript? - những gì công cụ trò chơi 3d sử dụng javascript?
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. Show
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 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 Hãy để xây dựng một ứng dụng cơ bản với Phaser. npm install babylonjs --save // TO USE import * as BABYLON from 'babylonjs' // OR import { Scene, Engine } from 'babylonjs' Tiếp theo, chuyển trong một số cấu hình mặc định cho động cơ Phaser của bạn. 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 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 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 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. 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 Nhiều bài viết tuyệt vời hơn từ Logrocket: Đừng bỏ lỡ một khoảnh khắc với bản phát lại, một bản tin được quản lý từ LogrocketTìm hiểu cách Galileo của Logrocket cắt giảm tiếng ồn để chủ động giải quyết các vấn đề trong ứng dụng của bạn Ưu điểm
Nhược điểm
CodeBase cập nhật: Khung này có một Codebase và các công cụ bên thứ ba được cập nhật thường xuyên đang được phát triển tích cựcKết xuất PBR: Hỗ trợ hỗ trợ kết xuất PBR là tuyệt vời Bầu chọn sự tự tin: Babylon được sử dụng và hỗ trợ bởi các thương hiệu lớn như Adobe, Microsoft, v.v. 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 Bảo trì: Lỗi thường được giải quyết khá nhanh 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 Thiếu trưởng thành: Babylon là bản phát hành đầu tiên vào năm 2013, khiến nó khá trẻ so với nhiều đối thủ cạnh tranh 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ơnBabylon.js hoạt động Ư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í. Có bất kỳ động cơ trò chơi nào sử dụng JavaScript?Phaser là một trong những động cơ trò chơi JavaScript tốt nhất để phát triển trò chơi 2D.Lý tưởng phù hợp để xây dựng tất cả mọi thứ, từ các bộ truyền phụ theo kiểu arcade đến các game bắn súng dựa trên vật lý, Phaser là một khung có khả năng cao để phát triển trò chơi hoàn chỉnh.. Ideally suited to building everything from arcade-style side scrollers to physics-based shooters, Phaser is a highly capable framework for complete game development.
JavaScript có thể được sử dụng cho các trò chơi 3D 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 các hình ảnh động tương tác phong phú và tất nhiên, cũng là các trò chơi.Bạn có thể tạo và hiển thị đồ họa 3D động với JavaScript được tăng tốc phần cứng.You can generate and render dynamic 3D graphics with JavaScript that is hardware accelerated.
Có trò chơi nào được thực hiện với JavaScript không?Câu trả lời là có!Đã có lúc một trò chơi đơn giản được phát triển trong JavaScript sẽ yêu cầu một trình phát Flash Adobe.JavaScript đã đi một chặng đường dài.Ngày nay, mọi người có thể chơi các trò chơi được phát triển trong JavaScript trên bất kỳ trình duyệt nào và tại bất kỳ nền tảng nào mà không cần người chơi flash.people can play games developed in JavaScript on any browser and at any platform without the need for a flash player.
|