Coder Social home page Coder Social logo

mpoapostolis / vxlverse Goto Github PK

View Code? Open in Web Editor NEW
9.0 1.0 5.0 7.4 MB

Imagine you're playing with your favorite toy set, placing characters around, and creating fun stories with them. That's exactly what VXLverse does, but in a digital world.

Home Page: https://www.vxlverse.com/

License: MIT License

TypeScript 97.87% JavaScript 1.14% CSS 0.96% HTML 0.02%
react-three-fiber threejs 3d-world game-engine game-engine-3d storygame story-based-game

vxlverse's Introduction

VXLverse

VXLverse is like a toy box for building your own 3D video games. Imagine you're playing with your favorite toy set, placing characters around, and creating fun stories with them. That's exactly what VXLverse does, but in a digital world.

Key Features

  • Drag-and-Drop Interface: At the heart of VXLverse is an intuitive interface that allows for the placement and manipulation of 3D objects within the scene, akin to interactive digital architecture. This interface makes scene construction as simple as clicking and dragging objects into place.

  • Customizable Asset Library: VXLverse provides a comprehensive library of 3D assets, including customizable meshes, materials, and textures. These assets can be tailored to your specifications, offering vast creative flexibility when designing your scenes.

  • Transformation Tools: VXLverse features built-in tools for object transformation. These allow for the scaling, rotation, and relocation of objects, facilitating precise control over scene composition.

  • Import and Export Functionality: Collaborative design and sharing are made easy with VXLverse. The platform supports the export and import of 3D scene files, enabling seamless cooperation between users and facilitating the distribution of your creations.

  • Quest Creation & NPCs: Beyond environmental design, VXLverse integrates narrative elements with its quest creation feature. This allows users to breathe life into their 3D scenes, incorporating Non-Player Characters (NPCs) and crafting engaging storylines complete with dialogues and tasks.

How to Get Started

Try out demo

  • Adding 3D Assets: Start by populating your scene with 3D objects. Click on the "Nodes" -> "RPG Entity" button and select a mesh from the drop-down menu.

  • Manipulating Objects: Once an object is placed, you can move it, rotate it, or adjust its size using the available transformation tools.

  • Applying Materials: For more customization, apply different materials to your objects. Navigate to the "Materials" tab in the Inspector and select a material. Click on the object to apply your selection.

  • Saving and Sharing Your Work: VXLverse provides functionality to save your progress and share your work. Export your scene as a JSON file for easy distribution and future editing. Importing a previously saved scene is as simple as uploading the corresponding JSON file.

  • Creating a Story: Make your game interactive by adding quests and NPCs. Select a node in your scene and open the Quest Editor in the Inspector Bar. Fill in the relevant fields to set the quest's name and initial dialogue.

VXLverse is designed to make the process of creating 3D story games accessible and engaging, whether you're a hobbyist game designer or a professional developer. Enjoy the flexibility of our tools and bring your stories to life in a vibrant 3D world.

Remember to experiment with different nodes, materials, and transformations to create unique and immersive 3D scenes. The intuitive interface and powerful features of VXLverse make it easy for users of all skill levels to design and share their creations.

Quest Creation Guide

This guide explains how to create a quest using the Quest Editor in our platform.

  1. Select a node in your workspace where you would like to create your quest.

  2. Open the Quest Editor In the Inspector Bar on the side, select the Quest Editor.

  3. Create a Quest Click on the "Create New Quest" button.

  4. Edit the Quest Fields Fill in the fields with relevant details about your quest. Here's what each field represents:

    • Name This is the name of your quest. It should be unique and descriptive to help differentiate it from other quests.

    • Initial Dialogue This is the dialogue that the Non-Player Character (NPC) tells the player when the hero interacts with it for the first time.

    • Required Item to Complete This is an optional field. If specified, it represents an item that the player needs to have in their inventory for the quest to be marked as completed.

    • Quest Complete Dialogue This is the dialogue that the NPC tells the player when they bring the required item back to them.

    • Reward This is an optional field. If specified, this represents a reward that the player will receive in their inventory upon completion of the quest. Remember, the 'Required Item to Complete', 'Quest Complete Dialogue', and 'Reward' fields are all optional and can be left blank if not applicable to your quest.

