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

Game Development

3471 readers
6 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
12
submitted 8 months ago* (last edited 8 months ago) by [email protected] to c/gamedev
 

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
[–] mac 3 points 8 months ago (1 children)

I dont know how larger games do it but it mostly depends on what kinds of enemies and what genre of game youre doing.

If you have a lot of enemies that will be spawned and despawned and they are mostly the same you can do an object pool where instead of destroying the object it gets hidden and added to the back of the pool for another enemy to spawn in as in the future by showing it and moving it to the correct spot

In terms of when to spawn it usually (assuming youre doing most genres) you can just spawn it right outside the view of the player when they hit a trigger. In games I usually make enemies are spawned on a timer since it tends to be more arcade like and in that case you usually just spawn them outside the range of the player in a random location around a radius after X amount of time has passed

Can give more specific things if I know the genre

Also downvote is likely someone from the all feed

[–] [email protected] 1 points 8 months ago* (last edited 8 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 8 months ago* (last edited 8 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