Here’s a list of old concerns

Real GameDev — I realized you just need to keep going to succeed.

— I realized you just need to keep going to succeed. Community Building — A genuine connection and friendly approach goes a long way

— A genuine connection and friendly approach goes a long way Art and 3D assets — Turns out that decades of dreaming about game development teaches you the fundamentals and a week on YouTube is enough to start.

— Turns out that decades of dreaming about game development teaches you the fundamentals and a week on YouTube is enough to start. Computer Networking —Okay, this one is really hard. But there are great libraries to help you now. It’s kind of my career up to now, so there.

—Okay, this one is really hard. But there are great libraries to help you now. It’s kind of my career up to now, so there. Game Design Ideas— Once I knew the goals, ideas just started springing to mind. I thought that would be harder.

I’ve still got a few

When to release — It’s going to be years until it’s “Done” so I decided to just release a pre-alpha “space themed chatroom” in May 2020 to dedicated fans.

It’s going to be years until it’s “Done” so I decided to just release a pre-alpha “space themed chatroom” in May 2020 to dedicated fans. Financial pressures — Still contracting right now to pay the bills. How much time should I spend on that? What to do if suddenly I become funded and need to leave my clients in the lurch?

Still contracting right now to pay the bills. How much time should I spend on that? What to do if suddenly I become funded and need to leave my clients in the lurch? When to stream? What to say? — I don’t yet really understand my audience or the best time to stream for me. But I’m learning!

I don’t yet really understand my audience or the best time to stream for me. But I’m learning! How fast can I realistically go? — I expect development will accelerate, that it will feel easier to do more. I can feel the effects begin but have to believe it’s gonna happen.

Always some …interesting… “Features” around rotation maths (this demos Euler issues)

Growing a community

I’ve got hundreds of followers now across many platforms. Let me take a moment to thank every one of you. Your support means a lot, your encouraging voice helps keep the terror of a huge project from overwhelming me.

Thank-you. From the bottom of my heart. Thanks.

Initially I started growing my community by leaning into what I do well. I chose a difficult combination of tools that gives me freedom and performance — Godot and Rust. I thought I could contribute back to my community by smoothing the path to using those tools. I wrote about my technology choices conversationally and then I tutorialized the Godot+Rust combination. Hmmm, I really need to write more. So busy!

It’s quickly become apparent that my approach is “in vogue” with both Godot and Rust being growth tools at the moment. I personally think that Godot is the best “3d Engine” for rust developers and Rust is the best Scripting option for performance sensitive Godot developers. The consistent positive responses I have received from both camps seems to bear this out. I’m very excited about moving to Godot 4.0 and the gorgeous new Vulkan renderer once it is ready.

I have followed the community to various platforms. I put off starting a Twitter account until a Reddit reader explicitly asked me for one. I avoided Discord until the Twitter community was growing and vocal. Then a Discord member suggested I start streaming because he enjoys watching such streams. I’ve since embraced streaming as a low-effort way for me to give back to up and coming game developers and help foster a conversion with my fans.

You might note that my YouTube content is still amateur hour. This is kind of intentional, being a combination of my low skills here and time commitment. I don’t have much time to develop each week and making a good quality video could take upwards of a day, if not two. So like the other parts, the YouTube content is waiting for the right moment. I have big plans people! Big plans!!

Okay, lets talk progress.

Here’s what I’ve been up to the past 3 months.

I made my first progress post in Nov 2019 so we’ll start where that leaves off. That would be … colliding ships. Okay!

December 2019

Early in this month I began to get sick of continually writing binding code between Godot and Rust, thinking that if every entity I added would require a custom set of Godot API calls it would slow down development. I came up with a pretty nifty set of Specs Systems which create, update and delete Godot Nodes using templates, doing things like moving them around.

I realized I could inject new components and systems into the “Specs World” from my sg_core (godot api) crate that sg_simulation (pure rust) crate didn’t know about. I simplified this example and put it into a PR for the rust gdnative bindings but that still requires more work. I’ve also begun work on a tutorial for this.

Stamping down several ships. BAM! BAM! BAM!

In January for the first time it became possible for players to create new ships in the game. They start empty right now, later they will be centred around an upgradable “Core.” It felt good to begin transitioning away from only hard-coded ships.

I also decided that I would take it easy over the Christmas holidays, so that’s what I did. I spent a lot more time with the kids, which was nice!

January 2020

The new year started with slow progress again around Christmas and summer holidays (they are long here in NZ). You’ll be glad to know I spent a lot of time with my family.

It became possible for network peers to see each other’s movement inputs this month, when I created an “Action” called ActionInput that all peers execute in tandem. Over the next couple of months this has expanded a lot. Actions are my implementation of the standard networking approach used by most Real Time Strategy and Automation games. If you know the starting state and every thing that players did, everyone can simulate the game and agree on what is going on right now. Lock Step is the key to how we simulate the insides of even very complex spaceships.

Each spaceship is itself a world (in specs ECS) which tracks conveyors, contents, machines and construction. I’ve been primarily focused on this inner “Production Floor” world for the past year. In Jan I turned more attention to the “Space World” which is far more arcade focused. In the Space world, each ship is simplified down to its essence — position, shape, weapons, effects on other ships. The Space world is going to have its own frame-rate and fancy predictive network model.

Network synchronisation of SpaceShips happened in January, so suddenly it was possible to fly these factories around like I hoped you would be able to do. They still remain in sync when another client joins “late.” A lot of the nuts and bolts of the Space world started coming together.