Three.js framework for enhancing video game development with JavaScript

My goal is to create immersive 3D video games using the powerful three.js library. However, as this library focuses on graphics alone, I am in need of a framework that can assist me in building the game structure, defining entities, managing events, and handling collision detection.

Are there any frameworks out there that could provide the support I require?

I've come across sim.js as a possible solution, but I'm unsure if it aligns with my needs.

Appreciate any insight you can offer!

Answer №1

In my humble opinion, the answer to this question will greatly depend on the type of game you intend to create.

Given that browser-based 3D games necessitate careful attention to memory management, assets, and more, I believe the optimal framework for your game would be one that you custom-build.

You will inevitably face a balancing act between quality and performance, regardless of the framework selected.

As for available options: at present, there are few complete game frameworks based on three.js. In my view, your best options include

  • starting with a reputable "base" library such as Physijs and expanding from there
  • utilizing existing building blocks created by others, like J.Etienne's three.js extras
  • beginning with an open-source "finished" project like voxeljs or cubeslam

Essentially, do some searching on GitHub to discover resources aligned with your specific objectives.

Alternatively, if you're feeling adventurous, consider lending a hand with my own modest framework here. Yes, I shamelessly promoted it.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Is it possible to incorporate a VueJS .vue component into an HTML page without the need for a WebPack build process?

I'm currently working on a page for an older server-rendered project. For one specific page, I want to incorporate some "dynamic" elements. I decided to import the vuejs CDN script and create an inline Vue object: var v = new Vue(... However, there ...

Locate grandchildren elements using getElementById

My task is to modify the content and attributes of the table. The DOM structure is generated by a third-party tool, and I am using JavaScript to make changes in various sections. <div id="myId"> <div> <div> <table&g ...

The default styling of Next.js react-chatbot-kit is not functioning properly

import Chatbot from 'react-chatbot-kit' import config from './config' import ActionProvider from './actionProvider' import MessageParser from './messageParser' const ChatBotFlight = () => { return ( <div> ...

The object imported from Blender is experiencing functionality issues when used in ThreeJS

I am having trouble importing a blender object into my JavaScript code. The object does not render the same way as it does in blender. I have exported it as .obj from blender. Here is how it looks in blender: https://i.sstatic.net/OjnV7.jpg The exportin ...

Javascript problem with closing the browser window in Selenium WebDriver

Here are a couple of inquiries: Firstly: Is there a method to initiate the browser on a specific URL (instead of about:blank) while also setting the history length to 0 when starting on that URL? Secondly: I suspect this question is related to the one me ...

Mastering the art of utilizing class attributes and functions from within modules

Currently, I am developing classes in ES6 modules using object literals and my intention is to update object attributes within a function. Although modules run in strict mode by default which ensures safe usage of this, I am uncertain whether calling the ...

When moving the cursor quickly, a vertical line does not appear upon hover

I am facing an issue with the vue-chartJs library. When I move the cursor fast, the vertical line on hover does not show up. However, when I move the cursor slowly, it works perfectly. Can anyone offer assistance in solving this problem? onHover: functi ...

In JavaScript, a variable's value can be assigned to another variable using the variable

I have a collection of predetermined variables. I dynamically assign a value to another variable, which ends up representing the name of one of the predefined variables. This allows me to easily determine which set variable to use on a particular section o ...

Tips for moving a div to reveal new content whenever a toggle-slide is activated

I'm attempting to alternate between two divs every time the toggle-slide button is clicked. Additionally, the other button should hide/show each time the switch button is clicked. Here is the HTML code: <div id="divParticipants"> Click &a ...

The whitespace issue stems from the div element __next-build-watcher generated by next js and usecontext

There's a notification bar at the bottom of my page that lets the user know when their email has been sent. This bar is generated using useContext in React/Next.js. To see the code, check out this Codebox link: Code However, I've noticed there ...

Exploring Aframe: extracting vertices from various objects

How can we extract the vertices of an object within a scene? This applies to both primitive shapes and imported models. For instance: <a-entity geometry='primitive:box' rotation='0 30 0'></a-entity> or <a-entity gltf-m ...

Button react-native press following textInput within scroll view aware of keyboard movements

I'm currently facing an issue where I have a TextInput and a button nested inside a KeyboardAwareScrollView. The goal is for the user to input some text and then tap the button created using TouchableOpacity, which should send the inputted text forwar ...

Expanding on the nested document in mongoose

I have been working on setting up a nested mongoose document configuration in the following manner: models/data.js var mongoose = require('mongoose'); var addresses = new mongoose.Schema({ "street": String, "city": String, "state": Stri ...

The Autocomplete field's label remains visible even after the form is submitted

I am currently developing a feature that allows users to select an option in the Autocomplete component. In the parent component, I pass these props: const filterDropdownConfig: FilterSelectAutocomplete = { data: scenariosList, label: { className: &apos ...

Creating a Copy to Clipboard feature in React can be achieved by transferring data from an h1 tag to an input field

I'm trying to extract data from an API into an h1 tag in my app. Is there a way for me to easily copy this data and paste it into an input field? Any help would be greatly appreciated. Thanks! ...

Update a particular class following an AJAX POST request in JavaScript

After conducting extensive research, I have come here seeking your assistance with a particular issue: I am using a comment system with multiple forms on the same page (utilizing FOSCommentBundle in Symfony). My goal is to be able to post comments via Aja ...

Guide to attempting an asynchronous function again in JavaScript with a time delay

I've been facing a challenge while trying to retrieve a record from a database. The issue of race conditions often leads to situations where the record might not be available when attempting the initial fetch. How can I implement retry logic to overco ...

Appending the desired URL to the existing URL using an Ajax callback

Ever since I started working on a Drupal 7 project, I have been facing an issue with making an ajax call back. The problem arises when the URL I intend to use for the callback gets appended to the current page the user is viewing. It's quite puzzling ...

Failure to submit complete form data when using multiple submit buttons in jQuery and JavaScript

JavaScript and jQuery are not my strong suits, as I typically work with databases. Lately, I've been struggling to make a complex form submit all of its data successfully. The form consists of three different submit buttons, each intended to post the ...

Iterate through the collection to retrieve the value associated with a specific key

In the JSON response I have received, I am trying to extract the value of "fees" corresponding to "detailComponent" with the identifier "FULL_FEE". However, instead of retrieving the desired value, the loop seems to be fetching the last value associated wi ...