katharostech/arsenal

Arsenal 2D retro Rust Game engine

Katharos Technology is focused on producing our first game prototype, bevy game engine and our own Katharos...

Arsenal

Project Status

Arsenal development is currently on hold while we at Katharos Technology focus on producing our first game prototype, Bounty Bros., which is a 2D, retro-style game built on the Bevy game engine and our own Bevy Retro plugin.

Because Arsenal will also be built on top of the Bevy game engine, much of what we are learning while creating Bevy Retro and Bounty Bros. will go directly to helping us prepare for making Arsenal. Arsenal is absolutely still something we plan on building and using in the future, but are a small team and have shifted our focus for the time being in order to narrow our scope and help ensure that we will be able to actually get started making commercial games.

The Vision

Arsenal is a Blender game engine written in Rust and developed by Katharos Technology. With Arsenal we want to create an Open Source game engine that will bring the ability to make games of any scale, to users of any experience level. Arsenal will combine the powerful user interface of Blender with a high performance game engine core written in Rust.

Friendly user-experience and beginner accessibility will be important on the list of features for Arsenal, but all of that ease of use must not come at the disadvantage of performance: Arsenal should be able to produce games of any size or complexity.

To program your games, Arsenal will incorporate scripting languages such as Python, in addition to being able to use logic nodes inside of Blender for a graphical programming experience. And if you want, you will always be able to write Rust to get the maximum performance.

Arsenal is our dream for the ultimate game engine, but there is a lot of work that needs to be done. By sponsoring us on Open Collective you help bring that dream to reality. You can learn more about the vision of Arsenal or check out the FAQ in the Arsenal Documentation. We also posting any updates on Arsenal development in the Arsenal category of our website.

Documentation & Proof of Concept

The documentation can be found at katharostech.github.io/arsenal. We have downloads of our first Arsenal proof-of-concept for 64bit Windows, Mac, and Linux, and a Getting Started guide that will walk you through testing it out. This is only a proof of concept and cannot actually produce games yet. In the next release of Arsenal you will be able to make simple games with scripting.

Design & Architecture

The current design plan is to build Arsenal as a Blender plugin that uses the Bevy game engine at its core. The architecture documentation explains the components in more detail.

Bugs, Feature Requests, and Questions

If you have any questions or ideas, don't hesitate to ask! Open a GitHub issue and let us know what you're thinking.

License

Arsenal is licensed under the Katharos License which places certain restrictions on what you are allowed to use Arsenal for. Please read and understand the terms before using Arsenal for your project.

Issues

Collection of the latest Issues

zicklag

zicklag

enhancement
Comment Icon0

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.


zicklag

zicklag

enhancement
Comment Icon0

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 - https://github.com/bevyengine/bevy/pull/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.

zicklag

zicklag

enhancement
Comment Icon0

In order to maximize the efficiency of meshes exported from Arsenal

As a game developer

I want my meshes to be optimized using Meshoptimizer


It might be a good idea to allow opting-out of optimization for particular meshes.

zicklag

zicklag

enhancement
Comment Icon7

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.

zicklag

zicklag

enhancement
Comment Icon6

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.

zicklag

zicklag

enhancement
Comment Icon3

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.

Versions

Find the latest versions by id

Information - Updated Mar 26, 2022

Stars: 246
Forks: 14
Issues: 11

Grumpy Visitors 2D Rust game for code reference and learning

Grumpy Visitors is a top-down 2D action arcade game

Grumpy Visitors 2D Rust game for code reference and learning

Rust Game Remake

Remake in rust of a game I made during the here

Rust Game Remake

A 3d rust game using OpenGl and Emscripten to build for the wasm32-unknown-emscripten

It can also run standalone, developed and tested on Linux but will

A 3d rust game using OpenGl and Emscripten to build for the wasm32-unknown-emscripten

Rust Game of Life

This is a simulator of Conway's Game of Life in Rust, using SDL2 to render the game graphically

Rust Game of Life

INOX - Rust Game engine integrated in Blender

It's a Game Engine written in Rust with some bindings for external libs and with Blender as editor

INOX - Rust Game engine integrated in Blender

Rust GameBoy Advanced Emulator

Building this project on linux requires cmake and gtk3

Rust GameBoy Advanced Emulator

A Rust Game Engine

In an effort to learn the Rust language (because I am a nut), I am building a game engine

A Rust Game Engine

A Rust GameBoy emulator!

TetrisZelda: Link's Awakening

A Rust GameBoy emulator!

Another Rust game engine

It's started as a rust version of the tutorial from

Another Rust game engine
Facebook Instagram Twitter GitHub Dribbble
Privacy