That's all you need to create a quest! Once you're done, don't forget to save your work. Happy questing!

Getting Started

To set up the project locally, follow these steps:

  1. Clone the repository:
git clone <https://github.com/mpoapostolis/VXLverse.git>
  1. Install dependencies:
npm install
  1. Start the development server:
npm run start
  1. Open your browser and navigate to http://localhost:3000 to see the application in action.

Contributing

We welcome contributions from the community. Please submit your changes via pull requests, and we will review and merge them as appropriate.

Instructions for Use

  1. To add a 3D object to your scene, navigate to "Nodes" -> RPG Entity button and select a mesh from the drop-down menu.

  2. Once the object is added, you can manipulate it using the transformation tools provided:

    • To move the object, click and drag it to the desired position within the grid.
    • To rotate the object, select the "Rotate" tool and drag the rotation handles.
    • To scale the object, select the "Scale" tool and drag the scaling handles.
  3. To add a material to your object, click on the "Materials" tab in the Inspector and choose a material from the list. Then, click on the object to apply the material.

  4. Continue adding objects and materials to build your 3D scene.

  5. To save your work, click on the "Export" button to download the scene as a JSON file. You can also import a previously saved JSON file by clicking the "Import" button and selecting the file from your computer.

  6. If you need to delete a node, select the node and press Delete.

Explore different nodes, materials, and transformations to create unique and immersive 3D scenes. The intuitive interface and powerful features of VXLverse make it easy for users of all skill levels to design and share their creations.

Roadmap

You can see the roadmap here

Contributing

We welcome contributions from the community. Please submit your changes via pull requests, and we will review and merge them as appropriate.

vxlverse's People

Contributors

mpoapostolis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

vxlverse's Issues

Player Position Reset Issue During NPC Interaction

During the gameplay, an issue is occurring where the player's position resets to the starting point whenever a dialogue with an NPC is initiated. However, once movement is resumed post-interaction, the player's position correctly reflects the most recent location.

SVG Quest Flow Diagram not working correctly

Description

There is a noticeable issue when attempting to use SVG zoom functionality in Safari for the Quest flow diagram. The zoom function does not behave as expected and it hampers the overall usability of the application in this specific browser.

Steps to Reproduce

  1. Open the Quest flow diagram on a Safari browser.
  2. Try using the SVG zoom function.

Expected Behavior

The SVG zoom function should work seamlessly, allowing users to zoom in and out of the flow diagram smoothly and accurately.

Actual Behavior

The zoom function is not working as expected. It either does not respond at all, responds sluggishly, or it zooms inaccurately, which disrupts the user experience.

Context (Environment)

This issue is observed in the Safari browser. I have tested it on the following version(s):

The same feature works perfectly in other browsers like Chrome and Firefox, suggesting that this could be a Safari-specific issue.

Possible Solution

A possible workaround might be to employ a different zoom method for Safari or find a way to optimize the current SVG zoom method for this browser.

Thank you for your attention to this issue!

AR/VR Feature Implementation

User Story

As a user of the game development platform,

I want the platform to support games developed for Augmented Reality (AR), Virtual Reality (VR), and WebXR, so I can create immersive and interactive gaming experiences.

Acceptance Criteria

  1. The platform should support the development of games for AR, VR, and WebXR.
  2. Users should be able to test and preview their AR/VR/WebXR games within the platform.
  3. The platform should provide relevant tools and options for creating and managing AR/VR/WebXR specific features.
  4. The games developed for these platforms should perform well without any significant issues.

Tasks

  1. Incorporate AR/VR/WebXR support into the platform's existing architecture.
  2. Develop tools and options for creating AR/VR/WebXR specific features.
  3. Implement a system for testing and previewing AR/VR/WebXR games.
  4. Test the AR/VR/WebXR functionality extensively to ensure it works correctly and seamlessly.

As an authenticated user, I want to be able to upload at least 'n' MB of assets.

Acceptance Criteria

  1. Authenticated users should be able to upload assets freely up to a certain limit defined by 'n' MB.
  2. The system should provide clear error messages if the limit is exceeded.
  3. The system should allow the user to delete or replace assets in order to manage their allocated storage space.
  4. The system should correctly update the user's remaining storage space after an asset is uploaded or deleted.

