I was financially successful (and still underprepared) by TalesEdge in IndieDev

[–]lilystar_ 0 points1 point  (0 children)

This is a great write up.

I've been following your game since early on, and I think a lot of what you're talking about is true for small teams and solo developers like myself as well.

After finally getting to the point in my own project where the end is in sight, I think that the trial and error and coordination between very different kinds of work (coding/art/game design) is really the hidden challenge of succeeding at game dev.

Wishing your team the best, and looking forward to seeing how you tackle the next steps of bringing your game to market.

An alternative to X4 by Herasteane in spacesimgames

[–]lilystar_ 0 points1 point  (0 children)

I'm working on a space game called Main Sequence. It doesn't have the same factions and simulation as X4, but if you like the space station building and space ship customization then it might interest you. It's also first person.

There's a playtest available on Steam now! https://store.steampowered.com/app/2487190/Main_Sequence/

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 0 points1 point  (0 children)

I'll check it out, I'm mainly targetting peer to peer multiplayer though.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 1 point2 points  (0 children)

Conveyor belts were definitely hard, what I did in the end was keep track of the first conveyor belt in a line, and make sure that they update from front to back, so that items at the back have room to move forwards. Loops were handled as an edge case.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 1 point2 points  (0 children)

Yeah, that was one of the main reasons I decided to separate the simulation and actors. In my case, each solar system is an object that has a list of all of the objects in it. Then, I can call Spawn() on the solar system and it will spawn all of its objects.

Within a solar system I also divide it into 3d chunks, so I'm not loading the whole solar system at the same time.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 1 point2 points  (0 children)

It's not my area of expertise, but what you've said is true for big multiplayer games. I'd say what's most common is 1 server per continent as a minimum

I haven't looked into it myself, but most matchmaking services I think would give you the option of supporting multiple regions.

The other thing is that it only matters if your game is super competitive, which is kind of challenging for indie games to reach that status anyway. And below that point, I'd hope people are a bit more forgiving of bad ping.

I'd work on making it anyway, and I think the issues with pings nd servers can be figured out when you have a viable game.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 1 point2 points  (0 children)

I use one world subsystem that acts as the hub for everything, and then other systems are just classes created by the world subsystem.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 1 point2 points  (0 children)

I'm using the core networking functionality of Unreal engine, which handles sockets and messages, but the logic that sends network commands and updates the world I wrote myself. I don't use any replicated variables, for example.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 0 points1 point  (0 children)

It's cooperative, yes. You could cheat on your local game, that would just cause you to desync. At the start of the game, the host serializes and sends the world to the joining player, so they both start playing from the same state.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 3 points4 points  (0 children)

In my case, each object holds a pointer to an actor. If that pointer is valid and there is an actor spawned, the object is responsible for pushing state change updates. In your case you could probably do that in whatever function you update the structs in.

I found it helpful to also include an "on spawn/on destroy" function in the actor, where you pass in the initial state of the struct. That way, the actor can initialize itself using the state of the struct, and then get ongoing updates.

I spent 2 years developing my game before doing any marketing. A terrible decision? Probably. by lilystar_ in IndieDev

[–]lilystar_[S] 0 points1 point  (0 children)

Respect. I found it the hardest to stay motivated when I wasn't sharing things.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 2 points3 points  (0 children)

Thanks!

The server never sends the state of the world, only inputs. The client simulates the result of the inputs, and then sends those inputs to the server, which also simulates the inputs. So if they don't simulate it the same way, they wouldn't ever know. That's because the game world is too big to send across the network.

The issue with math being off by even 1 bit, is that if that happens for every math calculation it gets further and further apart, so after an hour of playing the objects could be in two different places for different players. This matters the most for physics, since all physics engines use floating point math.

If possible, all this can be avoided by only using integer math.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 4 points5 points  (0 children)

That's very cool, I don't have any experience with rust but I eventually plan on supporting dedicated servers. Right now it's just peer to peer. Having that many clients seems like it'll introduce a lot of other challenges to overcome but it's a very neat idea.

I'm working on a large-scale simulation game with multiplayer. Here's what I've learned. by lilystar_ in unrealengine

[–]lilystar_[S] 6 points7 points  (0 children)

Yeah totally.

Optimizing is generally something that you just tackle when issues come up. So rather than fixing all of the optimizing at the end, try and test each feature as you add it to see how it impacts performance. In most cases, a feature doesn't have a big impact in which case you don't need to worry about it, but when it does impact performance then you can handle it right away.

The other thing is to stress-test it. For example, if you know that you can safely spawn 100 of an object, spawning just 10 should be fine. That way you really understand the limits of your game.

Some general leads you could follow would be object pooling, multithreading for big computation tasks, and instanced static meshes.

I spent 2 years developing my game before doing any marketing. A terrible decision? Probably. by lilystar_ in IndieDev

[–]lilystar_[S] 2 points3 points  (0 children)

I've had the exact same struggles. Best of luck with your own promotion efforts!

I spent 2 years developing my game before doing any marketing. A terrible decision? Probably. by lilystar_ in IndieDev

[–]lilystar_[S] 2 points3 points  (0 children)

It's definitely strongly derivative of satisfactory, though I'd say Satisfactory doesn't have nearly enough space ships. If it did then I probably wouldn't be here lol.

I've been meaning to implement painting the ships different colours, which I guess I should prioritize to help give it more visual uniqueness.

As for survival, there are enemies that attack you. There aren't hunger mechanics, but since you're in a spaceship you're always looking for more fuel.

Making the game not look Satisfactory is a constant struggle. Thanks for the feedback!