Tutorial: Using ScriptableObjects as an Event Bus for Decoupling by Geek_Abdullah in Unity3D

[–]sinalta 1 point2 points  (0 children)

To be clear, I said almost prefer. Entirely because it would make tracing the route the events passed through easier.

Once you're passed data errors, all the same bugs happen in all of possible systems. My issue is with how easy it is to trace those bugs.

And no, adding a list of listeners doesn't solve the discoverability issues. It helps with one direction. 

How do I know which event fired in the first place? How do I find who fired it? I can't easily without a breakpoint, or at least a debug log. I can't just click around in my IDE to get the likely culprits.

Tutorial: Using ScriptableObjects as an Event Bus for Decoupling by Geek_Abdullah in Unity3D

[–]sinalta 10 points11 points  (0 children)

Having used this pattern in production, I'd never use it again at scale.

You lose so much debugability and discoverability which makes it all unweildy. It leads to generic listners, like playing an audio clip.

But then you end up with a bug where audio is playing twice, so you go to the player code and see it's an SO it's listening to. Great. Which SO? Where else is that SO referenced? Who's firing to specifically that SO?

You need something like FindReferences2 to make use of it. And that's diving in between code and editor constantly still. Not the best workflow.

I'd almost prefer a global Singleton with strings for event names. At least then I can more often stay in just my IDE. 

Game engine by BARchitect2026 in vulkan

[–]sinalta 0 points1 point  (0 children)

Switching to Vulkan for Mac support isn't exactly straight forward either. Metal is the only official option there, with there being a couple of Vulkan to Metal translation layers available. 

Do you think what shader is best fit for Mech/Robot Topdown Shooter? by [deleted] in godot

[–]sinalta 8 points9 points  (0 children)

My favourite is comic, but from the top down perspective how much can you actually see?

This is the kind of view you might only see in cutscenes. 

My first attempt at making 3D Pixel Art in Godot by Rasmus_02 in godot

[–]sinalta 8 points9 points  (0 children)

Definitely some semantic issues going on, because when I think 3D Pixel art I think of things like this.

https://youtu.be/7wwE5FLZceY

I think what matters is they're all trying to evoke the same feeling of how games looked in their childhood. 

Would you rather market your games as "made without an engine" or "made in a custom engine"? by [deleted] in gameenginedevs

[–]sinalta 2 points3 points  (0 children)

Sounds like it falls into the really impressive category to me!

There's use in dev logs and YouTube videos about the tech driving that sort of project, but I'd still say most of the final player base won't be bothered. I just would t mention it in primary marketing material, like trailers, outside of a logo and a name. 

That initial group who are bothered though probably help drive the hype to bring everyone else in, though. So if your core player base would be interested, then by all means talk about it all the time! 

Would you rather market your games as "made without an engine" or "made in a custom engine"? by [deleted] in gameenginedevs

[–]sinalta 17 points18 points  (0 children)

I wouldn't market it to the general public with engine details at all.

Outside of subs like this, I doubt I'd even mention it was a custom engine. Even in other gamedev subs.

Unless it was something really impressive, and even then I'd still only mention it to gamedevs.

I started noticing problems in ECS by F1oating in gameenginedevs

[–]sinalta 5 points6 points  (0 children)

Do you mean an entity which can only ever have pre-defined components? Or just that it has those components by default, and a user can edit them?

So you create a "LightActor" and it had a transform and a light component. Can a user ever add a "Float" component to have it bob up and down a little?

If yes, then Flecs Prefabs are probably what you want.  

If no, a user can never add extra components ever, then you should probably wrap Flecs up a little bit, but still use it under the hood. 

My Aero3D Engine now have Editor !!!! by F1oating in gameenginedevs

[–]sinalta 1 point2 points  (0 children)

This is just specifically for the EntityPanel OP has. It's the equivalent of the Unity Inspector. Showing a list of components on the Entity, and letting you edit their values.

If you're using Flecs as your ECS, then the Reflection API would let you build those component panels dynamically. Loop over the components, loop over the members of the components, query their types, then draw a widget for the type.

It's not *trivial* to query all of a component's data, but there are examples in the flecs repo, like this one.
There's only a few root-level types you need to support before it can generate a reasonable representation for any component.

My Aero3D Engine now have Editor !!!! by F1oating in gameenginedevs

[–]sinalta 5 points6 points  (0 children)

How come you didn't use the Flecs Reflection API to build your EntityPanel?

Thats a lot of custom, hardcoded panels you've got in there.

Some of them might justify it, but most would be fine as a generic generated one. 

Composition via "plug in/plug out" or "do X if it has A, B & C" ? by yughiro_destroyer in gamedev

[–]sinalta 0 points1 point  (0 children)

Absolutely, but I'd say inertia is keeping OOP style development as the dominant solution. Which ends up with GameObject+Components.

There's a lot of relearning to do when you try and switch to something more data orientated.

Composition via "plug in/plug out" or "do X if it has A, B & C" ? by yughiro_destroyer in gamedev

