r/gamedev • • 2d ago

Announcement /r/GameDev Updates to Rule 3: No Showcasing Projects

142 Upvotes

This community has often allowed people to share free tools and assets but it has always been subjective about where the line crosses regarding self-promotion or showing off a project. We have updated rule 3 to make the following clarification about sharing tools in our community:

  1. All of your own tools you share must be free (this is reinforced by rule 6)
  2. You must provide discussion or technical takeaways regarding the tool.
    1. What unique challenges did you run into when making it?
    2. How did you solve them? Any unique formula, feature, or workaround?
    3. Examples of using the tool and how it improved your workflow.
  3. You must engage the best you can with comments asking about the tool. This does not mean replying to every comment but proving you want to interact with the community.

However we are still left with the open-ended question of what to do with assets. People often share free assets made by others, but what is the line to draw here? We had reports come in because free creators have tip jars or linked patreon accounts. Other reports reference paid products elsewhere on their website.

What do you all feel is appropriate for a developer wishing to share a free asset they made with the community? We will update rule 6 accordingly in the near future as we debate this.

Thank you all for your continued contributions to this community.

Edit: Since there is some confusion this is us expanding what is allowed and we are wanting feedback on if we should allow more posts or not. This stuff has been banned for years already.


r/gamedev • • 2d ago

Community Highlight Introducing BRUTAL | A free C# framework that helped RimWorld make its own engine and break free of Unity. Now you can too.

4.1k Upvotes

Our industry is rotting from its core, outwards in every direction, and it has been for some time. Driven by greed, driven by a race to the bottom on price. It is my position that the games industry was already heading somewhere unsustainable before reverse-engineering and powerful agentic processes became widely available. These have pushed things over the edge.

But I think one of the biggest problems is something we don’t discuss enough. Developers have surrendered an extraordinary amount of control over their work to companies whose interests aren't necessarily aligned with their own.

So we're doing something about it. We're making the BRUTAL Framework publicly available, with its source code, and we’re making it free to use, including for commercial games, subject to an attribution requirement.

I'm Dean Hall. I originally made DayZ, and now run a New Zealand game studio called RocketWerkz, as well as a new gaming distribution platform called Ahwoo. Our games include Stationeers and ICARUS, among others. We’ve used BRUTAL to replace engines in several of our games currently under development. This is the same framework we've used to make Kitten Space Agency, and which Ludeon used as the foundation for their new Waylith engine for RimWorld.

The BRUTAL Framework

Four years ago our studio began developing our own custom framework. At the time, it seemed like the kind of thing that only a "crazy" developer would do. Something that would make people shake their heads. Making your own technology was such a "red flag" for a studio that it was even a secret undertaking internally. It started with a few libraries. But it gradually grew, and then rather rapidly became a complete framework you could use to make a game or your own game engine.

We called it the BRUTAL Framework.

It is important to explain that BRUTAL is a framework, not a game engine. You can make a game directly using it, like we have with Kitten Space Agency, or use it as the foundation for an entirely separate engine, like Ludeon have with RimWorld.

At its core is a custom interop layer, giving C# access to native APIs and libraries. We've built quite a lot of supporting libraries around this, including mathematics, memory management, strings, job scheduling, logging, localization, and other systems. We have an obsessive focus on reducing allocations and unnecessary overhead. We make extensive use of unmanaged memory and unsafe code where it makes sense. Our core focus has been on doing a few low-level things extremely well, using the latest versions of C# and Vulkan.

You can use the Vulkan bindings to make your own renderer, for example. But BRUTAL doesn't make all those decisions for you. You get to make them yourself. You can use whatever NuGet packages you want, including third-party packages. You get to write your own stack. In some ways this makes it much harder to use than Unity, Unreal, or Godot. In other ways, particularly if you're doing something unusual, it makes things considerably easier.

It's called BRUTAL for a reason.

Personally, I have found it much easier. But this comes with a forcing function. You actually have to know what you want to do first. In Unity or Unreal I would often spend days or weeks figuring out how the people who made the engine intended something to work, and then how to get around the assumptions they had made. Without all that, it is actually faster. At least for the kinds of games we're trying to make.

What BRUTAL is not

I do not believe this is the tool that everyone should use to make a game. We've aggressively pushed back against efforts internally to "add more". Our intention is to make a focused and efficient tool for "hard-to-make games". We are not trying to make something that can do everything for everyone. In fact, one of the most important decisions we've made is what not to put into BRUTAL.

This means we're going to be quite aggressive about maintaining its scope. Pull requests that drift away from a clear purpose will be rejected. That isn't because we don't appreciate contributions, but because adding everything is exactly how the industry ended up with the kind of engines we don't wish to use.

Think of the relationship between the Linux kernel and something like Ubuntu. It's not an exact technical comparison, but it gets across the idea. We provide a technical foundation, and developers build their own systems on top of it.

I'm not suggesting everyone should make their own game engine. I'm suggesting every developer should have the option to do so, without having to spend four years building the foundations first. And without having to surrender so much control over their own work.

RimWorld and the Waylith Engine

On May 1st, Tynan Sylvester, RimWorld's creator, approached me with a problem, and I pitched him the BRUTAL Framework. Since then, Ludeon have been able to leverage BRUTAL to help build their own game engine, called Waylith. You can see for yourself what incredible work they've managed to achieve, in a remarkably short space of time. From that conversation to the announcement was only about five months.

Their team amazingly extracted the last bits of Unity out of RimWorld to create their Waylith engine. Moving such an established game, with a huge modding community, off Unity without anything breaking is extraordinarily complex. I'm enormously impressed with what they've achieved.

I also think this is an excellent demonstration of what BRUTAL was intended to enable. An established studio with a very specific set of problems can take the framework and build an engine designed around their own game, instead of spending years building the underlying foundations.

You can read more about what Ludeon achieved in their Steam announcement.

They report performance improvements of 2 to 4 times in their own tests, with the vast majority of existing mods remaining compatible. The new engine is available right now through RimWorld's unstable beta branch. That's an extraordinary piece of engineering, and I'm very pleased BRUTAL could play a part in it.

Kitten Space Agency

Kitten Space Agency is our free spaceflight simulation game, and the first major project we've built directly using BRUTAL. The inspiration came from Kerbal Space Program, and our desire to take that kind of game further. We wanted to simulate spaceflight at enormous scales, with high precision, complex physics, without compromising what we wanted to do because of assumptions made by a general-purpose engine.

