Coder Social home page Coder Social logo

katharostech / arsenal Goto Github PK

View Code? Open in Web Editor NEW
272.0 272.0 16.0 6.45 MB

Blender game engine prototype written in Rust.

Home Page: https://katharostech.github.io/arsenal

License: Other

Python 13.33% Rust 85.57% Handlebars 1.11%
3d arsenal blender blender-game-engine game-development game-engine produce-games rust

arsenal's People

Contributors

bors[bot] avatar dependabot-preview[bot] avatar tmcsquared avatar zicklag avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arsenal's Issues

Clean Up and Organize Makefile

In order to streamline development and help automate tasks

As a Arsenal developer

I want to have common development and release tasks added to the Makefile


The current Makefile is a bit messy. We should go through and add the tasks that we actually want in there and organize it a bit.

Some Questions

Hi, I looked at your http://forums.armory3d.org/t/rust-and-the-vision-of-armory/3146/ and I agreed most of your views on Armory3D, and your basic concept of this game engine. I'm kinda interested and if I found out we have same vision I may give a hand on development of this engine. Hence, I have some questions:

  • What is the vision of this game engine? - You mentioned that Armory3D has ambiguous vision and that's one of your reason to start a new game engine. Will the vision of your game engine is to create a huge engine competing already existing huge engines (Unity, Unreal, Cry), or just to create some small game engine for some small indie developers? Or maybe else?
  • Is being cross platform one of your game engine main focus? - I have seen one of the main reason why Armory3D is hard and slow to add a new feature is that because being cross platform is one of the main focus of the Armory3D. So if there's a plan to add a new feature they will most likely won't add the feature until all platform can get the feature.
  • What platform will your engine focus? - Windows? Android? PS4? Console?
  • What dimension will your game engine focus on? - 2D? 3D? Or maybe even 2.5D?
  • What will your game engine feature? - A game engine must have good features especially if you want to compete big engines, where they have cool features like game level editor, terrain creator/editor, AI behavior tree etc, and the availability of the cool features are one of the reason why most people stick to an engine.
  • When do you intend to release the first version? (1.0) - A year? 3 years? Or maybe just "we'll look and see until we finish"?
  • How do you support your game engine development? - Couple years ago to download Armory3D you need to pay 50 something to support the development of the Armory3D, as it is not an easy job to develop an engine, and after 0.4 released the engine became free and open. Will you do the same? If no, what will you do?
  • What will be your game engine license? - BSD, MIT, or else?

Handle Unsaved Export More Gracefully

In order to Improve the user experience when attempting to run an unsaved Blender file

As a Arsenal user

I want Clicking the "Run Game" button on an unsaved Blend to display a dialog that says: "You must save the Blend before running the game". The dialog should have two buttons at the bottom: Cancel, and Save. Clicking the cancel button will close the dialog and clicking the Save button will pop up the Blender "Save As" dialog.

Create Arsenal Dev Guide

Going to create a development guide and do some reorganization to make the project structure make more sense and make it easier to explain in the dev guide.

Exporting Large Meshes Causes Overflow Error

When exporting a mesh with 124, 242 vertices, I get get an OverflowError:

image


I think this is caused by the fact that we are shoving all of the vertices that make up a mesh into a single glTF primitive. I think the overflow is caused when a u32 ( maybe this one or this one? ) overflows because of the number of indices in the mesh gets massive with so many vertices. We will have to chunk out the mesh into multiple primitives each of which will not have enough indices to overflow the u32 accessor or buffer length.

See the TODO in the code.

This could be useful reference:

Create Cross-Compiling Documentation

In order to inform users who may want to cross-compile arsenal

As a Arsenal developer

I want a page in the docs describing how to cross compile Arsenal, guided by the working script that we have already created in the .drone.yml file.


Basic glTF Export

We need to get basic scenes with the mesh geometry exporting to glTF. The export functionality will be implemented in Rust and multi-threaded as much as possible.

  • Export scenes and node trees
  • Export meshes
    • Ignore materials and textures: just export geometry
    • Export mesh buffer data
  • Benchmark Rust vs. Python
    • We want to prove out that there is performance gained by implementing the Blender plugin in Rust
    • Write an equivalent Python implementation of the exporter -- Just tested the Khronos Group's official Blender plugin
    • Benchmark performance compared to the Rust version -- Rust version was 22 times faster in the initial benchmark.
    • ❌ Add parallelization to the Rust implementation wherever possible -- Might skip this for now as the flamgraph shows that the parallelize-able section of the program takes almost no time.
      • Skipped because the new structure requires python access the whole time which prevents releasing the GIL
    • ❌ Compare performance of the parallelized Rust implementation and the Python implementation
  • ❌ Export cameras
    • Skipped because we don't need it now. We'll put it in a later iteration
  • ❌ Export lights -- May want to skip this for now because it isn't supported by the gltf-json library we are using for glTF exporting
    • Skipped because we don't need it now. We'll put it in a later iteration

Iconic Arsenal logo needed

In order to easily identify Arsenal graphically

As a user or stakeholder who may or may not know about Arsenal

I want an epically iconic logo to remember Arsenal by


Having a blueprint system for objects

So lets say that I created a model within Arsenal and then in the main game, I import the same models in multiple areas. If I wanted suddenly update/change the model and/or the code that it is attached to there should be a blueprint where I can apply the change once and it updates all of the same models across the entire scene.

If it doesn't make sense let me know and I will try and rephrase that.

Basic Amethyst Export

In order to prove out getting a Blender scene built as an Amethyst game

As a game developer

