this post was submitted on 05 Mar 2024
12 points (92.9% liked)

Game Development

3192 readers
172 users here now

Welcome to the game development community! This is a place to talk about and post anything related to the field of game development.

Community Wiki

founded 1 year ago
MODERATORS
 

I'm doing this in Unreal Engine 5, but how this is done should be relevant for any engine, minus the details of spawning and despawning.

Anybody know how large games handle spawning and despawning enemies? One idea I had was to have a really large sphere around the player that spawns enemies when the player overlaps spawn points. But that could get tricky to implement. Another idea I had was to spawn enemies as the player enters different areas, and just put them to sleep/deactivate them until the overlap a large player sphere.

Would love to know other people's thoughts on this. I'm looking for something that has good performance and scalability. I'm going to start testing ideas soon. But would be great if someone already knew of a solution that works.

Edit: Why downvote? I'm asking for discussion on algorithms. Is that not the point of this community...

you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 1 points 5 months ago* (last edited 5 months ago) (1 children)

It's an rpg/soulslike, so I wouldn't likely be spawning randomly all the time. But I do like the idea of spawning in a small radius outside the player view, and the pool idea is good. That could really help with keeping resources down. Only issue I could see with that is distinguishing which pool actors to choose the activate again. I'll have to think about that a little bit since enemies will be different.

[โ€“] [email protected] 2 points 5 months ago* (last edited 5 months ago)

It doesn't directly answer you but what you're thinking about is the sort of thing addressed by a book I'm a big fan of, Data Oriented Design. It's addressed briefly in the online version here https://dataorienteddesign.com/dodbook/node6.html#SECTION00620000000000000000