How a Small Team of Developers Created Net.Attack(), a Coding Roguelite Game
A team from ByteRockers' Games joined us to talk about Net.Attack(), explaining the mechanics of the game, what their influences were to create it, and discussing the development process and how they managed to set the different nodes.
Introduction
Net.Attack() was developed by a small team of five people. We are the smallest team at ByterRockers' Games, and this is our first project as a group. Previously, all team members worked on Beat Slayer, and that is where the initial idea for Net.Attack() was born.
Back then, we had created a tool that allowed us to assemble enemy attacks using a modular, building block system. That sparked the idea of turning this concept into a game. I pitched the idea internally, and it was generally very well received. However, at that point, we did not yet know what genre the game would belong to.
Then one of my colleagues suggested combining the concept with a Vampire Survivors-style game. I was already aware of the game but had never played it. I downloaded it that same evening and could not stop playing for a long time. The idea of coding your own attacks in a Vampire Survivors-like experience immediately clicked.
I went back to the team, gathered colleagues who were excited about the idea, and once the team was formed, we pitched it to our CEO and received the green light. That said, we first had to finish Beat Slayer before fully diving into Net.Attack().
Core Mechanics in Net.Attack()
The core mechanic of Net.Attack() is node-based coding. Players are given a variety of blocks that they can connect and combine to create their own attacks.
From the very beginning, we saw Net.Attack() more as a sandbox or a toy rather than a traditional game. Our goal was to give players as much freedom as possible. The focus was always on creating an experience for players who enjoy experimenting and discovering new possibilities. If your only goal is to win, Net.Attack() might not fully reveal its appeal.
But if you are the kind of player who drafts a crazy card in Magic: The Gathering and immediately wants to build an entire deck around it, then Net.Attack() is exactly your kind of game. It is all about experimenting, trying things out, and learning along the way. Throughout development, it was very important for us to stay closely connected to our community and carefully listen to their feedback.
This played a huge role in shaping the game. As for balancing, we discovered something interesting. The more we tried to balance Net.Attack(), the more it loses its charm. After almost every update, we would see comments like "the old Net.Attack() was better." So we deliberately lowered the priority of strict balancing. Our priorities became:
- Let players do crazy and creative things.
- It would be nice if it were balanced.
Is Net.Attack() perfectly balanced? Not really, but that is part of the experience. Of course, we will continue improving balance in the future, but only as long as it does not take away what makes the game special.
Influences
The biggest influences were Vampire Survivors and our own experience as game developers. One idea that was part of the project from the very beginning was setting the game on a circuit board. I had seen something similar in a student project many years ago and thought it was such a cool concept that I kept waiting for the right opportunity to use it. Net.Attack() turned out to be the perfect fit.
As we didn't want the game to become just another entry in the long list of science-fiction coding games, we decided to give it a distinct retrofuturistic touch, blending sci-fi aesthetics with Art Deco influences. Since we don't depict realistic environments for the regions we hack into, the circuit board itself is meant to convey the feeling of different cultures and countries it represents. To achieve this, we deliberately moved away from realism and instead focused on distinctive shapes and colors.
Development Process
We have never worked on a game with so many interconnected elements to manage. In the end, we had over 190 different nodes in the game, and we experimented with many more during development.
To handle this complexity, we relied heavily on a database and used an external tool to manage it. This became one of the most important tools in our pipeline, allowing us to quickly create new nodes and adjust their values. One of the biggest challenges was the sheer amount of player freedom. It is simply impossible for us to test every possible combination. We used unit tests to gain some level of reliability, but we also relied heavily on the community.
Interestingly, not every bug report was actually caused by us. Sometimes players created "bugs" themselves through unexpected uses of the node system. That was always fun to see. Performance was another big topic. We implemented various optimizations such as instancing and offloading calculations to the GPU, and we will continue improving performance moving forward.
That said, we have also received a lot of messages from players who found it hilarious that their machines were pushed to the limit by their own creations. In a way, that is also part of the Net.Attack() experience.
Marketing or Community-Building Efforts
We released a demo early on and started building our Discord community from the very beginning. Our goal was to create a space where players could share their custom-built attacks and exchange ideas. That is also why we implemented the Daily Challenge, to give players a reason to come back every day and discuss their results with others. This worked extremely well and helped us grow a strong, active, and responsive community.
Because Net.Attack() is themed as a system hack. We introduced small hidden features to push the idea of "hacking the system" outside of our gameplay. We took a risk that it wouldn't be discovered at all, but in the end, people discovered it and talked about it. The subject of the hidden system configuration screen and what password to use came up again from time to time in our community Discord or in the community hub of Steam.
The amazing thing is that nobody spoiled it as far as I know. People are actually encouraging others to keep at it until they hack their way in. My advice would be to go public as early as possible, give players something to talk about, and create a reason for your community to come together regularly.
Conclusion
After the launch is before the launch. Right now, we are working on a new patch, and we are hoping to finally deliver the long-requested controller support. We are not entirely sure yet what the long-term future of Net.Attack() will look like, but we do know that we will continue working together as a team. We have proven that we work well together, and we are excited to tackle more projects in the future.
The community response has been very positive overall. Many players love the game and regularly share their enthusiasm with us. At the same time, some criticism has focused on the lack of strict balancing and performance issues. It is definitely not a game for everyone, but we are continuously working to improve it.
One of the biggest lessons we learned is that developing a game alongside an active community is a very unique experience, and we would not want to do it any other way. That said, it also comes with challenges. It is easy to try to please everyone, but that can sometimes lead to losing sight of what makes the game fun. So our takeaway is to share your game early, build a community, iterate with them, but never lose sight of your original vision.