October 26, 2020

Arsenal Development: Week 3 - Nailing Down Dynamic ECS

Arsenal Week3 2.png Arsenal Week3 2.png Micro Thumbnail

Another week of Arsenal development! This week focused on honing our dynamic systems and components solution for the Bevy ECS.

We spent most of our time working on our Bevy PR, successfully establishing dynamic components and honing our solution for dynamic system queries. We also got a great review from @ralith who is the author of hecs, the core component that makes up most of the Bevy ECS elements that we are contributing to with this PR.

There has been great progress on this effort and I think we are just about ready to consider it done and move on to the next exciting piece of our Arsenal scripting solution.

Arsenal on GitHub

This week we also moved Arsenal issue management back to GitHub! A while back we decided to do Arsenal issue tracking on Taiga while we did development on GitHub. We chose to do this because Taiga was Open Source and self-hostable so we could self-host it for our private projects while using the public version for our Open Source projects.

In practice, though, Taiga was not providing enough value compared to the hassle of having the issue management separate from GitHub so we decided to move back to GitHub. We disabled the Taiga project, re-enabled GitHub issues, and cleaned up the issues that were already there to get ready for further development.

We'll also be keeping the Arsenal Workboard on GitHub updated with what we're currently working on.

What's Next?

So, what are we working on this week? I've got a small list of things I need to modify for our Bevy PR in response to @ralith's review. This should be relatively simple and not take long. That will leave the rest of the week to work on the Arsenal Runtime.

The Arsenal Runtime is the core component of Arsenal that actually runs your Arsenal games. A deployed Arsenal game will be made up of the arsenal_runtime program in addition to your game assets and your game scripts.

The Arsenal runtime is essentially a Bevy "game" that, in addition to Bevy's core systems such as the hierarchy and rendering systems, will have all of our Arsenal-specific plugins. One of the most important Arsenal plugins will be the Arsenal scripting plugin.

Last week I had just a tiny bit of time to spend working on the first steps of the Arsenal scripting plugin and how it will fit into the Arsenal Rutime. With some great help from @yandros and others ( thank you! ) on the Rust forum I was able to get a decent start. This week will expand on that effort.

The initial goal for the Arsenal Runtime will be to produce a playable "Asteroids" game using only Python for the game logic. This will prove out the usability of the scripting solution and serve as a great demonstration of its capability.

Once that is complete it will bring us great strides closer to actually making games inside of Blender!