It's also brought together one of the most extraordinary groups of developers I've had the privilege of working with. Felipe Falanghe, the original creator of Kerbal Space Program, helps steer the direction of the project. Stefan Moluf joined us after spending nearly twelve years at SpaceX writing flight software for actual spacecraft. I find it somewhat absurd that we have someone who helped program real rockets now helping us program pretend rockets.

We also have some of the most influential people from the Kerbal modding community. Casper works on our terrain and planetary surfaces. Blackrack, who created Scatterer and helped transform what was visually possible in KSP, works on atmospheric rendering and related systems. Jamie Leighton (JPLRepo), a former lead engineer and QA manager on Kerbal Space Program, brings extensive experience both from developing KSP and creating some of its most important mods.

These are people who have already spent years pushing the limits of what is possible with a game like Kerbal Space Program. Now we're giving them direct access to the underlying technology to do things the way they actually want to do them.

The game runs a solar system at real scale, with complex orbital trajectories, enormous distances, and very different requirements around rendering, coordinates, and simulation. The important part for this announcement is that none of this is built around a traditional game engine. We use BRUTAL and develop the systems that KSA actually needs.

Kitten Space Agency is available as a completely free pre-alpha through Ahwoo. You can download it and see the technology yourself.

Felipe Falanghe, the Creator of Kerbal Space Program

I first met Felipe a long time ago while I was making DayZ, and there was an instant bond over how we felt about the games industry. We reconnected when we started making Kitten Space Agency. Felipe is, in my opinion, one of the most underappreciated developers in our industry. He made one of the most influential games of our generation, with scientists and astronauts referencing it. Yet I don't think he's received nearly the recognition he deserves.

He was also the first outside developer to use BRUTAL. Having his team as external users proved incredibly useful, ensuring the framework is truly agnostic from developer usage. Felipe and I actually spoke with Game Developer about BRUTAL late last year. He has this fantastic habit of being able to explain something very well, especially when I tend to explain things far too emotively.

He described working with BRUTAL as sitting on a bar stool while everyone else using engines like Godot was sitting on comfortable couches. I think that's a fantastic way of describing it.

Perhaps most interesting was how Felipe approached the framework itself. Rather than starting with how an engine expected something to be done, he could start with the problem itself. One example was using high precision coordinates in rendering. With his approach, he explained, "you get to use high precision numbers as far as you can into the game execution."

You can read our interview with Game Developer here.

Felipe is making his next game using BRUTAL. I'm deliberately not going into detail about it because that is his story to tell. And Felipe is the kind of person who is captivating when telling a story. I've seen what he's cooking, and I can't wait for everyone to see it. Having someone with his experience working directly with the framework, challenging our decisions, and approaching problems differently has been enormously valuable.

You are only as independent as your tools

I have watched Unity and Unreal consistently fail to be accountable to developers. And I think this problem could get much worse as agentic workflows begin undermining the competitive advantages that have protected established software companies.

My concern is that as those advantages erode, the companies involved will increasingly look to extract more revenue from developers who feel they cannot switch. Whether through royalties, subscriptions, or more restrictive licensing.

When I attend GDC I often go to the Tencent Summit, where Tim Sweeney, the CEO of Epic, has given keynotes. Tim was, for a long time, a hero of mine. A powerhouse of a programmer with a mind I admired growing up. But over time I became frustrated with how much of the discussion seemed to revolve around the latest buzzwords. The metaverse one year, AI the next. Meanwhile developers were struggling with performance, stability, and the practical consequences of decisions made by engine vendors.

At GDC 2025, during a Q&A, I asked Tim whether he thought Unreal was accountable to developers, particularly around performance and stability. His response was about making more demos and putting them on social media to counter people describing games as "Unreal slop". I interrupted and asked whether more demos were actually part of the problem, because they set expectations with customers about how easy it was to achieve those results. I was not satisfied with his answer, and I continue to believe Unreal is not accountable enough to developers. Particularly when it can take a 5% royalty on game revenue above its licensing threshold.

I don't think developers should have to simply accept that relationship without questioning it.

Unity has had its shares of public issues with developers, enough to warrant a whole essay on. Ironically, even as I write this, Unity developers are dealing with account suspensions related to a mandatory security change. Some have lost access even after following the required process. Unity business decisions have repeatedly sent troubling waves across the games industry.

Imagine your ability to work on your own game depending on a decision made by a company you have absolutely no control over. Now, I don't think any of this means developers should abandon Unity or Unreal tomorrow. For many projects they're absolutely the right choice, and I'm not pretending BRUTAL could replace what they provide. But I think we've created an industry where the default is to become dependent on a few enormous technology companies, and we've increasingly accepted that as inevitable. It isn't inevitable.

I think we're going to see many more frameworks like BRUTAL emerge in this environment. Not because everyone will abandon existing engines, but because the cost of making alternatives is going to fall dramatically. I hope those alternatives are free. BRUTAL won't solve all of the industry’s problems, but for some developers it might offer a lifeboat.

This technology is a small step towards changing the balance of power. If the tools are public, if you have the source code, and if you're free to build your own systems on top of them, you have options. And if one day we stop being accountable to developers ourselves, they should have the ability to fork the framework and go their own way. That's important to me.

You are only as independent as your tools are.

This is how we fight back.

Credit and Licensing

We initially wanted to do something simple, like MIT. But that made us realise that one of the many problems open-source projects now face is what attribution actually means in a world increasingly dominated by AI and agentic development. Credit is, to me, what matters most.

The team who made the BRUTAL Framework are world class. They have backgrounds from some of the biggest and most influential game studios in the world. They're experts in their fields, and they've spent years developing technology that most players will never even know exists. They made this. I want history to remember them. So we've drafted a licence based on MIT, but with additional attribution requirements.

You can use BRUTAL for free, including in commercial games. There are no royalties and we don't want a percentage of your game's revenue.

What we ask is that a game or product built with BRUTAL includes the BRUTAL copyright notice in its credits screen, shows the BRUTAL logo before gameplay starts, and ships the NOTICE.txt file alongside it. If you don't want to do that, we can arrange a separate commercial licence. We can also provide detailed support directly from our engineers. You can contact us about waiving the logo requirement, for example for non-profit projects or where displaying the logo would be detrimental to the application's purpose.

We're describing BRUTAL as open-source, although our custom licence has not been reviewed or approved by the Open-Source Initiative. We recognise there will be discussion about whether these attribution requirements meet everyone's definition of open-source, and I welcome that discussion.

