An existing game engine that will....

Started by
10 comments, last by Brain 8 years, 3 months ago

Hey folks I was wondering if anyone had a heads up on an existing game engine that will do the following.

- generate a large 3d world.

- allow thousands of individual ai to roam around the surface of the world without major loss to system resources or fps, avoiding obstacles and moving to their destination.

- allow for structures to be built on the world and for ai to avoid these structures.

???

Advertisement

Sounds like you want your entire game to already be built for you. smile.png

You can build what you want on top of existing engines, but few will have all that strait out of the box.

Game engines provide many common building blocks, but you still need to glue them together, and even then, you'll have to go get a knife and carve some of your own blocks for your less common requirements.

Well...no.


Your requirements are too high and too generic. Most likely a MMORPG engine would come to mind, take a look at http://ryzom.com/ (open source, MMORPG), but there will be less focus on AI entities and world generation.

So, what are other requirements/limits etc. try to answer the following question to better estimate what engine would be useful:
1. Should it run primary on a single PC or server farm ?
2. What level of detail/quality do you expect from the generated world (roguelike/minecraft?) ?
3. What behavior do you expect from your AI (simple=Zombie, hard=autonomous citizin of a large society).
4. Turn based or real-time ?
5. What are existing games which (partly) cover your vision ?
6. If no game exists which covers your vision, why ?

without major loss to system resources or fps,


In any engine, this takes research and testing, and days inside a profiler.

Many people get an off the shelf engine and throw stuff together then wonder why it's slow. Only then do they spend weeks trying to optimise it.

When initially developing fps and efficiency should be lower down your priorities but still at the back of your mind.

Once you're nearly finished then optimise the hell out of it...

Many people get an off the shelf engine and throw stuff together then wonder why it's slow. Only then do they spend weeks trying to optimise it.

True, but this is because the entry level for all modern engines is set quite low so literally anybody can be a game maker. But this is still the engine, following certain rules and not free of issues that other engines suffer. That's why it's good to write games from scratch, without "cooked" engines and frameworks - to learn those rules. There's high probability that whatever you had to be careful about in your own tech/games, you might consider to be careful in the ready-made engine too ;) Technically most of engines follow very similar rules. One who understands those rules will tame also third-party engines smile.png

- generate a large 3d world.

That is your job. Either you create the content yourself, or you write your own procedurally-generated content yourself.

- allow thousands of individual ai to roam around the surface of the world without major loss to system resources or fps, avoiding obstacles and moving to their destination.

The fact that you want thousands of concurrent AI reveals a lot. Can you tell me about any major game where you have seen this actually done?

Generally in games there are few parts that are actively moving at any given time. Even though the entire game world with all its content may have hundreds of thousands of items, you may actually see a double-digit number of them at any time. Everything you don't see at that moment just has a big update for the time that has elapsed.

For what is actually done in practice, all the major engines out there can handle it. Just give the items the appropriate components.

- allow for structures to be built on the world and for ai to avoid these structures.

Pathfinding is a part of major engines.

None of those are particularly hard. Most major engines out there have it built in or otherwise can handle what you described.

It sounds like you want an MMO engine like: http://www.heroengine.com/

I have only tinkered around with it a little bit, but Star Wars The Old Republic uses it.

If you want thousands of AI you have two real choices:

A) make the AI really dumb at distance and smarter when it's closer to the player, or even inactive when invisible. Games like fallout 4, elder scrolls series etc do this.
B) keep the AI super smart all the time but offload the processing into several dozen shared servers purely responsible for AI.

I am sure others can come up with other solutions to this, neither of mine are trivial newbie solutions. :)

Sounds like you want your entire game to already be built for you. smile.png

Yeah you're right, thank you for noticing.

1. Should it run primary on a single PC or server farm ?
2. What level of detail/quality do you expect from the generated world (roguelike/minecraft?) ?
3. What behavior do you expect from your AI (simple=Zombie, hard=autonomous citizin of a large society).
4. Turn based or real-time ?
5. What are existing games which (partly) cover your vision ?
6. If no game exists which covers your vision, why ?

1. server farm

2. simple, not voxel though.

3. autonomous citizin of a large society.

4. real-time

5. Children of the Nile, Tyrants, Populous...

6. I think it's a novel idea?! I'm sure many have conceived something similar but because the vision is grand and thus not articulated well the path taken to the vision lends to many different games realised by a similar vision?

Once you're nearly finished then optimise the hell out of it...

Well at first what I made could simulate 10 ai without a hit to fps. Then with some geometry division techniques I was able to increase that number to 150. But 150 is far from my goal of 10,000. So if I can't even get to 500 then it really isn't worth exploring further in the current format. That format being a world of x,y,z coordinates with ai needing a position vector, up vector and lookAt vector. If I can't get to 10,000 using a spherical world then I'd go to a flat world. I'd rather not finish and then realise that I can only make it to 300 ai.

- allow thousands of individual ai to roam around the surface of the world without major loss to system resources or fps, avoiding obstacles and moving to their destination.

The fact that you want thousands of concurrent AI reveals a lot. Can you tell me about any major game where you have seen this actually done?

None of those are particularly hard. Most major engines out there have it built in or otherwise can handle what you described.

Some of the games which I know of that do something similar are Children of the Nile, there was a Genesis title called 'Tyrants' but in that game there were less than 100 ai, and I heard an old game called populous simulated people to a degree.

- Thanks for the list.

If you want thousands of AI you have two real choices:

A) make the AI really dumb at distance and smarter when it's closer to the player, or even inactive when invisible. Games like fallout 4, elder scrolls series etc do this.
B) keep the AI super smart all the time but offload the processing into several dozen shared servers purely responsible for AI.

So I'm planning on doing B, as the game will require all ai to be as smart as possible.

-------------------------------------------------------------------------------------------------------------------------------

I made this post because I realised yesterday just what I needed to see this project come to life. I thought, heck maybe someone already made a library / engine which does everything I'm currently programming and I'm just wasting my time. I reached a limit of 150 ai because I was using raycasting to snap the ai to the surface of the world, I literally divided the whole sphere n# of faces into n# of individual mesh's and then the raycaste processing was reduced to check where the collision occurred within 13 faces instead of n# faces. But then the limit was 150 ai moving, and for some unknown to me, nodejs could only handle 50 ai and nodejs doesn't even show what's happening visuallywacko.png. But today I thought of a new approach, using something in threejs called Line3 which is 'drawn' between two vectors, create a line3 for the path which the ai will travel along and then to obtain the ai's position I only need to obtain it's point along that line. I haven't tested it yet though. I assume obtaining a point along a line uses fewer system resources than a raycaste call.

- allow thousands of individual ai to roam around the surface of the world without major loss to system resources or fps, avoiding obstacles and moving to their destination.

Assuming each individual AI also has individual goals, objectives, and/or destinations I would love to see the real-time code responsible for such an undertaking. I mean even if the entities were moving in groups, like in an rts. That is still impressive code to consider designing. You would likely need to perform spacial partitioning as well as sorting and grouping by destinations. Not to mention the rest of the creative optimizations that would be required.

I can't stress enough how much joy I would receive from reading and learning such code.

This topic is closed to new replies.

Advertisement