User Game Library and Analytics Dashboard

User Story

As a user of our gaming platform,

I want a dedicated landing page that dynamically displays all of my saved games, so that I can conveniently continue playing any game I've previously saved.

Acceptance Criteria

  1. The landing page should showcase all the user's saved games in an organized and intuitive interface.
  2. Users should be able to filter through their saved games based on different criteria such as genre, game title, or date last played.
  3. Alongside each game, relevant game analytics like play counts and user reviews should be visible to provide additional context and insights.
  4. Each game displayed should have a direct link/button to resume playing.
  5. The system should ensure timely and accurate update of the game status, play count, and reviews.

Tasks

  1. Design a user-friendly and intuitive UI for the landing page.
  2. Develop backend logic to fetch and display the saved games from the user's account.
  3. Implement filter functionality based on various game attributes.
  4. Integrate game analytics display with each game.
  5. Test the landing page for accuracy, speed, and responsiveness.

As a user, I want to be able to create virtual tours using background panorama photos and sprites/3D objects as interactive items in space.

Acceptance Criteria

  1. Users should be able to upload and set panorama photos as the background for their virtual tour.
  2. Users should be able to add sprites/3D objects to the virtual tour.
  3. The added sprites/3D objects should be interactive within the virtual space.
  4. Users should be able to position the sprites/3D objects within the virtual tour as they see fit.
  5. Users should be able to preview and modify the virtual tour before finalizing and publishing it.

Inter-Scene Object Duplication Feature

User Story

As a user of the game development platform,

I want a system that allows me to clone or duplicate objects from one scene and implement them into another. This feature should allow for seamless inter-scene object duplication, enhancing my flexibility and creativity in game development.

Acceptance Criteria

  1. The system should enable users to select and clone or duplicate objects from one scene.
  2. Users should be able to implement these duplicated objects into another scene.
  3. The object duplication and implementation process should be seamless, intuitive, and user-friendly.
  4. The integrity and properties of the duplicated objects should be maintained when transferred to the new scene.
  5. Users should be able to edit and manipulate the duplicated objects within the new scene as needed.

Tasks

  1. Design a user interface for selecting and duplicating objects within a scene.
  2. Develop the backend functionality to clone objects and maintain their properties.
  3. Implement the system for inserting duplicated objects into another scene.
  4. Test the object duplication feature to ensure it works correctly and maintains object integrity.

Background and Action-based Music Feature

User Story

As a user of the game,

I want the game to have background music, and specific music or sound effects to play when certain actions occur, to enhance the gaming experience and make it more immersive.

Acceptance Criteria

  1. The game should have engaging and suitable background music that plays during gameplay.
  2. Different music or sound effects should play based on specific actions or events within the game.
  3. The user should have the option to mute or adjust the volume of the background music and sound effects.
  4. The music and sound effects should not interrupt or negatively impact the game performance.

Tasks

  1. Select or compose suitable background music and sound effects for different game events.
  2. Implement a system within the game to play these sounds at the appropriate times.
  3. Add an option within the game settings for users to control the volume or mute the sounds.
  4. Test the game to ensure the music and sounds enhance the gaming experience and don't cause any performance issues.

Composable Item Generation

Enable users to create custom 3D objects by combining predefined geometrical shapes and materials. The feature includes geometry selection, material selection, and intuitive manipulation of these elements to form a complex design, like a house or a vehicle. Users should be able to save and load their designs for further use or modification.

Integration of Cypress Testing Library

User Story

As a developer of the application,

I want to integrate the Cypress testing library into our development environment, so that we can automate end-to-end testing and ensure the quality and reliability of our application.

Acceptance Criteria

  1. Cypress should be successfully integrated into the development environment.
  2. Developers should be able to write and run Cypress tests easily.
  3. The Cypress tests should be capable of running on both local and CI/CD environments.
  4. Existing functionality of the application should not be negatively impacted by the integration of Cypress.
  5. Documentation should be updated to include instructions for writing and running Cypress tests.

Tasks

  1. Install and configure Cypress in the development environment.
  2. Create a sample Cypress test to demonstrate its usage.
  3. Test the Cypress integration on both local and CI/CD environments.
  4. Update the project's documentation to include Cypress usage instructions.