There are already OSI-approved licences that allow certain forms of graphical attribution. We think there is room to explore how attribution should work in an increasingly agentic world, and we intend to develop the licence with community feedback, including exploring formal OSI approval.

I'm not particularly interested in fighting over terminology. I am interested in making the source code and the work of our engineers available for anyone to use, modify, and build upon, without paying us royalties. And I want to ensure the people who made it receive some credit.

Who built BRUTAL

I've talked quite a lot about credit, so I want to acknowledge some of the people whose work has made this possible. I can't name everyone, and I've already mentioned several contributors above, but I think it's important to put some names to all this work.

Our Enterprise team develops and maintains BRUTAL. They have achieved something I'm enormously proud of. Aaron Koolen-Bourke, Benoit Fouletier, Chris Howlett, Craig Warne, Eric Chiu, Hanan Finnerty, Jane Kim, Josh O'Hagan, and Max Johnson. Additional past or occasional contributions from Ghassen Lahmar, Daniel Southon, Simon Brown, Felipe Falanghe, Brogan King, Hadley Patchett, and Max Kooij.

Our Head of Engineering, Rian Drake, brings enormous experience from his work at Grinding Gear Games and has provided the technical leadership and vision behind much of this effort. He is truly extraordinary. Bobby Lever is the Senior Producer helping tie everything together, and Dr Zac Isaac is our Senior Mathematician.

Across the wider RocketWerkz team there are many others. Simon Brown stewards technical development generally, including leading Stationeers and Torpedia, the latter having migrated from Unity to BRUTAL. His talent, skill, and ability are impossible to ignore.

We also have new people joining us from some of the world's largest game companies, bringing their experience to this effort.

I know I've missed people. But I want everyone to understand that BRUTAL is the result of years of work by an incredible group of engineers and developers. I am humbled and proud to work with all of you. When I talk about wanting credit for BRUTAL, these are the people I'm talking about.

Managing submissions on the repo

As a team we've been agonizing over how to approach public contributions, particularly pull requests and issues, in the age of agents. Agentic tools can make individual developers extraordinarily productive. But they can also make it very easy to submit enormous amounts of code without understanding it, testing it, or considering how it fits into a project. This is already overwhelming even large, well-resourced open source projects.

We've come to the conclusion that we simply have to throw ourselves at the problem. So you will be able to submit PRs and issues, and we'll try to figure it out. We're a relatively small team, and maintaining a public framework is going to involve a lot of work. So please be patient with us. Our plan is to see what happens initially, assess the problems, and change our workflows as necessary. I'm more than happy to listen to feedback and change our approach.

What won't change is BRUTAL's focus. We are not trying to build another general-purpose game engine. We're trying to make it easier for developers to make their own.

How to get started

It is ready right now. Here is how you do it.

The source code, the README and the contribution rules are on GitHub: https://github.com/ahwootech/BRUTAL

You will need the .NET 10 SDK, and a Vulkan capable GPU with current drivers if you intend to render anything. Windows and Linux are supported.

BRUTAL ships as NuGet packages, one per library, so you reference only what you need. Create a console project and add Core and Glfw:

dotnet new console -n HelloBrutal
cd HelloBrutal
dotnet add package Ahwoo.Brutal.Core
dotnet add package Ahwoo.Brutal.Glfw

Replace Program.cs with this:

using Brutal.GlfwApi;
using Brutal.Numerics;

if (!Glfw.Init())
    throw new Exception("Failed to initialize GLFW");

Glfw.WindowHint(GlfwWindowHint.ClientApi, 0);
var window = Glfw.CreateWindow(new GlfwWindow.CreateInfo
{
    Title = "Hello BRUTAL",
    Size = new int2(1280, 720),
});

while (!window.ShouldClose)
    Glfw.PollEvents();

Glfw.Terminate();

Run it with dotnet run and you have a window with no graphics API attached. What you add next is up to you. The Vulkan packages give you what you need to write a renderer, the ImGui packages give you a debug UI, Concurrency gives you the job system, and Fmod and RakNet give you audio and networking. The full list of libraries, with what each one is, is in the README.

Questions about using BRUTAL go on the forums. Bugs go on GitHub, with a minimal repro. Read CONTRIBUTING.md before opening a pull request. It covers scope, what we expect from AI-assisted contributions, and the sign-off every commit needs.


r/gamedev • • 3h ago

Discussion It's easier to blame marketing than admit our game might not be good enough

65 Upvotes

I've been thinking about this lately. When an indie game fails to get many players, it's pretty common to hear that the problem was marketing.

And sure, marketing matters a lot. A great game that nobody knows about will struggle to find an audience.

But I wonder if sometimes we use marketing as an excuse because it's easier than admitting that maybe the game itself just isn't that interesting.

Not every game is going to be good, and not every game deserves to be successful just because someone worked hard on it.

What do you guys think? Do indie developers sometimes blame marketing too much, or is getting noticed really the biggest challenge nobadays?


r/gamedev • • 9h ago

Discussion Is sharing gameplay before release a bad idea now?

54 Upvotes

Hey everyone

I’m making a roguelite deckbuilder and I’ve reached the point where I want to start sharing gameplay and showing people what the game is about

But a few things I’ve seen lately have made me nervous

I saw a tweet from a dev making an incremental game where you punch a wall to escape from prison

Someone replied saying they had 20 hours to release it before other people copied it and made way more money

About 7 hours after they shared it someone had already made pretty much the exact same game and released it on Roblox

Another dev I follow was making a game about smashing piggy banks

Before they even released it there were already 7 clones on Roblox and 6 on the App Store

also a gameplay video of a game with a name similar to Needle in a Haystack came out and went viral

(I genuinely lost track of the original because so many people copied it)

now just search in steam for Needle in a Haystack, Needle, or Haystack

I found more than 10 clones all scheduled to release in September or October

And these are just a couple of examples

So is it better to keep your game to yourself until it’s 100% ready to release?

This is my first game and I’ve been working on it for 3 years

I don’t have much experience with this side of things so I’d really like to hear what you think


r/gamedev • • 1d ago

Discussion Drunken Godess Reflux Cancels Demo In Fear Of People Using AI To Copy The Game And Release It Before They Can

Thumbnail
store.steampowered.com
1.0k Upvotes