I want to be able to click an "Arsenal Run" button in the Blender interface and have it build and run an Amethyst game that contains my Blender scene with its meshes ( with the scene features outlined in #5 ). In the game, the scene meshes should be displayed with some default lights and an orbig camera.


For now we will use the stable version of Amethyst because it has OpenGL support. We will upgrade to the latest ( master ) version of Amethyst later.


  • #23 Export default material for glTF
  • Create Amethyst components and systems necessary to load Arsenal exported glTF files and render them in a scene
  • Make Arsenal run the Amethyst game with the exported scene when the "Arsenal Run" button is clicked.

Approximation alpha release date

Hi, I am pretty interested in this project and I may end up contributing to this project in the near project.

I would like to know if there is an approximate alpha release date?

Live Blender Game Sync

In order to decrease iteration time and facilitate rapid development

As a game developer

I want to be able to tell Blender to sync objects in the Blender interface live with the running game during development. I should be able to select which objects are synchronized with a checkbox for each object in the properties panel.


The synchronization could be one-way from Blender to the game, or it could be two-way. This will require planning and testing to figure out exactly how we want to do it.

This is somewhat related to #15.

Automated CI Builds

In order to provide Arsenal builds for a larger variety of users

As a Arsenal developer

I want to have automated CI builds of the Arsenal blender plugin for Linux, Mac, and Windows.


Apparently Travis is free for public projects!

Edit: Decided to use drone.io instead because it is awesome.

Dependabot couldn't find a Cargo.toml for this project

Dependabot couldn't find a Cargo.toml for this project.

Dependabot requires a Cargo.toml to evaluate your project's current Rust dependencies. It had expected to find one at the path: /Cargo.toml.

If this isn't a Rust project, or if it is a library, you may wish to disable updates for it from within Dependabot.

You can mention @dependabot in the comments below to contact the Dependabot team.

Visual Scripting Inside Blender

In order to allow non-programmers to develop the logic for their games

As a game developer

I want to be able to build out logic for my game using nodes inside of Blender.


Logic nodes will most likely compile to Lua code.

Requires Lua scripting support in Amethyst.

Extra Blender Export Features

  • Export mesh textures
  • Export other light types: area, spot, sun
  • Provide a way to set PBR textures in Blender ( with no extra options )
    • This is to stand in for a proper shader tree exporter that will come in the future
  • Export timeline animated objects
  • Export physics object metadata
    • This might be in RON files instead, not sure yet

Custom Blender Viewport Rendering

In order to make it easier to preview my game and reduce development iteration time

As a game developer

I want to be able to have a live render preview for what my game's lights and materials will look like in the Blender viewport. Similar to how you can select the Eevee renderer and view it live in the viewport, except it will use our game's renderer and/or shaders.


This needs some investigation. Something to look at: Blender GPU Shader Modules.

Export Default Material for glTF

The renderer for Amethyst 0.10 requires a material to be specified for it to render glTF so we need to add a default flat grey material that can be applied to all of the meshes in the scene export.

Dependabot couldn't find a Cargo.toml for this project

Dependabot couldn't find a Cargo.toml for this project.

Dependabot requires a Cargo.toml to evaluate your project's current Rust dependencies. It had expected to find one at the path: /arsenal-runtime/Cargo.toml.

If this isn't a Rust project, or if it is a library, you may wish to disable updates for it from within Dependabot.

You can mention @dependabot in the comments below to contact the Dependabot team.

How Can I Help Arsenal Development?

Hello everybody, this is a thread where you can ask questions related to helping Arsenal development. If you want to help out, but don't quite know how or you have questions how you can help, don't hesitate to comment!

Also, be sure to check out the contributing guide in the documentation.

Benchmark Legion and Amethyst

In order to evaluate the performance impact that would accompany using Legion as Amethyst's ECS instead of Specs

As a project owner

I want to have performance benchmarks comparing Specs and Legion. Benchmarks should include both small examples, and ones that come as close as possible to our real-life workloads.


Benchmarks are being developed in katharostech/amethyst-ecs-benchmarks. The ECS discussion can be found here.

Establish Arsenal Scripting Plugin

In order to allow for game logic to be created and modified without re-compiling Arsenal itself

As a Arsenal engineer

I want an arsenal_scripting crate that will provide a Bevy ScriptingPlugin that can be use to load the game logic from scripts in supported programming languages. All game logic should be able to be provided in game scripts. Languages that must be supported at a minimum are Rust and Python.


This issue sums up everything that we need for initial scripting support for the Arsenal 0.2 release.

Related Work

Bevy Dynamic Systems and Components - bevyengine/bevy#623

This pull request is ready for us to start using and experimenting with and has been merged into the arsenal branch of our Bevy fork.

Next Steps

Right now, the next step is essentially just to start experimenting! The more I mess around, the more a solid plan will materialize. I've got some fuzzy plans for most of the process in my head.

Scripted Asteroids Demonstration 🚀

In order to prove out the functionality of arsenal_scripting

As a Arsenal developer

I want a demonstration of a bevy game made 100% with Python. The game should be a fully working and playable asteroids game. The example need not have in-game menus and doesn't need to be fully polished, but it should have a flyable ship with a gun that can shoot asteroids and asteroids that destroy the ship.

This example need not be made with Arsenal itself, i.e., Blender will not be used, but it needs to use the arsenal_scripting plugin to load game logic.


Use Draco Mesh Compression

Use Draco mesh compression for mesh export and loading.

  • Wrap Draco C++ library in Rust
  • Use Draco when exporting meshes from the Arsenal
  • Make sure Draco compression is supported for loading meshes in game

PhysX physics engine

Would Arsenal support/use the PhysX physics engine as I heard this is pretty good?

How to get the addon

I can't get the Aresenal addon for Blender 2.8 stable release. I want to get this addon to test it out. I apologise I have not been here and helping with the community.

Also I just want to know, when runing the game using ARsenal addon, would it be based on the Eevee Renderer?

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.