Title: Incorrect Item Positioning and Rotation sometimes on Initial Load

Bug Description
When launching a game for the first time, Sometimes items are not correctly positioned or rotated. However, on refreshing the page, the items correct themselves and appear as expected.

Steps to Reproduce

  1. Launch the game from a fresh start.
  2. Observe the positioning and rotation of the items within the game.

Expected Behavior
Items should be positioned and rotated correctly upon the initial launch of the game, without the need for a refresh.

Actual Behavior
Items are incorrectly positioned and rotated on the first load. Only after refreshing the page do they appear as expected.

Additional Information
This issue occurs sporadically and isn't consistent across all game launches.

Suggested Solution
Investigate the item loading process during the game's initial startup. There could be a timing issue where items are being positioned before all necessary data or assets are fully loaded. Consider ensuring that all necessary data is loaded before positioning items, or adding checks to ensure items are correctly positioned and rotated after all assets have loaded.

Game Settings Configuration

User Story

As a user of the game development platform,

I want to be able to access a settings window where I can name my game and choose the platform (AR/VR/Standard/WebXR) on which it will run, to have control over the basic parameters of my game.

Acceptance Criteria

  1. There should be a settings window that is easily accessible to the user.
  2. In this settings window, the user should be able to name their game.
  3. The user should be able to select the platform webxr(AR/VR/) or standar web on which the game will run.
  4. These settings should be saved and applied to the game appropriately.
  5. Users should be able to change these settings at any time during the game development.

Tasks

  1. Design the UI for the game settings window.
  2. Implement functionality to save and apply these settings to the game.
  3. Test the settings window functionality thoroughly to ensure it works as expected.

Generation of Dynamic Story Trees using ChatGPT for NPC Quests

Description

The goal of this issue is to leverage ChatGPT for generating interactive and dynamic story trees for NPC quests. This feature should allow users to define key parameters for a quest, like the NPC's mood or quest objective (e.g., "The NPC is sad because his dog is missing and needs help to find it").

Based on these user inputs, the system should use ChatGPT to create a dialogue tree for the quest. The dialogue tree should feature branching dialogue options and responses, each leading to different outcomes based on the player's choices.

The generated dialogue tree should feel natural, engaging, and coherent with the rest of the game's narrative. The challenge is to ensure that the branching dialogues are contextually relevant, stay true to the given parameters, and provide an engaging player experience.

Acceptance Criteria

  1. Successful integration of ChatGPT for dynamic dialogue tree generation based on user-defined parameters.
  2. The generated dialogue trees should be contextually appropriate, engaging, and follow the game's narrative style.
  3. The system should handle multiple branching dialogues leading to different outcomes based on player choices.
  4. The feature has been thoroughly tested for functionality and performance within the game.

Undo/Redo Functionality

User Story

As a user of our application,

I want an undo/redo functionality, so that I can easily revert my actions or reapply them if needed.

Acceptance Criteria

  1. Users should be able to perform the undo action to revert the immediate previous change they made.
  2. After performing an undo, users should be able to perform the redo action to reapply the change.
  3. The undo/redo functionality should be accessible and intuitive, such as through keyboard shortcuts (Ctrl+Z for undo, Ctrl+Y for redo) or clearly labeled buttons on the interface.
  4. The undo/redo functionality should be able to handle a reasonable number of past actions, as defined by system capabilities and user experience considerations.

Tasks

  1. Design and integrate undo/redo buttons into the application's user interface.
  2. Implement keyboard shortcuts for undo/redo.
    3 Test the undo/redo functionality extensively to ensure it works correctly and seamlessly.

Community Game Discovery and Ranking Feature

User Story

As a user of the game development platform,

I would like to be able to view and play other people's games, and have a ranking system that recommends the best games to me. This would create a sense of community within the platform and encourage user engagement.

Acceptance Criteria

  1. A new page should be created that allows users to view and play other people's games.
  2. The ranking system should be implemented based on user ratings or other suitable criteria.
  3. The top-ranked, recommended games should be prominently displayed on the page.
  4. Users should be able to easily provide ratings or feedback on the games they play.
  5. The page should be visually appealing and easy to navigate.

Priority

Medium

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.