“We have decided to cancel the public release of the Drunken Goddess Reflux demo, originally scheduled for Monday, October 19, and will instead hold a closed play session for a limited number of participants.

We sincerely apologize to everyone who was looking forward to the demo for making this change so close to the planned release date.

This decision was made in consideration of the following two points:

・We had planned to release the demo publicly with certain restrictions on posting and streaming gameplay videos, but concluded that we are not currently in a position to properly handle and manage those restrictions.

・We are concerned that, based on the content of the demo, works imitating or replicating this game's presentation and gameplay could be quickly produced using AI or other tools and released ahead of the game's launch.

At the same time, we still want to give players the chance to actually play the game before launch.

We will therefore hold online play sessions in a closed environment, open to those who have reviewed and agreed in advance to the participation requirements and the rules on posting and streaming gameplay videos.”


r/gamedev • • 3h ago

Discussion What’s something that professional projects do that you rarely see in hobby projects?

13 Upvotes

What are some of the biggest differences between professional and hobbyist projects in terms of workflow, process, etc?

What’s something that, when you hear a team is doing, you immediately think “those are professionals“?


r/gamedev • • 4h ago

Question Good Game Dev Youtubers?

8 Upvotes

What game dev youtubers are actually good?

Not looking for advice from people that have never finished a game, or any AI bullcrap.

Also, nothing against this but unless it's super interesting I don't care much for the one off videos made to be YouTube videos (clickbait thumbnail, doing 'challenge' sort of stuff)

I just want actual devlogs buy genuine people trying to make something they're proud of and talking about/showing their experience and journey.


r/gamedev • • 21h ago

Question I am an adult woman learning to play video games for the first time, where can I find feedback surveys from developers specific to my experience?

185 Upvotes

Hi all,

I had never played a video game before I started playing Stardew Valley 3 years ago at 27. Since then, I have played lots of different games and explored a lot. During this, I have noticed how much literacy is required to even search for a game. I think I have a unique perspective on gaming and am able to see things from a different perspectives.

There are lots of things in game design that I don't understand- for example visual cues, audio clues can be missed easily; I often talk to everyone and can't tell when something is important.

Another thing I have noticed is the gap in adult games for someone like me who wants to play harder games but doesn't have the technical skills for it. Games with simple mechanics are often too short and simple narratively. The more narratively interesting games don't let you do much more than click around. Sometimes I find games that sound perfect to me but are too hard to play (even on easy mode) and have complicated mechanics.

it feels like I have to be an adult gamer with so much experience to play a good game and smaller, easier games seem to be geared towards children and young adults.

Anyway, I think I could be a useful person for surveys and focus groups. Below is a list of games I have played if it gives you a better sense. Thank you!

LOVED:

  • Zelda TOTK 
  • Zelda BOTW
  • Stardew Valley 
  • Disco Elysium
  • Blue Prince
  • Thank goodness You’re Here 
  • Untitled Goose Game
  • Limbo
  • Inside 
  • Death Road to Canada
  • Split Fiction
  • Overcooked 2
  • A Short Hike 
  • Borderlands 2

IT WAS OKAY: 

  • Spiritfarer 
  • Lego City undercover 
  • A Way Out 
  • It Takes Two 
  • Valheim
  • Firewatch ( got bored)
  •  Skyrim (I just started this recently and I like it but it is not hooking me immediately) 

HATED:

  • Animal Crossing new Horizon 
  • Life is Strange 
  • Moving Out 
  • Unpacking 
  • All stardew like life sims (but I haven’t tried Harvest Moon or any of the OGs yet)

I liked these but there was something that didn’t work for me 

  • Dave the Diver (too much to manage, I am stressed)
  • Abzu (idk how to swim)
  • Ori and the blind forest (too hard) 
  • Baba is You (UGH THIS GAME so good, i’m too stupid)

r/gamedev • • 5h ago

Discussion Guiltwood: 2 years of solo dev after 20 years in corporate IT

4 Upvotes

Hey Everyone,

Ive been lurking on this subreddit for years, mostly reading advice, finding resources, and watching other peoples post mortems. For the past two years, Ive been working solo on Guiltwood: a turn based 2D survival RPG with Slavic folklore and psychological horror elements.

Im planning to write a couple of technical posts over the next few days to share what I learned building the systems, but first I wanted to introduce the project and how I ended up here.

My journey with games started a long time ago. I still remember making an ASCII rocket on a Commodore 64 at the beginning of elementary school. The rows moved up faster and faster on the screen, to me back then, it was pure magic ; )

Later I played around with the Shoot-'Em-Up Construction Kit on the C64. I was maybe 11 and barely understood English, so I never figured out how to save to tape. That meant I had to start over and build a new game from scratch every single day. Honestly, maybe it was even more fun that way back then.

Eventually life took over. I went into hardware and software, made a few simple games at university, and then spent 20 years making a living in corporate IT. But I never stopped playing games, especially ones with deep systemic mechanics and mod support. Because of modding, I was always tweaking games to fit my vision anyway.

After two decades in IT, I had that classic reality check: I spent most of my life doing what was expected of me, rather than what actually gave me meaning. I had accumulated all these software skills, I still loved games, and I realized this was probably my last real chance to build something that mattered to me.

So I installed Godot and started from scratch: learning tilemaps, scenes, turn based logic, and movement. But my engineering brain immediately took over, and I asked myself: why is almost nobody doing true 3D style directional shadows in a top-down 2D game?

Now I know why ; ) It took me 3 months down a massive rabbit hole of viewports, raw data maps, and custom shaders. But I learned a ton, and I actually got it running.

At first I thought: maybe I will get bored in two weeks. But two weeks became two months, then six months, and now Im two years in and still going steady.

The biggest surprise was how much hidden work a simple game mechanic hides. For example, you decide: "I want the player to chop down a tree."

So simple...

Except: you need the tree to block movement. You need the player to walk near the tree. You need a chopping animation. Okay, the tree needs HP, and the axe needs a damage type and durability. Then you need persistence so the felled tree stays down when a chunk unloads. Then you need the tree to physically fall, which means a falling animation, an entity despawn, spawning wood logs, figuring out scatter placement based on fall direction...

Suddenly a 'simple tree' is 2 weeks of architecture. But for me, that problem solving is the best part. Thats exactly what keeps me motivated.

I recently brought a playable prototype to the Swiss Game Conference. Seeing strangers actually sit down and play something that didnt exist two years ago was incredibly rewarding, but it was also a massive reality check. I realized quickly that while I can handle programming, shaders, and systems, I cannot do capsule art, music, and sound design alone unless I want to release the game in 2050 ; )