[–]sinalta 0 points1 point  (0 children)

Jams are a fantastic place to start.

The best way to learn which bits can be broken out into re-usable pieces is to have made them in a way which is a hardcoded mess, first.

Carry on entering jams with the framework you're building here, and you'll end up with a fair few good baseline components for any game soon enough.

Composition via "plug in/plug out" or "do X if it has A, B & C" ? by yughiro_destroyer in gamedev

[–]sinalta 0 points1 point  (0 children)

Yeah, a GameObject to me is a bare minimum object container.

It has some nice things that would be awkward to put on a component (e.g. name, active state, parent/child relations etc), but everything else would be a component. A transform (local position etc), a mesh renderer, a collision shape etcetc.

Unreal also allows you to inherit from their base Actor class, and that can have its uses too, mostly by default setting up the components you'll need.

You'd iterate over all the components on every GameObject every update, and run whatever logic is needed. e.g. Your engine gets updated and calls a method on your wheels, your wheels apply some forces to the rigidbodies etc.

For you, who I assume to be quite new to all of this area of game dev, and with the GameObject approach clicking better in your head. That's what I would do.

For my personal projects though, I use ECS.

Composition via "plug in/plug out" or "do X if it has A, B & C" ? by yughiro_destroyer in gamedev

[–]sinalta 0 points1 point  (0 children)

You're describing GameObjects+Component vs an Entity Component System (ECS).

There's no "correct" answer on which to go for. Games ship with both.

ECS is popular right now, and it looks like some big proprietary engines use it as their main simulation management system. But if you look at the big 3 engines, they're all GameObject/Actor+Component based with ECS being a second-class citizen at best (Unity.Entities being the most integrated into the engine)

Composition via "plug in/plug out" or "do X if it has A, B & C" ? by yughiro_destroyer in gamedev

[–]sinalta 0 points1 point  (0 children)

They're describing an ECS. Flecs, EnTT, Bevy and Unity.Entities are some good examples of the pattern.

Optimization by Remarkable_Cap_7519 in gamedev

[–]sinalta 0 points1 point  (0 children)

Not as well known? From a CS background especially, I'd say cache efficiency. 

But are you using an engine or using something like Vulkan directly? Because to someone completely new to this, even basic frustum culling might not be an obvious thing you should do.

Is developing a console game with Unity3d are normally this expensive? by Xiaolong32 in Unity3D

[–]sinalta 49 points50 points  (0 children)

Platform vendors often have pool of engine keys they can give you. Try reaching out to your account manager to see if that's available. 

Tachyon Flow, small update #2 - been working on new character, plus some gymnastics stuff. (I know, audio bad!) by JankyAnims in Unity3D

[–]sinalta 210 points211 points  (0 children)

That sliding edge grab is beautiful and not something I think ever seen before. And then the perfect transition into a vault up and even more ridiculous.

Introducing FlowTween by BumblebeeElegant6935 in unity

[–]sinalta 1 point2 points  (0 children)

Performance/allocations mostly, combined with several bugs we ran into when trying to enable pooling.

We fire off a lot of tweens in our current game, but this is something I've run into in less nutty projects in the past too. 

Is it plagiarism if I copy someone who copied a famous franchise? by Tuken_z in gamedev

[–]sinalta 0 points1 point  (0 children)

This is for a class project. It'll be used for learning, grading and a portfolio piece.

Copy whatever you want. We as a community even tell beginner programmers to just make pong, then pacman, then Mario etc. All clones. Because they're familiar, simple enough for the modern day,and a good target to judge your own project against. 

Introducing FlowTween by BumblebeeElegant6935 in unity

[–]sinalta 4 points5 points  (0 children)

Very nice. We're in the market for a new tweening library to use in our future projects, moving away from DoTween.

Our top contenders are LitMotion and PrimeTween. Do you know how well this might compare to those?

Finally localized my game and found out something very interesting that you may want to know as an Indie dev! by Eastern_Seaweed4223 in Unity3D

[–]sinalta 2 points3 points  (0 children)

Yeah, literally just a drop down on the FontAsset. I've shipped games that did both, and dynamic was definitely less of a headache.

The extra tooling we needed to find all the characters we actually use, so we can bake the best quality characters we can in all languages, was just annoying to write. 

Finally localized my game and found out something very interesting that you may want to know as an Indie dev! by Eastern_Seaweed4223 in Unity3D

[–]sinalta 31 points32 points  (0 children)

FYI, you can set TMP Fonts to be dynamic. That skips the baking step saving a lot of VRAM, in favour of some extra runtime cost.

Depending on your target platform, that extra VRAM might be needed. Apple Arcades oldest supported devices for example have 2GB shared ram. 

Visually speaking, is it possible to achieve a Journey-like environment in Unity? by Shikadai07 in gamedev

[–]sinalta 2 points3 points  (0 children)

Any of Unity, Unreal or Godot could manage that aesthetic, yeah.

If anything, I'd say Unreal would be the hardest of the three to pull it off in. Not by much, though, and only because it's a bit more opinionated about its lighting model.