That realization led me to connect with the Midlife Crisis Indie Game Dev Community, a group of devs in similar life situations. Solo dev is isolating, and talking to people dealing with the exact same doubts, energy dips, and scope issues completely changed my perspective.

This looks like a beginning of a new chapter, or the next level where I already know the basics and the rules, but I am no longer traveling that path alone.

Sorry for the long post ; ) Just wanted to finally step out of the shadows, say hi, and hopefully give some encouragement to anyone sitting in an office job wondering if its too late to start.

TLDR:

Spent 20 years in corporate IT, had a reality check, and started learning Godot to build my own game. Two years in, realized I cant do everything completely solo and found a community so Im not traveling the path alone anymore. Just stepping out of the shadows to say hi.


r/gamedev • • 1h ago

Question Do you need a gpu to make games?

• Upvotes

Just wondering if i can run any engines on my thinkpad t470 laptop which dosent have a gpu. Is GPU actually needed or is it possible to make games without one? im also up for suggestions on what runs without a gpu.


r/gamedev • • 16h ago

Discussion I wish more devs added bots in coop games

31 Upvotes

I know it isnt a feasible feature to add depending on certain design constraints, like say on a more narrative or puzzle focused coop game. But for other kinds, like survival-crafting or combat and adventure focused, having the option of a CPU controlled companion character is such an underrated positive feature for players who tend to play solo. We're in a "coop golden age" of sorts and yet only a small minority of them have such feature.

Ideally, you'd be able to give commands such as gather that resource, move these there, build this, stay close or far, use melee or ranged etc.

And I mean, just to cite 1 great example, the OG Left4Dead had this feature in the 00's. Granted the bots were often quite dumb, but they were decent enough for solo play.

Then you have more modern example such as Dragon's Dogma, where you can have 3 companions for the whole game (called pawns that are also fullt customizable) and they can be quite competent, if a bit silly once in a while. This very game made me appreciate such feature, it makes for very fun and immersive gameplay where othereise you'd be playing alone.


r/gamedev • • 3h ago

Question Help with Steam Language Setup

3 Upvotes

Hey everyone!

I’d like to ask for some help with uploading my game to Steam in multiple languages. I know this isn’t the most ideal way to handle localization, but each language has its own .exe and separate game files. Due to some development limitations, I wasn’t able to add an in-game option to change languages.

What I’d like to do is let players change the language through the Steam Properties menu, while also having Steam automatically download the version that matches their default language.

From what I understand, this is possible, but I’m not sure how to set it up. Could someone please walk me through the process step by step? I’d really appreciate the help!


r/gamedev • • 4h ago

Question Implementing combat in narrative focused game where outcome does not mean "Try again" or "Continue"

3 Upvotes

I have a question to you gamedevs out there.

Me and a couple of friends are making a game that is a 2D visual novel + minigame focused game, and are experimenting with having some kind of "combat" mechanic that will appear every now and then for characters you cross paths with, contrary to some minigames that only appear as basically "one-offs".

We have have decided that basically every kind of challenge or minigame will progress the story, no matter what outcome you have (even if you fail at hacking a computer for example, the story will progress in another way, you are not going to be eternally stuck at trying to win "THAT DAMN HACKING MINIGAME").

Now, we still want to have some "challenge" in the game, even if the stakes are low in some sense.

That is why we wanted to add a combat mechanic, so that there is a familiar minigame across the entire game that you will revisit, with different and new opponents with different types of movesets and battler behavior.

The problem with this is that, as i said, there are very low stakes if any. So it might not be that interesting?

The general idea we have so far is something similar to Pokémon / Slay the spire / Final Fantasy, it will definitely be turnbased with our own twist and you should be able to somewhat "craft" your own playstyle for this "combat" minigame, meaning you could pick up items and learn moves from other NPC's etc...

We either want to go with symmetrical gameplay (Pokémon) or asymmetrical (Clair Obscur, reaction minigame based etc)

But I guess my question is; what would make this combat feeling interesting and "thrilling" to play if you know that the story will continue no matter what?

In Pokémon, part of the thrill is to know that Cynthia WILL put out her garchomp and he will start to sword dance until he sweeps you, like he did the 2 previous runs, but you have to beat Cynthia before entering the hall of fame and beating the game, for example.

Does anybody have any advice or ideas for implementing something like this? Is combat possibly the wrong approach in this kind of game?


r/gamedev • • 6h ago

Question Do you setup a content ID for your own licensed music for your games?

5 Upvotes

Recently I paid a few freelancers to make music for my game and setup a contract so only I have exclusive rights for the tracks. Now I read about content IDs that you can put on a track and setup some rules for content creators that use your track. For example you could flag someone or even take some monetization.

I got these tracks now and I should be good to go. Youtubers can record some gameplay and publish it on their channel without any problem. BUT what if someone else claims a content ID to a track which is owned by ME unrightfully. All the videos by youtubers get flagged and forced to be removed until I convince youtube that im the rightful owner.

Am I just overthinking or should I setup a content ID myself. Do you have experience with this?


r/gamedev • • 3h ago

Discussion Do you think this idea makes sense?

2 Upvotes

Unlike typical sorting games, our game Island Sort lets you compete against other players to see who can sort the fastest, climb the leaderboards, and challenge your friends in competitive race modes.


r/gamedev • • 4h ago

Question After 2 years my game's demo finally went live

2 Upvotes

After 2 years of development and a long break, my game's demo finally went live yesterday.

For those 2 years, I imagined launch day being huge, flashy, and unforgettable. But behind the scenes, it was mostly me rushing around, shouting at the team to wrap everything up before release.

The actual launch felt nothing like I had pictured all this time. It was strangely... normal. Surreal, even.

Has anyone else experienced this? You spend years imagining a milestone, only for it to arrive and feel completely different from what you expected.


r/gamedev • • 35m ago

Discussion What do you think of my game concept/execution?

• Upvotes

Hello fellow devs! I am working on a game called Enrooted (Steam page if you want to see what it looks like before commenting: https://store.steampowered.com/app/5134100/Enrooted/?beta=0 ). It is a rhythm RPG hybrid where you fight with music in turn-based battles. There's also a story I've been crafting (with lots of lore), an Earthbound-style art and music style, and unique bosses. Of course, some of this, at the current moment, is hypothetical, as I haven't made all the game yet, only most of the demo. I think the demo is shaping to be really good music, story, and mechanic wise, with the art being good enough as long as the other things are the main focus. My aim is to craft a game that isn't revolutinary per-se, but a story and characters that players can enjoy and remember, and harkening back to the Earthbound-style retro with a rhythm combat twist. I'd love feedback on the concept and its execution thus far.


r/gamedev • • 22h ago

Question Indie devs: is Mac support actually worth it for a Steam game?

48 Upvotes

For those of you who have released a game on Steam, how much of your player base is actually on Mac?

We’re currently wondering if it’s worth spending the time and resources to make our game Mac compatible, or if the audience is too small to make a real difference.

Would love to hear your experience, especially if you’ve released both a Windows and Mac version.


r/gamedev • • 4h ago

Discussion Our Defender of Darkness demo stats

2 Upvotes
  • 4491 players
  • 44 min median playtime
  • 89 min average
  • 83% played 30+ min

I compared these with Chris Zukowski’s 2022 benchmarks: 14 min overall median, 38 min for his “Gold” revenue tier. Ours looks promising, but I’m not sure how well 2022 data reflects today’s demos.

Share your demo stats: median playtime, player count, and genre. Let’s put together an updated benchmark!


r/gamedev • • 1h ago

Question How do I advertise a really cool thing about my game without make people think that "this is all my game is about"?

• Upvotes

I'll not include any links because this is not a promotion topic. I made a roguelite game where instead of cards like Balatro, or dices like Dice A Million the "currency" of the game is weapon skins, like CS weapon skins.

Not to brag or anything, but tested the beta with over 50 people and got really positive feedback. Gameplay loop is different and fun.

My game has over 151 adhesives (like Balatro jokers) and DOZENS of possible builds, with multiplayer on the way. It also has several fun mini-games, slot machines, and different ways to achieve your goals while you play. So a really good game overall, although I know there is people who don't like things, which is what taste is for.

But my game has a "special gimmick": I made a system that has A LOT of skins (about 12 trillion combinations) and it has a stupid low chance for anyone to have the same skin as you, and the skins are really good looking and may be a pleasure to inspect in 3D for a lot of people. I'll not dive deep into this otherwise the post may get too long.

However, everytime I try to create a post or video about this, I get flooded with comments like: "oh so your game is just about getting different skins than your friends? pass"

Like how I get people to understand this is just a cool and different gimmick for a game to have and the game is not just about having a unique skin without making an essay?


r/gamedev • • 1h ago

Discussion A reset-rule test for game-project notes, demonstrated in PlayWeld (free/open source)

• Upvotes

I'm PlayWeld's creator. It's a free Apache-2.0 desktop workspace built on Eclipse Theia, and it's still a testing prerelease. I used a disposable Godot project for a Windows walkthrough to make the notes/files/search workflow concrete.

The test case is small: collect three lanterns, then press R. The design record says the counter should return to 0/3 and the player and lanterns should return to their starting positions.

Here's a check you can use with any notes setup:

  1. Put the intended rule in a specific record. In this fixture, that's docs/DESIGN.md, beside the implementation at game/main.gd. Include the observable result, not just "fix reset."
  2. Search for "reset" and read the surrounding rule. Finding a matching word is only the first step; check whether the result describes this game's reset behavior rather than an unrelated setting.
  3. Record an actual run separately: engine version, steps performed, observed counter and positions, and pass/fail. A saved note, search result or impact preview does not establish that the game passed.

The recorded PlayWeld workflow shows saving a note, organizing a discussion checklist, local lexical search and an impact preview. It does not demonstrate AI/Swarm task execution or native engine integration. Engines are installed separately; optional external AI providers can charge and receive project context.

The takeaway is to keep a retrievable design rule and a dated observation distinct. Plain Markdown can serve that purpose too. How do you prevent an untested decision from being mistaken for a verified result when returning to an old feature?

Walkthrough: https://playweld.com/#demo Source: https://github.com/scarecr0w12/PlayWeld


r/gamedev • • 11h ago

Discussion At gaming booth. Should I give a verbal instruction to the tester/player?

5 Upvotes

The game is a turn-based JRPG. It has a unique and untraditional battle mechanism for invoking skill and how debuffs are applied.

I do consider my main target audience to be the person who is comfortably playing JRPGs.

Based on my experience, I prepared a printable one page like manual and have the people in line reading it as they wait for their turn.

Nothing fancy, just explaining the core mechanism and the UI.

But something I do feel an incentive to talk and give verbal instruction or clues while the tester is playing.

I tend to do it more when I notice that the player is not used to playing the game genre.

But sometimes I feel that staying silent, looking at their faces, and observing their reaction would give me more information about their reactions when engageeith the game.

I do something find it more informative than asking them afterward.


r/gamedev • • 2h ago

Discussion Building a hint / auto-solve button with A*: an 8-puzzle walkthrough with code

1 Upvotes

I'm on the Myth Engine team. This is one of our free tutorials with the engine taken out, so it works in any engine. The code is plain JavaScript.

Picture a brass frame on a dark wooden table. Eight cream Tiles sit in it, out of order, around one empty square, the Blank. A card beside the frame shows the Goal: 1 2 3, 4 5 6, 7 8, and the Blank last.

5 4 2
7 _ 3
8 1 6

You can slide the Tiles home by hand. Or you can press Solve. A count on the card climbs to 20, and the Tiles stay still. Then they start to slide, one after another. Twelve Moves later, the Board matches the card. No shorter way exists.

That's A* Search, and this post builds it in five steps, from the Board to the Solve button.

1. The whole Board in one value

Read the Board the way you read a page. Go along the top row, then the middle, then the bottom, and write a 0 for the Blank. You get 542703816, and that's the Board State. The Goal is 123456780, the Tiles in order with the Blank last.

Each place on the Board is a Slot, numbered 0 to 8 in the same order. A Move is one Tile sliding into the Blank. In the string, it's a swap of two characters.

Why keep it so small? The search will write down dozens of Boards and check each new one against the rest. One string is quick to copy and quick to compare, and it works as a key in a Map. The Tiles on screen only show this value. They never decide where they are.

const GOAL = '123456780';

// rows + columns between two Slots (0 to 8, in reading order)
const slotDistance = (a, b) => Math.abs(a % 3 - b % 3) + Math.abs(Math.floor(a / 3) - Math.floor(b / 3));

// the Board after the Tile in fromSlot slides into the Blank in blankSlot
function boardAfterMove(board, fromSlot, blankSlot) {
  const tiles = board.split('');
  [tiles[fromSlot], tiles[blankSlot]] = [tiles[blankSlot], tiles[fromSlot]];
  return tiles.join('');
}

// every Board one Move away, in Slot order
function neighbors(board) {
  const blank = board.indexOf('0'), found = [];
  for (let slot = 0; slot < 9; slot++)
    if (slotDistance(slot, blank) === 1) found.push(boardAfterMove(board, slot, blank));
  return found;
}

2. Refuse a puzzle with no answer

Swap the 7 and the 8 on a solved Board, and you get 123456870. It looks one Move from done, but no amount of sliding will ever finish it.

The reason is a count. Read the Tiles in order, and skip the Blank. A pair where the bigger number comes first is an inversion. The Goal has none. Your puzzle has 14, and 123456870 has 1.

A Move never changes whether that count is even or odd. A Tile sliding left or right keeps the reading order. A Tile sliding up or down passes two others, so the count changes by 2, or not at all. Your puzzle's 14 is even, like the Goal's 0, so it can get there. On a 4x4 Board, the Blank's row joins the count.

// pairs where a bigger Tile comes before a smaller one (the Blank doesn't count)
function countInversions(board) {
  const tiles = board.replace('0', '');
  let inversions = 0;
  for (let i = 0; i < tiles.length; i++)
    for (let j = i + 1; j < tiles.length; j++)
      if (tiles[i] > tiles[j]) inversions++;
  return inversions;
}

const canReachGoal = board => countInversions(board) % 2 === countInversions(GOAL) % 2;

A puzzle made by random Moves away from the Goal can always be solved. Every Move can be undone.

3. A notebook and one rule

The search keeps a notebook. Every Board it finds gets a line with two numbers in it. The first is its Moves so far. The second is the Estimate, a guess at how many Moves are still left before the Goal. Add them, and you have the line's score.

The Estimate comes from the Tiles. For each one, count the rows and columns between where it sits and where the Goal wants it. Tile 1 is 3 Slots from home. Tiles 5 and 4 are 2 each, and the other five are 1 each. That makes 12.

A Move slides one Tile one Slot. So no Route can take fewer Moves than that count, and the Estimate never guesses too many. Hold on to that. It's what lets the search stop at the Goal and be sure.

// Manhattan distance: each Tile's rows + columns from home
function estimateMovesLeft(board) {
  let total = 0;
  for (let slot = 0; slot < 9; slot++)
    if (board[slot] !== '0') total += slotDistance(slot, GOAL.indexOf(board[slot]));
  return total;
}

Now the rule. Each Step, take the open line with the lowest score, and Expand it. Close that line, and write down every Board one Move away. Textbooks call the Moves so far g, the Estimate h, and the score f = g + h.

Your puzzle's first Step finds four Neighbors. Tile 4 sliding down and Tile 1 sliding up each bring a Tile nearer home, so they score 12. Tiles 7 and 3 move a Tile away, and they score 14.

Three small choices decide whether this works. On a tie, the lower Estimate goes first, then the line written first. The Goal is accepted when it's picked, not when it's found. And the notebook has a limit.

The middle one surprises people. The Goal turns up on Step 20, as a Neighbor. The search doesn't stop there. On Step 21 it picks the Goal as its best open line, and only then accepts it. Every score is real Moves plus a guess that's never too high. So when the Goal has the lowest score, nothing left in the notebook can be shorter. Stop at the first sighting instead, and the Route you return may not be the shortest.

The limit is 4096 lines. Your puzzle writes 35. A search that would need more stops and asks for a new puzzle, so the game never freezes.

function createSearch(start, estimate = estimateMovesLeft, maxStates = 4096) {
  // the notebook: one line per Board, in the order they were written (a Map keeps that order)
  const notebook = new Map([[start, { movesSoFar: 0, movesLeft: estimate(start), parent: null, isOpen: true }]]);

  // one Step: returns 'searching', 'found' or 'stopped'
  function step() {
    let best = null, bestLine = null;
    for (const [board, line] of notebook) {
      if (!line.isOpen) continue;
      const score = line.movesSoFar + line.movesLeft;
      const bestScore = bestLine && bestLine.movesSoFar + bestLine.movesLeft;
      // the lowest score wins; on a tie, the lower Estimate; then the line written first
      if (!bestLine || score < bestScore || (score === bestScore && line.movesLeft < bestLine.movesLeft)) {
        best = board;
        bestLine = line;
      }
    }
    if (!best) return 'stopped';           // nothing left open
    if (best === GOAL) return 'found';     // the Goal is accepted when it's picked
    bestLine.isOpen = false;
    for (const next of neighbors(best)) {
      const movesSoFar = bestLine.movesSoFar + 1, seen = notebook.get(next);
      if (seen) {
        // a Board seen before keeps its line, unless this way there is shorter
        if (movesSoFar < seen.movesSoFar) Object.assign(seen, { movesSoFar, parent: best, isOpen: true });
      } else if (notebook.size < maxStates) {
        notebook.set(next, { movesSoFar, movesLeft: estimate(next), parent: best, isOpen: true });
      } else return 'stopped';               // the notebook is full: ask for a new puzzle
    }
    return 'searching';
  }

  return { step, notebook };
}

4. Follow the footprints home

The notebook never stores a Route. Each line remembers one more thing: the Board it was reached from, its parent. The parents are a trail of footprints. They lead one way, backward, from the Goal to your puzzle.

So start at the Goal. Follow parent to parent, then read the trail the other way round.

// follow the parents back from the Goal, then read the trail forward
function route(notebook) {
  const boards = [];
  for (let board = GOAL; board; board = notebook.get(board).parent) boards.unshift(board);
  return boards;
}

const search = createSearch('542703816');
let result;
do result = search.step(); while (result === 'searching');
console.log(result, route(search.notebook).length - 1);   // found 12

Your puzzle's Route has 13 Boards, so 12 Moves, and the Tiles slide in this order: 1, 8, 7, 5, 4, 1, 5, 4, 1, 2, 3, 6. A breadth-first search agrees that nothing shorter exists. That list is your hint button too: show the first Move, or play them all.

5. Solve is a finger on the Step button

Solve makes no new kind of search. It presses Step for you. Every 0.05 seconds it presses up to 8 times in a row, and the count reaches 20 before your eye can follow it. Once the Route is found, each Step slides one Tile, so the finger lifts while a Tile is still sliding. Pause stops the timer, and nothing is lost.

// a sketch: takeStep() is one search Step, or one slide once the Route is known
let timer = null;
function solve() {
  timer = setInterval(() => {
    for (let i = 0; i < 8 && !tileIsSliding(); i++) takeStep();
  }, 50);
}
function pause() { clearInterval(timer); timer = null; }

Each Step leaves the notebook whole. So the search can stop between any two Steps and carry on later. Step, Solve and Pause share one path through the code, and a bug shows up the same way in all three. A slow Solve, one Step every half second, lets you watch the search work.

Does the guess matter?

Try a weaker Estimate, Misplaced Tiles. It only asks each Tile whether it's home, and every Tile that isn't counts 1, however far away it sits. For your puzzle it guesses 8, where Manhattan guessed 12.

Both guesses are honest, so both find the same 12-Move Route. But Misplaced Tiles says less. More Boards look as good as the best one, and the search has to check them before it can be sure. It checks 84 Boards instead of 20.

// Misplaced Tiles: 1 for every Tile that isn't home
const misplacedTiles = board => [...board].filter((tile, slot) => tile !== '0' && tile !== GOAL[slot]).length;

createSearch('542703816', misplacedTiles);   // checks 84 Boards instead of 20

This search reads the whole notebook on every Step to find the best line. At 35 lines that's fine, and you can still follow every Step. A notebook thousands of lines long wants a priority queue instead, a structure that keeps the open lines sorted.

The full version

The tutorial this comes from builds the whole game in five chapters. Each chapter ends with a playable build in the browser. You can press Step yourself and watch the count climb before you build it. It's made in Myth Engine with visual Logic blocks. Its chapters follow the steps above. The tutorial is free, and you can finish it in the engine's free version. Exporting a finished game needs the paid full version.

8-Puzzle Solver: Learn A* Search by Building a Sliding Puzzle Game

How do you handle hints in your own puzzle games? A live solver like this, solutions worked out ahead of time, or hints written by hand?


r/gamedev • • 9h ago

Question Is it normal to spend more than 50% of development time on game balancing?

2 Upvotes

I made a few games that are not really demanding in terms of the audio/visual layer but focus more on the game mechanics. In my previous 2 games, game balancing took like 30-40% of the development time. The current one - more than 50%.

It is much more reliant on synergy, RNG, and building blocks (it is something like a roguelite deckbuilder), so imho it is reasonable that I had to focus on it more, but I started to wonder if it is normal and maybe find a better approach before sitting down to balance my next game.

To make it clearer how I worked on it:

I use spreadsheets and rely on math to model the progression (btw, there is a nice text about math in incremental games I found if someone is interested: https://www.sirpinski.com/the-math-of-idle-games-part-i/ ), but the more randomness, mechanics, and content there is, the more I have to play it manually and rebalance selected builds/parts of the game after adding or changing content.

The game building blocks are split into groups, let's call them factions, which interact and synergize with other factions in many different ways. At the beginning, I added 20% of the planned factions and balanced them together to have some baseline. Balancing started with some spreadsheets to put in initial values, but most of the time I ended up playing the game, changing them manually, and replaying the selected parts of the game again. I used cheats to speed up the process where I could + played at x10 speed.

After that, I moved to adding the rest of the content. Each new faction was balanced separately + against the other factions that heavily interact with this one. Along with that, there is a metaprogression that unlocks the more you play, so I had to think about it too.

After adding all of the factions, I started playing in a progression order that all players would play, and balancing the game as a whole while doing that. I think that this part was the longest one, as there were a lot of things I missed while balancing factions separately. In some places, I had to rebalance big chunks of the early content because of the content you unlock later. Because of that, I started to be very careful with new features I came up with after hours of playing, mostly to not break the balance I worked so hard on.

I think that the balance is ok now, but based on my experience, players will prove me wrong, and I will have to polish it after getting more feedback. Ofc I didn't test it alone, as I am biased as a dev, and I can't rely on my own opinion when it comes to the difficulty of the game. There were a few testers involved in the process.

It took so long, though, solely because of the game balancing. The game took a year of work in my spare time, and more than 50% of my time was spent on game balancing + hundreds of hours of players beta testing the game on their own, sharing feedback and retesting it after my updates.

Am I doing something wrong, or do games like, idk, Slay the Spire just spend so much time on balancing? Do you have some techniques/experience you would like to share to help me speed up the process in my next games? Thank you in advance, and have a nice day!


r/gamedev • • 3h ago

Marketing A streamer's playtest playthrough got me 50+ wishlists in ONE DAY

0 Upvotes

Hi guys, I'm beside myself right now. I've been trying to market my game with short form content for a good month now and it has been hell of a learning phase!

--

As most of you know, marketing can be a very frustrating and demeaning task when you see your videos/posts get no traction.

  • Reddit posts (mostly) yielded 1 or 2 upvotes and no wishlists
  • Short form content on tiktok, youtube, and instagram would get decent views around 3k but only yield about 5 wishlists per post
  • Playtesters through player.gg have probably yielded the most wishlists up to this point.

UNTIL TODAY!!!

I reached out to a streamer on twitch that was live and had around 100 viewers watching and asked if he was interesting in playing the playtest and he queued it up! I've done this a few times, but mostly with smaller streamers.

Today, I searched my game on YouTube and saw that he POSTED the 1 hour playthrough on YouTube 17 hours ago!! The video currently has 100 likes and 6k views and has a really good thumbnail ( that I didn't make or provide half the assets in my press kit ).

I got nervous and refreshed my forever-open chrome tab for wishlists where it jumped from 155 to 202!!!!!!!

Here is the video: https://youtu.be/rjI-3hjEfDs?si=Bg-YOZHXjLg-CmCB

--

While I enjoy making short form content and posting videos, I haven't experienced a surge quite like this. I have been trying to be patient and be okay with my game, which I think is quality, not immediately appealing to my target audience. This post just solidifies that some games go viral from short form content and some go viral based on gameplay/streamers. My game just happens to be the latter. Our demo will be out about 1.5 months so we will double down on streamers.

I will continue to make short form content to see if I can maybe crack the code, but if any devs out there are worried about not immediately getting traction but feel their game is good, maybe streamers are the key.

Game name: The Final Lane

Let me know if your game had a similar experience with a slow start to promotion and what helped you!